]> code.delx.au - gnu-emacs/commitdiff
Fix vertical-motion in tabulated-list mode
authorEli Zaretskii <eliz@gnu.org>
Fri, 18 Dec 2015 10:26:17 +0000 (12:26 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 18 Dec 2015 10:26:17 +0000 (12:26 +0200)
* src/indent.c (Fvertical_motion): When moving from line beginning
to point under line truncation, assume overshoot by one line only
if point actually lies beyond the window's right margin.
(Bug#22194)

src/indent.c

index 04837f8f513f299c933b9fe792a0f4e2cdf22632..33bf424b344ab0e6eed9de95b7c70aeec6a63231 100644 (file)
@@ -2080,11 +2080,7 @@ whether or not it is currently displayed in some window.  */)
        }
       else
        it_overshoot_count =
-         (!(it.method == GET_FROM_IMAGE
-            || it.method == GET_FROM_STRETCH)
-           /* We will overshoot if lines are truncated and PT lies
-              beyond the right margin of the window.  */
-           || it.line_wrap == TRUNCATE);
+         !(it.method == GET_FROM_IMAGE || it.method == GET_FROM_STRETCH);
 
       if (start_x_given)
        {
@@ -2142,6 +2138,11 @@ whether or not it is currently displayed in some window.  */)
                 screen lines we need to backtrack.  */
              it_overshoot_count = it.vpos;
            }
+         /* We will overshoot if lines are truncated and point lies
+            beyond the right margin of the window.  */
+         if (it.line_wrap == TRUNCATE && it.current_x >= it.last_visible_x
+             && it_overshoot_count == 0)
+           it_overshoot_count = 1;
          if (it_overshoot_count > 0)
            move_it_by_lines (&it, -it_overshoot_count);