summaryrefslogtreecommitdiff
path: root/lisp/imenu.el
diff options
context:
space:
mode:
authorLeo Liu <sdl.web@gmail.com>2013-01-31 01:57:54 +0800
committerLeo Liu <sdl.web@gmail.com>2013-01-31 01:57:54 +0800
commitdd331297c1c7bc37ebd865a4196a4f41e9555f83 (patch)
tree470aaba19d5d68f3c92f629a53fc14d119721c0a /lisp/imenu.el
parent741d511359a7862a6f7c65da9e2952a1cc8cd92b (diff)
downloademacs-dd331297c1c7bc37ebd865a4196a4f41e9555f83.tar.gz
* lisp/imenu.el (imenu--truncate-items): Fix subalist checking.
Fixes: debbugs:13576
Diffstat (limited to 'lisp/imenu.el')
-rw-r--r--lisp/imenu.el18
1 files changed, 8 insertions, 10 deletions
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 435d97fcdb4..80fc441c896 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -555,16 +555,14 @@ NOT share structure with ALIST."
(defun imenu--truncate-items (menulist)
"Truncate all strings in MENULIST to `imenu-max-item-length'."
- (mapcar (lambda (item)
- (cond
- ((consp (cdr item))
- (imenu--truncate-items (cdr item)))
- ;; truncate if necessary
- ((and (numberp imenu-max-item-length)
- (> (length (car item)) imenu-max-item-length))
- (setcar item (substring (car item) 0 imenu-max-item-length)))))
- menulist))
-
+ (mapc (lambda (item)
+ ;; truncate if necessary
+ (when (and (numberp imenu-max-item-length)
+ (> (length (car item)) imenu-max-item-length))
+ (setcar item (substring (car item) 0 imenu-max-item-length)))
+ (when (imenu--subalist-p item)
+ (imenu--truncate-items (cdr item))))
+ menulist))
(defun imenu--make-index-alist (&optional noerror)
"Create an index alist for the definitions in the current buffer.