From: Eli Zaretskii Date: Sat, 2 Mar 2019 10:17:47 +0000 (+0200) Subject: Fix 'end-of-visual-line' with overlay strings with newlines X-Git-Tag: emacs-27.0.90~3507 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=dbffbe08815644fd30404891ef81496277ed27da;p=emacs.git 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. --- 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