Skip to content

Commit

Permalink
patch 8.1.1274: after :unmenu can still execute the menu with :emenu
Browse files Browse the repository at this point in the history
Problem:    After :unmenu can still execute the menu with :emenu.
Solution:   Do not execute a menu that was disabled for the specified mode.
  • Loading branch information
brammool committed May 5, 2019
1 parent f653a6b commit ce79353
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/menu.c
Expand Up @@ -2337,7 +2337,8 @@ execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx)
if (idx == -1 || eap == NULL)
idx = MENU_INDEX_NORMAL;

if (idx != MENU_INDEX_INVALID && menu->strings[idx] != NULL)
if (idx != MENU_INDEX_INVALID && menu->strings[idx] != NULL
&& (menu->modes & (1 << idx)))
{
/* When executing a script or function execute the commands right now.
* Also for the window toolbar.
Expand Down
17 changes: 16 additions & 1 deletion src/testdir/test_menu.vim
Expand Up @@ -54,8 +54,23 @@ func Test_menu_commands()
emenu c Test.FooBar
call assert_equal('cmdline', g:did_menu)

aunmenu Test.FooBar
nunmenu Test.FooBar
call assert_fails('emenu n Test.FooBar', 'E335: Menu not defined for Normal mode')
vunmenu Test.FooBar
call assert_fails('emenu v Test.FooBar', 'E335: Menu not defined for Visual mode')
vmenu 2 Test.FooBar :let g:did_menu = 'visual'<CR>
sunmenu Test.FooBar
call assert_fails('emenu s Test.FooBar', 'E335: Menu not defined for Select mode')
ounmenu Test.FooBar
call assert_fails('emenu o Test.FooBar', 'E335: Menu not defined for Op-pending mode')
iunmenu Test.FooBar
call assert_fails('emenu i Test.FooBar', 'E335: Menu not defined for Insert mode')
cunmenu Test.FooBar
call assert_fails('emenu c Test.FooBar', 'E335: Menu not defined for Cmdline mode')
tlunmenu Test.FooBar
call assert_fails('emenu t Test.FooBar', 'E335: Menu not defined for Terminal mode')

aunmenu Test.FooBar
call assert_fails('emenu n Test.FooBar', 'E334:')

nmenu 2 Test.FooBar.Child :let g:did_menu = 'foobar'<CR>
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -767,6 +767,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1274,
/**/
1273,
/**/
Expand Down

0 comments on commit ce79353

Please sign in to comment.