comparison src/testdir/test_menu.vim @ 19713:8514e8b7e661 v8.2.0413

patch 8.2.0413: buffer menu does not handle special buffers properly Commit: https://github.com/vim/vim/commit/5e94a29ebbde10dd973d58f1adba9a2fc83877d1 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Mar 19 18:46:57 2020 +0100 patch 8.2.0413: buffer menu does not handle special buffers properly Problem: Buffer menu does not handle special buffers properly. Solution: Keep a dictionary with buffer names to reliably keep track of entries. Also trigger BufFilePre and BufFilePost for command-line and terminal buffers when the name changes.
author Bram Moolenaar <Bram@vim.org>
date Thu, 19 Mar 2020 19:00:04 +0100
parents da791e5c0139
children d53e8428a79a
comparison
equal deleted inserted replaced
19712:714875349336 19713:8514e8b7e661
13 13
14 let v:errmsg = '' 14 let v:errmsg = ''
15 doautocmd LoadBufferMenu VimEnter 15 doautocmd LoadBufferMenu VimEnter
16 call assert_equal('', v:errmsg) 16 call assert_equal('', v:errmsg)
17 17
18 source $VIMRUNTIME/delmenu.vim
19 call assert_equal('', v:errmsg)
20 endfunc
21
22 func Test_buffer_menu_special_buffers()
23 " Load in runtime menus
24 try
25 source $VIMRUNTIME/menu.vim
26 catch
27 call assert_report('error while loading menus: ' . v:exception)
28 endtry
29
30 let v:errmsg = ''
31 doautocmd LoadBufferMenu VimEnter
32 call assert_equal('', v:errmsg)
33
34 let orig_buffer_menus = execute("nmenu Buffers")
35
36 " Make a new command-line window, test that it does not create a new buffer
37 " menu.
38 call feedkeys("q::let cmdline_buffer_menus=execute('nmenu Buffers')\<CR>:q\<CR>", 'ntx')
39 call assert_equal(len(split(orig_buffer_menus, "\n")), len(split(cmdline_buffer_menus, "\n")))
40 call assert_equal(orig_buffer_menus, execute("nmenu Buffers"))
41
42 if has('terminal')
43 " Open a terminal window and test that it does not create a buffer menu
44 " item.
45 terminal
46 let term_buffer_menus = execute('nmenu Buffers')
47 call assert_equal(len(split(orig_buffer_menus, "\n")), len(split(term_buffer_menus, "\n")))
48 bwipe!
49 call assert_equal(orig_buffer_menus, execute("nmenu Buffers"))
50 endif
51
52 " Remove menus to clean up
18 source $VIMRUNTIME/delmenu.vim 53 source $VIMRUNTIME/delmenu.vim
19 call assert_equal('', v:errmsg) 54 call assert_equal('', v:errmsg)
20 endfunc 55 endfunc
21 56
22 func Test_translate_menu() 57 func Test_translate_menu()
119 endfunc 154 endfunc
120 155
121 " Test for menu item completion in command line 156 " Test for menu item completion in command line
122 func Test_menu_expand() 157 func Test_menu_expand()
123 " Create the menu itmes for test 158 " Create the menu itmes for test
159 menu Dummy.Nothing lll
124 for i in range(1, 4) 160 for i in range(1, 4)
125 let m = 'menu Xmenu.A' .. i .. '.A' .. i 161 let m = 'menu Xmenu.A' .. i .. '.A' .. i
126 for j in range(1, 4) 162 for j in range(1, 4)
127 exe m .. 'B' .. j .. ' :echo "A' .. i .. 'B' .. j .. '"' .. "<CR>" 163 exe m .. 'B' .. j .. ' :echo "A' .. i .. 'B' .. j .. '"' .. "<CR>"
128 endfor 164 endfor
144 call assert_equal('"emenu Xmenu.A2.A2B1 A2B2 A2B3 A2B4', @:) 180 call assert_equal('"emenu Xmenu.A2.A2B1 A2B2 A2B3 A2B4', @:)
145 181
146 " Test for <Up> to go up a menu 182 " Test for <Up> to go up a menu
147 call feedkeys(":emenu Xmenu.A\<Tab>\<Down>\<Up>\<Up>\<Up>" .. 183 call feedkeys(":emenu Xmenu.A\<Tab>\<Down>\<Up>\<Up>\<Up>" ..
148 \ "\<C-A>\<C-B>\"\<CR>", 'xt') 184 \ "\<C-A>\<C-B>\"\<CR>", 'xt')
149 call assert_equal('"emenu Buffers. Xmenu.', @:) 185 call assert_equal('"emenu Dummy. Xmenu.', @:)
150 186
151 " Test for expanding only submenus 187 " Test for expanding only submenus
152 call feedkeys(":popup Xmenu.\<C-A>\<C-B>\"\<CR>", 'xt') 188 call feedkeys(":popup Xmenu.\<C-A>\<C-B>\"\<CR>", 'xt')
153 call assert_equal('"popup Xmenu.A1 A2 A3 A4', @:) 189 call assert_equal('"popup Xmenu.A1 A2 A3 A4', @:)
154 190
164 call feedkeys(":menu Xmenu.A1.A1B1.xyz.\<C-A>\<C-B>\"\<CR>", 'xt') 200 call feedkeys(":menu Xmenu.A1.A1B1.xyz.\<C-A>\<C-B>\"\<CR>", 'xt')
165 call assert_equal('"menu Xmenu.A1.A1B1.xyz.', @:) 201 call assert_equal('"menu Xmenu.A1.A1B1.xyz.', @:)
166 202
167 set wildmenu& 203 set wildmenu&
168 unmenu Xmenu 204 unmenu Xmenu
205 unmenu Dummy
169 206
170 " Test for expanding popup menus with some hidden items 207 " Test for expanding popup menus with some hidden items
171 menu Xmenu.foo.A1 a1 208 menu Xmenu.foo.A1 a1
172 menu Xmenu.]bar bar 209 menu Xmenu.]bar bar
173 menu Xmenu.]baz.B1 b1 210 menu Xmenu.]baz.B1 b1
174 menu Xmenu.-sep- : 211 menu Xmenu.-sep- :
175 call feedkeys(":popup Xmenu.\<C-A>\<C-B>\"\<CR>", 'xt') 212 call feedkeys(":popup Xmenu.\<C-A>\<C-B>\"\<CR>", 'xt')
176 call assert_equal('"popup Xmenu.foo', @:) 213 call assert_equal('"popup Xmenu.foo', @:)
177 unmenu Xmenu 214 unmenu Xmenu
178
179 endfunc 215 endfunc
180 216
181 " Test for the menu_info() function 217 " Test for the menu_info() function
182 func Test_menu_info() 218 func Test_menu_info()
183 " Define menus with various attributes 219 " Define menus with various attributes