unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* drew.adams@oracle.com: bug in read-kbd-macro
@ 2006-09-25  3:18 Richard Stallman
  2006-09-25 19:55 ` Chong Yidong
  0 siblings, 1 reply; 17+ messages in thread
From: Richard Stallman @ 2006-09-25  3:18 UTC (permalink / raw)


Would someone please DTRT and ack?

------- Start of forwarded message -------
From: "Drew Adams" <drew.adams@oracle.com>
To: <emacs-pretest-bug@gnu.org>
Date: Sun, 24 Sep 2006 00:47:27 -0700
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
In-Reply-To: <EIENLHALHGIMHGDOLMIMIEIPCLAA.drew.adams@oracle.com>
Subject: RE: single-key-description no good for Japanese and Chinese chars
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=failed 
	version=3.0.4

I ran across this issue/question. I don't know know if it is a bug or not.
If not, perhaps someone has a suggestion of how to deal with it.

I have strings that name keys in keymaps (from map-keymap). Some are prefix
keys. Examples: "C-x", "modeline", "f1".

I use `read-kbd-macro' with the string name as first arg and t as the
second, NEED-VECTOR arg. Example: "C-x" gives [24].

If the binding of the key is a keymap, so the key is a prefix key, then I
concatenate the current prefix-key name (e.g. [] for global) with the key
name: (vconcat prefix key). Example, when using map-keymap over the
global-map, the prefix is [] and, for key [24] this gives [24].

This works fine for prefix keys that are not names, but it does not work for
named prefix keys, such as `mode-line' and `f1'. The reason is that
(read-kbd-macro "mode-line" t) does not return [mode-line]; it returns the
equivalent of "mode-line", that is, a vector of characters: [109 111 100 101
45 108 105 110 101].

When I try to look up accessible-keymaps of that prefix, I obviously get
none. That is, whereas (accessible-keymaps (current-global-map) [mode-line])
would work, the call generated is instead (accessible-keymaps
(current-global-map) "mode-line"), or, more exactly, (accessible-keymaps
(current-global-map) [109 111 100 101 45 108 105 110 101]), which fails.

The first question is whether this is a bug: should (read-kbd-macro
"mode-line" t) return [mode-line]?

If not, I guess I'll need some other way to convert names to vector keys for
the prefix keys. Suggestions? If I knew that a given prefix-key name was a
"named" prefix key (as opposed to a control key name, for instance), then
instead of using `read-kbd-macro' I would use just (vector (intern key)).
That is, I'd use `read-kbd-macro' for "C-x" but (vector (intern
"mode-line")). Anyone know how to make such a distinction?

To complicate things, I see that (read-kbd-macro "<mode-line>"), with or
without the second arg, returns [mode-line]. However, I use key names
without angle brackets (because they are much more readable), and, again, I
don't know how to distinguish the named keys, to add back the angle brackets
internally, just for `read-kbd-macro'.

I thought also of trying to use `kbd' on the key name, hoping that might
help, but (kbd "mode-line") also gives "mode-line". I wonder too if that
might be a bug.

Yes, if I use angle-bracketed key names (strings), then the problem does not
arise, but I really don't want to do that, as it is a zillion times less
readable. Here is a sample of the *Completions* buffer in each style, to
show what I mean:

Without angle brackets:

C-M-S-backspace  =  copy-to-register
C-M-S-delete  =  append-to-register
C-M-S-f1  =  rename-buffer         C-M-S-insert  =  insert-file
C-M-backspace  =  backward-kill-sexp
C-M-delete  =  kill-sexp           C-M-down  =  enlarge-frame
C-M-down-mouse-1  =  mouse-drag-secondary
C-M-drag-mouse-1  =  mouse-set-secondary
C-M-end  =  end-of-defun           C-M-f1  =  font-lock-fontify-buffer
C-M-home  =  beginning-of-defun    C-M-insert  =  lisp-complete-symbol
C-M-left  =  shrink-frame-horizontally

With angle brackets:

<C-M-S-backspace>  =  copy-to-register
<C-M-S-delete>  =  append-to-register
<C-M-S-f1>  =  rename-buffer       <C-M-S-insert>  =  insert-file
<C-M-backspace>  =  backward-kill-sexp
<C-M-delete>  =  kill-sexp         <C-M-down-mouse-1>  =
mouse-drag-secondary
<C-M-down>  =  enlarge-frame       <C-M-drag-mouse-1>  =
mouse-set-secondary
<C-M-end>  =  end-of-defun         <C-M-f1>  =  font-lock-fontify-buffer
<C-M-home>  =  beginning-of-defun  <C-M-insert>  =  lisp-complete-symbol
<C-M-left>  =  shrink-frame-horizontally

The effect is even worse when other keys that don't have angle brackets are
in the list. For example, C-d has no angle brackets, but <C-left> does.
Users don't think of these as being very different, but a simple sort of
*Completions* puts them very far apart. You can see from the snippets above
that the order is changed even among the same set of keys that take angle
brackets, because ">" is sorted after "-": `C-M-down' appears after
`C-M-down-mouse-1' when angle brackets are present.

Thx for any suggestions.

