]> git.eshelyaron.com Git - emacs.git/commitdiff
(move_it_to): When moving by vpos, ensure that the iterator advances
authorChong Yidong <cyd@stupidchicken.com>
Sun, 7 Sep 2008 14:16:15 +0000 (14:16 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 7 Sep 2008 14:16:15 +0000 (14:16 +0000)
to the next line if the current line ends in a continued tab.

src/xdisp.c

index 82c9e82effa0e527fff9bfc8c7e7a4f628a1a2a0..a6d1a82eb3364d3955d6debd79bfa857136b220d 100644 (file)
@@ -7216,8 +7216,18 @@ move_it_to (it, to_charpos, to_x, to_y, to_vpos, op)
             associated with the tab are displayed on the current
             line.  Since it->current_x does not include these glyphs,
             we use it->last_visible_x instead.  */
-         it->continuation_lines_width +=
-           (it->c == '\t') ? it->last_visible_x : it->current_x;
+         if (it->c == '\t')
+           {
+             it->continuation_lines_width += it->last_visible_x;
+             /* When moving by vpos, ensure that the iterator really
+                advances to the next line (bug#847).  Fixme: do we
+                need to do this in other circumstances?  */
+             if ((op & MOVE_TO_VPOS)
+                 && !(op & (MOVE_TO_X | MOVE_TO_POS)))
+               set_iterator_to_next (it, 0);
+           }
+         else
+           it->continuation_lines_width += it->current_x;
          break;
 
        default: