--- Begin Message ---
Subject: |
menu-bar menu is undefined |
Date: |
Fri, 18 Sep 2009 00:19:47 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (x86_64-pc-linux-gnu) |
Some menu-bar's menus fail to open in non-toolkit X builds.
For instance, when I click on the "Buffer-Menu" menu-bar's item,
it signals the error:
<menu-bar> <Buffer-menu-mode> <nil> is undefined
However, with the following patch it displays the menu correctly:
Index: lisp/buff-menu.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/buff-menu.el,v
retrieving revision 1.125
diff -u -r1.125 buff-menu.el
--- lisp/buff-menu.el 15 Jan 2009 16:46:09 -0000 1.125
+++ lisp/buff-menu.el 17 Sep 2009 21:15:37 -0000
@@ -119,7 +119,7 @@
(defvar Buffer-menu-mode-map
(let ((map (make-keymap))
- (menu-map (make-sparse-keymap)))
+ (menu-map (make-sparse-keymap "Buffer-Menu")))
(suppress-keymap map t)
(define-key map "v" 'Buffer-menu-select)
(define-key map "2" 'Buffer-menu-2-window)
If this is the right way to define menus, I could do the same for other
menus as well, e.g.
Index: lisp/add-log.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/add-log.el,v
retrieving revision 1.230
diff -u -r1.230 add-log.el
--- lisp/add-log.el 1 Sep 2009 07:24:18 -0000 1.230
+++ lisp/add-log.el 17 Sep 2009 21:16:23 -0000
@@ -551,7 +551,7 @@
(defvar change-log-mode-map
(let ((map (make-sparse-keymap))
- (menu-map (make-sparse-keymap)))
+ (menu-map (make-sparse-keymap "ChangeLog")))
(define-key map [?\C-c ?\C-p] 'add-log-edit-prev-comment)
(define-key map [?\C-c ?\C-n] 'add-log-edit-next-comment)
(define-key map [?\C-c ?\C-f] 'change-log-find-file)
and some other menus that have no menu names.
--
Juri Linkov
http://www.jurta.org/emacs/
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#4471: menu-bar menu is undefined |
Date: |
Sat, 24 Oct 2009 20:41:02 -0400 |
> > (defvar Buffer-menu-mode-map
> > (let ((map (make-keymap))
> > - (menu-map (make-sparse-keymap)))
> > + (menu-map (make-sparse-keymap "Buffer-Menu")))
> > (suppress-keymap map t)
> > (define-key map "v" 'Buffer-menu-select)
> > (define-key map "2" 'Buffer-menu-2-window)
>
> IIUC this is a correct way to fix it, indeed.
> OTOH it would be better to make the non-toolkit code accept the same
> keymaps as accepted by the toolkit code.
I've checked in a change to keyboard.c, allowing the non-toolkit code to
handle keymaps with no prompt strings.
--- End Message ---