unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
@ 2021-10-03 10:02 Augusto Stoffel
  2021-10-03 10:34 ` João Távora
  0 siblings, 1 reply; 8+ messages in thread
From: Augusto Stoffel @ 2021-10-03 10:02 UTC (permalink / raw)
  To: 50989; +Cc: João Távora

Using the pylsp language server via Eglot, I sometimes get docstrings
with lots of non-breaking spaces in them.  Those end up being
highlighted with the `nobreak-space' face in the Eldoc buffer, which is
very distracting.

I'm not sure this should be addressed in Eglot or in Eldoc.  But the
following advice fixes things for me.
    
    (advice-add 'eldoc--format-doc-buffer :after
                (lambda (&rest _) "Don't display non-breaking spaces."
                  (with-current-buffer eldoc--doc-buffer
                    (setq-local nobreak-char-display nil))))





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

* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
  2021-10-03 10:02 bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers Augusto Stoffel
@ 2021-10-03 10:34 ` João Távora
  2021-10-03 11:07   ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: João Távora @ 2021-10-03 10:34 UTC (permalink / raw)
  To: Augusto Stoffel; +Cc: 50989

On Sun, Oct 3, 2021 at 11:03 AM Augusto Stoffel <arstoffel@gmail.com> wrote:
>
> Using the pylsp language server via Eglot, I sometimes get docstrings
> with lots of non-breaking spaces in them.  Those end up being
> highlighted with the `nobreak-space' face in the Eldoc buffer, which is
> very distracting.
>
> I'm not sure this should be addressed in Eglot or in Eldoc.  But the
> following advice fixes things for me.
>
>     (advice-add 'eldoc--format-doc-buffer :after
>                 (lambda (&rest _) "Don't display non-breaking spaces."
>                   (with-current-buffer eldoc--doc-buffer
>                     (setq-local nobreak-char-display nil))))

I'd say put this in ElDoc directly. If someone then objects, we could make a
eldoc-no-break-char-display variable.  Can you make a patch?

João





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

* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
  2021-10-03 10:34 ` João Távora
@ 2021-10-03 11:07   ` Eli Zaretskii
  2021-10-03 11:12     ` João Távora
  2021-10-05 21:16     ` Richard Stallman
  0 siblings, 2 replies; 8+ messages in thread
From: Eli Zaretskii @ 2021-10-03 11:07 UTC (permalink / raw)
  To: João Távora; +Cc: 50989, arstoffel

> From: João Távora <joaotavora@gmail.com>
> Date: Sun, 3 Oct 2021 11:34:32 +0100
> Cc: 50989@debbugs.gnu.org
> 
> On Sun, Oct 3, 2021 at 11:03 AM Augusto Stoffel <arstoffel@gmail.com> wrote:
> >
> > Using the pylsp language server via Eglot, I sometimes get docstrings
> > with lots of non-breaking spaces in them.  Those end up being
> > highlighted with the `nobreak-space' face in the Eldoc buffer, which is
> > very distracting.
> >
> > I'm not sure this should be addressed in Eglot or in Eldoc.  But the
> > following advice fixes things for me.
> >
> >     (advice-add 'eldoc--format-doc-buffer :after
> >                 (lambda (&rest _) "Don't display non-breaking spaces."
> >                   (with-current-buffer eldoc--doc-buffer
> >                     (setq-local nobreak-char-display nil))))
> 
> I'd say put this in ElDoc directly. If someone then objects, we could make a
> eldoc-no-break-char-display variable.  Can you make a patch?

IMNSHO, this doesn't make much sense.  That face exists for a reason:
to signal to the users that some innocently-looking characters aren't
what they look like.  What you suggest above is to sweep the problem
under the carpet.  I think this is not TRT.

Why does the server return these NBSP characters?  Would it make sense
to automatically convert them to spaces on input?





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

* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
  2021-10-03 11:07   ` Eli Zaretskii
