RE: Ilisp key binding changes - Please Review

"Clementson, Bill" <[email protected]>
Newsgroups gmane.lisp.ilisp.devel
Message-ID <[email protected]>
Bob,

From: Bob Rogers on Sunday, April 27, 2003 3:34 PM
[snipped some comments]
> My comments are appended; please do with them as you see fit.  You've
> done a great job; this will be a big step forward for ilisp.  (Though
> perhaps not as big a step if you should decide to pass on all of my
> suggestions.  But that's just my viewpoint.  ;-)

Thank you for reviewing the key bindings and providing such a 
thorough set of comments on them.

>    Even though binding indent-line-ilisp to TAB shadows
> comint-dynamic-complete, I think that indentation is more useful than
> completion in ilisp-mode.  Besides, filename completion often fails in
> ilisp-mode, because emacs loses track of the process CWD.

In the end, I decided to not shadow any bindings (emacs or comint) unless
the shadowing conformed to the FSF guidelines for functionality that 
does "the same job" as an existing binding. My rationale was that some
user will always want the existing binding, so why make a shadowed
binding if it wasn't really necessary. For individual users, there is
always the option to create their own custom binding. My feeling is that
new users are better off having a consistent, conformant set of bindings.
Experienced users know which bindings they don't ever need to use and 
can make their own custom overrides.

>    Using "C-c {" for raw-keys-ilisp may be more mnemonic, as 
> it suggests
> that you are entering a new mode.  (Pity that binding "C-c }" for
> interactive-keys-ilisp would be pointless.)

I'm open to "C-c {" for raw-keys-ilisp - anyone else feel strongly one
way or the other?

>    I was somewhat surprised to learn that compile-defun-lisp is "C-c
> C-c" in ilisp-mode under the current FSF-leaning scheme; how do people
> manage to interrupt their Lisps in this case?  But since "C-c C-c" is
> compliant and even easier to type than the classic "C-c c" for this
> common lisp-mode command, maybe it would be simpler to avoid 
> binding it
> in ilisp-mode, where it is not very useful?

I'm not sure I understand this - in my proposed bindings, there is no 
ilisp function bound to "C-c C-c", only the comint one. I have replaced 
the binding to compile-defun-lisp with "C-c ESC c".

>    comint-mode binds "C-c C-w" to backward-kill-word as part 
> of its TTY
> driver emulation, but it hardly seems worth moving compile-region-lisp
> in order to preserve this.  backward-kill-word is also bound as M-DEL,
> so you're not losing anything.  At the very least, consider preserving
> the lisp-mode binding, and omitting this in ilisp-mode.

However, by moving the compile-region-lisp to "C-c ESC k" binding, that 
improves the consistency of the bindings - most of the "compile" bindings 
are now on the "k" key:

"C-c C-k" compile-file-lisp 
"C-c C-K" ilisp-compile-buffer 
"C-c ESC" k compile-region-lisp 
"C-c ESC" K compile-region-and-go-lisp 

with the other "compile" bindings on the "c" key (mnemonically, a similar
binding):

"C-c ESC c" compile-defun-lisp 
"C-c ESC C" compile-defun-and-go-lisp 
"C-c 8 c" compile-changes-lisp 

I thought that it was worthwhile moving the compile-region-lisp binding 
even if just to promote consistency. However, since there was also a 
comint mode binding conflict, this was even a better reason to move it.

>    I don't think it's really necessary to find keybindings for every
> last ilisp command, though I do admire your zeal in carrying 
> the process
> forward to its logical conclusion.  For example, fast-lisp, slow-lisp,
> and status-lisp are easy to type as M-x commands, or to mouse via the
> command menus, so there's no real urgency to find them new 
> keybindings.

However, most of these bindings were available in the "standard" ilisp
set of key bindings. This is what made the fsf ilisp bindings the "poor
cousin" - there was more functionality available in the "standard" ilisp
key bindings than there was in the fsf key bindings. I was attempting to 
rectify this as part of this exercise. 

> Also, it could be argued that reset-ilisp is somewhat risky, and
> shouldn't be bound to any key.  These "nonbindings" might free up more
> mnemonic bindings for other uses.  

I'm open to not binding reset-ilisp if others think this is a bad idea.

> Specifically, if slow-lisp is left
> unbound, then "C-c C-L" can be used for ild-locals, which allows "C-c
> C-D" to be used for documentation-lisp.

But, don't you think it's better to have all of the "help" type functions
bound to the "h" key? Since emacs provides "C-h <letter>" key bindings
already, this is more consistent with standard emacs practice.
 
>    I am a little concerned that many bindings require C-S- and M-S-
> combinations for the second character.  These seem more likely to make
> peoples' hands hurt than three-character sequences where each 
> character
> requires at most one modifier, with preference given to sequences that
> tend to use the same modifier combinations.  But maybe I'm alone on
> this; I know I've mentioned this before, and nobody piped up to agree.

This bothered me a bit too. I tried to keep the most frequently used 
commands on lower-shift key bindings. This wasn't always possible because
comint mode grabs a lot of the available lower case bindings already.

> And I confess this is somewhat academic for me; I now use a Kinesis
> keyboard with a footpedal for most of my typing, so emacs is a breeze.
> Control-Meta-Shift-Whatever.

Neat - I didn't know that such a device was available! I've looked up 
their web page now and will have to have a look at their products. Do you 
find that you have trouble re-adjusting to a "normal" keyboard when 
you use another person's machine?

>    It is probably too late to suggest that the bindings implemented by
> ilisp-lispm-bindings be adopted with a "C-c" prefix, as a consistent
> source of new bindings for compile-defun-lisp, eval-defun-lisp,
> arglist-lisp, and documentation-lisp.  That would conflict 
> with four of
> your proposed ild bindings, so is probably not feasible 
> unless you also
> choose to adopt my previous suggestion for the ild commands.

The lispm bindings are bound to "C-S-<letter>" and are not compatible
with fsf keybindings. For people who were lucky enough to use lispm's, 
it probably makes most sense for them to select the keybinding set that 
they're most comfortable with (either "standard" or "fsf") and to run 
the ilisp-lispm-bindings function as well so that the standard lispm 
keybindings are available. By adding "C-c" in front of the existing
"C-S-<letter>" lispm binding, I don't know if that buys us much. On 
the one hand, existing ex-lispm users will probably still manually
change the bindings to the "C-S-<letter>" values. Newbies won't see
any benefit over the alternatives. So, I don't see the benefit.

Thank you very much for your comments and suggestions. Having someone
propose some alternatives is good because it makes me re-think some
of my assumptions.

--
Bill Clementson
 


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.