diff options
author | Leo Liu <sdl.web@gmail.com> | 2014-10-06 11:59:38 +0800 |
---|---|---|
committer | Leo Liu <sdl.web@gmail.com> | 2014-10-06 11:59:38 +0800 |
commit | 195c5c4c925cfced8d720659dc638b434282f29b (patch) | |
tree | 7224345fcfbaf5c7a057ebeef9a02988bc332570 | |
parent | 3f65970414538063e38ada2a47cb4ef4f35b630e (diff) |
* imenu.el (imenu): Re-write for clarity.
-rw-r--r-- | lisp/ChangeLog | 4 | ||||
-rw-r--r-- | lisp/imenu.el | 17 |
2 files changed, 11 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a04e6d2b91..c118209933 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2014-10-06 Leo Liu <sdl.web@gmail.com> + + * imenu.el (imenu): Re-write for clarity. + 2014-10-06 Glenn Morris <rgm@gnu.org> Remove calendar code obsolete since at least version 23.1. diff --git a/lisp/imenu.el b/lisp/imenu.el index 3159b6cc56..5bad4c09c4 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -1034,16 +1034,13 @@ for more information." (if (stringp index-item) (setq index-item (assoc index-item (imenu--make-index-alist)))) (when index-item - (push-mark nil t) - (let* ((is-special-item (listp (cdr index-item))) - (function - (if is-special-item - (nth 2 index-item) imenu-default-goto-function)) - (position (if is-special-item - (cadr index-item) (cdr index-item))) - (args (if is-special-item (cdr (cddr index-item))))) - (apply function (car index-item) position args)) - (run-hooks 'imenu-after-jump-hook))) + (pcase index-item + (`(,name ,pos ,fn . ,args) + (push-mark nil t) + (apply fn name pos args) + (run-hooks 'imenu-after-jump-hook)) + (`(,name . ,pos) (imenu (list name pos imenu-default-goto-function))) + (_ (error "Unknown imenu item: %S" index-item))))) (provide 'imenu) |