aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/edit.c15
-rw-r--r--test/functional/ui/mouse_spec.lua4
2 files changed, 13 insertions, 6 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index f8723f9680..64c54b0f37 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -464,7 +464,8 @@ static int insert_check(VimState *state)
&& !curwin->w_p_sms
&& !s->did_backspace
&& curwin->w_topline == s->old_topline
- && curwin->w_topfill == s->old_topfill) {
+ && curwin->w_topfill == s->old_topfill
+ && s->count <= 1) {
s->mincol = curwin->w_wcol;
validate_cursor_col(curwin);
@@ -486,11 +487,15 @@ static int insert_check(VimState *state)
}
// May need to adjust w_topline to show the cursor.
- update_topline(curwin);
+ if (s->count <= 1) {
+ update_topline(curwin);
+ }
s->did_backspace = false;
- validate_cursor(curwin); // may set must_redraw
+ if (s->count <= 1) {
+ validate_cursor(curwin); // may set must_redraw
+ }
// Redraw the display when no characters are waiting.
// Also shows mode, ruler and positions cursor.
@@ -504,7 +509,9 @@ static int insert_check(VimState *state)
do_check_cursorbind();
}
- update_curswant();
+ if (s->count <= 1) {
+ update_curswant();
+ }
s->old_topline = curwin->w_topline;
s->old_topfill = curwin->w_topfill;
diff --git a/test/functional/ui/mouse_spec.lua b/test/functional/ui/mouse_spec.lua
index 0228708958..8bda661902 100644
--- a/test/functional/ui/mouse_spec.lua
+++ b/test/functional/ui/mouse_spec.lua
@@ -987,7 +987,7 @@ describe('ui/mouse/input', function()
command('set sidescroll=0')
feed('<esc>:set nowrap<cr>')
- feed('a <esc>20Ab<esc>')
+ feed('a <esc>17Ab<esc>3Ab<esc>')
screen:expect([[
|*2
bbbbbbbbbbbbbbb^b |
@@ -1017,7 +1017,7 @@ describe('ui/mouse/input', function()
command('set sidescroll=0')
feed('<esc>:set nowrap<cr>')
- feed('a <esc>20Ab<esc>')
+ feed('a <esc>17Ab<esc>3Ab<esc>')
screen:expect([[
|*2
bbbbbbbbbbbbbbb^b |