unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* key-binding values
@ 2005-09-06 15:50 Drew Adams
  2005-09-06 16:26 ` Andreas Schwab
  0 siblings, 1 reply; 6+ messages in thread
From: Drew Adams @ 2005-09-06 15:50 UTC (permalink / raw)


Consider these two definitions:

 (defcustom my-key [?\C-\ ] "My key sequence.")
 (defcustom my-key  "\C- "  "My key sequence.")

`C-h v' then gives these values: [67108896] and "^@".

Is this as good as can be expected - is there no way to get something more
readable for [?\C-\ ]? Emacs users learn quickly to read "^@" as "control
@", and they also learn that this is equivalent to "control SPC", but
[67108896] is hard to read and digest.

Also, correct me if I'm wrong, but my understanding is that the form [?\C- ]
is generally preferred over the form "\C- ", for a key binding. If so, that
makes matters worse in cases like this.

This form is good:

 (defcustom my-key [(control ?\ )] "My key sequence.")

`C-h v' then gives [(control 32)], which is even clearer than "^@".

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: key-binding values
  2005-09-06 15:50 key-binding values Drew Adams
@ 2005-09-06 16:26 ` Andreas Schwab
  2005-09-06 17:15   ` Drew Adams
  2005-09-07  5:05   ` Richard M. Stallman
  0 siblings, 2 replies; 6+ messages in thread
From: Andreas Schwab @ 2005-09-06 16:26 UTC (permalink / raw)
  Cc: Emacs-Devel

"Drew Adams" <drew.adams@oracle.com> writes:

> Consider these two definitions:
>
>  (defcustom my-key [?\C-\ ] "My key sequence.")
>  (defcustom my-key  "\C- "  "My key sequence.")
>
> `C-h v' then gives these values: [67108896] and "^@".
>
> Is this as good as can be expected - is there no way to get something more
> readable for [?\C-\ ]?

(key-description [67108896]) => "C-SPC"
(key-description "\C- ") => "C-@"

> Emacs users learn quickly to read "^@" as "control @", and they also
> learn that this is equivalent to "control SPC", but [67108896] is hard
> to read and digest.

Keys are just integers in Emacs.  There is nothing that makes any integer
special wrt to keys.

> Also, correct me if I'm wrong, but my understanding is that the form [?\C- ]
> is generally preferred over the form "\C- ", for a key binding.

These two key sequences represent quite different bindings.  You can't get
one override the other, it depends on the terminal which key you receive
on typing C-space.

> If so, that makes matters worse in cases like this.
>
> This form is good:
>
>  (defcustom my-key [(control ?\ )] "My key sequence.")

(key-description [(control ?\ )]) => "C-SPC"

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: key-binding values
  2005-09-06 16:26 ` Andreas Schwab
@ 2005-09-06 17:15   ` Drew Adams
  2005-09-06 22:14     ` Andreas Schwab
  2005-09-07  5:05   ` Richard M. Stallman
  1 sibling, 1 reply; 6+ messages in thread
From: Drew Adams @ 2005-09-06 17:15 UTC (permalink / raw)


    > Is this as good as can be expected - is there no way to get
    something more
    > readable for [?\C-\ ]?

    (key-description [67108896]) => "C-SPC"
    (key-description "\C- ") => "C-@"

Yes, that's what key-description is for. My question was, "is this as good
as can be expected from C-h v in this case?"  I suppose the answer is "yes",
because there is no way for describe-variable to know that this represents a
key sequence and not an arbitrary string or vector.

    > Emacs users learn quickly to read "^@" as "control @", and they also
    > learn that this is equivalent to "control SPC", but [67108896] is hard
    > to read and digest.

    Keys are just integers in Emacs.  There is nothing that makes
    any integer special wrt to keys.

Characters, not key sequences, are integers. Some key sequences are
characters (integers), but others are more complex events. And none of the
ouput expressions "^@", [67108896], and [(control 32)], or the input
expressions "\C- ", [?\C-\ ], and [(control ?\ )], is an integer.

But this point is valid: There is nothing that makes a vector, string etc.
special wrt a key. There is no way for C-h v to know that a given value is
intended to represent a key sequence.

    > Also, correct me if I'm wrong, but my understanding is that
    the form [?\C- ]
    > is generally preferred over the form "\C- ", for a key binding.

    These two key sequences represent quite different bindings.
    You can't get
    one override the other, it depends on the terminal which key you receive
    on typing C-space.

Whenever either is acceptable, is one of the two preferred in Emacs-Lisp
code, for binding keys? My understanding was that the vector form was
preferred.

    > If so, that makes matters worse in cases like this.
    > This form is good:
    >  (defcustom my-key [(control ?\ )] "My key sequence.")

Given all of the above, I would think that [(control ?\ )] should be the
preferred syntax in code, whenever alternatives are equivalent. Both the
source code and the C-h v output are clearer.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: key-binding values
  2005-09-06 17:15   ` Drew Adams
@ 2005-09-06 22:14     ` Andreas Schwab
  2005-09-06 22:51       ` Edward O'Connor
  0 siblings, 1 reply; 6+ messages in thread
From: Andreas Schwab @ 2005-09-06 22:14 UTC (permalink / raw)
  Cc: Emacs-Devel

"Drew Adams" <drew.adams@oracle.com> writes:

>     > Also, correct me if I'm wrong, but my understanding is that
>     the form [?\C- ]
>     > is generally preferred over the form "\C- ", for a key binding.
>
>     These two key sequences represent quite different bindings.
>     You can't get
>     one override the other, it depends on the terminal which key you receive
>     on typing C-space.
>
> Whenever either is acceptable, is one of the two preferred in Emacs-Lisp
> code, for binding keys? My understanding was that the vector form was
> preferred.

IMHO there is no real preference.  The string notation can only represent
a limited set of keys, but is easier to read when it works.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: key-binding values
  2005-09-06 22:14     ` Andreas Schwab
@ 2005-09-06 22:51       ` Edward O'Connor
  0 siblings, 0 replies; 6+ messages in thread
From: Edward O'Connor @ 2005-09-06 22:51 UTC (permalink / raw)


> IMHO there is no real preference. The string notation can only
> represent a limited set of keys, but is easier to read when it works.

This is why I always use the (kbd "...") notation: represents all keys,
and is more readable than the other options.


Ted

-- 
Edward O'Connor
hober0@gmail.com

Ense petit placidam sub libertate quietem.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: key-binding values
  2005-09-06 16:26 ` Andreas Schwab
  2005-09-06 17:15   ` Drew Adams
@ 2005-09-07  5:05   ` Richard M. Stallman
  1 sibling, 0 replies; 6+ messages in thread
From: Richard M. Stallman @ 2005-09-07  5:05 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    (key-description [67108896]) => "C-SPC"
    (key-description "\C- ") => "C-@"

    > Emacs users learn quickly to read "^@" as "control @", and they also
    > learn that this is equivalent to "control SPC", but [67108896] is hard
    > to read and digest.

    Keys are just integers in Emacs.  There is nothing that makes any integer
    special wrt to keys.

It would be feasible to define a custom type that would
display these vectors or strings of integers in a way
that is convenient when they are really key sequences.
It could be called `key-sequence'.

I don't plan to do this myself.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-09-07  5:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-06 15:50 key-binding values Drew Adams
2005-09-06 16:26 ` Andreas Schwab
2005-09-06 17:15   ` Drew Adams
2005-09-06 22:14     ` Andreas Schwab
2005-09-06 22:51       ` Edward O'Connor
2005-09-07  5:05   ` Richard M. Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).