unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
@ 2024-01-10 22:22 JD Smith
  2024-01-11 10:24 ` Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: JD Smith @ 2024-01-10 22:22 UTC (permalink / raw)
  To: 68374


When the ‘display min-width property is used on characters in a buffer, window/buffer-text-pixel-size does not include this min-width padding in its calculation of the text's pixel width.  

This can be seen by using a range of minimum character widths and noticing that the width is identical; see below.  Other ‘display properties like space :width and space :align-to do seem to be correctly handled by pixel size calculations. 

This is relevant because various elements on the mode-line use ‘display min-width, so performing pixel alignment on the mode-line text is impacted.

+++

(eval-when-compile 'cl-lib)
(cl-loop
 for w from 0. to 100. by 20. 
 collect
 (with-current-buffer (get-buffer-create "*pixel-sizes*")
   (erase-buffer)
   (insert ">>>" (propertize " " 'display `(min-width (,w))) "<<<")
   (cons w (buffer-text-pixel-size))))
  
;; ((0 49 . 14) (20 49 . 14) (40 49 . 14) (60 49 . 14) (80 49 . 14) (100 49 . 14))




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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-01-10 22:22 bug#68374: min-width is not correctly treated by buffer-text-pixel-size JD Smith
@ 2024-01-11 10:24 ` Eli Zaretskii
  2024-01-11 19:53   ` JD Smith
  0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2024-01-11 10:24 UTC (permalink / raw)
  To: JD Smith; +Cc: 68374

> From: JD Smith <jdtsmith@gmail.com>
> Date: Wed, 10 Jan 2024 17:22:53 -0500
> 
> 
> When the ‘display min-width property is used on characters in a buffer, window/buffer-text-pixel-size does not include this min-width padding in its calculation of the text's pixel width.  

For some reason I cannot understand, we were ignoring min-width when
simulating display (as opposed to actually displaying stuff in a
window).  I can only assume it's some kind of left-over from when Lars
was developing this feature, where calls from functions that simulate
display caused him trouble, so he disabled that and forgot to
re-enable later.  At least I cannot find any discussion of this, and
the code which disables min-width in these situations was in the
initial version that landed on master.

So please try running with the patch below for a couple of weeks, and
if it doesn't cause you any trouble, I will install it on master.
Please configure your builds with --enable-checking='yes,glyphs' for
the duration of this test period, to activate some run-time tests and
assertions that will hopefully flag any problems this change might
have.

TIA

