unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive?
@ 2020-07-25 18:17 Felician Nemeth
  2020-09-07  8:38 ` João Távora
  0 siblings, 1 reply; 7+ messages in thread
From: Felician Nemeth @ 2020-07-25 18:17 UTC (permalink / raw)
  To: 42532; +Cc: João Távora

[-- Attachment #1: Type: text/plain, Size: 1250 bytes --]

With the attached file, start emacs as:

  emacs -Q --load bug.el

and then move the point left or right.  Originally I started to write
this file as demonstration to bug#42421, but you fixed the bug faster
than I could find time to finish it.  Now, I think everything works as
documented, but with the help of this recipe, I'd like to argue that
eldoc-prefer-doc-buffer is a bit annoying in this case.  Its
documentation says:

   Prefer ElDoc’s documentation buffer if it is showing in some frame.
   If this variable’s value is t and a piece of documentation needs to
   be truncated to fit in the echo area, do so if ElDoc’s documentation
   buffer is not already showing, since the buffer always holds the full
   documentation.

I think it would be better to show the documentation only in the *eldoc*
buffer and not in the echo area even if the documentation doesn't need
to be truncated but the echo are needs to be resized to display the full
documentation.

(bug.el changes eldoc-documentation-function to circumvent bug#42531,
which I reported few minutes ago, but changing the order of the hooks in
eldoc--eval-expression-setup, doesn't seem to fix bug#42531)

Thank you, João, for your work on eldoc.


[-- Attachment #2: bug.el --]
[-- Type: #("application/emacs-lisp" 0 22 (face iswitchb-current-match)), Size: 624 bytes --]

(defvar my-asdf-asdf-sdf-asdf-asdf-asdf-asdf-sdf-asdf-asdf-asdf-asdfasdf-asdf-sdf-asdf-asdf-asdf-asdfasdf-asdf 1
    "START asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf END")
(switch-to-buffer-other-window "*eldoc*")
(window-resize (get-buffer-window) (- window-min-height (window-height)))
(other-window 1)
(find-file "bug.el")
(goto-char 14)
(setq eldoc-prefer-doc-buffer t)
(setq eldoc-documentation-functions '(elisp-eldoc-var-docstring elisp-eldoc-funcall  t))



^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive?
  2020-07-25 18:17 bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive? Felician Nemeth
@ 2020-09-07  8:38 ` João Távora
  2020-09-07 10:11   ` João Távora
  0 siblings, 1 reply; 7+ messages in thread
From: João Távora @ 2020-09-07  8:38 UTC (permalink / raw)
  To: Felician Nemeth, Yuan Fu; +Cc: 42532

[-- Attachment #1: Type: text/plain, Size: 2019 bytes --]

Hi Felician,

Sorry for the late reply. I'm working, and am very close to publishing,
the promised introduction of eldoc-display-functions to help users (and
third-party devs) better control the display of eldoc documentation.

Regardless, I think it's reasonable to add a third possible value
for eldoc-prefer-doc-buffer (which should really be renamed
eldoc-echo-area-prefer-doc-buffer).  The value could be the symbol
'aggressive or 'aggressively.  Then it would behave as you propose:
if the ElDoc doc buffer is showing, the echo area display code is
a noop.

What do you think?

João

On Sat, Jul 25, 2020 at 7:18 PM Felician Nemeth <felician.nemeth@gmail.com>
wrote:

> With the attached file, start emacs as:
>
>   emacs -Q --load bug.el
>
> and then move the point left or right.  Originally I started to write
> this file as demonstration to bug#42421, but you fixed the bug faster
> than I could find time to finish it.  Now, I think everything works as
> documented, but with the help of this recipe, I'd like to argue that
> eldoc-prefer-doc-buffer is a bit annoying in this case.  Its
> documentation says:
>
>    Prefer ElDoc’s documentation buffer if it is showing in some frame.
>    If this variable’s value is t and a piece of documentation needs to
>    be truncated to fit in the echo area, do so if ElDoc’s documentation
>    buffer is not already showing, since the buffer always holds the full
>    documentation.
>
> I think it would be better to show the documentation only in the *eldoc*
> buffer and not in the echo area even if the documentation doesn't need
> to be truncated but the echo are needs to be resized to display the full
> documentation.
>
> (bug.el changes eldoc-documentation-function to circumvent bug#42531,
> which I reported few minutes ago, but changing the order of the hooks in
> eldoc--eval-expression-setup, doesn't seem to fix bug#42531)
>
> Thank you, João, for your work on eldoc.
>
>

-- 
João Távora

[-- Attachment #2: Type: text/html, Size: 2647 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive?
  2020-09-07  8:38 ` João Távora
@ 2020-09-07 10:11   ` João Távora
  2020-09-26 12:58     ` Felician Nemeth
  0 siblings, 1 reply; 7+ messages in thread
From: João Távora @ 2020-09-07 10:11 UTC (permalink / raw)
  To: Felician Nemeth; +Cc: Yuan Fu, 42532

