emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 3a1e3b4: Fix vertical-movement in buffers with wrap


From: Eli Zaretskii
Subject: [Emacs-diffs] master 3a1e3b4: Fix vertical-movement in buffers with wrap-prefix
Date: Sat, 2 Jul 2016 12:40:50 +0000 (UTC)

branch: master
commit 3a1e3b41a545ffc438b2e5c69982ff82e64b747c
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Fix vertical-movement in buffers with wrap-prefix
    
    * src/indent.c (Fvertical_motion): Zero the current_y coordinate
    whenever we zero the vpos vertical position of the iterator.
    * src/xdisp.c (move_it_in_display_line_to): Handle line-prefix and
    wrap-prefix regardless of whether the current Y coordinate is
    inside the window dimensions.  (Bug#23879)
---
 src/indent.c |    4 ++++
 src/xdisp.c  |    3 +--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/indent.c b/src/indent.c
index 5d7c6ae..bc59239 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -2178,6 +2178,7 @@ whether or not it is currently displayed in some window.  
*/)
       if (nlines <= 0)
        {
          it.vpos = vpos_init;
+         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)
@@ -2187,6 +2188,7 @@ whether or not it is currently displayed in some window.  
*/)
       else if (overshoot_handled)
        {
          it.vpos = vpos_init;
+         it.current_y = 0;
          move_it_by_lines (&it, min (PTRDIFF_MAX, nlines));
        }
       else
@@ -2200,6 +2202,7 @@ whether or not it is currently displayed in some window.  
*/)
              while (IT_CHARPOS (it) <= it_start)
                {
                  it.vpos = 0;
+                 it.current_y = 0;
                  move_it_by_lines (&it, 1);
                }
              if (nlines > 1)
@@ -2208,6 +2211,7 @@ whether or not it is currently displayed in some window.  
*/)
          else  /* it_start = ZV */
            {
              it.vpos = 0;
+             it.current_y = 0;
              move_it_by_lines (&it, min (PTRDIFF_MAX, nlines));
              /* We could have some display or overlay string at ZV,
                 in which case it.vpos will be nonzero now, while
diff --git a/src/xdisp.c b/src/xdisp.c
index 2d0d677..d05eca1 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -8609,8 +8609,7 @@ move_it_in_display_line_to (struct it *it,
           && it->dpvec + it->current.dpvec_index + 1 >= it->dpend)))
 
   /* If there's a line-/wrap-prefix, handle it.  */
-  if (it->hpos == 0 && it->method == GET_FROM_BUFFER
-      && it->current_y < it->last_visible_y)
+  if (it->hpos == 0 && it->method == GET_FROM_BUFFER)
     handle_line_prefix (it);
 
   if (IT_CHARPOS (*it) < CHARPOS (this_line_min_pos))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]