So, a skeleton calling insert, relying on `script-plugin`, is the following. It doesn't work yet, but it took like 1 minute, so it's a cool starting point. With script-plugin, you can just edit it and rerun it without restarting Racket:
``` #lang racket/base (require racket/class) ; Sample identity function: ;; string? -> (or/c string? #f) (provide item-callback) (define (item-callback str #:interactions interactions) (send interactions insert "\n\n\n\n") str) ``` On Tuesday, October 6, 2015 at 11:36:55 AM UTC+2, Laurent Orseau wrote: > I'm using the script plugin [*] to test things quickly. You get direct > access to the current editor, either the interactions or the definitions one. > Possibly it would be even more helpful to have an interaction window with > access to the same things for quick hacks. Yes, that would be even cooler (Emacs-style), but this tool is already really cool. > That could be either a standalone plugin or I think that should also be easy > with the script plugin. > > > > [*] http://pkgs.racket-lang.org/#[script-plugin] > Disclaimer: I wrote this. I have no idea if anyone else is using it, but I > personally use it all the time. Don't take this the wrong way, but once you have a solution to such a big problem, I think you probably should to advertise it a bit to get it to your users — try to get a link in the plugin guide, make this an official plugin, ... This takes much less effort than the work, and increases the positive impact on the community. Furthermore, your plugin enables a the birth of *lots* of simple editor extensions — you empower your users to do much more work. Here's an example of more people who would have needed it: http://comments.gmane.org/gmane.comp.lang.racket.user/24630 I think the above would hold as soon as script-plugin was decent for you; in fact, I think it's already great. Cheers, Paolo > On Tue, Oct 6, 2015 at 4:11 AM, Paolo Giarrusso <p.gia...@gmail.com> wrote: > On 6 October 2015 at 01:45, Aman <amang...@gmail.com> wrote: > > > > > > Thanks Laurent and Paolo. When you say (send a-text insert string), how > > are you getting a-text ? > > > > > What I wanted was not to design a new editor window, but to modify or > > 'send' some command to current editor (the default one when we launch > > DrRacket) to clear some content or scroll down to hide the content, but I > > am not able to find a way to get handle for editor%, text% or anything else > > that can be helpful while executing 'send' > > > > Yeah, a very good question, that's why I asked Laurent for his "quick > > attempt" :-). > > > > The two ways I can imagine are writing a plugin or modifying DrRacket, > > and I expect the latter to be easier; my only experience is modifying > > a DrRacket plugin, and I don't think this is quick, but it's possible. > > > > For that, I think you want to look at > > drracket:get/extend:extend-interactions-text. To be in the context to > > do that, see http://docs.racket-lang.org/tools/implementing-tools.html > > and the examples shown there using > > drracket:get/extend:extend-definitions-text. > > > > Below's I'll give an outline anyway of what I actually did, in case > > it's helpful — though the docs are probably better. > > == > > > > I've been hacking a DrRacket plugin (the handin client), where I use > > something more complex because I assumed I only had a editor% (so I > > used insert-port). My call is in > > https://github.com/racket/handin/pull/27/files#diff-cf0f873382d5f6c351cee18d851376c3R734; > > the code around it does a number of potentially useful things. > > > > The starting point is the call drracket:get/extend:extend-unit-frame, > > in the context of > > > > (define tool@ > > (unit > > (import drracket:tool^) > > (export drracket:tool-exports^) > > ... > > > > drracket:get/extend:extend-unit-frame subclasses the unit-frame > > DrRacket component, and inside it you can call get-definitions-text > > and get-interactions-text to get access to the two text%. > > > > For that, refer to the docs extensively, starting from > > http://docs.racket-lang.org/tools/, its index, and the introduction > > into how to do a plugin. > > By doing that, I just found out about > > drracket:get/extend:get-interactions-text, which allows you to > > subclass the interactions-text directly. > > > > While this is a lot, I've found I managed to get something done > > without needing to understand every detail, also thanks to Racket > > syntax-check. It's sad it doesn't understand units as well as the > > rest. > > (OTOH, I'm scared that I'm writing code without understanding every > > single line around it. I usually never do that, but I'm new at > > Racket). > > > > Cheers, > > Paolo > > > > > > > > > On Monday, 5 October 2015 12:51:05 UTC-5, Paolo Giarrusso wrote: > > > > On Monday, October 5, 2015 at 10:56:50 AM UTC+2, Laurent Orseau wrote: > > > > > I don't think there is anything like this right now, but in case anyone > > > > wants to do that, my first impression is, that such a command should > > > > not completely erase the previous content but only hide it (by > > > > scrolling down for example). I tried very quickly to do that using > > > > `set-position` of `text%` but I couldn't make it leave a blank space > > > > after the cursor position when at the end of the editor. > > > > > > > > I'm guessing you (or who does this) will need to insert whitespace > > > (newlines) with some insert method, after setting the position, probably > > > with > > > > (send a-text insert string) > > > > > > > > You'll also need to act on the editor-canvas% to scroll it down (text% > > > can't do that because it's just a MVC Model, while editor-canvas% is the > > > corresponding View). (It seems you'll have to call allow-scroll-to-last > > > and scroll-to). > > > > > > > > I can't do the rest myself because I haven't learned enough APIs to "try > > > something quickly" — only hacked slowly a plugin. But if you share your > > > attempt I might be able to try. > > > > > > > > Cheers, > > > > Paolo > > > > > > > > > On Sun, Oct 4, 2015 at 6:28 PM, Aman <amang...@gmail.com> wrote: > > > > > Hi all, > > > > > > > > > > > > > > > > > > > > I am new to DrRacket. I am using swindle language and want to know a > > > > way so that I can clear my evaluation window(interaction window) after > > > > I do some direct runs there. > > > > > > > > > > > > > > > > > > > > For example if i run following > > > > > > > > > > > > > > > > > > > > > (define a 3) > > > > > > > > > > > (define b 2) > > > > > > > > > > > > > > > > > > > > Now i want something like > > > > > > > > > > > clear > > > > > > > > > > which could clear the window but still keep a and b in environment > > > > (memory). Is it possible somehow? > > > > > > > > > > > > > > > > > > > > After going through a lot of posts all I was able to figure out was to > > > > hit "Run" and use "Esc:p" to again load the needed commands which seems > > > > to me a very bad way. > > > > > > > > > > > > > > > > > > > > Thanks! > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > You received this message because you are subscribed to the Google > > > > Groups "Racket Users" group. > > > > > > > > > > To unsubscribe from this group and stop receiving emails from it, send > > > > an email to racket-users...@googlegroups.com. > > > > > > > > > > For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > > You received this message because you are subscribed to a topic in the > > Google Groups "Racket Users" group. > > > To unsubscribe from this topic, visit > > https://groups.google.com/d/topic/racket-users/_XWopH-iMNw/unsubscribe. > > > To unsubscribe from this group and all its topics, send an email to > > racket-users...@googlegroups.com. > > > For more options, visit https://groups.google.com/d/optout. > > > > > > > > > > -- > > Paolo G. Giarrusso - Ph.D. Student, Tübingen University > > http://ps.informatik.uni-tuebingen.de/team/giarrusso/ > > > > -- > > Paolo G. Giarrusso - Ph.D. Student, Tübingen University > > http://ps.informatik.uni-tuebingen.de/team/giarrusso/ > > > > > > -- > > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > > To unsubscribe from this group and stop receiving emails from it, send an > email to racket-users...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.