diff options
Diffstat (limited to 'data/vim/patches/8.1.0487')
-rw-r--r-- | data/vim/patches/8.1.0487 | 1207 |
1 files changed, 0 insertions, 1207 deletions
diff --git a/data/vim/patches/8.1.0487 b/data/vim/patches/8.1.0487 deleted file mode 100644 index e373db8b0..000000000 --- a/data/vim/patches/8.1.0487 +++ /dev/null @@ -1,1207 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.04 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 8.1.0487 -Problem: No menus specifically for the terminal window. -Solution: Add :tlmenu. (Yee Cheng Chin, closes #3439) Add a menu test. -Files: runtime/delmenu.vim, runtime/doc/autocmd.txt, runtime/doc/gui.txt, - runtime/doc/index.txt, runtime/doc/terminal.txt, - runtime/doc/usr_42.txt, runtime/menu.vim, src/ex_cmdidxs.h, - src/ex_cmds.h, src/ex_docmd.c, src/menu.c, src/proto/menu.pro, - src/popupmnu.c, src/structs.h, src/testdir/test_menu.vim - - -*** ../vim-8.1.0486/runtime/delmenu.vim 2010-05-15 13:03:31.000000000 +0200 ---- runtime/delmenu.vim 2018-10-19 18:35:52.654453150 +0200 -*************** -*** 5,10 **** ---- 5,11 ---- - " Last Change: 2001 May 27 - - aunmenu * -+ tlunmenu * - - silent! unlet did_install_default_menus - silent! unlet did_install_syntax_menu -*** ../vim-8.1.0486/runtime/doc/autocmd.txt 2018-09-16 15:47:45.629425398 +0200 ---- runtime/doc/autocmd.txt 2018-10-19 18:35:52.654453150 +0200 -*************** -*** 831,843 **** - right mouse button). Useful for adjusting the - menu for what is under the cursor or mouse - pointer. -! The pattern is matched against a single -! character representing the mode: - n Normal - v Visual - o Operator-pending - i Insert - c Command line - *OptionSet* - OptionSet After setting an option. The pattern is - matched against the long option name. ---- 835,848 ---- - right mouse button). Useful for adjusting the - menu for what is under the cursor or mouse - pointer. -! The pattern is matched against one or two -! characters representing the mode: - n Normal - v Visual - o Operator-pending - i Insert - c Command line -+ tl Terminal - *OptionSet* - OptionSet After setting an option. The pattern is - matched against the long option name. -*** ../vim-8.1.0486/runtime/doc/gui.txt 2018-05-17 13:41:40.000000000 +0200 ---- runtime/doc/gui.txt 2018-10-19 19:21:48.080078320 +0200 -*************** -*** 547,561 **** - - 5.2 Creating New Menus *creating-menus* - -! *:me* *:menu* *:noreme* *:noremenu* -! *:am* *:amenu* *:an* *:anoremenu* -! *:nme* *:nmenu* *:nnoreme* *:nnoremenu* -! *:ome* *:omenu* *:onoreme* *:onoremenu* -! *:vme* *:vmenu* *:vnoreme* *:vnoremenu* -! *:xme* *:xmenu* *:xnoreme* *:xnoremenu* -! *:sme* *:smenu* *:snoreme* *:snoremenu* -! *:ime* *:imenu* *:inoreme* *:inoremenu* -! *:cme* *:cmenu* *:cnoreme* *:cnoremenu* - *E330* *E327* *E331* *E336* *E333* - *E328* *E329* *E337* *E792* - To create a new menu item, use the ":menu" commands. They are mostly like ---- 547,562 ---- - - 5.2 Creating New Menus *creating-menus* - -! *:me* *:menu* *:noreme* *:noremenu* -! *:am* *:amenu* *:an* *:anoremenu* -! *:nme* *:nmenu* *:nnoreme* *:nnoremenu* -! *:ome* *:omenu* *:onoreme* *:onoremenu* -! *:vme* *:vmenu* *:vnoreme* *:vnoremenu* -! *:xme* *:xmenu* *:xnoreme* *:xnoremenu* -! *:sme* *:smenu* *:snoreme* *:snoremenu* -! *:ime* *:imenu* *:inoreme* *:inoremenu* -! *:cme* *:cmenu* *:cnoreme* *:cnoremenu* -! *:tlm* *:tlmenu* *:tln* *:tlnoremenu* - *E330* *E327* *E331* *E336* *E333* - *E328* *E329* *E337* *E792* - To create a new menu item, use the ":menu" commands. They are mostly like -*************** -*** 571,576 **** ---- 572,581 ---- - "Big Changes", which is a sub-menu containing the item "Delete All Spaces", - which when selected, performs the operation. - -+ To create a menu for terminal mode, use |:tlmenu| instead of |:tmenu| unlike -+ key mapping (|:tmap|). This is because |:tmenu| is already used for defining -+ tooltips for menus. See |terminal-typing|. -+ - Special characters in a menu name: - - & The next character is the shortcut key. Make sure each -*************** -*** 589,597 **** - this menu can be used. The second part is shown as "Open :e". The ":e" - is right aligned, and the "O" is underlined, to indicate it is the shortcut. - -! The ":amenu" command can be used to define menu entries for all modes at once. -! To make the command work correctly, a character is automatically inserted for -! some modes: - mode inserted appended ~ - Normal nothing nothing - Visual <C-C> <C-\><C-G> ---- 594,602 ---- - this menu can be used. The second part is shown as "Open :e". The ":e" - is right aligned, and the "O" is underlined, to indicate it is the shortcut. - -! The ":amenu" command can be used to define menu entries for all modes at once, -! except for Terminal mode. To make the command work correctly, a character is -! automatically inserted for some modes: - mode inserted appended ~ - Normal nothing nothing - Visual <C-C> <C-\><C-G> -*************** -*** 865,870 **** ---- 870,885 ---- - insert-mode menu Eg: > - :emenu File.Exit - -+ :[range]em[enu] {mode} {menu} Like above, but execute the menu for {mode}: -+ 'n': |:nmenu| Normal mode -+ 'v': |:vmenu| Visual mode -+ 's': |:smenu| Select mode -+ 'o': |:omenu| Operator-pending mode -+ 't': |:tlmenu| Terminal mode -+ 'i': |:imenu| Insert mode -+ 'c': |:cmenu| Cmdline mode -+ -+ - If the console-mode vim has been compiled with WANT_MENU defined, you can - use :emenu to access useful menu items you may have got used to from GUI - mode. See 'wildmenu' for an option that works well with this. See -*************** -*** 885,890 **** ---- 900,906 ---- - *:sunme* *:sunmenu* - *:iunme* *:iunmenu* - *:cunme* *:cunmenu* -+ *:tlu* *:tlunmenu* - To delete a menu item or a whole submenu, use the unmenu commands, which are - analogous to the unmap commands. Eg: > - :unmenu! Edit.Paste -*************** -*** 951,956 **** ---- 967,974 ---- - :tu[nmenu] {menupath} Remove a tip for a menu or tool. - {only in X11 and Win32 GUI} - -+ Note: To create menus for terminal mode, use |:tlmenu| instead. -+ - When a tip is defined for a menu item, it appears in the command-line area - when the mouse is over that item, much like a standard Windows menu hint in - the status bar. (Except when Vim is in Command-line mode, when of course -*************** -*** 999,1005 **** - pointer instead of the cursor. - In the terminal this is the last known - position, which is usually at the last click -! or release (mouse movement is irrelevalt). - - Example: > - :popup File ---- 1017,1023 ---- - pointer instead of the cursor. - In the terminal this is the last known - position, which is usually at the last click -! or release (mouse movement is irrelevant). - - Example: > - :popup File -*************** -*** 1075,1078 **** - For the Win32 GUI the external commands are executed in a separate window. - See |gui-shell-win32|. - -! vim:tw=78:sw=4:ts=8:ft=help:norl: ---- 1093,1096 ---- - For the Win32 GUI the external commands are executed in a separate window. - See |gui-shell-win32|. - -! vim:tw=78:sw=4:ts=8:noet:ft=help:norl: -*** ../vim-8.1.0486/runtime/doc/index.txt 2018-05-17 13:41:41.000000000 +0200 ---- runtime/doc/index.txt 2018-10-19 18:35:52.654453150 +0200 -*************** -*** 1583,1588 **** ---- 1583,1591 ---- - |:tjump| :tj[ump] like ":tselect", but jump directly when there - is only one match - |:tlast| :tl[ast] jump to last matching tag -+ |:tlmenu| :tlm[enu] add menu for Terminal-Job mode -+ |:tlnoremenu| :tln[oremenu] like ":noremenu" but for Terminal-Job mode -+ |:tlunmenu| :tlu[nmenu] remove menu for Terminal-Job mode - |:tmapclear| :tmapc[lear] remove all mappings for Terminal-Job mode - |:tmap| :tma[p] like ":map" but for Terminal-Job mode - |:tmenu| :tm[enu] define menu tooltip -*************** -*** 1657,1660 **** - |:~| :~ repeat last ":substitute" - - -! vim:tw=78:ts=8:ft=help:norl: ---- 1660,1663 ---- - |:~| :~ repeat last ":substitute" - - -! vim:tw=78:ts=8:noet:ft=help:norl: -*** ../vim-8.1.0486/runtime/doc/terminal.txt 2018-06-19 16:59:31.333713053 +0200 ---- runtime/doc/terminal.txt 2018-10-19 18:35:52.658453120 +0200 -*************** -*** 114,119 **** ---- 114,122 ---- - tnoremap <Esc> <C-W>N - set notimeout ttimeout timeoutlen=100 - -+ You can also create menus similar to terminal mode mappings, but you have to -+ use |:tlmenu| instead of |:tmenu|. -+ - < *options-in-terminal* - After opening the terminal window and setting 'buftype' to "terminal" the - TerminalOpen autocommand event is triggered. This makes it possible to set -*************** -*** 228,233 **** ---- 231,240 ---- - - If you want to use more options use the |term_start()| - function. -+ If you want to split the window vertically, use: > -+ :vertical terminal -+ < Or short: > -+ :vert ter - - When the buffer associated with the terminal is forcibly unloaded or wiped out - the job is killed, similar to calling `job_stop(job, "kill")` . -*************** -*** 523,531 **** - - Functions ~ - -! term_sendkeys() send keystrokes to a terminal (not subject to tmap) -! term_wait() wait for screen to be updated -! term_scrape() inspect terminal screen - - - ============================================================================== ---- 530,538 ---- - - Functions ~ - -! |term_sendkeys()| send keystrokes to a terminal (not subject to tmap) -! |term_wait()| wait for screen to be updated -! |term_scrape()| inspect terminal screen - - - ============================================================================== -*************** -*** 552,558 **** - characters. This makes sure the dump is always this size. The function - RunVimInTerminal() takes care of this. Pass it the arguments for the Vim - command. -! - Send any commands to Vim using term_sendkeys(). For example: > - call term_sendkeys(buf, ":echo &lines &columns\<CR>") - - Check that the screen is now in the expected state, using - VerifyScreenDump(). This expects the reference screen dump to be in the ---- 559,565 ---- - characters. This makes sure the dump is always this size. The function - RunVimInTerminal() takes care of this. Pass it the arguments for the Vim - command. -! - Send any commands to Vim using |term_sendkeys()|. For example: > - call term_sendkeys(buf, ":echo &lines &columns\<CR>") - - Check that the screen is now in the expected state, using - VerifyScreenDump(). This expects the reference screen dump to be in the -*************** -*** 580,592 **** - *terminal-screendump* - - To create the screen dump, run Vim (or any other program) in a terminal and -! make it show the desired state. Then use the term_dumpwrite() function to - create a screen dump file. For example: > - :call term_dumpwrite(77, "mysyntax.dump") - - Here "77" is the buffer number of the terminal. Use `:ls!` to see it. - -! You can view the screen dump with term_dumpload(): > - :call term_dumpload("mysyntax.dump") - - To verify that Vim still shows exactly the same screen, run Vim again with ---- 587,599 ---- - *terminal-screendump* - - To create the screen dump, run Vim (or any other program) in a terminal and -! make it show the desired state. Then use the |term_dumpwrite()| function to - create a screen dump file. For example: > - :call term_dumpwrite(77, "mysyntax.dump") - - Here "77" is the buffer number of the terminal. Use `:ls!` to see it. - -! You can view the screen dump with |term_dumpload()|: > - :call term_dumpload("mysyntax.dump") - - To verify that Vim still shows exactly the same screen, run Vim again with -*************** -*** 594,600 **** - again, using a different file name: > - :call term_dumpwrite(88, "test.dump") - -! To assert that the files are exactly the same use assert_equalfile(): > - call assert_equalfile("mysyntax.dump", "test.dump") - - If there are differences then v:errors will contain the error message. ---- 601,607 ---- - again, using a different file name: > - :call term_dumpwrite(88, "test.dump") - -! To assert that the files are exactly the same use |assert_equalfile()|: > - call assert_equalfile("mysyntax.dump", "test.dump") - - If there are differences then v:errors will contain the error message. -*************** -*** 603,610 **** - Comparing screen dumps ~ - *terminal-diffscreendump* - -! assert_equalfile() does not make it easy to see what is different. -! To spot the problem use term_dumpdiff(): > - call term_dumpdiff("mysyntax.dump", "test.dump") - - This will open a window consisting of three parts: ---- 610,617 ---- - Comparing screen dumps ~ - *terminal-diffscreendump* - -! |assert_equalfile()| does not make it easy to see what is different. -! To spot the problem use |term_dumpdiff()|: > - call term_dumpdiff("mysyntax.dump", "test.dump") - - This will open a window consisting of three parts: -*************** -*** 613,619 **** - 3. The contents of the second dump - - You can usually see what differs in the second part. Use the 'ruler' to -! relate it to the position in the first or second dump. - - Alternatively, press "s" to swap the first and second dump. Do this several - times so that you can spot the difference in the context of the text. ---- 620,637 ---- - 3. The contents of the second dump - - You can usually see what differs in the second part. Use the 'ruler' to -! relate it to the position in the first or second dump. Letters indicate the -! kind of difference: -! X different character -! > cursor in first but not in second -! < cursor in second but not in first -! w character width differs (single vs double width) -! f foreground color differs -! b background color differs -! a attribute differs (bold, underline, reverse, etc.) -! ? character missing in both -! + character missing in first -! - character missing in second - - Alternatively, press "s" to swap the first and second dump. Do this several - times so that you can spot the difference in the context of the text. -*************** -*** 635,641 **** - Load the plugin with this command: > - packadd termdebug - < *:Termdebug* -! To start debugging use `:Termdebug` or `:TermdebugCommand`` followed by the - command name, for example: > - :Termdebug vim - ---- 653,659 ---- - Load the plugin with this command: > - packadd termdebug - < *:Termdebug* -! To start debugging use `:Termdebug` or `:TermdebugCommand` followed by the - command name, for example: > - :Termdebug vim - -*************** -*** 900,906 **** - To change the width of the Vim window when debugging starts, and use a - vertical split: > - let g:termdebug_wide = 163 -! This will set &columns to 163 when :Termdebug is used. The value is restored - when quitting the debugger. - If g:termdebug_wide is set and &columns is already larger than - g:termdebug_wide then a vertical split will be used without changing &columns. ---- 918,924 ---- - To change the width of the Vim window when debugging starts, and use a - vertical split: > - let g:termdebug_wide = 163 -! This will set &columns to 163 when `:Termdebug` is used. The value is restored - when quitting the debugger. - If g:termdebug_wide is set and &columns is already larger than - g:termdebug_wide then a vertical split will be used without changing &columns. -*************** -*** 909,912 **** - - - -! vim:tw=78:ts=8:ft=help:norl: ---- 927,930 ---- - - - -! vim:tw=78:ts=8:noet:ft=help:norl: -*** ../vim-8.1.0486/runtime/doc/usr_42.txt 2018-05-17 13:42:03.000000000 +0200 ---- runtime/doc/usr_42.txt 2018-10-19 18:35:52.658453120 +0200 -*************** -*** 150,156 **** - :menu! Insert and Command-line mode - :imenu Insert mode - :cmenu Command-line mode -! :amenu All modes - - To avoid that the commands of a menu item are being mapped, use the command - ":noremenu", ":nnoremenu", ":anoremenu", etc. ---- 150,157 ---- - :menu! Insert and Command-line mode - :imenu Insert mode - :cmenu Command-line mode -! :tlmenu Terminal mode -! :amenu All modes (except for Terminal mode) - - To avoid that the commands of a menu item are being mapped, use the command - ":noremenu", ":nnoremenu", ":anoremenu", etc. -*************** -*** 362,365 **** - - Next chapter: |usr_43.txt| Using filetypes - -! Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: ---- 363,366 ---- - - Next chapter: |usr_43.txt| Using filetypes - -! Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: -*** ../vim-8.1.0486/runtime/menu.vim 2018-07-23 05:09:05.593235641 +0200 ---- runtime/menu.vim 2018-10-19 22:31:52.955188961 +0200 -*************** -*** 160,165 **** ---- 160,168 ---- - cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y> - nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP - cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+ -+ if exists(':tlmenu') -+ tlnoremenu &Edit.&Paste<Tab>"+gP <C-W>"+ -+ endif - exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v'] - exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['i'] - nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p -*************** -*** 356,361 **** ---- 359,366 ---- - let s:did_setup_color_schemes = 1 - - let n = globpath(&runtimepath, "colors/*.vim", 1, 1) -+ let n += globpath(&runtimepath, "pack/*/start/*/colors/*.vim", 1, 1) -+ let n += globpath(&runtimepath, "pack/*/opt/*/colors/*.vim", 1, 1) - - " Ignore case for VMS and windows, sort on name - let names = sort(map(n, 'substitute(v:val, "\\c.*[/\\\\:\\]]\\([^/\\\\:]*\\)\\.vim", "\\1", "")'), 1) -*** ../vim-8.1.0486/src/ex_cmdidxs.h 2017-09-18 22:06:03.000000000 +0200 ---- src/ex_cmdidxs.h 2018-10-19 18:35:52.658453120 +0200 -*************** -*** 25,36 **** - /* r */ 351, - /* s */ 370, - /* t */ 437, -! /* u */ 477, -! /* v */ 488, -! /* w */ 506, -! /* x */ 521, -! /* y */ 530, -! /* z */ 531 - }; - - /* ---- 25,36 ---- - /* r */ 351, - /* s */ 370, - /* t */ 437, -! /* u */ 480, -! /* v */ 491, -! /* w */ 509, -! /* x */ 524, -! /* y */ 533, -! /* z */ 534 - }; - - /* -*************** -*** 60,66 **** - /* q */ { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* r */ { 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 18, 0, 0, 0, 0 }, - /* s */ { 2, 6, 15, 0, 18, 22, 0, 24, 25, 0, 0, 28, 30, 34, 38, 40, 0, 48, 0, 49, 0, 61, 62, 0, 63, 0 }, -! /* t */ { 2, 0, 19, 0, 22, 24, 0, 25, 0, 26, 0, 27, 28, 31, 33, 34, 0, 35, 37, 0, 38, 0, 0, 0, 0, 0 }, - /* u */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* v */ { 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 9, 12, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0 }, - /* w */ { 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 8, 0, 9, 10, 0, 12, 0, 13, 14, 0, 0, 0, 0 }, ---- 60,66 ---- - /* q */ { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* r */ { 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 18, 0, 0, 0, 0 }, - /* s */ { 2, 6, 15, 0, 18, 22, 0, 24, 25, 0, 0, 28, 30, 34, 38, 40, 0, 48, 0, 49, 0, 61, 62, 0, 63, 0 }, -! /* t */ { 2, 0, 19, 0, 22, 24, 0, 25, 0, 26, 0, 27, 31, 34, 36, 37, 0, 38, 40, 0, 41, 0, 0, 0, 0, 0 }, - /* u */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* v */ { 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 9, 12, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0 }, - /* w */ { 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 8, 0, 9, 10, 0, 12, 0, 13, 14, 0, 0, 0, 0 }, -*************** -*** 69,72 **** - /* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } - }; - -! static const int command_count = 544; ---- 69,72 ---- - /* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } - }; - -! static const int command_count = 547; -*** ../vim-8.1.0486/src/ex_cmds.h 2018-08-14 13:38:12.744559267 +0200 ---- src/ex_cmds.h 2018-10-19 18:35:52.658453120 +0200 -*************** -*** 20,28 **** - * 1. Add an entry in the table below. Keep it sorted on the shortest - * version of the command name that works. If it doesn't start with a - * lower case letter, add it at the end. -! * 2. Add a "case: CMD_xxx" in the big switch in ex_docmd.c. -! * 3. Add an entry in the index for Ex commands at ":help ex-cmd-index". -! * 4. Add documentation in ../doc/xxx.txt. Add a tag for both the short and - * long name of the command. - */ - ---- 20,29 ---- - * 1. Add an entry in the table below. Keep it sorted on the shortest - * version of the command name that works. If it doesn't start with a - * lower case letter, add it at the end. -! * 2. Run "make cmdidxs" to re-generate ex_cmdidxs.h. -! * 3. Add a "case: CMD_xxx" in the big switch in ex_docmd.c. -! * 4. Add an entry in the index for Ex commands at ":help ex-cmd-index". -! * 5. Add documentation in ../doc/xxx.txt. Add a tag for both the short and - * long name of the command. - */ - -*************** -*** 176,182 **** - BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, - ADDR_BUFFERS), - EX(CMD_behave, "behave", ex_behave, -! NEEDARG|WORD1|TRLBAR|CMDWIN, - ADDR_LINES), - EX(CMD_belowright, "belowright", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM, ---- 177,183 ---- - BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR, - ADDR_BUFFERS), - EX(CMD_behave, "behave", ex_behave, -! BANG|NEEDARG|WORD1|TRLBAR|CMDWIN, - ADDR_LINES), - EX(CMD_belowright, "belowright", ex_wrongmodifier, - NEEDARG|EXTRA|NOTRLCOM, -*************** -*** 1498,1503 **** ---- 1499,1513 ---- - EX(CMD_tlast, "tlast", ex_tag, - BANG|TRLBAR, - ADDR_LINES), -+ EX(CMD_tlmenu, "tlmenu", ex_menu, -+ RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, -+ ADDR_LINES), -+ EX(CMD_tlnoremenu, "tlnoremenu", ex_menu, -+ RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, -+ ADDR_LINES), -+ EX(CMD_tlunmenu, "tlunmenu", ex_menu, -+ RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, -+ ADDR_LINES), - EX(CMD_tmenu, "tmenu", ex_menu, - RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN, - ADDR_LINES), -*** ../vim-8.1.0486/src/ex_docmd.c 2018-10-02 16:23:55.323037143 +0200 ---- src/ex_docmd.c 2018-10-19 18:35:52.658453120 +0200 -*************** -*** 4283,4288 **** ---- 4283,4289 ---- - case CMD_omenu: case CMD_onoremenu: case CMD_ounmenu: - case CMD_imenu: case CMD_inoremenu: case CMD_iunmenu: - case CMD_cmenu: case CMD_cnoremenu: case CMD_cunmenu: -+ case CMD_tlmenu: case CMD_tlnoremenu: case CMD_tlunmenu: - case CMD_tmenu: case CMD_tunmenu: - case CMD_popup: case CMD_tearoff: case CMD_emenu: - return set_context_in_menu_cmd(xp, cmd, arg, forceit); -*** ../vim-8.1.0486/src/menu.c 2018-09-10 21:04:09.872392623 +0200 ---- src/menu.c 2018-10-19 19:18:38.677792759 +0200 -*************** -*** 58,64 **** - static char_u *menu_translate_tab_and_shift(char_u *arg_start); - - /* The character for each menu mode */ -! static char_u menu_mode_chars[] = {'n', 'v', 's', 'o', 'i', 'c', 't'}; - - 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"); ---- 58,64 ---- - static char_u *menu_translate_tab_and_shift(char_u *arg_start); - - /* The character for each menu mode */ -! 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_othermode[] = N_("E328: Menu only exists in another mode"); -*************** -*** 1196,1202 **** - return; - for (i = 0; i < depth + 2; i++) - MSG_PUTS(" "); -! msg_putchar(menu_mode_chars[bit]); - if (menu->noremap[bit] == REMAP_NONE) - msg_putchar('*'); - else if (menu->noremap[bit] == REMAP_SCRIPT) ---- 1196,1202 ---- - return; - for (i = 0; i < depth + 2; i++) - MSG_PUTS(" "); -! msg_puts((char_u*)menu_mode_chars[bit]); - if (menu->noremap[bit] == REMAP_NONE) - msg_putchar('*'); - else if (menu->noremap[bit] == REMAP_SCRIPT) -*************** -*** 1645,1650 **** ---- 1645,1656 ---- - modes = MENU_INSERT_MODE; - break; - case 't': -+ if (*cmd == 'l') /* tlmenu, tlunmenu, tlnoremenu */ -+ { -+ modes = MENU_TERMINAL_MODE; -+ ++cmd; -+ break; -+ } - modes = MENU_TIP_MODE; /* tmenu */ - break; - case 'c': /* cmenu */ -*************** -*** 1687,1698 **** - { - char_u *p; - int len = (int)STRLEN(name); - -! p = vim_strnsave(name, len + 1); - if (p != NULL) - { -! mch_memmove(p + 6, p + 5, (size_t)(len - 4)); -! p[5] = menu_mode_chars[idx]; - } - return p; - } ---- 1693,1710 ---- - { - char_u *p; - int len = (int)STRLEN(name); -+ char *mode_chars = menu_mode_chars[idx]; -+ int mode_chars_len = (int)strlen(mode_chars); -+ int i; - -! p = vim_strnsave(name, len + mode_chars_len); - if (p != NULL) - { -! mch_memmove(p + 5 + mode_chars_len, p + 5, (size_t)(len - 4)); -! for (i = 0; i < mode_chars_len; ++i) -! { -! p[5 + i] = menu_mode_chars[idx][i]; -! } - } - return p; - } -*************** -*** 1712,1717 **** ---- 1724,1733 ---- - idx = MENU_INDEX_INSERT; - else if (state & CMDLINE) - idx = MENU_INDEX_CMDLINE; -+ #ifdef FEAT_TERMINAL -+ else if (term_use_loop()) -+ idx = MENU_INDEX_TERMINAL; -+ #endif - else if (VIsual_active) - { - if (VIsual_select) -*************** -*** 1872,1877 **** ---- 1888,1899 ---- - static int - get_menu_mode(void) - { -+ #ifdef FEAT_TERMINAL -+ if (term_use_loop()) -+ { -+ return MENU_INDEX_TERMINAL; -+ } -+ #endif - if (VIsual_active) - { - if (VIsual_select) -*************** -*** 1910,1932 **** - show_popupmenu(void) - { - vimmenu_T *menu; -! int mode; - -! mode = get_menu_mode(); -! if (mode == MENU_INDEX_INVALID) - return; -! mode = menu_mode_chars[mode]; - -! { -! char_u ename[2]; -! -! ename[0] = mode; -! ename[1] = NUL; -! apply_autocmds(EVENT_MENUPOPUP, ename, NULL, FALSE, curbuf); -! } - - for (menu = root_menu; menu != NULL; menu = menu->next) -! if (STRNCMP("PopUp", menu->name, 5) == 0 && menu->name[5] == mode) - break; - - /* Only show a popup when it is defined and has entries */ ---- 1932,1951 ---- - show_popupmenu(void) - { - vimmenu_T *menu; -! int menu_mode; -! char* mode; -! int mode_len; - -! menu_mode = get_menu_mode(); -! if (menu_mode == MENU_INDEX_INVALID) - return; -! mode = menu_mode_chars[menu_mode]; -! mode_len = (int)strlen(mode); - -! apply_autocmds(EVENT_MENUPOPUP, (char_u*)mode, NULL, FALSE, curbuf); - - for (menu = root_menu; menu != NULL; menu = menu->next) -! if (STRNCMP("PopUp", menu->name, 5) == 0 && STRNCMP(menu->name + 5, mode, mode_len) == 0) - break; - - /* Only show a popup when it is defined and has entries */ -*************** -*** 2249,2330 **** - /* - * Execute "menu". Use by ":emenu" and the window toolbar. - * "eap" is NULL for the window toolbar. - */ - void -! execute_menu(exarg_T *eap, vimmenu_T *menu) - { -! char_u *mode; -! int idx = -1; - -! /* Use the Insert mode entry when returning to Insert mode. */ -! if (restart_edit - #ifdef FEAT_EVAL -! && !current_sctx.sc_sid - #endif -! ) -! { -! mode = (char_u *)"Insert"; -! idx = MENU_INDEX_INSERT; -! } -! else if (VIsual_active) -! { -! mode = (char_u *)"Visual"; -! idx = MENU_INDEX_VISUAL; -! } -! else if (eap != NULL && eap->addr_count) -! { -! pos_T tpos; -! -! mode = (char_u *)"Visual"; -! idx = MENU_INDEX_VISUAL; -! -! /* GEDDES: This is not perfect - but it is a -! * quick way of detecting whether we are doing this from a -! * selection - see if the range matches up with the visual -! * select start and end. */ -! if ((curbuf->b_visual.vi_start.lnum == eap->line1) -! && (curbuf->b_visual.vi_end.lnum) == eap->line2) -! { -! /* Set it up for visual mode - equivalent to gv. */ -! VIsual_mode = curbuf->b_visual.vi_mode; -! tpos = curbuf->b_visual.vi_end; -! curwin->w_cursor = curbuf->b_visual.vi_start; -! curwin->w_curswant = curbuf->b_visual.vi_curswant; - } -! else - { -! /* Set it up for line-wise visual mode */ -! VIsual_mode = 'V'; -! curwin->w_cursor.lnum = eap->line1; -! curwin->w_cursor.col = 1; -! tpos.lnum = eap->line2; -! tpos.col = MAXCOL; -! #ifdef FEAT_VIRTUALEDIT -! tpos.coladd = 0; - #endif - } - -! /* Activate visual mode */ -! VIsual_active = TRUE; -! VIsual_reselect = TRUE; -! check_cursor(); -! VIsual = curwin->w_cursor; -! curwin->w_cursor = tpos; - -! check_cursor(); - -! /* Adjust the cursor to make sure it is in the correct pos -! * for exclusive mode */ -! if (*p_sel == 'e' && gchar_cursor() != NUL) -! ++curwin->w_cursor.col; - } - - /* For the WinBar menu always use the Normal mode menu. */ - if (idx == -1 || eap == NULL) -- { -- mode = (char_u *)"Normal"; - idx = MENU_INDEX_NORMAL; -- } - - if (idx != MENU_INDEX_INVALID && menu->strings[idx] != NULL) - { ---- 2268,2353 ---- - /* - * Execute "menu". Use by ":emenu" and the window toolbar. - * "eap" is NULL for the window toolbar. -+ * "mode_idx" specifies a MENU_INDEX_ value, use -1 to depend on the current -+ * state. - */ - void -! execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx) - { -! int idx = mode_idx; - -! if (idx < 0) -! { -! /* Use the Insert mode entry when returning to Insert mode. */ -! if (restart_edit - #ifdef FEAT_EVAL -! && !current_sctx.sc_sid - #endif -! ) -! { -! idx = MENU_INDEX_INSERT; - } -! #ifdef FEAT_TERMINAL -! else if (term_use_loop()) - { -! idx = MENU_INDEX_TERMINAL; -! } - #endif -+ else if (VIsual_active) -+ { -+ idx = MENU_INDEX_VISUAL; - } -+ else if (eap != NULL && eap->addr_count) -+ { -+ pos_T tpos; - -! idx = MENU_INDEX_VISUAL; - -! /* GEDDES: This is not perfect - but it is a -! * quick way of detecting whether we are doing this from a -! * selection - see if the range matches up with the visual -! * select start and end. */ -! if ((curbuf->b_visual.vi_start.lnum == eap->line1) -! && (curbuf->b_visual.vi_end.lnum) == eap->line2) -! { -! /* Set it up for visual mode - equivalent to gv. */ -! VIsual_mode = curbuf->b_visual.vi_mode; -! tpos = curbuf->b_visual.vi_end; -! curwin->w_cursor = curbuf->b_visual.vi_start; -! curwin->w_curswant = curbuf->b_visual.vi_curswant; -! } -! else -! { -! /* Set it up for line-wise visual mode */ -! VIsual_mode = 'V'; -! curwin->w_cursor.lnum = eap->line1; -! curwin->w_cursor.col = 1; -! tpos.lnum = eap->line2; -! tpos.col = MAXCOL; -! #ifdef FEAT_VIRTUALEDIT -! tpos.coladd = 0; -! #endif -! } - -! /* Activate visual mode */ -! VIsual_active = TRUE; -! VIsual_reselect = TRUE; -! check_cursor(); -! VIsual = curwin->w_cursor; -! curwin->w_cursor = tpos; -! -! check_cursor(); -! -! /* Adjust the cursor to make sure it is in the correct pos -! * for exclusive mode */ -! if (*p_sel == 'e' && gchar_cursor() != NUL) -! ++curwin->w_cursor.col; -! } - } - - /* For the WinBar menu always use the Normal mode menu. */ - if (idx == -1 || eap == NULL) - idx = MENU_INDEX_NORMAL; - - if (idx != MENU_INDEX_INVALID && menu->strings[idx] != NULL) - { -*************** -*** 2351,2357 **** ---- 2374,2408 ---- - TRUE, menu->silent[idx]); - } - else if (eap != NULL) -+ { -+ char_u *mode; -+ -+ switch (idx) -+ { -+ case MENU_INDEX_VISUAL: -+ mode = (char_u *)"Visual"; -+ break; -+ case MENU_INDEX_SELECT: -+ mode = (char_u *)"Select"; -+ break; -+ case MENU_INDEX_OP_PENDING: -+ mode = (char_u *)"Op-pending"; -+ break; -+ case MENU_INDEX_TERMINAL: -+ mode = (char_u *)"Terminal"; -+ break; -+ case MENU_INDEX_INSERT: -+ mode = (char_u *)"Insert"; -+ break; -+ case MENU_INDEX_CMDLINE: -+ mode = (char_u *)"Cmdline"; -+ break; -+ // case MENU_INDEX_TIP: cannot happen -+ default: -+ mode = (char_u *)"Normal"; -+ } - EMSG2(_("E335: Menu not defined for %s mode"), mode); -+ } - } - - /* -*************** -*** 2364,2372 **** - vimmenu_T *menu; - char_u *name; - char_u *saved_name; - char_u *p; - -! saved_name = vim_strsave(eap->arg); - if (saved_name == NULL) - return; - ---- 2415,2443 ---- - vimmenu_T *menu; - char_u *name; - char_u *saved_name; -+ char_u *arg = eap->arg; - char_u *p; -+ int gave_emsg = FALSE; -+ int mode_idx = -1; -+ -+ if (arg[0] && VIM_ISWHITE(arg[1])) -+ { -+ switch (arg[0]) -+ { -+ case 'n': mode_idx = MENU_INDEX_NORMAL; break; -+ case 'v': mode_idx = MENU_INDEX_VISUAL; break; -+ case 's': mode_idx = MENU_INDEX_SELECT; break; -+ case 'o': mode_idx = MENU_INDEX_OP_PENDING; break; -+ case 't': mode_idx = MENU_INDEX_TERMINAL; break; -+ case 'i': mode_idx = MENU_INDEX_INSERT; break; -+ case 'c': mode_idx = MENU_INDEX_CMDLINE; break; -+ default: EMSG2(_(e_invarg2), arg); -+ return; -+ } -+ arg = skipwhite(arg + 2); -+ } - -! saved_name = vim_strsave(arg); - if (saved_name == NULL) - return; - -*************** -*** 2384,2389 **** ---- 2455,2461 ---- - if (*p == NUL && menu->children != NULL) - { - EMSG(_("E333: Menu path must lead to a menu item")); -+ gave_emsg = TRUE; - menu = NULL; - } - else if (*p != NUL && menu->children == NULL) -*************** -*** 2403,2414 **** - vim_free(saved_name); - if (menu == NULL) - { -! EMSG2(_("E334: Menu not found: %s"), eap->arg); - return; - } - -! /* Found the menu, so execute. */ -! execute_menu(eap, menu); - } - - /* ---- 2475,2487 ---- - vim_free(saved_name); - if (menu == NULL) - { -! if (!gave_emsg) -! EMSG2(_("E334: Menu not found: %s"), arg); - return; - } - -! // Found the menu, so execute. -! execute_menu(eap, menu, mode_idx); - } - - /* -*************** -*** 2445,2451 **** - check_cursor(); - } - -! execute_menu(NULL, item->wb_menu); - - if (save_curwin != NULL) - { ---- 2518,2524 ---- - check_cursor(); - } - -! execute_menu(NULL, item->wb_menu, -1); - - if (save_curwin != NULL) - { -*** ../vim-8.1.0486/src/proto/menu.pro 2018-05-17 13:52:44.000000000 +0200 ---- src/proto/menu.pro 2018-10-19 19:18:21.773946949 +0200 -*************** -*** 19,25 **** - void gui_update_menus(int modes); - int gui_is_menu_shortcut(int key); - void gui_mch_toggle_tearoffs(int enable); -! void execute_menu(exarg_T *eap, vimmenu_T *menu); - void ex_emenu(exarg_T *eap); - void winbar_click(win_T *wp, int col); - vimmenu_T *gui_find_menu(char_u *path_name); ---- 19,25 ---- - void gui_update_menus(int modes); - int gui_is_menu_shortcut(int key); - void gui_mch_toggle_tearoffs(int enable); -! void execute_menu(exarg_T *eap, vimmenu_T *menu, int mode_idx); - void ex_emenu(exarg_T *eap); - void winbar_click(win_T *wp, int col); - vimmenu_T *gui_find_menu(char_u *path_name); -*** ../vim-8.1.0486/src/popupmnu.c 2018-09-09 15:27:54.808344790 +0200 ---- src/popupmnu.c 2018-10-19 19:06:36.212711840 +0200 -*************** -*** 1176,1182 **** - if ((mp->modes & mp->enabled & mode) && idx++ == pum_selected) - { - vim_memset(&ea, 0, sizeof(ea)); -! execute_menu(&ea, mp); - break; - } - } ---- 1176,1182 ---- - if ((mp->modes & mp->enabled & mode) && idx++ == pum_selected) - { - vim_memset(&ea, 0, sizeof(ea)); -! execute_menu(&ea, mp, -1); - break; - } - } -*** ../vim-8.1.0486/src/structs.h 2018-10-14 22:38:06.161665231 +0200 ---- src/structs.h 2018-10-19 18:35:52.662453090 +0200 -*************** -*** 3101,3108 **** - #define MENU_INDEX_OP_PENDING 3 - #define MENU_INDEX_INSERT 4 - #define MENU_INDEX_CMDLINE 5 -! #define MENU_INDEX_TIP 6 -! #define MENU_MODES 7 - - /* Menu modes */ - #define MENU_NORMAL_MODE (1 << MENU_INDEX_NORMAL) ---- 3101,3109 ---- - #define MENU_INDEX_OP_PENDING 3 - #define MENU_INDEX_INSERT 4 - #define MENU_INDEX_CMDLINE 5 -! #define MENU_INDEX_TERMINAL 6 -! #define MENU_INDEX_TIP 7 -! #define MENU_MODES 8 - - /* Menu modes */ - #define MENU_NORMAL_MODE (1 << MENU_INDEX_NORMAL) -*************** -*** 3111,3116 **** ---- 3112,3118 ---- - #define MENU_OP_PENDING_MODE (1 << MENU_INDEX_OP_PENDING) - #define MENU_INSERT_MODE (1 << MENU_INDEX_INSERT) - #define MENU_CMDLINE_MODE (1 << MENU_INDEX_CMDLINE) -+ #define MENU_TERMINAL_MODE (1 << MENU_INDEX_TERMINAL) - #define MENU_TIP_MODE (1 << MENU_INDEX_TIP) - #define MENU_ALL_MODES ((1 << MENU_INDEX_TIP) - 1) - /*note MENU_INDEX_TIP is not a 'real' mode*/ -*** ../vim-8.1.0486/src/testdir/test_menu.vim 2017-03-18 20:09:29.000000000 +0100 ---- src/testdir/test_menu.vim 2018-10-19 22:19:19.563500587 +0200 -*************** -*** 30,32 **** ---- 30,66 ---- - - source $VIMRUNTIME/delmenu.vim - endfunc -+ -+ func Test_menu_commands() -+ nmenu 2 Test.FooBar :let g:did_menu = 'normal'<CR> -+ vmenu 2 Test.FooBar :let g:did_menu = 'visual'<CR> -+ smenu 2 Test.FooBar :let g:did_menu = 'select'<CR> -+ omenu 2 Test.FooBar :let g:did_menu = 'op-pending'<CR> -+ tlmenu 2 Test.FooBar :let g:did_menu = 'terminal'<CR> -+ imenu 2 Test.FooBar :let g:did_menu = 'insert'<CR> -+ cmenu 2 Test.FooBar :let g:did_menu = 'cmdline'<CR> -+ emenu n Test.FooBar -+ call assert_equal('normal', g:did_menu) -+ emenu v Test.FooBar -+ call assert_equal('visual', g:did_menu) -+ emenu s Test.FooBar -+ call assert_equal('select', g:did_menu) -+ emenu o Test.FooBar -+ call assert_equal('op-pending', g:did_menu) -+ emenu t Test.FooBar -+ call assert_equal('terminal', g:did_menu) -+ emenu i Test.FooBar -+ call assert_equal('insert', g:did_menu) -+ emenu c Test.FooBar -+ call assert_equal('cmdline', g:did_menu) -+ -+ aunmenu Test.FooBar -+ tlunmenu Test.FooBar -+ call assert_fails('emenu n Test.FooBar', 'E334:') -+ -+ nmenu 2 Test.FooBar.Child :let g:did_menu = 'foobar'<CR> -+ call assert_fails('emenu n Test.FooBar', 'E333:') -+ nunmenu Test.FooBar.Child -+ -+ unlet g:did_menu -+ endfun -*** ../vim-8.1.0486/src/version.c 2018-10-19 17:35:58.081200733 +0200 ---- src/version.c 2018-10-19 18:36:44.394062760 +0200 -*************** -*** 794,795 **** ---- 794,797 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 487, - /**/ - --- -"Women marry men hoping they will change. Men marry women hoping -they will not. So each is inevitably disappointed." - - Einstein - - /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ -/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |