[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Regression in `imenu--mouse-menu'
From: |
Stefan Monnier |
Subject: |
Re: Regression in `imenu--mouse-menu' |
Date: |
Fri, 16 May 2003 16:55:24 -0400 |
> As indicated in its doc string the function `imenu--mouse-menu' should
> "Returns t for rescan and otherwise an element or subelement of
> INDEX-ALIST.".
Alright, you got me: I failed to update the docstring.
> That new behavior is quite annoying and breaks existing code (for
> example, in the JDEE and Semantic, that use `imenu--menubar-select'
> to display (possibly large) completion menus, to benefit of the nice
> automatic menu split done by imenu).
The `--' in the name is intended to make it clear that it's
an internal function.
Anyway, the patch below should fix it. Will be applied shortly,
Stefan
--- imenu.el.~1.93.~ Tue May 6 11:13:49 2003
+++ imenu.el Fri May 16 16:50:32 2003
@@ -634,7 +634,7 @@
alist)
t))
-(defun imenu--create-keymap-1 (title alist)
+(defun* imenu--create-keymap (title alist &optional (cmd 'identity))
(let ((counter 0))
(list* 'keymap title
(mapcar
@@ -642,10 +642,9 @@
(list* (car item) (car item)
(cond
((imenu--subalist-p item)
- (imenu--create-keymap-1 (car item) (cdr item)))
+ (imenu--create-keymap (car item) (cdr item) cmd))
(t
- `(lambda () (interactive)
- (imenu--menubar-select ',item))))))
+ `(lambda () (interactive) (,cmd ',item))))))
alist))))
(defun imenu--in-alist (str alist)
@@ -905,10 +904,10 @@
Returns t for rescan and otherwise an element or subelement of INDEX-ALIST."
(setq index-alist (imenu--split-submenus index-alist))
(let* ((menu (imenu--split-menu index-alist (or title (buffer-name))))
- (map (imenu--create-keymap-1 (car menu)
- (if (< 1 (length (cdr menu)))
- (cdr menu)
- (cdr (car (cdr menu)))))))
+ (map (imenu--create-keymap (car menu)
+ (cdr (if (< 1 (length (cdr menu)))
+ menu
+ (car (cdr menu)))))))
(popup-menu map event)))
(defun imenu-choose-buffer-index (&optional prompt alist)
@@ -1001,10 +1000,11 @@
(setq index-alist (imenu--split-submenus index-alist))
(setq menu (imenu--split-menu index-alist
(buffer-name)))
- (setq menu1 (imenu--create-keymap-1 (car menu)
- (if (< 1 (length (cdr menu)))
- (cdr menu)
- (cdr (car (cdr menu))))))
+ (setq menu1 (imenu--create-keymap (car menu)
+ (cdr (if (< 1 (length (cdr menu)))
+ menu
+ (car (cdr menu))))
+ 'imenu--menubar-select))
(setq old (lookup-key (current-local-map) [menu-bar index]))
(setcdr old (cdr menu1)))))))