João Távora <joaotavora@gmail.com> writes:

> Regardless, I think it's reasonable to add a third possible value 
> for eldoc-prefer-doc-buffer (which should really be renamed 
> eldoc-echo-area-prefer-doc-buffer).  The value could be the symbol
> 'aggressive or 'aggressively.  Then it would behave as you propose:
> if the ElDoc doc buffer is showing, the echo area display code is 
> a noop.
>
> What do you think?

Instead of an abstract idea, here's an actual patch you can try on top
of the current eldoc.el

diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 772c907c28..2eae30f004 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -111,13 +111,19 @@ eldoc-echo-area-use-multiline-p
  symbol names if it will\ enable argument list to fit on one
  line" truncate-sym-name-if-fit)))
 
-(defcustom eldoc-prefer-doc-buffer nil
+(define-obsolete-variable-alias 'eldoc-prefer-doc-buffer
+  'eldoc-echo-area-prefer-doc-buffer "eldoc-1.11.0")
+(defcustom eldoc-echo-area-prefer-doc-buffer nil
   "Prefer ElDoc's documentation buffer if it is showing in some frame.
 If this variable's value is t and a piece of documentation needs
-to be truncated to fit in the echo area, do so if ElDoc's
+to be truncated to fit in the echo area, do so if ElDoc's only
 documentation buffer is not already showing, since the buffer
-always holds the full documentation."
-  :type 'boolean)
+always holds the full documentation.  If the value is
+`aggressively' do so even if the documentation doesn't need to be
+truncated."
+  :type '(radio (const :tag "Yes" t)
+                (const :tag "Yes, aggressively." 'aggressively)
+                (const :tag "No" nil)))
 
 (defface eldoc-highlight-function-argument
   '((t (:inherit bold)))
@@ -458,7 +464,8 @@ eldoc--handle-docs
                       (t 1)))
          (things-reported-on)
          (request eldoc--last-request-state)
-         single-doc single-doc-sym)
+         single-doc single-doc-sym
+         (eldoc-buffer-showing (get-buffer-window eldoc--doc-buffer)))
       ;; Then, compose the contents of the `*eldoc*' buffer.
       (with-current-buffer (eldoc-doc-buffer)
         ;; Set doc-buffer's `eldoc--last-request-state', too
@@ -490,6 +497,9 @@ eldoc--handle-docs
       ;; function into some `eldoc-display-functions' special hook.
       (let ((echo-area-message
              (cond
+              ((and eldoc-buffer-showing
+                    (eq eldoc-echo-area-prefer-doc-buffer 'aggressively))
+               nil)
               (;; We handle the `truncate-sym-name-if-fit' special
                ;; case first, by checking if for a lot of special
                ;; conditions.
@@ -519,8 +529,8 @@ eldoc--handle-docs
                   (while (and (not (bobp)) (bolp)) (goto-char (line-end-position 0)))
                   finally
                   (unless (and truncated
-                               eldoc-prefer-doc-buffer
-                               (get-buffer-window eldoc--doc-buffer))
+                               (eq eldoc-echo-area-prefer-doc-buffer t)
+                               eldoc-buffer-showing)
                     (cl-return
                      (concat
                       (buffer-substring (point-min) (point))






^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive?
  2020-09-07 10:11   ` João Távora
@ 2020-09-26 12:58     ` Felician Nemeth
  2020-10-03 19:18       ` João Távora
  0 siblings, 1 reply; 7+ messages in thread
From: Felician Nemeth @ 2020-09-26 12:58 UTC (permalink / raw)
  To: João Távora; +Cc: Yuan Fu, 42532

[-- Attachment #1: Type: text/plain, Size: 1121 bytes --]

>> Regardless, I think it's reasonable to add a third possible value 
>> for eldoc-prefer-doc-buffer (which should really be renamed 
>> eldoc-echo-area-prefer-doc-buffer).  The value could be the symbol
>> 'aggressive or 'aggressively.  Then it would behave as you propose:
>> if the ElDoc doc buffer is showing, the echo area display code is 
>> a noop.
>>
>> What do you think?
>
> Instead of an abstract idea, here's an actual patch you can try on top
> of the current eldoc.el
> [...]

Thank you.  I've finally tried the patch out with different settings of
eldoc-echo-area-prefer-doc-buffer and eldoc-echo-area-use-multiline-p.
It works as I wished when eldoc-echo-area-prefer-doc-buffer is
'aggressively.  And it works in line with the documentation in most
cases.  However, if I understand the documentation correctly, it doesn't
work as intended with

   (setq eldoc-echo-area-use-multiline-p nil)
   (setq eldoc-echo-area-prefer-doc-buffer t)

For example, with the attached file, moving the point right after "emacs
-Q --load ./bug.el" displays the truncated documentation in the echo
area, but it shouldn't.


[-- Attachment #2: bug.el --]
[-- Type: #("application/emacs-lisp" 0 22 (face iswitchb-current-match)), Size: 861 bytes --]

(defvar my-asdf-asdf-sdf-asdf-asdf-asdf-asdf-sdf-asdf-asdf-asdf-asdfasdf-asdf-sdf-asdf-asdf-asdf-asdfasdf-asdf 1
    "START asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf END")
(switch-to-buffer-other-window "*eldoc*")
(window-resize (get-buffer-window) (- window-min-height (window-height)))
(other-window 1)
(find-file "bug.el")
(goto-char 14)
(setq max-mini-window-height 2)
(setq eldoc-echo-area-use-multiline-p nil)
;;(setq eldoc-echo-area-use-multiline-p t)
;;(setq eldoc-echo-area-prefer-doc-buffer 'aggressively)
(setq eldoc-echo-area-prefer-doc-buffer t)
;;(setq eldoc-echo-area-prefer-doc-buffer nil)
(setq eldoc-documentation-functions '(elisp-eldoc-var-docstring elisp-eldoc-funcall  t))



^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive?
  2020-09-26 12:58     ` Felician Nemeth
@ 2020-10-03 19:18       ` João Távora
  2021-01-15 18:00         ` Felician Nemeth
  0 siblings, 1 reply; 7+ messages in thread
From: João Távora @ 2020-10-03 19:18 UTC (permalink / raw)
  To: Felician Nemeth; +Cc: Yuan Fu, 42532

Felician Nemeth <felician.nemeth@gmail.com> writes:

> For example, with the attached file, moving the point right after "emacs
> -Q --load ./bug.el" displays the truncated documentation in the echo
> area, but it shouldn't.

Hello Felicián,

I pushed an alternate version of this patch to the branch
scratch/eldoc-display-functions

To git.sv.gnu.org:/srv/git/emacs.git
 * [new branch]            scratch/eldoc-display-functions -> scratch/eldoc-display-functions

It contains more than just this patch, but notably it passes your test,
I think.  Can you try it out?  A point of mention is that the value `t'
is now what `aggressive' used to be.  This is more straightfoward and
much simplified  docstring writing the docstring.  If you want the old
"only prefer if truncated" behaviour, set it to `maybe' (maybe that name
can be reviewed).

Best regards,
João






^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive?
  2020-10-03 19:18       ` João Távora
@ 2021-01-15 18:00         ` Felician Nemeth
  2021-01-15 18:01           ` João Távora
  0 siblings, 1 reply; 7+ messages in thread
From: Felician Nemeth @ 2021-01-15 18:00 UTC (permalink / raw)
  To: João Távora; +Cc: Yuan Fu, 42532

I'm sorry I haven't replied earlier.  I've now tested the master branch
instead of scratch/eldoc-display-functions because the master branch
seems to contain most commits from the feature branch.  And it passes
all my tests regarding this bug report.  So I think it can be closed.

Thank you.

João Távora <joaotavora@gmail.com> writes:

> Felician Nemeth <felician.nemeth@gmail.com> writes:
>
>> For example, with the attached file, moving the point right after "emacs
>> -Q --load ./bug.el" displays the truncated documentation in the echo
>> area, but it shouldn't.
>
> Hello Felicián,
>
> I pushed an alternate version of this patch to the branch
> scratch/eldoc-display-functions
>
> To git.sv.gnu.org:/srv/git/emacs.git
>  * [new branch]            scratch/eldoc-display-functions -> scratch/eldoc-display-functions
>
> It contains more than just this patch, but notably it passes your test,
> I think.  Can you try it out?  A point of mention is that the value `t'
> is now what `aggressive' used to be.  This is more straightfoward and
> much simplified  docstring writing the docstring.  If you want the old
> "only prefer if truncated" behaviour, set it to `maybe' (maybe that name
> can be reviewed).
>
> Best regards,
> João





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive?
  2021-01-15 18:00         ` Felician Nemeth
@ 2021-01-15 18:01           ` João Távora
  0 siblings, 0 replies; 7+ messages in thread
From: João Távora @ 2021-01-15 18:01 UTC (permalink / raw)
  To: Felician Nemeth; +Cc: 42532-done, Yuan Fu

That's great! Closing.

On Fri, Jan 15, 2021 at 6:00 PM Felician Nemeth
<felician.nemeth@gmail.com> wrote:
>
> I'm sorry I haven't replied earlier.  I've now tested the master branch
> instead of scratch/eldoc-display-functions because the master branch
> seems to contain most commits from the feature branch.  And it passes
> all my tests regarding this bug report.  So I think it can be closed.
>
> Thank you.





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-01-15 18:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-25 18:17 bug#42532: 28.0.50; Can eldoc-prefer-doc-buffer be more aggressive? Felician Nemeth
2020-09-07  8:38 ` João Távora
2020-09-07 10:11   ` João Távora
2020-09-26 12:58     ` Felician Nemeth
2020-10-03 19:18       ` João Távora
2021-01-15 18:00         ` Felician Nemeth
2021-01-15 18:01           ` João Távora

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).