mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.1312: Cursor position wrong when splitting window in insert mode
Problem: Cursor position wrong when splitting window in insert mode. Solution: Pass the actual mode to win_fix_cursor(). (Luuk van Baal, closes #11999,
This commit is contained in:
parent
339e114d70
commit
bc3dc298b3
@ -1753,14 +1753,7 @@ func Test_splitkeep_options()
|
|||||||
|
|
||||||
" Scroll when cursor becomes invalid in insert mode.
|
" Scroll when cursor becomes invalid in insert mode.
|
||||||
norm Lic
|
norm Lic
|
||||||
call assert_equal(curpos[0], getcurpos()[0], 'run ' .. run)
|
call assert_equal(curpos, getcurpos(), 'run ' .. run)
|
||||||
|
|
||||||
" The line number might be one less because of round-off.
|
|
||||||
call assert_inrange(curpos[1] - 1, curpos[1], getcurpos()[1], 'run ' .. run)
|
|
||||||
|
|
||||||
call assert_equal(curpos[2], getcurpos()[2], 'run ' .. run)
|
|
||||||
call assert_equal(curpos[3], getcurpos()[3], 'run ' .. run)
|
|
||||||
call assert_equal(curpos[4], getcurpos()[4], 'run ' .. run)
|
|
||||||
|
|
||||||
" No scroll when topline not equal to 1
|
" No scroll when topline not equal to 1
|
||||||
only | execute "norm gg5\<C-e>" | split | wincmd k
|
only | execute "norm gg5\<C-e>" | split | wincmd k
|
||||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1312,
|
||||||
/**/
|
/**/
|
||||||
1311,
|
1311,
|
||||||
/**/
|
/**/
|
||||||
|
@ -5328,7 +5328,10 @@ win_enter_ext(win_T *wp, int flags)
|
|||||||
if (*p_spk == 'c') // assume cursor position needs updating
|
if (*p_spk == 'c') // assume cursor position needs updating
|
||||||
changed_line_abv_curs();
|
changed_line_abv_curs();
|
||||||
else
|
else
|
||||||
win_fix_cursor(TRUE);
|
// Make sure the cursor position is valid, either by moving the cursor
|
||||||
|
// or by scrolling the text.
|
||||||
|
win_fix_cursor(
|
||||||
|
get_real_state() & (MODE_NORMAL|MODE_CMDLINE|MODE_TERMINAL));
|
||||||
|
|
||||||
// Now it is OK to parse messages again, which may be needed in
|
// Now it is OK to parse messages again, which may be needed in
|
||||||
// autocommands.
|
// autocommands.
|
||||||
@ -6782,7 +6785,8 @@ win_fix_scroll(int resize)
|
|||||||
/*
|
/*
|
||||||
* Make sure the cursor position is valid for 'splitkeep'.
|
* Make sure the cursor position is valid for 'splitkeep'.
|
||||||
* If it is not, put the cursor position in the jumplist and move it.
|
* If it is not, put the cursor position in the jumplist and move it.
|
||||||
* If we are not in normal mode, scroll to make valid instead.
|
* If we are not in normal mode ("normal" is zero), make it valid by scrolling
|
||||||
|
* instead.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
win_fix_cursor(int normal)
|
win_fix_cursor(int normal)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user