Package: emacs;
Reported by: Alex Branham <alex.branham <at> gmail.com>
Date: Mon, 10 Dec 2018 18:59:02 UTC
Severity: normal
Found in version 27.0.50
Done: Alex Branham <alex.branham <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Alex Branham <alex.branham <at> gmail.com> To: 33695 <at> debbugs.gnu.org Subject: bug#33695: [PATCH] Fix which-function reporting outdated information Date: Tue, 19 Feb 2019 15:29:51 -0600
[Message part 1 (text/plain, inline)]
Hi all - Assuming no objections, I'll apply the patch below to master later this week. Alex On Thu 10 Jan 2019 at 13:55, Alex Branham <alex.branham <at> gmail.com> wrote: > 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 <alex.branham <at> gmail.com> 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 <alex.branham <at> gmail.com> >> 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 <alex.branham <at> gmail.com> >> 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 > > From a06b1318f23b3f67ed0e1041f50ccea67d46ea48 Mon Sep 17 00:00:00 2001 > From: Alex Branham <alex.branham <at> gmail.com> > 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
[signature.asc (application/pgp-signature, inline)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.