Subject: bug#67470: 29.1; move-end-of-line behaves badly with eglot type annotations

From: Eli Zaretskii <[email-masked]>
Date: Mon, 27 Nov 2023 14:34:53 +0200

> From: [email-masked]
> Date: Sun, 26 Nov 2023 23:37:04 +0000
> 
> 
> 1. Go to a buffer with some code
> 2. Start eglot
> 3. Eglot adds type annotations
> 4. Go to some line that ends with a type annotation
> 5. Press C-e to go to the end of the line
> 6. Navigate around with C-n and C-p
> 7. Note that point will jump to the column of the position of the end of
> the type annotation, rather than the end of the code.
> 
> For instance, if you have some code and some annotations (represented
> with a) like so, with point at |:
> 
> some|code aaaaaaaaaa
> here are some more lines which do not have annotations
> 
> Pressing C-e will move point to the end of the line
> 
> some cod| aaaaaaaaaa
> here are some more lines which do not have annotations
> 
> Then when you press C-n, instead of point moving to the same column in
> the next line, like so:
> 
> some code aaaaaaaaaa
> here are|some more lines which do not have annotations
> 
> It will instead jump to the column of the end of the annotation, like
> so:
> 
> some code aaaaaaaaaa
> here are some more |ines which do not have annotations

João, how are those annotations shown?  I cannot run Eglot on my
system to try this recipe, but if I just put an overlay with a before-
or after-string at the end of a line, C-e moves to after the overlay
string, not before it.  Does Eglot do anything to change that?

In any case, I'm guessing that what the OP sees is a general-purpose
cursor movement in the presence of overlay strings, and can only be
changed if Eglot had its own commands for C-n/C-p, which set
goal-column or something before moving.