From: Bill Clementson
Subject: ILISP key binding changes - Option #2
Date: 
Message-ID: <wky91rxqil.fsf@attbi.com>
Based on feedback that I received from my initial posting, I have
written up another proposal for an alternate set of FSF bindings. This
alternative approach was suggested by Bob Rogers and the net result is a
more consistent, mnemonic set of bindings. The only downside that I can
see is that these bindings require an extra keystroke in some cases.

The new bindings are described in detail at:
http://home.attbi.com/~bc19191/ilisp-keybindings.htm#Summary%20of%20New%20FSF%20Key%20Bindings-Option#2

If you are an ILISP user, please review these bindings and send any
comments and/or suggestions for alternative bindings to either the group
or to me via email. 

With these changes, we have attempted to remove incompatibilities and
overlapped key bindings. We have also tried to make the key bindings
more consistent. Some general consistencies that we have attempted to
introduce/enforce are:

1. All key bindings are compliant with the FSF guidelines for major mode
key bindings. In some cases, there is an overlap with a key binding that
is defined in either standard Emacs or comint mode; however, in these
cases, the overlap is consistent with the FSF guideline that "it is
reasonable for a major mode to rebind a key sequence with a standard
meaning, if it implements a command that does 'the same job' in a way
that fits the major mode better".

2. For the most part, all of the debugging commands are of the form "C-c
C-<capital letter>"). However, not all "C-c C-<capital letter>" bindings
are debugging commands.

3. Similar functions are bound to variations on the same letter (i.e. --
macroexpand-lisp is bound to "C-c ESC m" and macroexpand-1-lisp is bound
to "C-c ESC M").

4. All of the <help> related functions are set up on on "C-c C-h
<letter>" key bindings.

5. All of the <eval> related functions are set up on on "C-c C-j
<letter>" key bindings.

6. All of the <compile> related functions are set up on on "C-c C-k
<letter>" key bindings.

7. All of the <action>-and-go-lisp functions are of the form "C-c
C-<character> <capital letter>". The corresponding <action> functions
are set up on the "C-c C-<character> <letter>" binding.

8. All of the <action>-changes-lisp functions are of the form "C-c 8
<letter>".

9. Where possible, mnemonic key bindings have been made to facilitate
ease of learning and frequently-used commands have been assigned to a
key binding that is easy to reach.

10. The FSF key bindings will be made the default key bindings for ILISP
(replacing the "Standard" key bindings)

I am posting this to both the ILISP developers list and to c.l.l. 

TIA for your comments and suggestions.

--
Bill Clementson

From: Florian Weimer
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <87fznzc7zq.fsf@deneb.enyo.de>
Bill Clementson <·······@attbi.com> writes:

> The new bindings are described in detail at:
> http://home.attbi.com/~bc19191/ilisp-keybindings.htm#Summary%20of%20New%20FSF%20Key%20Bindings-Option#2

Aren't many of the new keybindings inaccessible from widespread
terminals?
From: Bill Clementson
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <1b3ac8a3.0305010548.7f428db9@posting.google.com>
Florian Weimer <··@deneb.enyo.de> wrote in message 
> Aren't many of the new keybindings inaccessible from widespread
> terminals?

I don't use ilisp from a terminal - could you please tell me which
keybindings wouldn't be accessible?

TIA.
--
Bill Clementson
From: Florian Weimer
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <87y91q90s8.fsf@deneb.enyo.de>
···············@yahoo.com (Bill Clementson) writes:

> Florian Weimer <··@deneb.enyo.de> wrote in message 
>> Aren't many of the new keybindings inaccessible from widespread
>> terminals?
>
> I don't use ilisp from a terminal - could you please tell me which
> keybindings wouldn't be accessible?

