# HG changeset patch # User Phillip Rulon # Date 938181329 0 # Node ID f1417ed050c0793a39e33aef6a0a2b408c37ef56 # Parent 89230444d6385bd15a1e87c2f05ecce5871bc4a5 (imenu-after-jump-hook): New variable. (imenu): Run menu-after-jump-hook. (imenu-name-lookup-function): New variable. (imenu--in-alist): Use those variables. diff -r 89230444d638 -r f1417ed050c0 lisp/imenu.el --- a/lisp/imenu.el Fri Sep 24 13:52:46 1999 +0000 +++ b/lisp/imenu.el Fri Sep 24 13:55:29 1999 +0000 @@ -116,6 +116,14 @@ (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 @@ (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 @@ (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 @@ (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)