[BTW, the doc string of `read-kbd-macro' is a bit confusing, but the manual
is clear. The doc string names the args START &optional END, but it then
speaks of the possibility of a "single string argument" and a "second
argument NEED-VECTOR" for Lisp calls. This is correct, but it could perhaps
be worded better.]





_______________________________________________
emacs-pretest-bug mailing list
emacs-pretest-bug@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug
------- End of forwarded message -------

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-25  3:18 drew.adams@oracle.com: bug in read-kbd-macro Richard Stallman
@ 2006-09-25 19:55 ` Chong Yidong
  2006-09-25 22:43   ` Drew Adams
  2006-09-26  1:02   ` Richard Stallman
  0 siblings, 2 replies; 17+ messages in thread
From: Chong Yidong @ 2006-09-25 19:55 UTC (permalink / raw)
  Cc: emacs-devel

> From: "Drew Adams" <drew.adams@oracle.com>
>
> The first question is whether this is a bug: should (read-kbd-macro
> "mode-line" t) return [mode-line]?

I don't think so; as the lispref documentation for read-kbd-macro
says, it is roughly an inverse of `key-description', and

 M-: (key-description [mode-line]) RET

  ==> "<mode-line>"

> To complicate things, I see that (read-kbd-macro "<mode-line>"), with or
> without the second arg, returns [mode-line].

This is correct.

I think we should close this bug.

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

* RE: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-25 19:55 ` Chong Yidong
@ 2006-09-25 22:43   ` Drew Adams
  2006-09-25 23:16     ` Chong Yidong
                       ` (2 more replies)
  2006-09-26  1:02   ` Richard Stallman
  1 sibling, 3 replies; 17+ messages in thread
From: Drew Adams @ 2006-09-25 22:43 UTC (permalink / raw)
  Cc: emacs-devel

    > The first question is whether this is a bug: should (read-kbd-macro
    > "mode-line" t) return [mode-line]?

    I don't think so; as the lispref documentation for read-kbd-macro
    says, it is roughly an inverse of `key-description', and

     M-: (key-description [mode-line]) RET ==> "<mode-line>"

    > To complicate things, I see that (read-kbd-macro "<mode-line>"),
    > with or without the second arg, returns [mode-line].

    This is correct.

Yes, I already said that that part was correct. The problem is for
unbracketed descriptions, as I indicated.

    I think we should close this bug.

I disagree, on two counts -

1. There was also a suggestion in the bug report to improve the doc string
of `read-kbd-macro'. The description of the arguments in the two cases of
interactive and Lisp use is confusing. This is independent of the rest of
the bug report.

2. The bug reported is not about the behavior when angle brackets are
included. There is no bug in that case, as I stated, so there is no sense
citing that case as evidence that there is no bug. The bug is about the
behavior when angle brackets are not used in the key description. Key
descriptions need not have angle brackets, and `read-kbd-macro' should
handle that case also.

(And, yes, read-kbd-macro should be an inverse of key-description.)

Angle-bracket notation is, at least in some contexts, highly UNreadable. I
gave two examples showing why angle brackets can be unhelpful. One was
simply the different treatment of `C-d' and `<C-left>', which users don't
think of as being significantly different types of critter (Occam's razor).
A UI that refers to them both without angle brackets is more readable in
many contexts. The other example concerned the sort order of key names,
which is thrown off by `>', so, for instance, `<C-M-down-mouse-1>' appears
before, not after, `<C-M-down>' alphabetically.

The larger point is that applications should be able to use either external
key-description notation (with or without <>) easily - the Lisp functions
that produce and consume such descriptions shouldn't make it hard to use
either notation.

It's very good that we have a `no-angle' option to `single-key-description'.
What's needed, I think, is a `no-angle' option for `key-description' and
`read-kbd-macro' also, so users can control the external key representation
format to be used (bracketed or not). Then, we would have the following
(only the * are new):

*1. (key-description [mode-line] 'no-angles) => "mode-line"
 2. (single-key-description 'mode-line 'no-angles) => "mode-line"
*3. (read-kbd-macro "mode-line" t 'no-angles) => [mode-line]

 4. (key-description [mode-line]) => "<mode-line>"
 5. (single-key-description 'mode-line) => "<mode-line>"
 6. (read-kbd-macro "<mode-line>" t) => [mode-line]

We already have everything except #1 and #3. In Emacs 20, we already had the
result of #1, but for #4, so #1 must be feasible to implement.

---

BTW, some other problems with key notation -

1. The Emacs manual does not use the notation <next>; it uses <NEXT>. Is
this the right thing? The Lisp functions that provide key descriptions
produce <next>, not <NEXT>.

2. The Emacs manual's treatment of <NEXT>, <F10>, etc. is on a par with its
treatment of <CTRL>, <META>, <ALT>, and <SHIFT>, which I don't think are
possible outputs of the key-description functions, not being complete keys.

I wonder what the manual convention is, and whether it needs to fit what the
key-description functions return. Shouldn't we distinguish things such as
<META> from things such as <next>?

3. I personally think `next' and `f10' are clearer than <NEXT> and <F10>,
and they are more consistent with, say, `C-x' and `b'. The only possible
confusion is between a multiple-key sequence such as `f 10' or `f 1 0'
(assuming `f' and `f 1' are prefix keys) and a key sequence such as `f10',
and I think we already have the convention of using spaces to distinguish
these.

Do we have any key names that contain spaces, so that angle-bracket notation
would actually add something important? I don't know of any. If we did,
then, yes, `<foo bar> 5' is unambiguous, whereas `foo bar 5' could be
ambiguous. In that case alone, we might use brackets.

4. If we do change the manual convention along the lines I suggest, we might
want to reconsider things like <SPC> (which would become `SPC' by my
suggestion) and <RET>. Is there any good reason for these to be uppercase?
How about just `spc' and `ret' (and `tab' etc.)?

5. I note too that `describe-key' shows SPC, RET, and DEL, not <SPC>, <RET>,
and <DEL>, in *Help*. And keystroke echoing shows ESC, not <ESC>. These
usages are thus also inconsistent with what is in the Emacs manual (<SPC>,
<RET>, and <DEL>).

6. The manual writes `M-<RET>', not <M-RET> - 1) quotes are used, in
addition to angle brackets; and 2) the angle brackets don't surround the
modifier. As someone else recently pointed out, the angle-bracket notation
used by the key-description functions puts the modifier inside the brackets
(e.g. <S-tab>). So, here is another inconsistency between the manual and the
description functions. (I imagine that the quotes were added because of the
presence of the modifier.)

I tend to agree with the other writer, BTW, that S-<tab> is more readable
than <S-tab>, but we should at least be consistent. Again, to me, the most
readable is `S-tab' (or S-tab, in some contexts); the angle brackets add
nothing but noise, wherever they are placed.

7. Is it correct that the manual uses `M-<PAGEUP>' and not `M-<PRIOR>' (or
<M-prior>)? This also seems to be a source of confusion.


Summary:

1. Key-description producing and consuming functions should be able to use
both syntaxes: with and without angle brackets.

2. It would be good for the UI, the manual, and the output from the
key-description functions to all be on the same page wrt key notation.

3. IMO, `keyname' is almost always clearer than <keyname>, <KEYNAME>, and
`<KEYNAME>'.  I'd like to see us use that in both the UI and the manual.
Similarly, `M-keyname' is clearer than `M-<keyname>' and <M-keyname>.


[To be explicit: I'm not proposing any such changes before the release. But
some of the bugs (e.g. doc string of `read-kbd-macro') could perhaps be
fixed before then.]

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-25 22:43   ` Drew Adams
@ 2006-09-25 23:16     ` Chong Yidong
  2006-09-26  0:20       ` Drew Adams
  2006-09-26 14:13     ` Johan Bockgård
  2006-09-26 15:41     ` Richard Stallman
  2 siblings, 1 reply; 17+ messages in thread
From: Chong Yidong @ 2006-09-25 23:16 UTC (permalink / raw)
  Cc: rms, emacs-devel

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

> Angle-bracket notation is, at least in some contexts, highly UNreadable.

I don't think this is serious enough to warrant working on, so close
to release.

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

* RE: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-25 23:16     ` Chong Yidong
@ 2006-09-26  0:20       ` Drew Adams
  0 siblings, 0 replies; 17+ messages in thread
From: Drew Adams @ 2006-09-26  0:20 UTC (permalink / raw)
  Cc: rms, emacs-devel

    > Angle-bracket notation is, at least in some contexts, highly
    > UNreadable.

    I don't think this is serious enough to warrant working on, so close
    to release.

Please read what I wrote - for example, this:

  [To be explicit: I'm not proposing any such changes before the
  release. But some of the bugs (e.g. doc string of `read-kbd-macro')
  could perhaps be fixed before then.]

What's the use of my adding an explicit note (and even pointing out that I'm
adding an explicit note, to avoid misinterpretation), if you don't read what
I write? There's no sense replying hastily to something you haven't read.

As Kim noted, a release need not try to be bug-free, and it won't be
bug-free even it tries. These are, IMO, bugs, but they need not be fixed
before the release.

Apparently, you and I are in violent agreement, for once - at least about a
part you seem not to have read ;-).

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-25 19:55 ` Chong Yidong
  2006-09-25 22:43   ` Drew Adams
@ 2006-09-26  1:02   ` Richard Stallman
  1 sibling, 0 replies; 17+ messages in thread
From: Richard Stallman @ 2006-09-26  1:02 UTC (permalink / raw)
  Cc: emacs-devel

    I don't think so; as the lispref documentation for read-kbd-macro
    says, it is roughly an inverse of `key-description', and

     M-: (key-description [mode-line]) RET

      ==> "<mode-line>"

Thanks for resolving this.

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-25 22:43   ` Drew Adams
  2006-09-25 23:16     ` Chong Yidong
@ 2006-09-26 14:13     ` Johan Bockgård
  2006-09-26 15:02       ` Drew Adams
  2006-09-26 15:41     ` Richard Stallman
  2 siblings, 1 reply; 17+ messages in thread
From: Johan Bockgård @ 2006-09-26 14:13 UTC (permalink / raw)


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

> 1. The Emacs manual does not use the notation <next>; it uses
> <NEXT>. Is this the right thing? The Lisp functions that provide key
> descriptions produce <next>, not <NEXT>.

The manual is written in English, not Lisp. Here's how it looks in the
printed version (look ma, no angle brackets):

http://www.dd.chalmers.se/~bojohan/emacs/img/keys.png

(The Texinfo manual says that this notation refers to "a name for a
key on a keyboard".)

-- 
Johan Bockgård

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

* RE: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-26 14:13     ` Johan Bockgård
@ 2006-09-26 15:02       ` Drew Adams
  2006-09-26 20:35         ` Eli Zaretskii
  0 siblings, 1 reply; 17+ messages in thread
From: Drew Adams @ 2006-09-26 15:02 UTC (permalink / raw)


    > 1. The Emacs manual does not use the notation <next>; it uses
    > <NEXT>. Is this the right thing? The Lisp functions that provide key
    > descriptions produce <next>, not <NEXT>.
    
    The manual is written in English, not Lisp. Here's how it looks in the
    printed version (look ma, no angle brackets):    
    http://www.dd.chalmers.se/~bojohan/emacs/img/keys.png    
    (The Texinfo manual says that this notation refers to "a name for a
    key on a keyboard".)
    
1. It's useful to have the UI notation (everywhere) and the manual notation be the same, in general. It is a hindrance to have them different.

2. It's useful to have the same notation for both online and printed manual, in general.

3. It's useful to use the same notation convention for all key sequences. It misleads to write `a' and `]' one way and `prior' another way (<PRIOR>).

4. `prior' is much more readable than the kind of notation shown in your screenshot. Frankly, that looks like someone's first half-day playing with PowerPoint or Word, a hangover from font binging. After a few pages dense with key and key-sequence descriptions, that begins to nauseate. 

5. I pointed out additional inconsistencies.

6. <S-tab>, `S-<tab>', S-<tab>, `S-TAB', and S-TAB are _not_ names of keys on a keyboard. They are descriptions of key _sequences_.

7. CTRL, META, ALT, and so on, might be names of keys on many keyboards, but they are not names of key sequences. A different notation for these keyboard keys is OK. When used in the context of key sequences, the notation `C-' and `M-' is preferable (yes, the relation between META and `M-' is not obvious, and the same is true for CTRL and `C-').

8. This has nothing to do with Lisp vs English. We are talking about English communication here - in both UI and manual. I mentioned those Lisp functions because they are what a programmer uses to extend the UI (e.g. help, messages). So, it is that notation that users see in the UI as it is extended by user libraries. The point about Lisp is that the notation that programmers display to users should be the same as the notation shown to users elsewhere in the UI and in the manual.

[Again, I'm not proposing correcting this before the release.]

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-25 22:43   ` Drew Adams
  2006-09-25 23:16     ` Chong Yidong
  2006-09-26 14:13     ` Johan Bockgård
@ 2006-09-26 15:41     ` Richard Stallman
  2 siblings, 0 replies; 17+ messages in thread
From: Richard Stallman @ 2006-09-26 15:41 UTC (permalink / raw)
  Cc: cyd, emacs-devel

    2. The bug reported is not about the behavior when angle brackets are
    included. There is no bug in that case, as I stated, so there is no sense
    citing that case as evidence that there is no bug. The bug is about the
    behavior when angle brackets are not used in the key description. Key
    descriptions need not have angle brackets

Key descriptions that are meant to be read back in reliably
do need to have angle brackets.

    Angle-bracket notation is, at least in some contexts, highly UNreadable.

I think that is a bit of an exaggeration, but even if we grant it,
the fact is that angle-bracket notation is what we use for
output to be "readable" by read-kbd-macro.

I will not consider a change in this now, and probably not ever;
please let's drop the issue.

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-26 15:02       ` Drew Adams
@ 2006-09-26 20:35         ` Eli Zaretskii
  2006-09-27  0:18           ` Drew Adams
  0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2006-09-26 20:35 UTC (permalink / raw)
  Cc: karl, emacs-devel, bojohan+news

> From: "Drew Adams" <drew.adams@oracle.com>
> Date: Tue, 26 Sep 2006 08:02:07 -0700
> 
> 1. It's useful to have the UI notation (everywhere) and the manual notation be the same, in general. It is a hindrance to have them different.

The manual notation for a certain key should be the same, anything
else is a bug that should be reported and fixed.  For example, the
`next' key should be spelled as @key{NEXT} everywhere in the manual's
text, and produce "<NEXT>" in the Info format.

> 2. It's useful to have the same notation for both online and printed manual, in general.

Given how @key is typeset in the printed version, this is clearly
impossible, except in the graphics session of Emacs, and then only if
we hide the text of the Info file and show some image in its stead.
Given our quite negative experience with hiding parts of the Info
text, I'd say it's unwise to go that way in this case.

> 3. It's useful to use the same notation convention for all key sequences. It misleads to write `a' and `]' one way and `prior' another way (<PRIOR>).

There's a method to this, which should probably be explained better in
the Texinfo manual than it is now: <PRIOR> (produced by @key) is used
to distinguish it from the sequence of letters P, R, I, O, R.  That
is, @key is for those cases where you mean a single key labeled with a
name, and where, were you to say `PRIOR', the reader could have
confused that to think she should type the above sequence of
characters one after the other, instead of pressing a single key.

> 4. `prior' is much more readable than the kind of notation shown in
> your screenshot.

I disagree.  FWIW, I never heard anyone complaining about how Texinfo
typesets @key.  YMMV, of course.

> Frankly, that looks like someone's first half-day playing with PowerPoint or Word, a hangover from font binging. After a few pages dense with key and key-sequence descriptions, that begins to nauseate. 

A wild exaggeration, IMHO.  This has been like that for ages.  Of
course, if you wish to submit a change to texinfo.tex to make it look
prettier, please do.

> 6. <S-tab>, `S-<tab>', S-<tab>, `S-TAB', and S-TAB are _not_ names of keys on a keyboard. They are descriptions of key _sequences_.

I think they should be written as @code{S-@key{TAB}} and appear as
`S-<TAB>', and the other variants are in error.

> 7. CTRL, META, ALT, and so on, might be names of keys on many keyboards, but they are not names of key sequences.

They are the names of keys.  When the manual talks about them as
separate keys, it should use @key, yielding <CTRL>, <META>, etc.  When
it describes them as modifiers of other keys, they should be in @code
or @samp and appear as C-, M-, etc.  I believe anything else is again
an error in the manual that should fixed.

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

* RE: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-26 20:35         ` Eli Zaretskii
@ 2006-09-27  0:18           ` Drew Adams
  2006-09-27  3:33             ` Eli Zaretskii
  0 siblings, 1 reply; 17+ messages in thread
From: Drew Adams @ 2006-09-27  0:18 UTC (permalink / raw)
  Cc: karl, emacs-devel, bojohan+news

    > 1. It's useful to have the UI notation (everywhere) and the
    manual notation be the same, in general. It is a hindrance to
    have them different.
    
    The manual notation for a certain key should be the same,
    anything else is a bug that should be reported and fixed.
    For example, the `next' key should be spelled as @key{NEXT}
    everywhere in the manual's text, and produce "<NEXT>" in the
    Info format.

The UI notation is not the same as the manual notation. That was
what this point (#1) is about: UI != manual.  You, I think, are
speaking of consistency within the manual.  My point was that the
manual writes `S-<TAB>' (including the quotes) but the UI writes
<S-tab>.  That is the inconsistency pointed out in #1.

This is not the end of the world, of course, but why not use the
same notation everywhere?  What would we lose by being consistent
in that way?  If both notations are unambiguous and clear, then
let's pick just one and stick to it everywhere.  Occam would like
us to.

[FWIW - I suspect the reason the manual notation is different
from the UI might be because someone opted for key images in the
printed manual (see #2), and those images already stood for the
angle-bracket notation of keys (e.g. <TAB>), so there was no way
to add modifiers, other than to put them "outside" the angle
brackets implicit in the printed image.  

That is, once you've replaced <TAB> with an image, adding `S-' to
that can only produce S-image, which translates to S-<TAB>, not
<S-tab>, for the online manual (and someone decided to add quotes
for extra beauty: `S-<TAB>').  Putting the modifier in the image
itself would presumably have violated the idea that the image
stood for a keyboard key - <S-tab> is not a keyboard key.

If I'm right about this, it means that the decision to use a
different notation in print (images) vs on line (angle brackets)
ended up also producing a notation difference between the manual
(both online and print) and the UI.  Dommage.]
    
    > 2. It's useful to have the same notation for both online
    and printed manual, in general.
    
    Given how @key is typeset in the printed version, this is
    clearly impossible, except in the graphics session of Emacs,
    and then only if we hide the text of the Info file and show
    some image in its stead.

No; it is possible.  Just do the opposite: bring the printed
version into line with the online version, even the non-graphic
(i.e. console) version, by using `next' for both.  Or, if you
don't like my suggestion to use quotes instead of angle brackets,
use <next> (or even <NEXT>, but without the image stuff) for
both.

The point is to use the same thing for both, and if one of them
is too fancy for the other medium, then that is obviously not the
one to try to use for both ;-).

    Given our quite negative experience with hiding parts of the
    Info text, I'd say it's unwise to go that way in this case.

Yes, no need to go there. This is not that complicated.

To be clear, point #2 is not very important, as long as the
printed manual explains its special typographical convention and
explicitly introduces the standard notation (that is, the
notation used for the UI).  IOW, it's OK to use a special
notation in the printed manual, but the real thing for users to
learn is the standard notation, the one they will encounter when
using Emacs.

I personally don't think we gain anything by using a special
typographical convention in the printed manual (especially one as
ugly as what we have now), but I want to be clear that if we do,
then we should at least point that out and present the standard
(that is, the UI) notation explicitly: <S-tab>, not `S-<TAB>'.
(Perhaps we do already; I didn't check.)
    
    > 3. It's useful to use the same notation convention for all
    key sequences. It misleads to write `a' and `]' one way and
    `prior' another way (<PRIOR>).
    
    There's a method to this, which should probably be explained
    better in the Texinfo manual than it is now: <PRIOR>
    (produced by @key) is used to distinguish it from the
    sequence of letters P, R, I, O, R.  That is, @key is for
    those cases where you mean a single key labeled with a name,
    and where, were you to say `PRIOR', the reader could have
    confused that to think she should type the above sequence of
    characters one after the other, instead of pressing a single
    key.

I explained (in the part that you omitted) that separation by
spaces (e.g. `p r i o r' vs `prior') is an alternative convention
for a key sequence, which disambiguates the two just as well, and
it is also used in the manual (and in the UI) today.

We write `C-x 4 f', not `C-x4f'.  We certainly don't write
<C-x><4><f>, and that is the proof that the angle-bracket
convention is not _needed_.  You can still argue that you want it
for some reason, but it is not needed.

So, we have two different conventions now for separating keys
within a sequence, and only one is needed.  Since we don't (thank
goodness!) write <C-x><4><f>, the single convention to adopt
would be space separation: `C-x 4 f' and `p r i o r' (vs
`prior').  Occam wants us to have only one convention; I want
that convention to be space separation.

The only case where confusion could arise with the
space-separation convention is when a space is used as part of
the key sequence, and that is easily dealt with by using the
description of the space key, `SPC': e.g. `p r i SPC o r'.  That
is not even a special case, but it's worth pointing out.
    
    > 4. `prior' is much more readable than the kind of notation
    shown in your screenshot.
    
    I disagree.  FWIW, I never heard anyone complaining about how
    Texinfo typesets @key.  YMMV, of course.

Ah, the ol' "I never heard anyone complain" argument...  Well, it
was a long time coming, but you finally got your first suggestion
to change this.  Hallelujah!  Rejoice!
    
    > Frankly, that looks like someone's first half-day playing
    with PowerPoint or Word, a hangover from font binging. After
    a few pages dense with key and key-sequence descriptions,
    that begins to nauseate.
    
    A wild exaggeration, IMHO.

Sorry you think so.  Do you perhaps also like the raised buttons
that pollute Customize?  Was I the first to complain about those
too?  Headache, in addition to nausea, for those.

Anyway, people often disagree about which appearance is more
appealing or easier on the eye.  (Some people write entire emails
in UPPERCASE.)  There are perhaps UI experiments that have tested
this kind of thing, but I don't know of any specifically.  Guess
we'll just have to recognize that we don't have the same
taste/preference in this regard ;-).

    This has been like that for ages.  

Right.  And you never heard anyone complain...

    Of course, if you wish to submit a change to texinfo.tex to
    make it look prettier, please do.

I'm not capable of that, I don't have the time, and I'm not sure
RMS would accept my contribution without papers from my employer.
I've made a suggestion about the notation.  If people like the
suggestion, then someone else can change texinfo.tex to realize
it.

Anyway, the point is moot I guess, as Richard has apparently
already decided - he agrees with you.
    
    > 6. <S-tab>, `S-<tab>', S-<tab>, `S-TAB', and S-TAB are
    _not_ names of keys on a keyboard. They are descriptions of
    key _sequences_.
    
    I think they should be written as @code{S-@key{TAB}} and
    appear as `S-<TAB>', and the other variants are in error.

And in the UI?

Anyway, #6 was a response to the quote from the Texinfo manual
stating that the notation in the screenshot refers to "a name for
a key on a keyboard".  <TAB> is the name of a keyboard key, but
`S-<TAB>' is not - it describes a key sequence.  Key-sequence
notation is not just a chaining of keyboard key names - we don't
typically write <SHIFT><TAB> for this key sequence.

My gripe is not really with using angle brackets to describe
keyboard keys; it is with using them in key-sequence notation or
to refer to logical keys, such as <mode-line>.  If you want to
keep <PRIOR> as a name for the keyboard key only, that's OK by
me, though I don't think it's necessary.  I'd prefer to refer to
such keys always by their key-sequence notation, which is <prior>
in the UI, and which I propose should be just `prior'.  I don't
think we'll ever need to write about the <PRIOR> keyboard key, as
opposed to the <prior> logical key in a key sequence, so I really
don't care much about what keyboard-key notation we use.

There are, anyway, very few keyboard keys that we would ever
_need_ to refer to by name, to distinguish them from the
key-sequence notation for the same key.  Those are the modifier
keys.  All other keyboard keys - and plenty of non-keyboard keys
that also have multiple-letter names - can just use their
key-sequence notation for the key as well.  We can always use
<prior> (or, as I prefer, `prior') for both key and key sequence;
we can always use <mode-line> (or `mode-line').

It is different, however, for modifier keys.  It is only for
modifier keys that we might need to distinguish the key from its
use in a key sequence - and that is the point of point #7 (see
next).
    
    > 7. CTRL, META, ALT, and so on, might be names of keys on
    many keyboards, but they are not names of key sequences.
    
    They are the names of keys.  When the manual talks about them
    as separate keys, it should use @key, yielding <CTRL>,
    <META>, etc.  When it describes them as modifiers of other
    keys, they should be in @code or @samp and appear as C-, M-,
    etc.  I believe anything else is again an error in the manual
    that should fixed.

Sounds reasonable to me, and I think that is already consistently
the case.

I agree, and that was, in fact, my point: this is true only for
modifier keys.  I singled out those keys here to point out that
they are different critters from keys such as `prior' (or
<PRIOR>), which can be (or can be part of) key sequences using
the same notation.

`prior' as a key is like `mode-line' (or <MODE-LINE> (manual) or
<mode-line> (UI)) as a key; it is not like <CTRL> as a key.  We
can have a key sequence `mode-line down-mouse-1' (or
`<mode-line><down-mouse-1>'), and we can have a key sequence
`C-down-mouse-1' (or `C-<down-mouse-1>' (manual) or
<C-down-mouse-1> (UI)), but we cannot have a key sequence
<CTRL><down-mouse-1>.  You might prefer to say that we could, but
it is not part of our notational convention.  We don't, in any
case.

You will also have noticed that the idea that the notation in the
screenshot refers to "a name for a key on a _keyboard_" cannot
even be applied to logical, non-keyboard keys such as
<mode-line> or <down-mouse-1>.

To the extent that we have a separate notation for keyboard keys,
as opposed to key sequences, I propose that we limit it to the
modifier keys.  At all other times, we can use the key-sequence
notation.

And the key-sequence notation to use is that of the UI:
<mode-line>, not <MODE-LINE>; <S-tab>, not `S-<TAB>'.

And the angle-bracket convention should be dropped - only the
space-separator convention should be used: `mode-line', not
<mode-line>, and `mode-line down-mouse-1', not
<mode-line><down-mouse-1>.

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-27  0:18           ` Drew Adams
@ 2006-09-27  3:33             ` Eli Zaretskii
  2006-09-27  6:22               ` Drew Adams
  0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2006-09-27  3:33 UTC (permalink / raw)
  Cc: karl, emacs-devel, bojohan+news

> From: "Drew Adams" <drew.adams@oracle.com>
> Cc: <bojohan+news@dd.chalmers.se>, <emacs-devel@gnu.org>,
>         <karl@freefriends.org>
> Date: Tue, 26 Sep 2006 17:18:37 -0700
> 
> The UI notation is not the same as the manual notation.

What is ``the UI notation''?

> You, I think, are speaking of consistency within the manual.

Yes.

>     > 2. It's useful to have the same notation for both online
>     and printed manual, in general.
>     
>     Given how @key is typeset in the printed version, this is
>     clearly impossible, except in the graphics session of Emacs,
>     and then only if we hide the text of the Info file and show
>     some image in its stead.
> 
> No; it is possible.  Just do the opposite: bring the printed
> version into line with the online version, even the non-graphic
> (i.e. console) version, by using `next' for both.

I think this is silly.  The printed version is more powerful than a
plain text version, and there's no need to go to the lowest common
denominator just for consistency's sake.  It's good enough that the
two are sufficiently similar.

Btw, @var causes its argument to be typeset in italics in the printed
version, but in the Info version it produces UPPERCASE.  Would you
suggest to typeset it in upper-case in the printed manual as well, for
consistency's sake?  It's absurd, I think.

> I explained (in the part that you omitted) that separation by
> spaces (e.g. `p r i o r' vs `prior') is an alternative convention
> for a key sequence, which disambiguates the two just as well

The problem is not how to show sequence of keys, the problem is how to
prevent the user from erroneously interpreting "Type `FOO'" as meaning
that she should type those literal characters.  It's about possible
reader's confusion, not about our notation.

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

* RE: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-27  3:33             ` Eli Zaretskii
@ 2006-09-27  6:22               ` Drew Adams
  2006-09-27 18:10                 ` Eli Zaretskii
  0 siblings, 1 reply; 17+ messages in thread
From: Drew Adams @ 2006-09-27  6:22 UTC (permalink / raw)
  Cc: karl, emacs-devel, bojohan+news

    > The UI notation is not the same as the manual notation.
    
    What is ``the UI notation''?

What you see in messages and *Help*.  What `describe-key',
`key-description', and other, similar, Lisp functions produce.
The key-sequence notation used by Emacs everywhere, except in the
manual.

I explained this; see my previous messages in the thread.  I gave
multiple examples of both UI and manual notations, labeling them
as such.
    
    >     > 2. It's useful to have the same notation for both online
    >     and printed manual, in general.
    >     
    >     Given how @key is typeset in the printed version, this is
    >     clearly impossible, except in the graphics session of Emacs,
    >     and then only if we hide the text of the Info file and show
    >     some image in its stead.
    > 
    > No; it is possible.  Just do the opposite: bring the printed
    > version into line with the online version, even the non-graphic
    > (i.e. console) version, by using `next' for both.
    
    I think this is silly.  The printed version is more powerful
    than a plain text version, 

If it were, that would certainly not be because of those key
images.  The doc that corresponds more exactly to what the user
sees in the application is the "more powerful" doc, because it
gives the user more power, from better understanding.  The manual
should use the same notation as the UI, unless there is a good
reason not to.  Got a good reason?  "It's more powerful" is not a
reason; it's just a marketing claim, unless some extra power is
identified.

    and there's no need to go to the lowest common denominator
    just for consistency's sake.  It's good enough that the two
    are sufficiently similar.
    
    Btw, @var causes its argument to be typeset in italics in the
    printed version, but in the Info version it produces
    UPPERCASE.  Would you suggest to typeset it in upper-case in
    the printed manual as well, for consistency's sake?  It's
    absurd, I think.

This discussion is about key-sequence descriptions and key
descriptions.  We can start another thread to discuss typesetting
@var, if you like, but I might have nothing special to say about
that; I haven't really thought about it.

My point was not that there cannot be typographical differences
between print manual and online manuals.  I explicitly said that
there can be, and I explicitly stated that it's good, _"in
general"_ , for them to use the same notation (you quoted it,
above).  What I mean by that is other things being equal.  To
justify different notations, something should be gained, not
lost.

I don't have an opinion whether something is gained by using
italic in the printed manual.  Italic could of course be used in
the online manual also, so there needs also to be an argument for
something being gained by using non-italic uppercase in the
online manual.  Again, this is off topic.

[BTW, I do find the new use of italic in variables/parameters of
*Help* descriptions (e.g. `describe-function') somewhat _less_
readable than the previous use of non-italic uppercase, but that
would be yet a third discussion (off topic).  (To be clear, I'm
not arguing now for or against using italic for that.)  I'll no
doubt get used to that change.]

I'm much less concerned about notation differences between online
and print manuals than I am between the key-sequence notation
used in the UI (messages, *Help*) and in the manuals.  We should
teach the notation used in the UI, because that's what people see
when they use Emacs.  I don't see a need for, or anything gained
by, introducing a different notation for the manuals (especially
one that is different in each form of the manual).  While I can
imagine someone arguing that italic or uppercase is more readable
in print or on line, I have a hard time imagining someone arguing
that the difference between the various key-sequence notations is
for readability.

What's wrong with <S-tab> (UI)?  What's better about `S-<TAB>'
(manual)?  If the latter is better, then why don't we use it in
the UI too?  In fact, I said, in a different thread recently,
that I too slightly preferred S-<tab> to <S-tab>.  That was in
response to someone pointing out, correctly, that the modifier is
not part of the key - the angle brackets having been presented in
the manual as signifying keyboard keys (which they don't, in
cases like <mode-line>).

While I think that S-<tab> is marginally clearer and more correct
than <S-tab>, the real point is that the manual should use
whatever Emacs (that is, the UI) uses, because the manual is
there to describe Emacs.  If you prefer to look at that the other
way 'round, then that's OK too: the UI should use whatever the
manual uses.  If `S-<TAB>' is better, then it is the UI that
should change to use that.  My argument, however, was that
`S-tab' is the way to go, for both UI and manuals.

It's best not to have several different notations, _unless_ they
convey some advantages.  I don't see any advantage, and I do see
disadvantages (already mentioned).
    
    > I explained (in the part that you omitted) that separation
    > by spaces (e.g. `p r i o r' vs `prior') is an alternative
    > convention for a key sequence, which disambiguates the two
    > just as well
    
    The problem is not how to show sequence of keys, the problem
    is how to prevent the user from erroneously interpreting
    "Type `FOO'" as meaning that she should type those literal
    characters.  It's about possible reader's confusion, not
    about our notation.

I disagree that the discussion is not about key-sequence
notation.  That is _all_ I have been talking about, and I'm the
one who started the thread.

Presenting how to type something (how to effect a key sequence)
is entirely different.  That introduces a possible fourth
discussion (off topic).  Again, I don't have anything special to
say about that, not having really thought about it.

In any case, I don't see what the "problem" is in that regard.
There are lots of ways to unambiguously tell readers to effect a
key sequence (type keys, perform mouse actions).  However, a
key-sequence notation `p r i' is not the same as an instruction
to type `p', then `r', then `i'.  A key sequence `S-tab' is not
the same as an instruction to press and hold the `SHIFT' key
while hitting the `TAB' key.  A key sequence `mode-line
down-mouse-1' is not the same as an instruction to press
`mouse-1' over the mode line.

An instruction to input a key sequence is not the same as a
key-sequence description (notation), even if a key-sequence
description can often give users an idea how to effect that key
sequence.  Given an understanding of the notation, it can often
be enough to say "hit `C-b'" or "use `C-x f'".  That's one of the
reasons for having a key-sequence notation, of course: to help
compose instructions for effecting key sequences.

In this regard, the space-separation notation (again, already
used in the manual and the UI, for sequences such as `C-x 4 f')
is every bit as unambiguous and clear as the angle-bracket
notation.  Saying "use `mode-line down-mouse-1'" is just as clear
as saying "use <mode-line><down-mouse-1>".  Saying "type `f o o'"
is clear and unambiguous, given the convention that spaces
separate and `SPC' represents the space key in key-sequence
notation.  And, again, nothing prevents us from not using
key-sequence notation to provide instructions: "type `f', `o',
`o'".  Users will never erroneously interpret "type `foo', as you
fear, because we would never write that in the manual; we would,
and do, write "type `f o o'".

This is nothing new.  The only thing new would be to use _only_
the space-separation notation, and abandon the angle-bracket
notation as a case of multiplying things (notations)
unnecessarily - Occam's razor.  Extra, unnecessary stuff is
wasteful and a source of confusion.  What is so special about
<f10> that it needs to be in angle brackets, while `f' and `C-x 4
f' do not?

If users can understand `C-x 4 f' when they see it in the UI, and
they do, then I don't see any problem with using this
space-separation notation for all key sequences.  There really is
no need for two different key-sequence notations.

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-27  6:22               ` Drew Adams
@ 2006-09-27 18:10                 ` Eli Zaretskii
  2006-09-27 18:51                   ` Miles Bader
  0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2006-09-27 18:10 UTC (permalink / raw)
  Cc: karl, emacs-devel, bojohan+news

> From: "Drew Adams" <drew.adams@oracle.com>
> Cc: <bojohan+news@dd.chalmers.se>, <emacs-devel@gnu.org>,
>         <karl@freefriends.org>
> Date: Tue, 26 Sep 2006 23:22:34 -0700
> 
> I explained this; see my previous messages in the thread.

Sorry, I cannot always afford to read everything, especially if the
messages are very long.

I responded to your later version because it seemed to tell that the
manual is internally inconsistent.  I don't care about the slight
difference between what Emacs displays for the names of the keys and
what the manual shows.

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-27 18:10                 ` Eli Zaretskii
@ 2006-09-27 18:51                   ` Miles Bader
  2006-09-27 19:06                     ` David Kastrup
  0 siblings, 1 reply; 17+ messages in thread
From: Miles Bader @ 2006-09-27 18:51 UTC (permalink / raw)
  Cc: emacs-devel, bojohan+news, Drew Adams, karl

Eli Zaretskii <eliz@gnu.org> writes:
> Sorry, I cannot always afford to read everything, especially if the
> messages are very long.

Amen.

Drew, you should really think about trying to be less verbose,
especially on minor issues like this.

-Miles

-- 
`Life is a boundless sea of bitterness'

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-27 18:51                   ` Miles Bader
@ 2006-09-27 19:06                     ` David Kastrup
  2006-09-27 20:31                       ` Kim F. Storm
  0 siblings, 1 reply; 17+ messages in thread
From: David Kastrup @ 2006-09-27 19:06 UTC (permalink / raw)
  Cc: karl, Eli Zaretskii, bojohan+news, Drew Adams, emacs-devel

Miles Bader <miles@gnu.org> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>> Sorry, I cannot always afford to read everything, especially if the
>> messages are very long.
>
> Amen.
>
> Drew, you should really think about trying to be less verbose,
> especially on minor issues like this.

I'd have used "bellicose".  One of the problems is that people just
skip those long discussions, and it does not help if the replies keep
repeating points all over.  This annoys all people involved including
Drew, because he fails to understand why people end up neither
countering nor supporting his points.

In an ideal world, one makes one's point one time, people form an
opinion once everything has been said once, come to a decision and act
on it.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: drew.adams@oracle.com: bug in read-kbd-macro
  2006-09-27 19:06                     ` David Kastrup
@ 2006-09-27 20:31                       ` Kim F. Storm
  0 siblings, 0 replies; 17+ messages in thread
From: Kim F. Storm @ 2006-09-27 20:31 UTC (permalink / raw)
  Cc: emacs-devel, karl, Eli Zaretskii, bojohan+news, Drew Adams,
	Miles Bader

David Kastrup <dak@gnu.org> writes:

> Miles Bader <miles@gnu.org> writes:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>> Sorry, I cannot always afford to read everything, especially if the
>>> messages are very long.
>>
>> Amen.
>>
>> Drew, you should really think about trying to be less verbose,
>> especially on minor issues like this.
>
> I'd have used "bellicose".  One of the problems is that people just
> skip those long discussions, and it does not help if the replies keep
> repeating points all over.  This annoys all people involved including
> Drew, because he fails to understand why people end up neither
> countering nor supporting his points.
>
> In an ideal world, one makes one's point one time, people form an
> opinion once everything has been said once, come to a decision and act
> on it.

I told Drew a long time ago that I would most likely skip his lengthy
messages -- not due to lack of interest or because I considered them
unimportant -- but simply because I don't have time and energy to do so.

Writing "a lot" is not a guarantee that your will "get your message across".

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

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

end of thread, other threads:[~2006-09-27 20:31 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-25  3:18 drew.adams@oracle.com: bug in read-kbd-macro Richard Stallman
2006-09-25 19:55 ` Chong Yidong
2006-09-25 22:43   ` Drew Adams
2006-09-25 23:16     ` Chong Yidong
2006-09-26  0:20       ` Drew Adams
2006-09-26 14:13     ` Johan Bockgård
2006-09-26 15:02       ` Drew Adams
2006-09-26 20:35         ` Eli Zaretskii
2006-09-27  0:18           ` Drew Adams
2006-09-27  3:33             ` Eli Zaretskii
2006-09-27  6:22               ` Drew Adams
2006-09-27 18:10                 ` Eli Zaretskii
2006-09-27 18:51                   ` Miles Bader
2006-09-27 19:06                     ` David Kastrup
2006-09-27 20:31                       ` Kim F. Storm
2006-09-26 15:41     ` Richard Stallman
2006-09-26  1:02   ` Richard 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).