Subject: bug#56459: 29.0.50; Edebug disables Eldoc

From: Dmitry Gutov <[email-masked]>
Date: Wed, 1 Mar 2023 18:06:56 +0200

On 01/03/2023 17:49, Eli Zaretskii wrote:
>> Cc:[email-masked],[email-masked],[email-masked],
>>   [email-masked]
>> Date: Wed, 01 Mar 2023 17:42:07 +0200
>> From: Eli Zaretskii<[email-masked]>
>>
>> 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?

This seems to work:

diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 3f5cf0ad0dc..01b48b0f45b 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -296,9 +296,12 @@ 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-active)
+  (if (or edebug-active (minibufferp))
        (progn
-	(add-hook 'minibuffer-exit-hook
+        (add-hook (if (minibufferp)
+                      'minibuffer-exit-hook
+                    'edebug-mode-hook)
  		  (lambda () (setq eldoc-mode-line-string nil
  			      ;; https://debbugs.gnu.org/16920
  			      eldoc-last-message nil))