mirror of
https://github.com/vim/vim.git
synced 2025-09-04 21:33:48 -04:00
patch 8.1.0695: internal error when using :popup
Problem: Internal error when using :popup. Solution: When a menu only exists in Terminal mode give an error. (Naruhiko Nishino, closes #3765)
This commit is contained in:
parent
4614f53e0f
commit
f42b45d719
@ -1,4 +1,4 @@
|
|||||||
*gui.txt* For Vim version 8.1. Last change: 2018 Mar 06
|
*gui.txt* For Vim version 8.1. Last change: 2019 Jan 06
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@ -914,7 +914,9 @@ may be used to complete the name of the menu item for the appropriate mode.
|
|||||||
To remove all menus use: *:unmenu-all* >
|
To remove all menus use: *:unmenu-all* >
|
||||||
:unmenu * " remove all menus in Normal and visual mode
|
:unmenu * " remove all menus in Normal and visual mode
|
||||||
:unmenu! * " remove all menus in Insert and Command-line mode
|
:unmenu! * " remove all menus in Insert and Command-line mode
|
||||||
:aunmenu * " remove all menus in all modes
|
:aunmenu * " remove all menus in all modes, except for Terminal
|
||||||
|
" mode
|
||||||
|
:tlunmenu * " remove all menus in Terminal mode
|
||||||
|
|
||||||
If you want to get rid of the menu bar: >
|
If you want to get rid of the menu bar: >
|
||||||
:set guioptions-=m
|
:set guioptions-=m
|
||||||
|
@ -1583,6 +1583,9 @@ EXTERN char_u e_invalidreg[] INIT(= N_("E850: Invalid register name"));
|
|||||||
#endif
|
#endif
|
||||||
EXTERN char_u e_dirnotf[] INIT(= N_("E919: Directory not found in '%s': \"%s\""));
|
EXTERN char_u e_dirnotf[] INIT(= N_("E919: Directory not found in '%s': \"%s\""));
|
||||||
EXTERN char_u e_au_recursive[] INIT(= N_("E952: Autocommand caused recursive behavior"));
|
EXTERN char_u e_au_recursive[] INIT(= N_("E952: Autocommand caused recursive behavior"));
|
||||||
|
#ifdef FEAT_MENU
|
||||||
|
EXTERN char_u e_menuothermode[] INIT(= N_("E328: Menu only exists in another mode"));
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_GUI_MAC
|
#ifdef FEAT_GUI_MAC
|
||||||
EXTERN short disallow_gui INIT(= FALSE);
|
EXTERN short disallow_gui INIT(= FALSE);
|
||||||
|
@ -61,7 +61,6 @@ static char_u *menu_translate_tab_and_shift(char_u *arg_start);
|
|||||||
static char *menu_mode_chars[] = {"n", "v", "s", "o", "i", "c", "tl", "t"};
|
static char *menu_mode_chars[] = {"n", "v", "s", "o", "i", "c", "tl", "t"};
|
||||||
|
|
||||||
static char_u e_notsubmenu[] = N_("E327: Part of menu-item path is not sub-menu");
|
static char_u e_notsubmenu[] = N_("E327: Part of menu-item path is not sub-menu");
|
||||||
static char_u e_othermode[] = N_("E328: Menu only exists in another mode");
|
|
||||||
static char_u e_nomenu[] = N_("E329: No menu \"%s\"");
|
static char_u e_nomenu[] = N_("E329: No menu \"%s\"");
|
||||||
|
|
||||||
#ifdef FEAT_TOOLBAR
|
#ifdef FEAT_TOOLBAR
|
||||||
@ -956,7 +955,7 @@ remove_menu(
|
|||||||
else if (*name != NUL)
|
else if (*name != NUL)
|
||||||
{
|
{
|
||||||
if (!silent)
|
if (!silent)
|
||||||
EMSG(_(e_othermode));
|
EMSG(_(e_menuothermode));
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1130,7 +1129,7 @@ show_menus(char_u *path_name, int modes)
|
|||||||
}
|
}
|
||||||
else if ((menu->modes & modes) == 0x0)
|
else if ((menu->modes & modes) == 0x0)
|
||||||
{
|
{
|
||||||
EMSG(_(e_othermode));
|
EMSG(_(e_menuothermode));
|
||||||
vim_free(path_name);
|
vim_free(path_name);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
|
@ -1195,6 +1195,14 @@ pum_show_popupmenu(vimmenu_T *menu)
|
|||||||
|| (mp->modes & mp->enabled & mode))
|
|| (mp->modes & mp->enabled & mode))
|
||||||
++pum_size;
|
++pum_size;
|
||||||
|
|
||||||
|
// When there are only Terminal mode menus, using "popup Edit" results in
|
||||||
|
// pum_size being zero.
|
||||||
|
if (pum_size <= 0)
|
||||||
|
{
|
||||||
|
EMSG(e_menuothermode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
array = (pumitem_T *)alloc_clear((unsigned)sizeof(pumitem_T) * pum_size);
|
array = (pumitem_T *)alloc_clear((unsigned)sizeof(pumitem_T) * pum_size);
|
||||||
if (array == NULL)
|
if (array == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -882,5 +882,18 @@ func Test_complete_o_tab()
|
|||||||
delfunc s:act_on_text_changed
|
delfunc s:act_on_text_changed
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_menu_only_exists_in_terminal()
|
||||||
|
if !exists(':tlmenu') || has('gui_running')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
tlnoremenu &Edit.&Paste<Tab>"+gP <C-W>"+
|
||||||
|
aunmenu *
|
||||||
|
try
|
||||||
|
popup Edit
|
||||||
|
call assert_false(1, 'command should have failed')
|
||||||
|
catch
|
||||||
|
call assert_exception('E328:')
|
||||||
|
endtry
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -799,6 +799,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
695,
|
||||||
/**/
|
/**/
|
||||||
694,
|
694,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user