C-<uppercase letter> is often transmitted as C-<lowercase letter>, and
things like C-) do not work at all.  In general, only C-SPC and C-a to
C-z are available, I guess.
From: Bill Clementson
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <1b3ac8a3.0305010937.78153b9c@posting.google.com>
Florian Weimer <··@deneb.enyo.de> wrote in message news:<··············@deneb.enyo.de>...
> ···············@yahoo.com (Bill Clementson) writes:
> 
> > Florian Weimer <··@deneb.enyo.de> wrote in message 
> >> Aren't many of the new keybindings inaccessible from widespread
> >> terminals?
> >
> > I don't use ilisp from a terminal - could you please tell me which
> > keybindings wouldn't be accessible?
> 
> C-<uppercase letter> is often transmitted as C-<lowercase letter>, and
> things like C-) do not work at all.  In general, only C-SPC and C-a to
> C-z are available, I guess.

Ok, I've decided to revise the proposed bindings (again) to eliminate
all shifted characters.

Incidentally, does anyone have a list of what characters are ALWAYS
present on terminals?

So, for the time being, don't bother looking at the bindings for
option#2 because I'm going to be changing them.

Thanks,
--
Bill Clementson
From: Bill Clementson
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <wkissthoxw.fsf@attbi.com>
···············@yahoo.com (Bill Clementson) writes:

> Ok, I've decided to revise the proposed bindings (again) to eliminate
> all shifted characters.
> 
> Incidentally, does anyone have a list of what characters are ALWAYS
> present on terminals?
> 
> So, for the time being, don't bother looking at the bindings for
> option#2 because I'm going to be changing them.

I've revised the proposed FSF bindings and they should now be usable on
both a windowed Emacs and a terminal Emacs. This represents a complete
revision and I ask that (if you use ILISP) you please have a look at
these bindings and let me know if you see any problems with them. The
complete list of bindings are at:

http://home.attbi.com/~bc19191/ilisp-keybindings.htm#Summary%20of%20New%20FSF%20Key%20Bindings-Option#2

Some general consistencies that are introduced/enforced are:

1. All key bindings are compliant with the FSF guidelines for major mode
   key bindings. In some cases, there is an overlap with a key binding
   that is defined in either standard Emacs or comint mode; however, in
   these cases, the overlap is consistent with the FSF guideline that
   "it is reasonable for a major mode to rebind a key sequence with a
   standard meaning, if it implements a command that does 'the same job'
   in a way that fits the major mode better".

2. Where possible, mnemonic key bindings have been made to facilitate
   ease of learning and frequently-used commands have been assigned to a
   key binding that is easy to reach.

3. The FSF key bindings will be made the default key bindings for ILISP
   (replacing the "Standard" key bindings).

4. All of the <action>-changes-lisp functions are of the form "C-c 8
   <letter>". Rationale: This binding existed already and there was no
   reason to change it.

5. All of the <help> related functions are set up on on "C-c C-h
   <letter>" key bindings. Rationale: C-h is used by Emacs for "help"
   functions and it makes sense to carry that convention over to ILISP.

6. All of the <eval> related functions are set up on on "C-c C-j
   <letter>" key bindings. Rationale: C-j is an easy control key
   sequence to hit and the "eval" functions are used quite a lot.

7. All of the <compile> related functions are set up on on "C-c C-k
   <letter>" key bindings. Rationale: C-k is mnemonic for "kompile" -
   ok, I can't spell! :)

8. All of the <action>-and-go-lisp functions are of the form "C-c
   C-<character> C-<letter>". The corresponding <action> functions are
   set up on the "C-c C-<character> <letter>" binding. Rationale: This
   is an easy sequence to remember - the "and-go-lisp" function is just
   the exact same sequence as the ordinary function but with the last
   character a control character rather than a regular character.

9. All of the <buffer/edit> related functions are set up on on "C-c
   C-w <letter>" key bindings. Rationale: Buffer and edit commands are
   "w"ork commands.

10. All of the <debug> related functions are set up on on "C-c C-z
    <letter>" key bindings. Rationale: The letter "z" is at the end of
    the alphabet and all of the debugging and error checking/handling
    functions are pushed out into this prefix.

I appreciate your taking the time to review these bindings.

Thank you,
--
Bill Clementson
From: Kalle Olavi Niemitalo
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <87k7d8dhct.fsf@Astalo.kon.iki.fi>
Bill Clementson <·······@attbi.com> writes:

> 5. All of the <help> related functions are set up on on "C-c C-h
>    <letter>" key bindings. Rationale: C-h is used by Emacs for "help"
>    functions and it makes sense to carry that convention over to ILISP.

