summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-10-19 22:36:53 +0200
committerBram Moolenaar <Bram@vim.org>2018-10-19 22:36:53 +0200
commit4c5d815256099b50eca2ec5bf8f9aaa67a890211 (patch)
tree6d626537a4c82f86a43a90bec3fce98e54033949 /runtime
parent42a4ea10af687ca56b0810bfbb8884b37fc725b3 (diff)
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.vim1
-rw-r--r--runtime/doc/autocmd.txt5
-rw-r--r--runtime/doc/gui.txt42
-rw-r--r--runtime/doc/index.txt3
-rw-r--r--runtime/doc/tags6
-rw-r--r--runtime/doc/terminal.txt3
-rw-r--r--runtime/doc/todo.txt9
-rw-r--r--runtime/doc/usr_42.txt3
-rw-r--r--runtime/menu.vim3
-rw-r--r--runtime/syntax/vim.vim2
10 files changed, 52 insertions, 25 deletions
diff --git a/runtime/delmenu.vim b/runtime/delmenu.vim
index 81df87d346..5cefe26d35 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 b6e50238fd..eae83d4ad6 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 603a4d4ad3..c621b40cbf 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 1a0d225267..4abd25aa05 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 b31d430cae..3936ebc71e 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 abc3d94fb4..499a2450a6 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 ea1e00a2e4..f9c210139b 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 46483613ae..290191335c 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 5e4bd1f11b..a6ecf3ce52 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 30c3f2f16e..abd2d18018 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