summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0487
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0487')
-rw-r--r--data/vim/patches/8.1.04871207
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 ///