* bug#74934: 30.0.92; Unexpected behavior by which-function-mode in erc-mode buffers @ 2024-12-18 0:43 Anush V 2024-12-18 2:24 ` J.P. [not found] ` <87seqlhgot.fsf@neverwas.me> 0 siblings, 2 replies; 5+ messages in thread From: Anush V @ 2024-12-18 0:43 UTC (permalink / raw) To: 74934 Hello Maintainers, I guess this is probably unexpected behavior by which-function-mode in erc-mode buffers and so reporting this. steps to reproduce: emacs --no-init M-x erc ;; join some channel. M-x which-function-mode Current behavior: In erc buffers, which-function-mode displays either "[n/a]" or a string based on the chat history in the mode line. Expected behavior: which-function-mode shouldn’t be adding any string to mode line in erc buffers Thank you for your time! * * * In GNU Emacs 30.0.92 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.41, cairo version 1.18.0) Windowing system distributor 'The X.Org Foundation', version 11.0.12101014 System Description: Guix System Configured using: 'configure CONFIG_SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash --prefix=/gnu/store/dgpfiflaxb8j33jcbqk29wadcykajl51-emacs-next-30.0.92-0.881d593 --enable-fast-install --with-cairo --with-modules --with-native-compilation=aot --disable-build-details' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB -- Regards, Anush V ^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#74934: 30.0.92; Unexpected behavior by which-function-mode in erc-mode buffers 2024-12-18 0:43 bug#74934: 30.0.92; Unexpected behavior by which-function-mode in erc-mode buffers Anush V @ 2024-12-18 2:24 ` J.P. [not found] ` <87seqlhgot.fsf@neverwas.me> 1 sibling, 0 replies; 5+ messages in thread From: J.P. @ 2024-12-18 2:24 UTC (permalink / raw) To: Anush V; +Cc: emacs-erc, 74934 [-- Attachment #1: Type: text/plain, Size: 563 bytes --] Hi Anush, Appreciate you reporting this. Anush V <j@gnu.org> writes: > steps to reproduce: > emacs --no-init > M-x erc > ;; join some channel. > M-x which-function-mode > > Current behavior: > In erc buffers, which-function-mode displays either "[n/a]" or a string based on > the chat history in the mode line. FTR, I'm able to reproduce it. > Expected behavior: > which-function-mode shouldn’t be adding any string to mode line in erc buffers The first of the attached patches should hopefully address the issue. Thanks, J.P. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-5.6.1-Disable-which-func-mode-in-erc-imenu-buffers.patch --] [-- Type: text/x-patch, Size: 3029 bytes --] From 76eab2b23f46c885051f2bcb985ab15c3e851033 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@neverwas.me> Date: Tue, 17 Dec 2024 17:53:34 -0800 Subject: [PATCH 1/2] [5.6.1] Disable which-func-mode in erc-imenu buffers * lisp/erc/erc-imenu.el (erc-imenu-setup): Move after module definition so the variable `erc-imenu-mode' is defined. Run teardown code when module is deactivated. Set `which-func-mode' to nil locally. (erc-imenu-mode, erc-imenu-enable, erc-imenu-disable): Manage membership of `erc-imenu--disable-which-func' in `which-function-mode-hook'. (erc-imenu--disable-which-func): New function. (Bug#74934) --- lisp/erc/erc-imenu.el | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/lisp/erc/erc-imenu.el b/lisp/erc/erc-imenu.el index 4c9cbfc1580..68c7895e2dd 100644 --- a/lisp/erc/erc-imenu.el +++ b/lisp/erc/erc-imenu.el @@ -132,23 +132,36 @@ erc-create-imenu-index (defvar-local erc-imenu--create-index-function nil "Previous local value of `imenu-create-index-function', if any.") -(defun erc-imenu-setup () - "Wire up support for Imenu in an ERC buffer." - (when (and (local-variable-p 'imenu-create-index-function) - imenu-create-index-function) - (setq erc-imenu--create-index-function imenu-create-index-function)) - (setq imenu-create-index-function #'erc-create-imenu-index)) - ;;;###autoload(autoload 'erc-imenu-mode "erc-imenu" nil t) (define-erc-module imenu nil "Simple Imenu integration for ERC." ((add-hook 'erc-mode-hook #'erc-imenu-setup) + (add-hook 'which-function-mode-hook #'erc-imenu--disable-which-func) (unless erc--updating-modules-p (erc-buffer-do #'erc-imenu-setup))) ((remove-hook 'erc-mode-hook #'erc-imenu-setup) - (erc-with-all-buffers-of-server nil nil - (when erc-imenu--create-index-function - (setq imenu-create-index-function erc-imenu--create-index-function) - (kill-local-variable 'erc-imenu--create-index-function))))) + (remove-hook 'which-function-mode-hook #'erc-imenu--disable-which-func) + (erc-buffer-do #'erc-imenu-setup))) + +(defun erc-imenu-setup () + "Set up or tear down Imenu integration." + (if erc-imenu-mode + (progn + (when (and (local-variable-p 'imenu-create-index-function) + imenu-create-index-function) + (setq erc-imenu--create-index-function imenu-create-index-function)) + (setq imenu-create-index-function #'erc-create-imenu-index) + (when (boundp 'which-func-mode) + (setq which-func-mode nil))) + (when erc-imenu--create-index-function + (setq imenu-create-index-function erc-imenu--create-index-function)) + (kill-local-variable 'erc-imenu--create-index-function) + (kill-local-variable 'which-func-mode))) + +(defun erc-imenu--disable-which-func () + "Silence `which-function-mode' in ERC buffers." + (defvar which-func-mode) + (erc-with-all-buffers-of-server nil nil + (setq which-func-mode nil))) (provide 'erc-imenu) -- 2.47.1 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #3: 0002-5.6.1-Add-lisp-imenu-generic-expression-for-ERC-hack.patch --] [-- Type: text/x-patch, Size: 2552 bytes --] From 6b331f127a7c4f1c4085521ea74c68f644f93cce Mon Sep 17 00:00:00 2001 From: "F. Jason Park" <jp@neverwas.me> Date: Mon, 22 Apr 2024 18:11:24 -0700 Subject: [PATCH 2/2] [5.6.1] Add lisp-imenu-generic-expression for ERC hacking * lisp/erc/erc-backend.el (define-erc-response-handler): Add `doc-string' to `declare' specification. * lisp/erc/erc-imenu.el (erc-imenu-add-devel-patterns(): Add locally autoloaded function for defining `imenu' patterns when hacking on ERC. --- lisp/erc/erc-backend.el | 1 + lisp/erc/erc-imenu.el | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index e72fa036f17..311e3a624e6 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -1662,6 +1662,7 @@ define-erc-response-handler ([&or integerp symbolp] &rest [&or integerp symbolp])] &optional sexp sexp def-body)) + (doc-string 2) (indent defun)) (if (numberp name) (setq name (intern (format "%03i" name)))) (setq aliases (mapcar (lambda (a) diff --git a/lisp/erc/erc-imenu.el b/lisp/erc/erc-imenu.el index 68c7895e2dd..c6cb5655e2d 100644 --- a/lisp/erc/erc-imenu.el +++ b/lisp/erc/erc-imenu.el @@ -163,6 +163,29 @@ erc-imenu--disable-which-func (erc-with-all-buffers-of-server nil nil (setq which-func-mode nil))) +;;;###autoload +(defun erc-imenu-add-devel-patterns () + "Tell `imenu' about ERC-defined macros." + ;; This currently produces results like "ERC response FOO BAR". I'd + ;; obviously be nicer to end up with "erc-response-FOO" and + ;; "erc-response-BAR", possibly as separate items. Likewise for + ;; modules: "erc-foo-mode" instead of "ERC module foo". + (cl-pushnew `("ERC response" + ,(rx bol (* (syntax whitespace)) + "(define-erc-response-handler (" (group (+ nonl)) ")") + 1) + lisp-imenu-generic-expression + :test #'equal) + (cl-pushnew `("ERC module" + ,(rx bol (* (syntax whitespace)) + ;; Lisp-mode-symbol. + "(define-erc-module " (group (+ (| (syntax word) + (syntax symbol) + (: "\\" nonl))))) + 1) + lisp-imenu-generic-expression + :test #'equal)) + (provide 'erc-imenu) ;;; erc-imenu.el ends here -- 2.47.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <87seqlhgot.fsf@neverwas.me>]
* bug#74934: 30.0.92; Unexpected behavior by which-function-mode in erc-mode buffers [not found] ` <87seqlhgot.fsf@neverwas.me> @ 2024-12-18 13:43 ` Eli Zaretskii [not found] ` <86jzbxm7hv.fsf@gnu.org> 1 sibling, 0 replies; 5+ messages in thread From: Eli Zaretskii @ 2024-12-18 13:43 UTC (permalink / raw) To: J.P.; +Cc: emacs-erc, 74934, j > Cc: emacs-erc@gnu.org, 74934@debbugs.gnu.org > From: "J.P." <jp@neverwas.me> > Date: Tue, 17 Dec 2024 18:24:02 -0800 > > > steps to reproduce: > > emacs --no-init > > M-x erc > > ;; join some channel. > > M-x which-function-mode > > > > Current behavior: > > In erc buffers, which-function-mode displays either "[n/a]" or a string based on > > the chat history in the mode line. > > FTR, I'm able to reproduce it. > > > Expected behavior: > > which-function-mode shouldn’t be adding any string to mode line in erc buffers > > The first of the attached patches should hopefully address the issue. Is this for the release branch? That is, is this a recent regression? And if so, what is the second patch for? Thanks. ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <86jzbxm7hv.fsf@gnu.org>]
* bug#74934: 30.0.92; Unexpected behavior by which-function-mode in erc-mode buffers [not found] ` <86jzbxm7hv.fsf@gnu.org> @ 2024-12-18 16:27 ` J.P. [not found] ` <87cyhpez3b.fsf@neverwas.me> 1 sibling, 0 replies; 5+ messages in thread From: J.P. @ 2024-12-18 16:27 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-erc, 74934, j Eli Zaretskii <eliz@gnu.org> writes: >> Cc: emacs-erc@gnu.org, 74934@debbugs.gnu.org >> From: "J.P." <jp@neverwas.me> >> Date: Tue, 17 Dec 2024 18:24:02 -0800 >> >> > steps to reproduce: >> > emacs --no-init >> > M-x erc >> > ;; join some channel. >> > M-x which-function-mode >> > >> > Current behavior: >> > In erc buffers, which-function-mode displays either "[n/a]" or a string based on >> > the chat history in the mode line. >> >> FTR, I'm able to reproduce it. >> >> > Expected behavior: >> > which-function-mode shouldn’t be adding any string to mode line in erc buffers >> >> The first of the attached patches should hopefully address the issue. > > Is this for the release branch? That is, is this a recent regression? No, this is for Emacs master (and ERC 5.6.1). AFAICT, the bug has been with us since at least Emacs 26.3, although "[n/a]" used to be "[???]". > > And if so, what is the second patch for? For anyone wondering, the second patch is for contributors working on ERC (I will add a news item). If you load ERC and invoke the function `erc-imenu-add-devel-patterns' in your config, your next visit to erc-backend.el should allow you to see something like ERC response 311 314 ERC response 312 ERC response 313 ERC response 315 318 323 369 ERC response 317 ERC response 319 ERC response 311 after typing M-x imenu <RET> 31 <TAB> (whereas before you'd see nothing). Hitting RET on the first candidate should take you to (define-erc-response-handler (311 314) "WHOIS/WHOWAS notices." nil ...) As mentioned in the comment, I'd much rather it generate something like erc-server-311 erc-server-314 ... erc-server-311 but I don't know how to do that or if it's even possible. (If anyone out there has any clues, please share. TIA.) ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <87cyhpez3b.fsf@neverwas.me>]
* bug#74934: 30.0.92; Unexpected behavior by which-function-mode in erc-mode buffers [not found] ` <87cyhpez3b.fsf@neverwas.me> @ 2024-12-22 19:51 ` J.P. 0 siblings, 0 replies; 5+ messages in thread From: J.P. @ 2024-12-22 19:51 UTC (permalink / raw) To: 74934-done; +Cc: Eli Zaretskii, emacs-erc, j "J.P." <jp@neverwas.me> writes: > Eli Zaretskii <eliz@gnu.org> writes: > >> Is this for the release branch? That is, is this a recent regression? > > No, this is for Emacs master (and ERC 5.6.1). AFAICT, the bug has been > with us since at least Emacs 26.3, although "[n/a]" used to be "[???]". This has been installed as https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=d1c670f0 > >> >> And if so, what is the second patch for? > > For anyone wondering, the second patch is for contributors working on > ERC (I will add a news item). I moved the dev utility to test/lisp/erc/resources/erc-tests-common.el and changed it to only modify the local binding of the variable `imenu-generic-expression'. Installed as: https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e9591fae Thanks and closing. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-12-22 19:51 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-12-18 0:43 bug#74934: 30.0.92; Unexpected behavior by which-function-mode in erc-mode buffers Anush V 2024-12-18 2:24 ` J.P. [not found] ` <87seqlhgot.fsf@neverwas.me> 2024-12-18 13:43 ` Eli Zaretskii [not found] ` <86jzbxm7hv.fsf@gnu.org> 2024-12-18 16:27 ` J.P. [not found] ` <87cyhpez3b.fsf@neverwas.me> 2024-12-22 19:51 ` J.P.
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).