neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 23080a4d7a9043913cb4875e18118731a4562032
parent f2d9c330fc56d1e589d33c82d372532e1695ce40
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun, 30 Oct 2022 07:10:39 +0800

fix(mouse): ensure no scrolling with "ver:0" in 'mousescroll' (#20861)


Diffstat:
Msrc/nvim/edit.c | 2+-
Msrc/nvim/normal.c | 2+-
Mtest/functional/options/mousescroll_spec.lua | 18++++++++++++++++++
3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/nvim/edit.c b/src/nvim/edit.c @@ -4147,7 +4147,7 @@ static void ins_mousescroll(int dir) if (dir == MSCR_DOWN || dir == MSCR_UP) { if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) { scroll_redraw(dir, (long)(curwin->w_botline - curwin->w_topline)); - } else { + } else if (p_mousescroll_vert > 0) { scroll_redraw(dir, p_mousescroll_vert); } } else { diff --git a/src/nvim/normal.c b/src/nvim/normal.c @@ -3417,7 +3417,7 @@ static void nv_mousescroll(cmdarg_T *cap) if (cap->arg == MSCR_UP || cap->arg == MSCR_DOWN) { if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL)) { (void)onepage(cap->arg ? FORWARD : BACKWARD, 1L); - } else { + } else if (p_mousescroll_vert > 0) { cap->count1 = p_mousescroll_vert; cap->count0 = p_mousescroll_vert; nv_scroll_line(cap); diff --git a/test/functional/options/mousescroll_spec.lua b/test/functional/options/mousescroll_spec.lua @@ -97,6 +97,24 @@ describe("'mousescroll'", function() eq(10, screencol()) scroll('left') eq(10, screencol()) + + -- vertical scrolling is still disabled with non-zero 'scrolloff' value + command('set scrolloff=1') + + eq(10, screenrow()) + scroll('up') + eq(10, screenrow()) + scroll('down') + eq(10, screenrow()) + + -- also in insert mode + feed('i') + + eq(10, screenrow()) + scroll('up') + eq(10, screenrow()) + scroll('down') + eq(10, screenrow()) end) local test_vertical_scrolling = function()