diff options
author | Phillip Rulon <pjr@gnu.org> | 1999-09-24 13:55:29 +0000 |
---|---|---|
committer | Phillip Rulon <pjr@gnu.org> | 1999-09-24 13:55:29 +0000 |
commit | 020e8fdf930a1e4bc00f89d39a42a2a444a533c1 (patch) | |
tree | fadf233b054d10f06c405c0ca0dab3f2f6f0aba3 /lisp | |
parent | 66f54605e12ff94855ddedbf2f31cb0705ec469d (diff) | |
download | emacs-020e8fdf930a1e4bc00f89d39a42a2a444a533c1.tar.gz |
(imenu-after-jump-hook): New variable.
(imenu): Run menu-after-jump-hook.
(imenu-name-lookup-function): New variable.
(imenu--in-alist): Use those variables.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/imenu.el | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/lisp/imenu.el b/lisp/imenu.el index f9028d34ef0..2f1ad7c9c0c 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -116,6 +116,14 @@ Another non-nil value means always display the index in a completion buffer." (other :tag "Always" t)) :group 'imenu) +(defcustom imenu-after-jump-hook nil + "*Hooks called after jumping to a place in the buffer. + +Useful things to use here include `reposition-window', `recenter', and +\(lambda () (recenter 0)) to show at top of screen." + :type 'hook + :group 'imenu) + ;;;###autoload (defcustom imenu-sort-function nil "*The function to use for sorting the index mouse-menu. @@ -257,6 +265,22 @@ This variable is local in all buffers.") (make-variable-buffer-local 'imenu-extract-index-name-function) ;;;###autoload +(defvar imenu-name-lookup-function nil + "Function to compare string with index item. + +This function will be called with two strings, and should return +non-nil if they match. + +If nil, comparison is done with `string='. +Set this to some other function for more advanced comparisons, +such as \"begins with\" or \"name matches and number of +arguments match\". + +This variable is local in all buffers.") +;;;###autoload +(make-variable-buffer-local 'imenu-name-lookup-function) + +;;;###autoload (defvar imenu-default-goto-function 'imenu-default-goto-function "The default function called when selecting an Imenu item. The function in this variable is called when selecting a normal index-item.") @@ -649,7 +673,9 @@ as a way for the user to ask to recalculate the buffer's index alist." (cond ((listp tail) (if (setq res (imenu--in-alist str tail)) (setq alist nil))) - ((string= str head) + ((if imenu-name-lookup-function + (funcall imenu-name-lookup-function str head) + (string= str head)) (setq alist nil res elt)))) res)) @@ -1072,7 +1098,8 @@ for more information." (position (if is-special-item (cadr index-item) (cdr index-item))) (rest (if is-special-item (cddr index-item)))) - (apply function (car index-item) position rest))))) + (apply function (car index-item) position rest)))) + (run-hooks 'imenu-after-jump-hook)) (provide 'imenu) |