(elisp) Coding Conventions:

   * Do not bind `C-h' following any prefix character (including
     `C-c').  If you don't bind `C-h', it is automatically available as
     a help character for listing the subcommands of the prefix
     character.
From: Bill Clementson
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <wkel3gtybm.fsf@attbi.com>
Kalle Olavi Niemitalo <···@iki.fi> writes:

> Bill Clementson <·······@attbi.com> writes:
> 
> > 5. All of the <help> related functions are set up on on "C-c C-h
> >    <letter>" key bindings. Rationale: C-h is used by Emacs for "help"
> >    functions and it makes sense to carry that convention over to ILISP.
> 
> (elisp) Coding Conventions:
> 
>    * Do not bind `C-h' following any prefix character (including
>      `C-c').  If you don't bind `C-h', it is automatically available as
>      a help character for listing the subcommands of the prefix
>      character.

Gosh, you're right - I hadn't noticed that. Thanks for picking that
up. I have moved the "help" functions to the "C-c C-q" prefix.  This is
also a mnemonic binding as this set of functions are "q"uery
functions. I have updated the web page with the new bindings:

http://home.attbi.com/~bc19191/ilisp-keybindings.htm#Summary%20of%20New%20FSF%20Key%20Bindings-Option#2

Anyone else notice any inconsistencies?
--
Bill Clementson
From: Lars Brinkhoff
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <854r4ed6o8.fsf@junk.nocrew.org>
Florian Weimer <··@deneb.enyo.de> writes:
> ···············@yahoo.com (Bill Clementson) writes:
> > Florian Weimer <··@deneb.enyo.de> wrote in message 
> >> Aren't many of the new keybindings inaccessible from widespread
> >> terminals?
> > I don't use ilisp from a terminal - could you please tell me which
> > keybindings wouldn't be accessible?
> C-<uppercase letter> is often transmitted as C-<lowercase letter>, and
> things like C-) do not work at all.  In general, only C-SPC and C-a to
> C-z are available, I guess.

And the rest of the ASCII control characters: C-\, C-], C-^, C-_.
C-[ is ESC.

I often use ilisp from a terminal.
From: Florian Weimer
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <87k7da8xg7.fsf@deneb.enyo.de>
Lars Brinkhoff <·········@nocrew.org> writes:

>> C-<uppercase letter> is often transmitted as C-<lowercase letter>, and
>> things like C-) do not work at all.  In general, only C-SPC and C-a to
>> C-z are available, I guess.
>
> And the rest of the ASCII control characters: C-\, C-], C-^, C-_.
> C-[ is ESC.

Some of them are impossible to type on localized keyboards. 8-(
From: Ingvar Mattsson
Subject: Re: ILISP key binding changes - Option #2
Date: 
Message-ID: <87wuh9ohdb.fsf@gruk.tech.ensign.ftech.net>
Florian Weimer <··@deneb.enyo.de> writes:

> Lars Brinkhoff <·········@nocrew.org> writes:
> 
> >> C-<uppercase letter> is often transmitted as C-<lowercase letter>, and
> >> things like C-) do not work at all.  In general, only C-SPC and C-a to
> >> C-z are available, I guess.
> >
> > And the rest of the ASCII control characters: C-\, C-], C-^, C-_.
> > C-[ is ESC.
> 
> Some of them are impossible to type on localized keyboards. 8-(

C-3, C-4, C-5 are your friends. It is possible that other C-<digit>
are, too. And for anyone contemplating those keys for other
functionality, please *please* reconsider.

//Ingvar (used a VT a lot, I did)
-- 
((lambda (x y l) (format nil "~{~a~}" (loop for a in x for b in y with c = t
if a collect (funcall (if c #'char-upcase #'char-downcase) (elt (elt l a) b))
else collect #\space if c do (setq c ())))) '(76 1 0 0 nil 0 nil 0 3 0 5 nil 0
0 12 0 0 0) '(2 2 16 8 nil 1 nil 2 4 16 2 nil 9 1 1 13 10 11) (sort (loop for
foo being the external-symbols in :cl collect (string-upcase foo)) #'string<))