Hi Thorsten, > my idea is to add an Emacs-like command line to PicoLisp. I thought this
Good idea :) > 1. move all commands from command-mode to insertion-mode (the only > Emacs-mode) > 2. eliminate command-mode > 3. replace the vi 1-key bindings with Emacs keychords (with Control and > Meta prefix-keys) for all commands that have equal or similar semantics to > Emacs commands > 4. eliminate/replace the commands that do not fit into the non-modal Emacs > concept > 5. write some new commands to give PicoLisp commandline editing the > authentic Emacs feeling. Yes. Quite a lot of stuff, though. > Do the definitions in lib/term.l only work in xterm (X11 session) or in > a console session (without X11) too? They should work where 'tput' and 'terminfo' is available. > >> Would Emacs-like key-chords be possible? E.g. 'C-x u', i.e. type first > >> '<Ctrl>x' and then 'u', using 'C-x' as a kind of prefix that can be > >> combined with e.g. [a-zA-Z0-9]. Yes, I think so. By handling sequences of key events, collecting them as necessary, and then deciding what action to perform. > Do you have an example of this kind of event-handling in the PicoLisp > sources? As a central entry point the 'fkey' function from "lib/led.l" can be used. An example usage is in http://rosettacode.org/wiki/Keyboard_macros#PicoLisp The flight simulator in "rcsim/main.l" uses it too, defining some function keys to control the airplane. But these examples don't handle sequences of multiple-key events. For those, a given key like Ctrl-X might then wait for a short timeout period (e.g. with (key 200)) for further keys to arrive. > > No, they are ASCII values. In general, a control character is the > > corresponding uppercase character minus 64. For example, Ctrl-A is 1, > > Ctrl-B is 2, Ctrl-C is 3 and so on. > > But would it be possible to make PicoLisp call 'delete-char' when the > Ctrl-d ASCII is send, and use another (less common) ASCII value to exit > the program? Yes. Exiting upon Ctrl-D is explicitly coded into the line editor. So any other key (or none at all) might be used. Cheers, - Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe