(Fvertical_motion): Restore hscroll before moving to goal column.
This commit is contained in:
parent
e433031a1a
commit
2f4ec7ce4f
1 changed files with 16 additions and 7 deletions
23
src/indent.c
23
src/indent.c
|
@ -2055,12 +2055,11 @@ whether or not it is currently displayed in some window. */)
|
|||
}
|
||||
else
|
||||
{
|
||||
int it_start;
|
||||
int oselective;
|
||||
int it_overshoot_expected;
|
||||
int it_start, oselective, it_overshoot_expected, first_x;
|
||||
|
||||
SET_TEXT_POS (pt, PT, PT_BYTE);
|
||||
start_display (&it, w, pt);
|
||||
first_x = it.first_visible_x;
|
||||
|
||||
/* Scan from the start of the line containing PT. If we don't
|
||||
do this, we start moving with IT->current_x == 0, while PT is
|
||||
|
@ -2118,11 +2117,21 @@ whether or not it is currently displayed in some window. */)
|
|||
if (XINT (lines) >= 0 || IT_CHARPOS (it) > 0)
|
||||
move_it_by_lines (&it, XINT (lines), 0);
|
||||
|
||||
/* Move to the goal column, if one was specified. */
|
||||
if (!NILP (lcols))
|
||||
move_it_in_display_line
|
||||
(&it, ZV,
|
||||
(int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5),
|
||||
MOVE_TO_X);
|
||||
{
|
||||
/* If the window was originally hscrolled, move forward by
|
||||
the hscrolled amount first. */
|
||||
if (first_x > 0)
|
||||
{
|
||||
move_it_in_display_line (&it, ZV, first_x, MOVE_TO_X);
|
||||
it.current_x = 0;
|
||||
}
|
||||
move_it_in_display_line
|
||||
(&it, ZV,
|
||||
(int)(cols * FRAME_COLUMN_WIDTH (XFRAME (w->frame)) + 0.5),
|
||||
MOVE_TO_X);
|
||||
}
|
||||
|
||||
SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue