bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#38731: 27.0.50; Unexpected redisplay behaviour. Cursor can’t be move


From: Alan Third
Subject: bug#38731: 27.0.50; Unexpected redisplay behaviour. Cursor can’t be moved to end of line.
Date: Thu, 26 Dec 2019 12:59:17 +0000

On Tue, Dec 24, 2019 at 05:50:36PM +0200, Eli Zaretskii wrote:
> > Date: Tue, 24 Dec 2019 18:43:34 +0800
> > From: HaiJun Zhang <netjune@outlook.com>
> > 
> > 1. emacs -Q
> > 2. open the test file in attachment(a.cpp)
> > 3. M-x toggle-truncate-lines
> > 4. M-x global-hl-line
> > 5. shrink the width of the emacs window so that the longest line(#12) can’t 
> > be fully visible
> > 6. go to line 12 and press C-e to goto end of line
> > 7. the cursor is not at the end of line and you can’t move the cursor to 
> > end of line
> 
> I cannot reproduce this.
> 
> Note how in the video you produced, moving cursor across the
> right-most part of the line after C-e shows characters from the end of
> the line.  IOW, Emacs does know it is at EOL, it's just that the
> window display somehow was not updated.
> 
> I think this is Darwin-specific display problem.

I may be entirely wrong but after looking into this I think the NS
code is being passed bad information.

It may be because we only ever draw from expose_frame: I have a test
branch that draws directly into an offscreen bitmap, not relying on
expose_frame, and it draws correctly despite using almost the same
logic.

In ns_draw_glyph_string I can see that s->x is correctly set to 136
when the backtrace doesn’t contain expose_frame, but 178 when it does.

The issue seems to rely on the combination of truncate lines mode,
global hl mode and tabs on the left. The number of tabs seems to make
no difference, the offset remains the same, and replacing tabs with
spaces displays correctly.

Any thoughts on how to debug this further?
-- 
Alan Third





reply via email to

[Prev in Thread] Current Thread [Next in Thread]