From: Eli Zaretskii <eliz@gnu.org>
Date: Fri, 18 Dec 2015 10:26:17 +0000 (+0200)
Subject: Fix vertical-motion in tabulated-list mode
X-Git-Tag: emacs-25.0.90~449
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fb2eaf0ffc213fac170cff4814b7c93bd0c44c20;p=emacs.git

Fix vertical-motion in tabulated-list mode

* 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)
---

diff --git a/src/indent.c b/src/indent.c
index 04837f8f513..33bf424b344 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -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);