GNU bug report logs - #56459
29.0.50; Edebug disables Eldoc

Previous Next

Package: emacs;

Reported by: Max Brieiev <max.brieiev <at> gmail.com>

Date: Sat, 9 Jul 2022 07:24:02 UTC

Severity: normal

Tags: moreinfo

Found in version 29.0.50

Fixed in version 30.1

Done: Dmitry Gutov <dgutov <at> yandex.ru>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: max.brieiev <at> gmail.com, larsi <at> gnus.org, 56459 <at> debbugs.gnu.org, friedman <at> splode.com
Subject: bug#56459: 29.0.50; Edebug disables Eldoc
Date: Wed, 1 Mar 2023 21:19:05 +0200
On 01/03/2023 18:57, Eli Zaretskii wrote:
>> Date: Wed, 1 Mar 2023 18:06:56 +0200
>> Cc:max.brieiev <at> gmail.com,larsi <at> gnus.org,56459 <at> debbugs.gnu.org,
>>   friedman <at> splode.com
>> From: Dmitry Gutov<dgutov <at> yandex.ru>
>>
>> On 01/03/2023 17:49, Eli Zaretskii wrote:
>>>> Cc:max.brieiev <at> gmail.com,larsi <at> gnus.org,56459 <at> debbugs.gnu.org,
>>>>    friedman <at> splode.com
>>>> Date: Wed, 01 Mar 2023 17:42:07 +0200
>>>> From: Eli Zaretskii<eliz <at> gnu.org>
>>>>
>>>> So I've now reverted that change, and I'm reopening the bug.  It will
>>>> have to be fixed in some other way.
>>> One possibility would be to show the ElDoc info on the mode line when
>>> Edebug is active.  But the difficulty with that is to figure out how
>>> to revert the mode line to the original shape when Edebug finishes.
>>> We currently show the info on the mdoe line when the current buffer is
>>> a minibuffer, and remove the info in minibuffer-exit-hook, but how to
>>> do that in the Edebug case?
>> edebug-mode-hook?
> That's a starting point, but I don't think it's enough, because you
> could switch to another buffer without exiting Edebug.  I tried
> something like that and it didn't work well enough.  But maybe my
> testing was incorrect, so if you are confident that this fixes the
> problem, feel free to install (perhaps on master, though).

We could try to use more hooks, or give up and use post-command-hook.

Also switched to looking up edebug-mode instead of edebug-active because 
the latter is a global value.

diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 3f5cf0ad0dc..493ec18446f 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -296,13 +296,10 @@ eldoc-minibuffer-message
 This function displays the message produced by formatting ARGS
 with FORMAT-STRING on the mode line when the current buffer is a 
minibuffer.
 Otherwise, it displays the message like `message' would."
-  (if (minibufferp)
+  (defvar edebug-mode)
+  (if (or edebug-mode (minibufferp))
       (progn
-	(add-hook 'minibuffer-exit-hook
-		  (lambda () (setq eldoc-mode-line-string nil
-			      ;; https://debbugs.gnu.org/16920
-			      eldoc-last-message nil))
-		  nil t)
+        (add-hook 'post-command-hook #'eldoc-minibuffer--cleanup)
 	(with-current-buffer
 	    (window-buffer
 	     (or (window-in-direction 'above (minibuffer-window))
@@ -321,6 +318,14 @@ eldoc-minibuffer-message
           (force-mode-line-update)))
     (apply #'message format-string args)))

+(defun eldoc-minibuffer--cleanup ()
+  (defvar edebug-mode)
+  (unless (or edebug-mode (minibufferp))
+    (setq eldoc-mode-line-string nil
+          ;; https://debbugs.gnu.org/16920
+          eldoc-last-message nil)
+    (remove-hook 'post-command-hook #'eldoc-minibuffer--cleanup)))
+
 (make-obsolete
  'eldoc-message "use `eldoc-documentation-functions' instead." 
"eldoc-1.1.0")
 (defun eldoc-message (&optional string) (eldoc--message string))





This bug report was last modified 2 years and 76 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.