@ 2021-10-03 11:12     ` João Távora
  2021-10-03 11:25       ` Eli Zaretskii
  2021-10-03 11:39       ` Augusto Stoffel
  2021-10-05 21:16     ` Richard Stallman
  1 sibling, 2 replies; 8+ messages in thread
From: João Távora @ 2021-10-03 11:12 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 50989, Augusto Stoffel

On Sun, Oct 3, 2021 at 12:07 PM Eli Zaretskii <eliz@gnu.org> wrote:

> IMNSHO, this doesn't make much sense.  That face exists for a reason:
> to signal to the users that some innocently-looking characters aren't
> what they look like.

Eldoc's display facilities are only for displaying.  Sure, you may want
to copy text away from there, but I'd say that's rare.  So it wouldn't
be a problem
in practice, unless I'm missing something

> Why does the server return these NBSP characters?  Would it make sense
> to automatically convert them to spaces on input?

That's also sweeping it under the rug.  But I don't object either.  Augusto, if
you agree, match a patch to Eglot (this is where I presume the "input"
Eli refers
to lives).  Of course the real input is the server, but I'd rather not
go there, since
there are so many and all are out of our control.

João





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

* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
  2021-10-03 11:12     ` João Távora
@ 2021-10-03 11:25       ` Eli Zaretskii
  2021-10-03 11:39       ` Augusto Stoffel
  1 sibling, 0 replies; 8+ messages in thread
From: Eli Zaretskii @ 2021-10-03 11:25 UTC (permalink / raw)
  To: João Távora; +Cc: 50989, arstoffel

> From: João Távora <joaotavora@gmail.com>
> Date: Sun, 3 Oct 2021 12:12:23 +0100
> Cc: Augusto Stoffel <arstoffel@gmail.com>, 50989@debbugs.gnu.org
> 
> > Why does the server return these NBSP characters?  Would it make sense
> > to automatically convert them to spaces on input?
> 
> That's also sweeping it under the rug.

Well, we have no control on what the server does, so we cannot do
better.  But I do wonder why they do it at all.





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

* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
  2021-10-03 11:12     ` João Távora
  2021-10-03 11:25       ` Eli Zaretskii
@ 2021-10-03 11:39       ` Augusto Stoffel
  2021-10-05  9:13         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 8+ messages in thread
From: Augusto Stoffel @ 2021-10-03 11:39 UTC (permalink / raw)
  To: João Távora; +Cc: 50989

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

On Sun,  3 Oct 2021 at 12:12, João Távora <joaotavora@gmail.com> wrote:

> On Sun, Oct 3, 2021 at 12:07 PM Eli Zaretskii <eliz@gnu.org> wrote:
>
>> IMNSHO, this doesn't make much sense.  That face exists for a reason:
>> to signal to the users that some innocently-looking characters aren't
>> what they look like.
>
> Eldoc's display facilities are only for displaying.  Sure, you may want
> to copy text away from there, but I'd say that's rare.  So it wouldn't
> be a problem
> in practice, unless I'm missing something

I agree -- this is for display only, in which case NBSP and space are
supposed to be indistinguishable.  With the attached patch, if you copy
the text from the Eldoc buffer to some other buffer, the NBSPs are still
there so they will be displayed as such.

>> Why does the server return these NBSP characters?  Would it make sense
>> to automatically convert them to spaces on input?

I don't know for sure what the thinking is in any particular server, but
there are sensible reasons why one might do this.  Suppose, for
instance, that the client editor decides to refill the text before
displaying it.  Then it might be relevant to add NBSPs at strategic
places, and removing them would produce strange results.

> That's also sweeping it under the rug.  But I don't object either.  Augusto, if
> you agree, match a patch to Eglot (this is where I presume the "input"
> Eli refers
> to lives).  Of course the real input is the server, but I'd rather not
> go there, since
> there are so many and all are out of our control.

I don't know how to do this on the Eglot side, or at least not in a
simple manner: Eldoc callbacks take a string, not a buffer, as argument,
and Eldoc buffers are reused whenever possible.

