diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-10-10 21:26:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-10 21:26:18 +0800 |
commit | 81058119dfa493aa7849b0ad125e9b1d79fb20b9 (patch) | |
tree | 448a663d206dd52701558f39a38e7ffe65c37bdf /src | |
parent | d4e749f1b2358f12af3dd2481a0b9c36169cbeef (diff) | |
download | rneovim-81058119dfa493aa7849b0ad125e9b1d79fb20b9.tar.gz rneovim-81058119dfa493aa7849b0ad125e9b1d79fb20b9.tar.bz2 rneovim-81058119dfa493aa7849b0ad125e9b1d79fb20b9.zip |
vim-patch:9.0.0713: <amatch> of MenuPopup event is expanded like a file name (#20572)
Problem: <amatch> of MenuPopup event is expanded like a file name.
Solution: Do not expand <amatch> for MenuPopup. (closes vim/vim#11328)
https://github.com/vim/vim/commit/c601d988b6b1a672f71e3d61f4aaa4f7742a3a21
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/autocmd.c | 17 | ||||
-rw-r--r-- | src/nvim/testdir/test_menu.vim | 29 |
2 files changed, 38 insertions, 8 deletions
diff --git a/src/nvim/autocmd.c b/src/nvim/autocmd.c index 81d495ee27..5b5ea43d86 100644 --- a/src/nvim/autocmd.c +++ b/src/nvim/autocmd.c @@ -1743,17 +1743,18 @@ bool apply_autocmds_group(event_T event, char *fname, char *fname_io, bool force sfname = xstrdup(fname); // Don't try expanding the following events. if (event == EVENT_CMDLINECHANGED || event == EVENT_CMDLINEENTER - || event == EVENT_CMDLINELEAVE || event == EVENT_CMDWINENTER - || event == EVENT_CMDWINLEAVE || event == EVENT_CMDUNDEFINED + || event == EVENT_CMDLINELEAVE || event == EVENT_CMDUNDEFINED + || event == EVENT_CMDWINENTER || event == EVENT_CMDWINLEAVE || event == EVENT_COLORSCHEME || event == EVENT_COLORSCHEMEPRE || event == EVENT_DIRCHANGED || event == EVENT_DIRCHANGEDPRE || event == EVENT_FILETYPE || event == EVENT_FUNCUNDEFINED - || event == EVENT_MODECHANGED || event == EVENT_OPTIONSET - || event == EVENT_QUICKFIXCMDPOST || event == EVENT_QUICKFIXCMDPRE - || event == EVENT_REMOTEREPLY || event == EVENT_SPELLFILEMISSING - || event == EVENT_SYNTAX || event == EVENT_SIGNAL - || event == EVENT_TABCLOSED || event == EVENT_USER - || event == EVENT_WINCLOSED || event == EVENT_WINSCROLLED) { + || event == EVENT_MENUPOPUP || event == EVENT_MODECHANGED + || event == EVENT_OPTIONSET || event == EVENT_QUICKFIXCMDPOST + || event == EVENT_QUICKFIXCMDPRE || event == EVENT_REMOTEREPLY + || event == EVENT_SIGNAL || event == EVENT_SPELLFILEMISSING + || event == EVENT_SYNTAX || event == EVENT_TABCLOSED + || event == EVENT_USER || event == EVENT_WINCLOSED + || event == EVENT_WINSCROLLED) { fname = xstrdup(fname); } else { fname = FullName_save(fname, false); diff --git a/src/nvim/testdir/test_menu.vim b/src/nvim/testdir/test_menu.vim index 75992d3313..db7ec92bf8 100644 --- a/src/nvim/testdir/test_menu.vim +++ b/src/nvim/testdir/test_menu.vim @@ -481,6 +481,35 @@ func Test_popup_menu() unmenu PopUp endfunc +" Test for MenuPopup autocommand +func Test_autocmd_MenuPopup() + CheckNotGui + + set mouse=a + set mousemodel=popup + aunmenu * + autocmd MenuPopup * exe printf( + \ 'anoremenu PopUp.Foo <Cmd>let g:res = ["%s", "%s"]<CR>', + \ expand('<afile>'), expand('<amatch>')) + + call feedkeys("\<RightMouse>\<Down>\<CR>", 'tnix') + call assert_equal(['n', 'n'], g:res) + + call feedkeys("v\<RightMouse>\<Down>\<CR>\<Esc>", 'tnix') + call assert_equal(['v', 'v'], g:res) + + call feedkeys("gh\<RightMouse>\<Down>\<CR>\<Esc>", 'tnix') + call assert_equal(['s', 's'], g:res) + + call feedkeys("i\<RightMouse>\<Down>\<CR>\<Esc>", 'tnix') + call assert_equal(['i', 'i'], g:res) + + autocmd! MenuPopup + aunmenu PopUp.Foo + unlet g:res + set mouse& mousemodel& +endfunc + " Test for listing the menus using the :menu command func Test_show_menus() " In the GUI, tear-off menu items are present in the output below |