Eli Barzilay wrote on 12/02/2014 09:31 PM:
On Tue, Nov 25, 2014 at 1:29 PM, Leif Andersen <l...@leifandersen.net> wrote:
Just to clarify a bit, we were more thinking of extending the default
repl to have line editing features, rather then making xrepl the
default,
If you're talking about implementing line editing yourself, then my
personal reaction to that would be "wonderful", but doing it properly is
something that is difficult and easy to underestimate....

I agree fully with Eli.

Also, separate from practical benefit of having basic `readline`-like line editing in pure Racket, you could go gratuitously coolness factor on this. For example, I don't think I've seen a non-full-screen character-terminal REPL do syntax coloring, matching paren highlighting, and full up/down cursor navigation within a single REPL input. That's labor-of-love coolness, and all who behold it will respect your name.

("http://www.neilvandyke.org/racket-charterm/"; would help with some primitives and device portability, but you'd still have to layer a lot of work atop that. Offhand, the most nonobvious tricky part I can think of is not getting program confused about where text and your cursor are on the screen. Different terminals will have different behavior when cursor is in the last column, or cursor is in the last row and column, or you're inserting/deleting characters or lines (which some terminals will support differently, and others not at all). You also have to decide how you want to handle the user experience of some kind of Ctrl-L redraw, since terminal screens get corrupted often by text written by other processes, Ctrl-L also helps mitigate terminal quirks you don't yet handle, and terminal-savvy people will expect a Ctrl-L. It's possible to make a self-healing character terminal display, on those terminals that permit reading screen addresses and that have sufficient idle bandwidth, but I haven't heard of anyone doing that yet, and everyone just has a Ctrl-L.)

Neil V.

_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to