Subject: bug#27830: 26.0.50; Left fringe gets truncated by a pixel in window not sharing that edge with frame

From: Kaushal Modi <[email-masked]>
Date: Tue, 03 Oct 2017 20:19:28 +0000

Hi Martin,

Thank you for the great reply on the "next steps" for me to execute. I
apologize for the late reply.

On Wed, Jul 26, 2017 at 3:53 AM martin rudalics <[email-masked]> wrote:

>
>  From the attached image it's easy to see that both fringes of the window
> on the right miss one pixel.

I fail to see that without the diff-hl-mode example.

> Please try:
>
> - C-x 3 with emacs -Q
>
> - C-x 3 with emacs -Q and scrollbars disabled
>

I tried that, but nothing stood out.

> and look at the right edge of any truncation glyphs in the window on the
> right.  I suppose that the diff-hl fringe customizations are needed to
> reproduce the problem but who knows.
>
> Next, on the frame shown in your image do another C-x 3 so we can tell
> whether only the rightmost window is affected.

Below images and animation are after following the emacs -Q recipe I posted
earlier - https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27830#5

As seen above (figure attached), any window not sharing the edge the with
frame sees that ~1 pixel truncation.

> Also, please double-check whether disabling the scroll bars is needed to
> show the
> effect.
>

Yes!

With scroll bars enabled, the diff-hl-mode glyphs show up fine without
truncation (see attached):

Finally, here's also a GIF (different from the one in the other bug report
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28605#38 )

    https://i.imgur.com/3IWwAVK.gifv

Finally, on the frame shown in your image, do
>
> M-: (window--dump-frame)
>
> This should get you a buffer *window-frame-dump*.  Please post its
> contents here.
>

Here is the frame dump with scroll bars disabled:

frame pixel: 656 x 540   cols/lines: 82 x 36   units: 8 x 15
frame text pixel: 640 x 540   cols/lines: 80 x 36
tool: 0  scroll: 0/0  fringe: 16  border: 0  right: 0  bottom: 0

#<window 5>   parent: nil
pixel left: 0   top: 0   size: 656 x 525   new: 656
char left: 0   top: 0   size: 82 x 35   new: 82
normal: 1.0 x 1.0   new: nil

#<window 3 on init.el>   parent: #<window 5>
pixel left: 0   top: 0   size: 328 x 525   new: 328
char left: 0   top: 0   size: 41 x 35   new: 41
normal: 0.5 x 1.0   new: nil
body pixel: 312 x 510   char: 39 x 34
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 15  divider: 0

#<window 6 on init.el>   parent: #<window 5>
pixel left: 328   top: 0   size: 168 x 525   new: 168
char left: 41   top: 0   size: 21 x 35   new: 21
normal: 0.25 x 1.0   new: 0.25
body pixel: 152 x 510   char: 19 x 34
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 15  divider: 0

#<window 7 on init.el>   parent: #<window 5>
pixel left: 496   top: 0   size: 160 x 525   new: 160
char left: 62   top: 0   size: 20 x 35   new: 20
normal: 0.25 x 1.0   new: 0.25
body pixel: 144 x 510   char: 18 x 34
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 15  divider: 0

#<window 4 on  *Minibuf-0*>   parent: nil
pixel left: 0   top: 525   size: 656 x 15   new: 0
char left: 0   top: 35   size: 82 x 1   new: 82
normal: 1.0 x 1.0   new: 0
body pixel: 640 x 15   char: 80 x 1
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 0  divider: 0
height header-line: 0  mode-line: 0  divider: 0

Here's the same after *enabling* scroll bars:

frame pixel: 672 x 540   cols/lines: 84 x 36   units: 8 x 15
frame text pixel: 640 x 540   cols/lines: 80 x 36
tool: 0  scroll: 16/0  fringe: 16  border: 0  right: 0  bottom: 0

#<window 8>   parent: nil
pixel left: 0   top: 0   size: 672 x 525   new: 672
char left: 0   top: 0   size: 84 x 35   new: 84
normal: 1.0 x 1.0   new: nil

#<window 3 on init.el>   parent: #<window 8>
pixel left: 0   top: 0   size: 168 x 525   new: 168
char left: 0   top: 0   size: 21 x 35   new: 21
normal: 0.25 x 1.0   new: nil
body pixel: 136 x 510   char: 17 x 34
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 16  divider: 0
height header-line: 0  mode-line: 15  divider: 0

#<window 10 on init.el>   parent: #<window 8>
pixel left: 168   top: 0   size: 168 x 525   new: 168
char left: 21   top: 0   size: 21 x 35   new: 21
normal: 0.25 x 1.0   new: nil
body pixel: 136 x 510   char: 17 x 34
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 16  divider: 0
height header-line: 0  mode-line: 15  divider: 0

#<window 9 on init.el>   parent: #<window 8>
pixel left: 336   top: 0   size: 336 x 525   new: 336
char left: 42   top: 0   size: 42 x 35   new: 42
normal: 0.5 x 1.0   new: nil
body pixel: 304 x 510   char: 38 x 34
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 16  divider: 0
height header-line: 0  mode-line: 15  divider: 0

#<window 4 on  *Minibuf-0*>   parent: nil
pixel left: 0   top: 525   size: 672 x 15   new: 0
char left: 0   top: 35   size: 84 x 1   new: 82
normal: 1.0 x 1.0   new: 0
body pixel: 640 x 15   char: 80 x 1
width left fringe: 8  left margin: 0  right margin: 0
width right fringe: 8  scroll-bar: 16  divider: 0
height header-line: 0  mode-line: 0  divider: 0

-- 

Kaushal Modi