* doc of prompt change with minor mode for read-key-sequence? @ 2006-09-12 16:27 Drew Adams 2006-09-13 15:10 ` Richard Stallman 0 siblings, 1 reply; 12+ messages in thread From: Drew Adams @ 2006-09-12 16:27 UTC (permalink / raw) I may not be characterizing this 100% correctly, but perhaps this will help someone knowledgeable to understand. I have this: ;; Make [pause] key be a synonym for `C-x 8' (compose key). (define-key key-translation-map [pause] (lookup-key key-translation-map "\C-x8")) I also have a minor mode named "Foo". When I do `C-h k' without the minor mode active, and hit the [pause] key, the prompt remains "Describe key: " (that is, I see "Describe key: pause-"). When I do the same thing with the minor mode active, the prompt changes to "Foo: " (and there is no "pause-" to indicate the prefix). It took me quite a while to discover where this second prompt was coming from. Because the translation happens at a low level, I couldn't figure out a way to debug it. By experimenting and searching source code, I found that "Foo: " comes from the name of the minor-mode keymap: (make-sparse-keymap "Foo"). (I don't know where the ": " is appended or in what code that takes place.) Questions: 1) Why does this happen? What is the purpose of the prompt change? Why doesn't "pause-" appear, as it does without the minor mode? 2) What are users to understand by this? Should the prompt instead say at least "Foo mode: " perhaps, to at least let users know what "Foo" refers to? 3) Shouldn't this be documented somewhere, especially since it is so difficult to find/debug (being a low-level translation)? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: doc of prompt change with minor mode for read-key-sequence? 2006-09-12 16:27 doc of prompt change with minor mode for read-key-sequence? Drew Adams @ 2006-09-13 15:10 ` Richard Stallman 2006-09-13 15:42 ` Drew Adams 0 siblings, 1 reply; 12+ messages in thread From: Richard Stallman @ 2006-09-13 15:10 UTC (permalink / raw) Cc: emacs-devel It took me quite a while to discover where this second prompt was coming from. Because the translation happens at a low level, I couldn't figure out a way to debug it. By experimenting and searching source code, I found that "Foo: " comes from the name of the minor-mode keymap: (make-sparse-keymap "Foo"). (I don't know where the ": " is appended or in what code that takes place.) I am not quite sure why this is happening, but I can tell you something. The "Foo" you specified in the keymap is its name as a menu. It ought to be used if the map is used as a menu, either a mouse menu or a keyboard menu. I do not see why it would be used as a menu in this case, but apparently it is. ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: doc of prompt change with minor mode for read-key-sequence? 2006-09-13 15:10 ` Richard Stallman @ 2006-09-13 15:42 ` Drew Adams 2006-09-13 16:45 ` Stefan Monnier 0 siblings, 1 reply; 12+ messages in thread From: Drew Adams @ 2006-09-13 15:42 UTC (permalink / raw) It took me quite a while to discover where this second prompt was coming from. Because the translation happens at a low level, I couldn't figure out a way to debug it. By experimenting and searching source code, I found that "Foo: " comes from the name of the minor-mode keymap: (make-sparse-keymap "Foo"). (I don't know where the ": " is appended or in what code that takes place.) I am not quite sure why this is happening, but I can tell you something. The "Foo" you specified in the keymap is its name as a menu. It ought to be used if the map is used as a menu, either a mouse menu or a keyboard menu. I do not see why it would be used as a menu in this case, but apparently it is. Right. I don't know why this happens either. My concern is that this is incomprehensible to users. If there is a good reason why this happens, then perhaps the prompt should make the meaning more explicit somehow. And, it should be documented somewhere. That was my point. Does someone know what this is all about, what it is for? (And where in the code it happens?) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: doc of prompt change with minor mode for read-key-sequence? 2006-09-13 15:42 ` Drew Adams @ 2006-09-13 16:45 ` Stefan Monnier 2006-09-13 17:19 ` Drew Adams 0 siblings, 1 reply; 12+ messages in thread From: Stefan Monnier @ 2006-09-13 16:45 UTC (permalink / raw) Cc: emacs-devel > Does someone know what this is all about, what it is for? (And where in the > code it happens?) IIUC this is the so-called "HierarKey" feature (or something like that). To see it in (useful) action, try M-o. I can't figure out from your original report what your minor mode "Foo" does (how is it defined, what does its keymap look like, ...?), so I'm not sure if what you see is the "expected" behavior or a bug. Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: doc of prompt change with minor mode for read-key-sequence? 2006-09-13 16:45 ` Stefan Monnier @ 2006-09-13 17:19 ` Drew Adams 2006-09-13 17:58 ` Stefan Monnier ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Drew Adams @ 2006-09-13 17:19 UTC (permalink / raw) > Does someone know what this is all about, what it is for? > (And where in the code it happens?) IIUC this is the so-called "HierarKey" feature (or something like that). To see it in (useful) action, try M-o. I can't figure out from your original report what your minor mode "Foo" does (how is it defined, what does its keymap look like, ...?), so I'm not sure if what you see is the "expected" behavior or a bug. Thanks for replying. I'm not sure what you mean - how to try it with M-o. Could you provide a short recipe, and mention what to look for? Searching for "Hierarkey", I found node Keyboard Menus in the Elisp manual. I'm not sure if what I'm describing is a bug - I hope so, because I find the behavior confusing, if not incomprehensible for users. The doc says that the feature is used "When a prefix key ending with a keyboard event (a character or function key) has a definition that is a menu keymap". In that case, you can "use the keyboard to choose a menu item." However, that is not the case here, I believe. The prefix key does not end with a function key that has a menu-keymap definition. It has a definition that _belongs_ to a menu keymap, which is not the same thing. And I cannot see how someone would/could use this feature in this context - it seems only to confuse things, to me. But I'm willing to learn. Also, since this feature obviously affects user-observable behavior, it should be documented in the Emacs manual. It is not only the implementation that is of interest to Emacs-Lisp programmers: Apparently, Emacs users must also be aware of this feature. As for my code, I have this: (define-key key-translation-map [f12] (lookup-key key-translation-map "\C-x8")) The minor mode is "Icicles", not "Foo". The minor mode (`icicle-mode') and its keymap (`icicle-mode-map') are defined here: http://www.emacswiki.org/cgi-bin/wiki/icicles-mode.el. Here is an outline of the keymap definition: (let ((map (make-sparse-keymap "Icicles"))) (define-key map [menu-bar] (make-sparse-keymap)) (define-key map [menu-bar icicles] (cons "Icicles" map)) ... (define-key map [pause] 'icicle-switch-to/from-minibuffer) (define-key map [f10] 'icicle-execute-menu-command) (push (cons 'icicle-mode map) minor-mode-map-alist) (setq icicle-mode-map map)) As I indicated, when I do `C-h k' for the `f12' key with the minor mode active, the prompt changes to "Icicles: ", and there is no longer any "f12-" in the prompt to indicate the prefix. (So, to reply to RMS: yes, "Icicles" is for the menu title, but the keymap is not used only for the menubar menu.) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: doc of prompt change with minor mode for read-key-sequence? 2006-09-13 17:19 ` Drew Adams @ 2006-09-13 17:58 ` Stefan Monnier 2006-09-14 2:34 ` Richard Stallman 2006-09-22 19:21 ` Stefan Monnier 2 siblings, 0 replies; 12+ messages in thread From: Stefan Monnier @ 2006-09-13 17:58 UTC (permalink / raw) Cc: emacs-devel >> Does someone know what this is all about, what it is for? >> (And where in the code it happens?) > IIUC this is the so-called "HierarKey" feature (or something > like that). To see it in (useful) action, try M-o. I can't > figure out from your original report what your minor mode > "Foo" does (how is it defined, what does its keymap look > like, ...?), so I'm not sure if what you see is the > "expected" behavior or a bug. > Thanks for replying. I'm not sure what you mean - how to try it with M-o. > Could you provide a short recipe, and mention what to look for? > Searching for "Hierarkey", I found node Keyboard Menus in the Elisp manual. > I'm not sure if what I'm describing is a bug - I hope so, because I find the > behavior confusing, if not incomprehensible for users. > The doc says that the feature is used "When a prefix key ending with a > keyboard event (a character or function key) has a definition that is a menu > keymap". In that case, you can "use the keyboard to choose a menu item." > However, that is not the case here, I believe. The prefix key does not end > with a function key that has a menu-keymap definition. It has a definition > that _belongs_ to a menu keymap, which is not the same thing. And I cannot > see how someone would/could use this feature in this context - it seems only > to confuse things, to me. But I'm willing to learn. > Also, since this feature obviously affects user-observable behavior, it > should be documented in the Emacs manual. It is not only the implementation > that is of interest to Emacs-Lisp programmers: Apparently, Emacs users must > also be aware of this feature. > As for my code, I have this: > (define-key key-translation-map [f12] > (lookup-key key-translation-map "\C-x8")) > The minor mode is "Icicles", not "Foo". The minor mode > (`icicle-mode') and its keymap (`icicle-mode-map') > are defined here: > http://www.emacswiki.org/cgi-bin/wiki/icicles-mode.el. > Here is an outline of the keymap definition: > (let ((map (make-sparse-keymap "Icicles"))) > (define-key map [menu-bar] (make-sparse-keymap)) > (define-key map [menu-bar icicles] (cons "Icicles" map)) > ... > (define-key map [pause] 'icicle-switch-to/from-minibuffer) > (define-key map [f10] 'icicle-execute-menu-command) > (push (cons 'icicle-mode map) minor-mode-map-alist) > (setq icicle-mode-map map)) > As I indicated, when I do `C-h k' for the `f12' key with the minor mode > active, the prompt changes to "Icicles: ", and there is no longer any "f12-" > in the prompt to indicate the prefix. Looks like a bug indeed. The interaction of key-translation-map with the rest of the key lookup and handling is pretty messy. I'll try and take a look at it. Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: doc of prompt change with minor mode for read-key-sequence? 2006-09-13 17:19 ` Drew Adams 2006-09-13 17:58 ` Stefan Monnier @ 2006-09-14 2:34 ` Richard Stallman 2006-09-14 15:09 ` Drew Adams 2006-09-22 19:21 ` Stefan Monnier 2 siblings, 1 reply; 12+ messages in thread From: Richard Stallman @ 2006-09-14 2:34 UTC (permalink / raw) Cc: emacs-devel If you don't want that keymap to function as a menu, why give it a menu title? (This does not mean I am against fixing the bug in Emacs if this is due to one.) ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: doc of prompt change with minor mode for read-key-sequence? 2006-09-14 2:34 ` Richard Stallman @ 2006-09-14 15:09 ` Drew Adams 2006-09-18 14:58 ` Richard Stallman 0 siblings, 1 reply; 12+ messages in thread From: Drew Adams @ 2006-09-14 15:09 UTC (permalink / raw) If you don't want that keymap to function as a menu, why give it a menu title? It is the map for a global minor mode, Icicles. It functions as a menu-bar menu map, and there are also keyboard sequences bound in it. IOW, when that minor mode is turned on: 1) you get an "Icicles" menu-bar menu and 2) certain key sequences are defined. When the mode is turned off, the key sequences and menu bar are returned to the normal state. (This does not mean I am against fixing the bug in Emacs if this is due to one.) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: doc of prompt change with minor mode for read-key-sequence? 2006-09-14 15:09 ` Drew Adams @ 2006-09-18 14:58 ` Richard Stallman 2006-09-18 15:38 ` Drew Adams 0 siblings, 1 reply; 12+ messages in thread From: Richard Stallman @ 2006-09-18 14:58 UTC (permalink / raw) Cc: emacs-devel It is the map for a global minor mode, Icicles. It functions as a menu-bar menu map, and there are also keyboard sequences bound in it. To make the menu-bar menu work, you need to give a prompt string aka menu name to the map that you put on the prefix key menu-bar. But you don't need to give a prompt string aka menu name to the overall keymap for Icicles. That never needs to operate as a menu. So try removing the arg to make-sparse-keymap when you make the overall keymap, and see if everything works right. ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: doc of prompt change with minor mode for read-key-sequence? 2006-09-18 14:58 ` Richard Stallman @ 2006-09-18 15:38 ` Drew Adams 2006-09-18 23:39 ` Richard Stallman 0 siblings, 1 reply; 12+ messages in thread From: Drew Adams @ 2006-09-18 15:38 UTC (permalink / raw) It is the map for a global minor mode, Icicles. It functions as a menu-bar menu map, and there are also keyboard sequences bound in it. To make the menu-bar menu work, you need to give a prompt string aka menu name to the map that you put on the prefix key menu-bar. But you don't need to give a prompt string aka menu name to the overall keymap for Icicles. That never needs to operate as a menu. So try removing the arg to make-sparse-keymap when you make the overall keymap, and see if everything works right. Thank you; that took care of it. I think maybe I used the name in the call to `make-sparse-keymap' because I figured it wouldn't hurt, and I might use it someday as a pop-up-menu (somehow). This part of the doc string might have given me that impression: "The optional arg string supplies a menu name for the keymap in case you use it as a menu with `x-popup-menu'." I think I figured "in case you use it" meant that it would only be used in that case, and I didn't know at the time whether I might use it in that way in some context. Actually, I don't really remember. Anyway, thanks. I know now that I should reserve supplying the name for when I really want a menu. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: doc of prompt change with minor mode for read-key-sequence? 2006-09-18 15:38 ` Drew Adams @ 2006-09-18 23:39 ` Richard Stallman 0 siblings, 0 replies; 12+ messages in thread From: Richard Stallman @ 2006-09-18 23:39 UTC (permalink / raw) Cc: emacs-devel I improved the Lisp Manual's documentation about these issues. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: doc of prompt change with minor mode for read-key-sequence? 2006-09-13 17:19 ` Drew Adams 2006-09-13 17:58 ` Stefan Monnier 2006-09-14 2:34 ` Richard Stallman @ 2006-09-22 19:21 ` Stefan Monnier 2 siblings, 0 replies; 12+ messages in thread From: Stefan Monnier @ 2006-09-22 19:21 UTC (permalink / raw) Cc: emacs-devel > As for my code, I have this: > (define-key key-translation-map [f12] > (lookup-key key-translation-map "\C-x8")) > The minor mode is "Icicles", not "Foo". The minor mode > (`icicle-mode') and its keymap (`icicle-mode-map') > are defined here: > http://www.emacswiki.org/cgi-bin/wiki/icicles-mode.el. Can't reproduce this. Can you give a detailed step-by-step recipe, starting from `emacs -Q'? Stefan ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2006-09-22 19:21 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-09-12 16:27 doc of prompt change with minor mode for read-key-sequence? Drew Adams 2006-09-13 15:10 ` Richard Stallman 2006-09-13 15:42 ` Drew Adams 2006-09-13 16:45 ` Stefan Monnier 2006-09-13 17:19 ` Drew Adams 2006-09-13 17:58 ` Stefan Monnier 2006-09-14 2:34 ` Richard Stallman 2006-09-14 15:09 ` Drew Adams 2006-09-18 14:58 ` Richard Stallman 2006-09-18 15:38 ` Drew Adams 2006-09-18 23:39 ` Richard Stallman 2006-09-22 19:21 ` Stefan Monnier
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).