diff --git a/src/xdisp.c b/src/xdisp.c
index 14cf030..29ac4a4 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5487,9 +5487,6 @@ display_min_width (struct it *it, ptrdiff_t bufpos,
   if (!NILP (it->min_width_property)
       && !EQ (width_spec, it->min_width_property))
     {
-      if (!it->glyph_row)
-	return;
-
       /* When called from display_string (i.e., the mode line),
 	 we're being called with a string as the object, and we
 	 may be called with many sub-strings belonging to the same





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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-01-11 10:24 ` Eli Zaretskii
@ 2024-01-11 19:53   ` JD Smith
  2024-01-12  7:05     ` Eli Zaretskii
  2024-02-11  8:47     ` Eli Zaretskii
  0 siblings, 2 replies; 9+ messages in thread
From: JD Smith @ 2024-01-11 19:53 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68374

Great, this small patch seems to work.  I’ve enabled glyph checking and will report here if anything untoward comes up.  Should I be keeping track of the *warnings* buffer?

> 
> On Jan 11, 2024, at 5:24 AM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: JD Smith <jdtsmith@gmail.com>
>> Date: Wed, 10 Jan 2024 17:22:53 -0500
>> 
>> 
>> When the ‘display min-width property is used on characters in a buffer, window/buffer-text-pixel-size does not include this min-width padding in its calculation of the text's pixel width.  
> 
> For some reason I cannot understand, we were ignoring min-width when
> simulating display (as opposed to actually displaying stuff in a
> window).  I can only assume it's some kind of left-over from when Lars
> was developing this feature, where calls from functions that simulate
> display caused him trouble, so he disabled that and forgot to
> re-enable later.  At least I cannot find any discussion of this, and
> the code which disables min-width in these situations was in the
> initial version that landed on master.
> 
> So please try running with the patch below for a couple of weeks, and
> if it doesn't cause you any trouble, I will install it on master.
> Please configure your builds with --enable-checking='yes,glyphs' for
> the duration of this test period, to activate some run-time tests and
> assertions that will hopefully flag any problems this change might
> have.
> 
> TIA
> 
> diff --git a/src/xdisp.c b/src/xdisp.c
> index 14cf030..29ac4a4 100644
> --- a/src/xdisp.c
> +++ b/src/xdisp.c
> @@ -5487,9 +5487,6 @@ display_min_width (struct it *it, ptrdiff_t bufpos,
>   if (!NILP (it->min_width_property)
>       && !EQ (width_spec, it->min_width_property))
>     {
> -      if (!it->glyph_row)
> -	return;
> -
>       /* When called from display_string (i.e., the mode line),
> 	 we're being called with a string as the object, and we
> 	 may be called with many sub-strings belonging to the same






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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-01-11 19:53   ` JD Smith
@ 2024-01-12  7:05     ` Eli Zaretskii
  2024-01-12 16:45       ` JD Smith
  2024-02-11  8:47     ` Eli Zaretskii
  1 sibling, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2024-01-12  7:05 UTC (permalink / raw)
  To: JD Smith; +Cc: 68374

> From: JD Smith <jdtsmith@gmail.com>
> Date: Thu, 11 Jan 2024 14:53:57 -0500
> Cc: 68374@debbugs.gnu.org
> 
> Great, this small patch seems to work.  I’ve enabled glyph checking and will report here if anything untoward comes up.  Should I be keeping track of the *warnings* buffer?

Yes, and also look out for redisplay errors in *Messages*.

Thanks.





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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-01-12  7:05     ` Eli Zaretskii
@ 2024-01-12 16:45       ` JD Smith
  2024-01-12 18:09         ` Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: JD Smith @ 2024-01-12 16:45 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68374

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

I suppose the occasional:

Error during redisplay: (jit-lock-function 3483) signaled (quit)
Error during redisplay: (jit-lock-function 3510) signaled (quit)

in *Messages* isn’t related or harmful?  Soon I’ll be using pixel width calculations to layout the mode line; and will keep a close eye on it.  

> On Jan 12, 2024, at 2:05 AM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: JD Smith <jdtsmith@gmail.com>
>> Date: Thu, 11 Jan 2024 14:53:57 -0500
>> Cc: 68374@debbugs.gnu.org
>> 
>> Great, this small patch seems to work.  I’ve enabled glyph checking and will report here if anything untoward comes up.  Should I be keeping track of the *warnings* buffer?
> 
> Yes, and also look out for redisplay errors in *Messages*.
> 
> Thanks.


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

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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-01-12 16:45       ` JD Smith
@ 2024-01-12 18:09         ` Eli Zaretskii
  0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2024-01-12 18:09 UTC (permalink / raw)
  To: JD Smith; +Cc: 68374

> From: JD Smith <jdtsmith@gmail.com>
> Date: Fri, 12 Jan 2024 11:45:02 -0500
> Cc: 68374@debbugs.gnu.org
> 
> I suppose the occasional:
> 
>  Error during redisplay: (jit-lock-function 3483) signaled (quit)
>  Error during redisplay: (jit-lock-function 3510) signaled (quit)
> 
> in *Messages* isn’t related or harmful?

Did you type C-g because something in font-lock was taking too long?

But yes, in general this is not the kind of problems I'd expect from
the change.





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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-01-11 19:53   ` JD Smith
  2024-01-12  7:05     ` Eli Zaretskii
@ 2024-02-11  8:47     ` Eli Zaretskii
  2024-02-11 12:20       ` JD Smith
  1 sibling, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2024-02-11  8:47 UTC (permalink / raw)
  To: JD Smith; +Cc: 68374

> From: JD Smith <jdtsmith@gmail.com>
> Date: Thu, 11 Jan 2024 14:53:57 -0500
> Cc: 68374@debbugs.gnu.org
> 
> Great, this small patch seems to work.  I’ve enabled glyph checking and will report here if anything untoward comes up.

Any news?  Should I install this now?

Thanks.





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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-02-11  8:47     ` Eli Zaretskii
@ 2024-02-11 12:20       ` JD Smith
  2024-02-11 13:22         ` Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: JD Smith @ 2024-02-11 12:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68374

I haven't noticed anything unusual in a couple weeks of use, so please do.  Thanks.

> On Feb 11, 2024, at 3:47 AM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: JD Smith <jdtsmith@gmail.com>
>> Date: Thu, 11 Jan 2024 14:53:57 -0500
>> Cc: 68374@debbugs.gnu.org
>> 
>> Great, this small patch seems to work.  I’ve enabled glyph checking and will report here if anything untoward comes up.
> 
> Any news?  Should I install this now?
> 
> Thanks.






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

* bug#68374: min-width is not correctly treated by buffer-text-pixel-size
  2024-02-11 12:20       ` JD Smith
@ 2024-02-11 13:22         ` Eli Zaretskii
  0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2024-02-11 13:22 UTC (permalink / raw)
  To: JD Smith; +Cc: 68374-done

> From: JD Smith <jdtsmith@gmail.com>
> Date: Sun, 11 Feb 2024 07:20:21 -0500
> Cc: 68374@debbugs.gnu.org
> 
> I haven't noticed anything unusual in a couple weeks of use, so please do.  Thanks.

Thanks, installed on master, and closing the bug.





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

end of thread, other threads:[~2024-02-11 13:22 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-10 22:22 bug#68374: min-width is not correctly treated by buffer-text-pixel-size JD Smith
2024-01-11 10:24 ` Eli Zaretskii
2024-01-11 19:53   ` JD Smith
2024-01-12  7:05     ` Eli Zaretskii
2024-01-12 16:45       ` JD Smith
2024-01-12 18:09         ` Eli Zaretskii
2024-02-11  8:47     ` Eli Zaretskii
2024-02-11 12:20       ` JD Smith
2024-02-11 13:22         ` Eli Zaretskii

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