]> git.eshelyaron.com Git - emacs.git/commitdiff
* xdisp.c (move_it_to): For continued lines ending in a tab, take
authorChong Yidong <cyd@stupidchicken.com>
Tue, 21 Jul 2009 20:08:49 +0000 (20:08 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Tue, 21 Jul 2009 20:08:49 +0000 (20:08 +0000)
the overflowed pixels into account (Bug#3879).

src/ChangeLog
src/xdisp.c

index debe74f2bdb1997847865132481291d6d3f2db72..1ed4b48e3ca7685e94a25c7f8afc9e8b34269a23 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-21  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (move_it_to): For continued lines ending in a tab, take
+       the overflowed pixels into account (Bug#3879).
+
 2009-07-17  Kenichi Handa  <handa@m17n.org>
 
        * casetab.c (shuffle): Fix the logic of setting up the cycle.
index 8a2b2a387d9ff25d9e20079cdd9c8b30d2283155..f37586e81dc86c30d3f6877280614c725041bd61 100644 (file)
@@ -7108,8 +7108,7 @@ move_it_to (it, to_charpos, to_x, to_y, to_vpos, op)
      int op;
 {
   enum move_it_result skip, skip2 = MOVE_X_REACHED;
-  int line_height;
-  int reached = 0;
+  int line_height, line_start_x = 0, reached = 0;
 
   for (;;)
     {
@@ -7292,7 +7291,11 @@ move_it_to (it, to_charpos, to_x, to_y, to_vpos, op)
              if (it->current_x != it->last_visible_x
                  && (op & MOVE_TO_VPOS)
                  && !(op & (MOVE_TO_X | MOVE_TO_POS)))
-               set_iterator_to_next (it, 0);
+               {
+                 line_start_x = it->current_x + it->pixel_width
+                   - it->last_visible_x;
+                 set_iterator_to_next (it, 0);
+               }
            }
          else
            it->continuation_lines_width += it->current_x;
@@ -7304,7 +7307,9 @@ move_it_to (it, to_charpos, to_x, to_y, to_vpos, op)
 
       /* Reset/increment for the next run.  */
       recenter_overlay_lists (current_buffer, IT_CHARPOS (*it));
-      it->current_x = it->hpos = 0;
+      it->current_x = line_start_x;
+      line_start_x = 0;
+      it->hpos = 0;
       it->current_y += it->max_ascent + it->max_descent;
       ++it->vpos;
       last_height = it->max_ascent + it->max_descent;