diff options
author | Eli Zaretskii <eliz@gnu.org> | 2019-03-02 12:17:47 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2019-03-02 12:17:47 +0200 |
commit | dbffbe08815644fd30404891ef81496277ed27da (patch) | |
tree | f6f572e9445143813327bf8f97c9b1acea967ac0 /src/indent.c | |
parent | 2028756fa3db8dc266c0abbf4ecb672ab5348e71 (diff) | |
download | emacs-dbffbe08815644fd30404891ef81496277ed27da.tar.gz |
Fix 'end-of-visual-line' with overlay strings with newlines
* src/indent.c (Fvertical_motion): Get out of overlay strings
with embedded newlines even if moving within the same screen
line. See https://github.com/emacs-lsp/lsp-mode/issues/677
for more details.
Fix test for IT_CHARPOS being at the beginning of the
accessible portion of the buffer.
Diffstat (limited to 'src/indent.c')
-rw-r--r-- | src/indent.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/indent.c b/src/indent.c index bc1aa8ca2c6..1d5d346e63f 100644 --- a/src/indent.c +++ b/src/indent.c @@ -2286,7 +2286,7 @@ whether or not it is currently displayed in some window. */) it.current_y = 0; /* Do this even if LINES is 0, so that we move back to the beginning of the current line as we ought. */ - if ((nlines < 0 && IT_CHARPOS (it) > 0) + if ((nlines < 0 && IT_CHARPOS (it) > BEGV) || (nlines == 0 && !(start_x_given && start_x <= to_x))) move_it_by_lines (&it, max (PTRDIFF_MIN, nlines)); } @@ -2338,7 +2338,7 @@ whether or not it is currently displayed in some window. */) and then reposition point at the requested X coordinate; if we don't, the cursor will be placed just after the string, which might not be the requested column. */ - if (nlines > 0 && it.area == TEXT_AREA) + if (nlines >= 0 && it.area == TEXT_AREA) { while (it.method == GET_FROM_STRING && !it.string_from_display_prop_p |