diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-10-19 22:36:53 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-10-19 22:36:53 +0200 |
commit | 4c5d815256099b50eca2ec5bf8f9aaa67a890211 (patch) | |
tree | 6d626537a4c82f86a43a90bec3fce98e54033949 /runtime | |
parent | 42a4ea10af687ca56b0810bfbb8884b37fc725b3 (diff) | |
download | vim-git-4c5d815256099b50eca2ec5bf8f9aaa67a890211.tar.gz |
patch 8.1.0487: no menus specifically for the terminal windowv8.1.0487
Problem: No menus specifically for the terminal window.
Solution: Add :tlmenu. (Yee Cheng Chin, closes #3439) Add a menu test.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/delmenu.vim | 1 | ||||
-rw-r--r-- | runtime/doc/autocmd.txt | 5 | ||||
-rw-r--r-- | runtime/doc/gui.txt | 42 | ||||
-rw-r--r-- | runtime/doc/index.txt | 3 | ||||
-rw-r--r-- | runtime/doc/tags | 6 | ||||
-rw-r--r-- | runtime/doc/terminal.txt | 3 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 9 | ||||
-rw-r--r-- | runtime/doc/usr_42.txt | 3 | ||||
-rw-r--r-- | runtime/menu.vim | 3 | ||||
-rw-r--r-- | runtime/syntax/vim.vim | 2 |
10 files changed, 52 insertions, 25 deletions
diff --git a/runtime/delmenu.vim b/runtime/delmenu.vim index 81df87d34..5cefe26d3 100644 --- a/runtime/delmenu.vim +++ b/runtime/delmenu.vim @@ -5,6 +5,7 @@ " Last Change: 2001 May 27 aunmenu * +tlunmenu * silent! unlet did_install_default_menus silent! unlet did_install_syntax_menu diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index b6e50238f..eae83d4ad 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -835,13 +835,14 @@ MenuPopup Just before showing the popup menu (under the 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: + 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. diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt index 603a4d4ad..c621b40cb 100644 --- a/runtime/doc/gui.txt +++ b/runtime/doc/gui.txt @@ -547,15 +547,16 @@ floating menus that do not appear on the main menu bar. 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* + *: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,6 +572,10 @@ the mouse button down on this will pop up a menu containing the item "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,9 +594,9 @@ With the shortcut "F" (while keeping the <Alt> key pressed), and then "O", 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: +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,6 +870,16 @@ be used to complete the name of the menu item. 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,6 +900,7 @@ using the last visual selection. *: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,6 +967,8 @@ See section |42.4| in the user manual. :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 diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index 1a0d22526..4abd25aa0 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1583,6 +1583,9 @@ tag command action ~ |: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 diff --git a/runtime/doc/tags b/runtime/doc/tags index b31d430ca..3936ebc71 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -3185,6 +3185,12 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* :tjump tagsrch.txt /*:tjump* :tl tagsrch.txt /*:tl* :tlast tagsrch.txt /*:tlast* +:tlm gui.txt /*:tlm* +:tlmenu gui.txt /*:tlmenu* +:tln gui.txt /*:tln* +:tlnoremenu gui.txt /*:tlnoremenu* +:tlu gui.txt /*:tlu* +:tlunmenu gui.txt /*:tlunmenu* :tm gui.txt /*:tm* :tma map.txt /*:tma* :tmap map.txt /*:tmap* diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index abc3d94fb..499a2450a 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -114,6 +114,9 @@ break: > 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 diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index ea1e00a2e..f9c210139 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -95,9 +95,6 @@ Terminal emulator window: Key mapping times out when using a timer in Gvim. (Michael Henry, 2018 Sep 9, #3417) -Patch to check for directory access in term_start(). (Jason Franklin, 2018 Oct -15) - Does not build with MinGW out of the box: - _stat64 is not defined, need to use "struct stat" in vim.h - WINVER conflict, should use 0x0600 by default? @@ -189,8 +186,6 @@ Memory leak in test_terminal: gethostbyname() is old, use getaddrinfo() if available. (#3227) -Delete the src/main.aap file? - matchaddpos() gets slow with many matches. Proposal by Rick Howe, 2018 Jul 19. @@ -198,8 +193,6 @@ Patch to support ":tag <tagkind> <tagname>". (emmrk, 2018 May 7, #2871) Use something like ":tag {kind}/{tagname}". Not ready to include. -Patch to support menus in terminal: ":tlmenu". (Yee Cheng Chin, #3439) - :pedit resets the 'buflisted' option unexpectedly. (Wang Shidong, 2018 Oct 12, #3536) @@ -2223,8 +2216,6 @@ still delete them. Also convert all buffer file names? "gqip" in Insert mode has an off-by-one error, causing it to reflow text. (Raul Coronado, 2009 Nov 2) -Update src/testdir/main.aap. - Something wrong with session that has "cd" commands and "badd", in such a way that Vim doesn't find the edited file in the buffer list, causing the ATTENTION message? (Tony Mechelynck, 2008 Dec 1) diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt index 46483613a..290191335 100644 --- a/runtime/doc/usr_42.txt +++ b/runtime/doc/usr_42.txt @@ -150,7 +150,8 @@ like the variations on the ":map" command: :menu! Insert and Command-line mode :imenu Insert mode :cmenu Command-line mode - :amenu All modes + :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. diff --git a/runtime/menu.vim b/runtime/menu.vim index 5e4bd1f11..a6ecf3ce5 100644 --- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -160,6 +160,9 @@ vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y 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 diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 30c3f2f16..abd2d1801 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -407,7 +407,7 @@ syn case match " Menus {{{2 " ===== syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod -syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList +syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] tlm[enu] tln[oremenu] tlu[nmenu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation |