Subject: Re: bug#19300: 24.4.51; visual-line-mode messes up after-string rendering when it spans all window columns

From: Eli Zaretskii <[email-masked]>
Date: Tue, 09 Dec 2014 18:11:53 +0200

> Date: Tue, 09 Dec 2014 02:51:32 +0200
> From: Dmitry Gutov <[email-masked]>
> CC: [email-masked]
> 
> On 12/08/2014 10:39 PM, Eli Zaretskii wrote:
> > I meant a recipe to show one window with the problem and another
> > without, in the same session.  If you achieve that with the same
> > resizing of a window, it'd be interesting to see.
> 
> The recipe won't work on your system anyway, right? Since you can't 
> reproduce the situation of just "one window with a problem", and the 
> above would be a (tiny bit) more complicated version of it.
> 
> I can make a video, if you like.
> 
> > The pixel size of the canonical character of that font, as you get in
> > your session, would be a good start.  E.g., put a breakpoint in
> > set_cursor_from_row, then step a few lines, and type "pgrow".
> >
> > Here's the full recipe:
> > ...
> >    (gdb) pgrow
> 
> 14350	set_cursor_from_row (struct window *w, struct glyph_row *row,
> (gdb) pgrow
> TEXT: 39 glyphs
>    0    0: STRETCH[20+15] pos=740 w=64 a+d=15+5 MB
>    1   64: STRETCH[20+15] pos=741 w=64 a+d=15+5 MB
>    2  128: STRETCH[20+15] pos=742 w=64 a+d=15+5 MB
>    3  192: CHAR[ ] pos=743 blev=0,btyp=L w=8 a+d=15+5 MB
>    4  200: CHAR["] pos=744 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>    5  208: CHAR[ ] pos=745 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>    6  216: CHAR[a] pos=746 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>    7  224: CHAR[d] pos=747 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>    8  232: CHAR[-] pos=748 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>    9  240: CHAR[A] pos=749 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   10  248: CHAR[d] pos=750 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   11  256: CHAR[v] pos=751 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   12  264: CHAR[i] pos=752 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   13  272: CHAR[c] pos=753 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   14  280: CHAR[e] pos=754 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   15  288: CHAR[-] pos=755 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   16  296: CHAR[d] pos=756 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   17  304: CHAR[e] pos=757 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   18  312: CHAR[l] pos=758 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   19  320: CHAR[e] pos=759 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   20  328: CHAR[t] pos=760 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   21  336: CHAR[e] pos=761 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   22  344: CHAR[-] pos=762 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   23  352: CHAR[f] pos=763 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   24  360: CHAR[i] pos=764 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   25  368: CHAR[l] pos=765 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   26  376: CHAR[e] pos=766 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   27  384: CHAR[ ] pos=767 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   28  392: CHAR[<] pos=768 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   29  400: CHAR[f] pos=769 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   30  408: CHAR[>] pos=770 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   31  416: CHAR[ ] pos=771 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   32  424: CHAR[ ] pos=772 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   33  432: CHAR[ ] pos=773 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   34  440: CHAR[ ] pos=774 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   35  448: CHAR[ ] pos=775 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   36  456: CHAR[ ] pos=776 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   37  464: CHAR["] pos=777 blev=0,btyp=L w=8 a+d=15+5 face=17 MB
>   38  472: CHAR[ ] pos=0 blev=0,btyp=B w=8 a+d=15+5 MB

This means every character is 8 pixels wide, so I'd expect the
wrapping to occur around 256-pixel wide window.

> >> I can also drag the left window border a bit, so that (window-width)
> >> still returns 34, but (window-pixel-width) is 291, then the lines in the
> >> test buffer become not wrapped.
> >
> > The fact that pixel size changes, but the size in characters doesn't
> > is expected, of course.
> 
> I wrote down specific numbers, for you to maybe try resizing the window 
> to these dimensions. Like mentioned, I see the problem at 288px, and 
> there's no problem at 291px, while the reported width in columns stays 
> the same.

These are not the numbers we need, we need what this returns:

  M-: (window-width nil t) RET

> It's fairly hard to reach 288px though, because dragging with the mouse 
> still moves the window border in jumps (even though not by columns).

Perhaps set window-resize-pixelwise non-nil.