Hi - I guess this fell through the cracks with the holidays. Would someone mind following up with either comments or applying this patch? Thanks, Alex On Wed 19 Dec 2018 at 09:42, Alex Branham wrote: > Hello - > > The following patch fixes `which-function' returning outdated imenu > information by: > > 1. Preferring `add-log-current-defun' over `imenu--index-alist' and > > 2. Updating `imenu--index-alist' more aggressively if we fall back to > it. > > Thanks, > Alex > > From a06b1318f23b3f67ed0e1041f50ccea67d46ea48 Mon Sep 17 00:00:00 2001 > From: Alex Branham > Date: Tue, 11 Dec 2018 08:29:50 -0600 > Subject: [PATCH] which-function: Do not display outdated imenu information > > * lisp/progmodes/which-func.el (which-function): Check > `add-log-current-defun' before imenu. Update `imenu--index-alist' if > needed. Bug #33695 > --- > lisp/progmodes/which-func.el | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el > index 7604be0c25..7cc75e0edb 100644 > --- a/lisp/progmodes/which-func.el > +++ b/lisp/progmodes/which-func.el > @@ -272,16 +272,21 @@ which-func-functions > > (defun which-function () > "Return current function name based on point. > -Uses `which-func-functions', `imenu--index-alist' > -or `add-log-current-defun'. > +Uses `which-func-functions', `add-log-current-defun'. > +or `imenu--index-alist' > If no function name is found, return nil." > (let ((name > ;; Try the `which-func-functions' functions first. > (run-hook-with-args-until-success 'which-func-functions))) > - > + ;; Try using add-log support. > + (when (null name) > + (setq name (add-log-current-defun))) > ;; If Imenu is loaded, try to make an index alist with it. > (when (and (null name) > - (boundp 'imenu--index-alist) (null imenu--index-alist) > + (boundp 'imenu--index-alist) > + (or (null imenu--index-alist) > + ;; Update if outdated > + (/= (buffer-chars-modified-tick) imenu-menubar-modified-tick)) > (null which-function-imenu-failed)) > (ignore-errors (imenu--make-index-alist t)) > (unless imenu--index-alist > @@ -323,10 +328,6 @@ which-function > (funcall > which-func-imenu-joiner-function > (reverse (cons (car pair) namestack)))))))))))) > - > - ;; Try using add-log support. > - (when (null name) > - (setq name (add-log-current-defun))) > ;; Filter the name if requested. > (when name > (if which-func-cleanup-function > -- > 2.19.2 > > > > From a06b1318f23b3f67ed0e1041f50ccea67d46ea48 Mon Sep 17 00:00:00 2001 > From: Alex Branham > Date: Tue, 11 Dec 2018 08:29:50 -0600 > Subject: [PATCH] which-function: Do not display outdated imenu information > > * lisp/progmodes/which-func.el (which-function): Check > `add-log-current-defun' before imenu. Update `imenu--index-alist' if > needed. Bug #33695 > --- > lisp/progmodes/which-func.el | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el > index 7604be0c25..7cc75e0edb 100644 > --- a/lisp/progmodes/which-func.el > +++ b/lisp/progmodes/which-func.el > @@ -272,16 +272,21 @@ which-func-functions > > (defun which-function () > "Return current function name based on point. > -Uses `which-func-functions', `imenu--index-alist' > -or `add-log-current-defun'. > +Uses `which-func-functions', `add-log-current-defun'. > +or `imenu--index-alist' > If no function name is found, return nil." > (let ((name > ;; Try the `which-func-functions' functions first. > (run-hook-with-args-until-success 'which-func-functions))) > - > + ;; Try using add-log support. > + (when (null name) > + (setq name (add-log-current-defun))) > ;; If Imenu is loaded, try to make an index alist with it. > (when (and (null name) > - (boundp 'imenu--index-alist) (null imenu--index-alist) > + (boundp 'imenu--index-alist) > + (or (null imenu--index-alist) > + ;; Update if outdated > + (/= (buffer-chars-modified-tick) imenu-menubar-modified-tick)) > (null which-function-imenu-failed)) > (ignore-errors (imenu--make-index-alist t)) > (unless imenu--index-alist > @@ -323,10 +328,6 @@ which-function > (funcall > which-func-imenu-joiner-function > (reverse (cons (car pair) namestack)))))))))))) > - > - ;; Try using add-log support. > - (when (null name) > - (setq name (add-log-current-defun))) > ;; Filter the name if requested. > (when name > (if which-func-cleanup-function