From f70ecbd4dc548728d206e9b497cd0cae69189fdf Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 6 May 2021 00:23:18 -0400 Subject: [PATCH] vim-patch:8.2.1166: once mouse move events are enabled getchar() returns them Problem: Once mouse move events are enabled getchar() returns them. Solution: Ignore K_MOUSEMOVE in getchar(). (closes vim/vim#6424) https://github.com/vim/vim/commit/ae97b94176062d30ea8c68bb83cde034c5150c78 --- runtime/doc/eval.txt | 5 +++-- src/nvim/eval/funcs.c | 5 ++++- src/nvim/getchar.c | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index b4630a97bb..72c0bec4ff 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4316,8 +4316,9 @@ getchar([expr]) *getchar()* When the user clicks a mouse button, the mouse event will be returned. The position can then be found in |v:mouse_col|, - |v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|. This - example positions the mouse as it would normally happen: > + |v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|. + Mouse move events will be ignored. + This example positions the mouse as it would normally happen: > let c = getchar() if c == "\" && v:mouse_win > 0 exe v:mouse_win . "wincmd w" diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 6d328953f6..60af592108 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -3016,7 +3016,10 @@ static void f_getchar(typval_T *argvars, typval_T *rettv, FunPtr fptr) n = safe_vgetc(); } - if (n == K_IGNORE || n == K_VER_SCROLLBAR || n == K_HOR_SCROLLBAR) { + if (n == K_IGNORE + || n == K_MOUSEMOVE + || n == K_VER_SCROLLBAR + || n == K_HOR_SCROLLBAR) { continue; } break; diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index bb406a68c5..a0fa80f1e5 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -1322,7 +1322,7 @@ void openscript( do { update_topline_cursor(); // update cursor position and topline normal_cmd(&oa, false); // execute one command - vpeekc(); // check for end of file + (void)vpeekc(); // check for end of file } while (scriptin[oldcurscript] != NULL); State = save_State;