From 0dcf8835e38d34606d12882bcd0866bb9af7339c Mon Sep 17 00:00:00 2001 From: Dave Love Date: Mon, 23 Oct 2000 17:24:54 +0000 Subject: [PATCH] (imenu--create-keymap-2): Build menu with menu-item using :key-sequence, making it much more usable. Use nconc, not append. (imenu--create-keymap-1): Avoid append. --- lisp/ChangeLog | 5 +++++ lisp/imenu.el | 28 ++++++++++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 78897ee5daa..c85834eaf22 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -4,6 +4,11 @@ 2000-10-23 Dave Love + * imenu.el (imenu--create-keymap-2): Build menu with menu-item + using :key-sequence, making it much more usable. Use nconc, not + append. + (imenu--create-keymap-1): Avoid append. + * textmodes/refill.el: Remove bits redundant with define-minor-mode. 2000-10-23 Miles Bader diff --git a/lisp/imenu.el b/lisp/imenu.el index eb7dc042e68..1457f6f861c 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -631,26 +631,26 @@ as a way for the user to ask to recalculate the buffer's index alist." (defun imenu--create-keymap-2 (alist counter &optional commands) (let ((map nil)) (mapcar - (function - (lambda (item) - (cond - ((imenu--subalist-p item) - (append (list (setq counter (1+ counter)) - (car item) 'keymap (car item)) - (imenu--create-keymap-2 (cdr item) (+ counter 10) commands))) - (t - (let ((end (if commands `(lambda () (interactive) - (imenu--menubar-select ',item)) - (cons '(nil) item)))) - (cons (car item) - (cons (car item) end))))))) + (lambda (item) + (cond + ((imenu--subalist-p item) + (nconc (list (setq counter (1+ counter)) + (car item) 'keymap (car item)) + (imenu--create-keymap-2 (cdr item) (+ counter 10) commands))) + (t + (let ((end (if commands `(lambda () + (interactive) + (imenu--menubar-select ',item)) + (cons '(nil) item)))) + (cons (car item) + (list 'menu-item (car item) end :key-sequence nil)))))) alist))) ;; If COMMANDS is non-nil, make a real keymap ;; with a real command used as the definition. ;; If it is nil, make something suitable for x-popup-menu. (defun imenu--create-keymap-1 (title alist &optional commands) - (append (list 'keymap title) (imenu--create-keymap-2 alist 0 commands))) + (cons 'keymap (cons title (imenu--create-keymap-2 alist 0 commands)))) (defun imenu--in-alist (str alist) "Check whether the string STR is contained in multi-level ALIST." -- 2.39.2