So I've attached a patch implementing the simplistic solution.  Feel
free to ignore it if this seems unsuitable.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Disable-nobreak-char-display-in-Eldoc-buffers.patch --]
[-- Type: text/x-patch, Size: 914 bytes --]

From cfac0d542c751eef49b3482701d400aa2d2e38b4 Mon Sep 17 00:00:00 2001
From: Augusto Stoffel <arstoffel@gmail.com>
Date: Sun, 3 Oct 2021 13:11:26 +0200
Subject: [PATCH] Disable 'nobreak-char-display' in Eldoc buffers

* lisp/emacs-lisp/eldoc.el (eldoc--format-doc-buffer): Set
'nobreak-char-display' to nil in Eldoc buffers
---
 lisp/emacs-lisp/eldoc.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index 21f262adc6..a1c3c3268f 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -477,6 +477,7 @@ eldoc--format-doc-buffer
       (let ((inhibit-read-only t)
             (things-reported-on))
         (erase-buffer) (setq buffer-read-only t)
+        (setq-local nobreak-char-display nil)
         (local-set-key "q" 'quit-window)
         (cl-loop for (docs . rest) on docs
                  for (this-doc . plist) = docs
-- 
2.31.1


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

* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
  2021-10-03 11:39       ` Augusto Stoffel
@ 2021-10-05  9:13         ` Lars Ingebrigtsen
  0 siblings, 0 replies; 8+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-05  9:13 UTC (permalink / raw)
  To: Augusto Stoffel; +Cc: 50989, João Távora

Augusto Stoffel <arstoffel@gmail.com> writes:

>> Eldoc's display facilities are only for displaying.  Sure, you may want
>> to copy text away from there, but I'd say that's rare.  So it wouldn't
>> be a problem
>> in practice, unless I'm missing something
>
> I agree -- this is for display only, in which case NBSP and space are
> supposed to be indistinguishable.  With the attached patch, if you copy
> the text from the Eldoc buffer to some other buffer, the NBSPs are still
> there so they will be displayed as such.

I can see arguments for both ways of doing this -- "cleaning up" the
string before display, and fixing the display (as your patch is doing).

I think the main argument here -- that eldoc buffers are for display
only, so nbsp should be displayed as normal space -- is compelling,
though, so I've applied your patch to Emacs 28.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers
  2021-10-03 11:07   ` Eli Zaretskii
  2021-10-03 11:12     ` João Távora
@ 2021-10-05 21:16     ` Richard Stallman
  1 sibling, 0 replies; 8+ messages in thread
From: Richard Stallman @ 2021-10-05 21:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 50989, arstoffel, joaotavora

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > IMNSHO, this doesn't make much sense.  That face exists for a reason:
  > to signal to the users that some innocently-looking characters aren't
  > what they look like.  What you suggest above is to sweep the problem
  > under the carpet.  I think this is not TRT.

That feature is useful for text that you're editing.
But I don't think it is useful in a help string which is displayed
only for you to read.  So I think it is good to suppress it for
help strings generally.

The only exception I can imagine would be if a doc string displays an
example of buffer or file contents containing a non-breaking space.
In principle, it would be good to make an exception for that case.

But I think that exceptional case would be difficult to detect
reliably.  Also, since doc strings generally don't include examples of
buffer or file contents, I think that case will never actually occur.
So I think we can get away with ignoring it.

It is ever worth doing, we could create a kind of quoting to force a
real NBSP into the displayed help string.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)







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

end of thread, other threads:[~2021-10-05 21:16 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-03 10:02 bug#50989: 28.0.60; nobreak-char-display in Eldoc buffers Augusto Stoffel
2021-10-03 10:34 ` João Távora
2021-10-03 11:07   ` Eli Zaretskii
2021-10-03 11:12     ` João Távora
2021-10-03 11:25       ` Eli Zaretskii
2021-10-03 11:39       ` Augusto Stoffel
2021-10-05  9:13         ` Lars Ingebrigtsen
2021-10-05 21:16     ` Richard Stallman

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