Alexander Burger <> writes:

Hi Alex,

>> I managed to produce a first experimental version of 'epil', i.e. a new
>> version of led.l (eled.l) and some small changes in libraries that are
>> called at PicoLisp startup. If you clone this github repo: 
>> ,-----------------------------
>> |
>> `-----------------------------
> Thanks! I think this might make the PicoLisp REPL more usable for many
> people, as most are not used to a VI-style command line, and probably
> are not even aware of it.

Although it seems very efficient, and there are not too many keybindings
to remember, the VI-style command line requieres a completely different
way a thinking for somebody who uses Emacs all the time. 

> In the long term, the Emacs-interface should be available without
> explicit installation, and possibly even co-exist with the VI version
> (switchable at runtime). Would this be difficult?

Since now I know how to assign (almost) all kinds of Emacs keybindings
in PicoLisp, I can try to better understand the 'commandline'
implementation. What I did for 'epil' is simply eliminating 'Command
mode' and shifting the commands into 'Insert mode' with new keybindings.

Maybe there could be a
1. global switch '*Vi' that is true by default, and
2. a function '(de Toggle-Vi...)' that toggles that switch, and
3. three modes: Command, Insert, EInsert 
3. two modes Command and Insert, with much Command functionality
duplicated in Insert

where Command and Insert are the Vi-Style modes and EInsert is the
Emacs-style mode. Since there are conflicting keybindings, one would
call the functions for many keys conditional on the value of '*Vi*'. 

Does that sound like a reasonable approach, or is there a simpler/more
elegant solution?

As an alternative approach: 

maybe one could actually have two additional library files 'eled.l' and
'eedit.l', not change anything in 'led.l' and 'edit.l', and simply
insert conditional statements in the startscripts and the functions that
load the libraries? I.e., add 'eled.l' and 'eedit.l' to the PicoLisp
distribution, and offer the 'epil' shell-command too?

For development, at the moment I rather prefer to have 'epil' separated
from standard PicoLisp, so I can mess up things ;)



Reply via email to