changeset 18860:ec92ccff5c8b v8.1.2416

patch 8.1.2416: loading menus sets v:errmsg Commit: https://github.com/vim/vim/commit/e24c5b3332b453175e5f73423884087a4aef1247 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Dec 10 22:11:53 2019 +0100 patch 8.1.2416: loading menus sets v:errmsg Problem: Loading menus sets v:errmsg. Solution: Avoid setting v:errmsg and add a test for that. (Jason Franklin)
author Bram Moolenaar <Bram@vim.org>
date Tue, 10 Dec 2019 22:15:04 +0100
parents 5b30956b26a4
children f27b04a94ef1
files runtime/delmenu.vim runtime/menu.vim src/testdir/test_menu.vim src/version.c
diffstat 4 files changed, 31 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/delmenu.vim
+++ b/runtime/delmenu.vim
@@ -2,30 +2,31 @@
 " Warning: This also deletes all menus defined by the user!
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2019 Sep 11
+" Last Change:	2019 Dec 10
 
 aunmenu *
 tlunmenu *
 
-silent! unlet did_install_default_menus
-silent! unlet did_install_syntax_menu
-if exists("did_menu_trans")
+unlet! g:did_install_default_menus
+unlet! g:did_install_syntax_menu
+
+if exists('g:did_menu_trans')
   menutrans clear
-  unlet did_menu_trans
+  unlet g:did_menu_trans
 endif
 
-silent! unlet find_help_dialog
+unlet! g:find_help_dialog
 
-silent! unlet menutrans_help_dialog
-silent! unlet menutrans_path_dialog
-silent! unlet menutrans_tags_dialog
-silent! unlet menutrans_textwidth_dialog
-silent! unlet menutrans_fileformat_dialog
-silent! unlet menutrans_fileformat_choices
-silent! unlet menutrans_no_file
-silent! unlet menutrans_set_lang_to
-silent! unlet menutrans_spell_change_ARG_to
-silent! unlet menutrans_spell_add_ARG_to_word_list
-silent! unlet menutrans_spell_ignore_ARG
+unlet! g:menutrans_fileformat_choices
+unlet! g:menutrans_fileformat_dialog
+unlet! g:menutrans_help_dialog
+unlet! g:menutrans_no_file
+unlet! g:menutrans_path_dialog
+unlet! g:menutrans_set_lang_to
+unlet! g:menutrans_spell_add_ARG_to_word_list
+unlet! g:menutrans_spell_change_ARG_to
+unlet! g:menutrans_spell_ignore_ARG
+unlet! g:menutrans_tags_dialog
+unlet! g:menutrans_textwidth_dialog
 
 " vim: set sw=2 :
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2019 Nov 10
+" Last Change:	2019 Dec 10
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -700,11 +700,11 @@ func! s:BMShow(...)
     let g:bmenu_priority = a:1
   endif
 
-  " remove old menu, if exists; keep one entry to avoid a torn off menu to
-  " disappear.
-  silent! unmenu &Buffers
+  " Remove old menu, if exists; keep one entry to avoid a torn off menu to
+  " disappear.  Use try/catch to avoid setting v:errmsg
+  try | unmenu &Buffers | catch | endtry
   exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
-  silent! unmenu! &Buffers
+  try | unmenu! &Buffers | catch | endtry
 
   " create new menu; set 'cpo' to include the <CR>
   let cpo_save = &cpo
--- a/src/testdir/test_menu.vim
+++ b/src/testdir/test_menu.vim
@@ -10,7 +10,13 @@ func Test_load_menu()
     call assert_report('error while loading menus: ' . v:exception)
   endtry
   call assert_match('browse confirm w', execute(':menu File.Save'))
+
+  let v:errmsg = ''
+  doautocmd LoadBufferMenu VimEnter
+  call assert_equal('', v:errmsg)
+
   source $VIMRUNTIME/delmenu.vim
+  call assert_equal('', v:errmsg)
 endfunc
 
 func Test_translate_menu()
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2416,
+/**/
     2415,
 /**/
     2414,