]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix 'end-of-visual-line' with overlay strings with newlines
authorEli Zaretskii <eliz@gnu.org>
Sat, 2 Mar 2019 10:17:47 +0000 (12:17 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 2 Mar 2019 10:17:47 +0000 (12:17 +0200)
* 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.

src/indent.c

index bc1aa8ca2c65961d747a9b600ff0fcc73fad65f5..1d5d346e63faa3207ac9f21a49bb952b69c15de3 100644 (file)
@@ -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