xref: /vim-8.2.3635/runtime/menu.vim (revision b45cd36b)
1071d4279SBram Moolenaar" Vim support file to define the default menus
2071d4279SBram Moolenaar" You can also use this as a start for your own set of menus.
3071d4279SBram Moolenaar"
4071d4279SBram Moolenaar" Maintainer:	Bram Moolenaar <[email protected]>
5*b45cd36bSBram Moolenaar" Last Change:	2020 Sep 28
6071d4279SBram Moolenaar
7071d4279SBram Moolenaar" Note that ":an" (short for ":anoremenu") is often used to make a menu work
8071d4279SBram Moolenaar" in all modes and avoid side effects from mappings defined by the user.
9071d4279SBram Moolenaar
10071d4279SBram Moolenaar" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
11071d4279SBram Moolenaar" <CR> would not be recognized.  See ":help 'cpoptions'".
12071d4279SBram Moolenaarlet s:cpo_save = &cpo
13071d4279SBram Moolenaarset cpo&vim
14071d4279SBram Moolenaar
15071d4279SBram Moolenaar" Avoid installing the menus twice
16071d4279SBram Moolenaarif !exists("did_install_default_menus")
17071d4279SBram Moolenaarlet did_install_default_menus = 1
18071d4279SBram Moolenaar
19071d4279SBram Moolenaar
20071d4279SBram Moolenaarif exists("v:lang") || &langmenu != ""
21071d4279SBram Moolenaar  " Try to find a menu translation file for the current language.
22071d4279SBram Moolenaar  if &langmenu != ""
23071d4279SBram Moolenaar    if &langmenu =~ "none"
24071d4279SBram Moolenaar      let s:lang = ""
25071d4279SBram Moolenaar    else
26071d4279SBram Moolenaar      let s:lang = &langmenu
27071d4279SBram Moolenaar    endif
28071d4279SBram Moolenaar  else
29071d4279SBram Moolenaar    let s:lang = v:lang
30071d4279SBram Moolenaar  endif
31071d4279SBram Moolenaar  " A language name must be at least two characters, don't accept "C"
325be4ceecSBram Moolenaar  " Also skip "en_US" to avoid picking up "en_gb" translations.
335be4ceecSBram Moolenaar  if strlen(s:lang) > 1 && s:lang !~? '^en_us'
34071d4279SBram Moolenaar    " When the language does not include the charset add 'encoding'
35071d4279SBram Moolenaar    if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
36071d4279SBram Moolenaar      let s:lang = s:lang . '.' . &enc
37071d4279SBram Moolenaar    endif
38071d4279SBram Moolenaar
39071d4279SBram Moolenaar    " We always use a lowercase name.
40071d4279SBram Moolenaar    " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
41071d4279SBram Moolenaar    " systems appear to use this.
42071d4279SBram Moolenaar    " Change spaces to underscores.
43071d4279SBram Moolenaar    let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
44071d4279SBram Moolenaar    let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
45071d4279SBram Moolenaar    let s:lang = substitute(s:lang, " ", "_", "g")
46071d4279SBram Moolenaar    " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
47071d4279SBram Moolenaar    let s:lang = substitute(s:lang, "@euro", "", "")
48071d4279SBram Moolenaar    " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
49071d4279SBram Moolenaar    " same menu file for them.
50071d4279SBram Moolenaar    let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
51071d4279SBram Moolenaar    menutrans clear
52071d4279SBram Moolenaar    exe "runtime! lang/menu_" . s:lang . ".vim"
53071d4279SBram Moolenaar
54071d4279SBram Moolenaar    if !exists("did_menu_trans")
55071d4279SBram Moolenaar      " There is no exact match, try matching with a wildcard added
56071d4279SBram Moolenaar      " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
57071d4279SBram Moolenaar      let s:lang = substitute(s:lang, '\.[^.]*', "", "")
5805159a0cSBram Moolenaar      exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
59071d4279SBram Moolenaar
6068f1b1b3SBram Moolenaar      if !exists("did_menu_trans") && s:lang =~ '_'
6168f1b1b3SBram Moolenaar	" If the language includes a region try matching without that region.
6268f1b1b3SBram Moolenaar	" (e.g. find menu_de.vim if s:lang == de_DE).
6368f1b1b3SBram Moolenaar	let langonly = substitute(s:lang, '_.*', "", "")
6468f1b1b3SBram Moolenaar	exe "runtime! lang/menu_" . langonly . "[^a-z]*vim"
6568f1b1b3SBram Moolenaar      endif
6668f1b1b3SBram Moolenaar
67e2cc9702SBram Moolenaar      if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
68071d4279SBram Moolenaar	" On windows locale names are complicated, try using $LANG, it might
69e2cc9702SBram Moolenaar	" have been set by set_init_1().  But don't do this for "en" or "en_us".
702ce06f6eSBram Moolenaar	" But don't match "slovak" when $LANG is "sl".
712ce06f6eSBram Moolenaar	exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
72071d4279SBram Moolenaar      endif
73071d4279SBram Moolenaar    endif
74071d4279SBram Moolenaar  endif
75071d4279SBram Moolenaarendif
76071d4279SBram Moolenaar
77071d4279SBram Moolenaar
78071d4279SBram Moolenaar" Help menu
79071d4279SBram Moolenaaran 9999.10 &Help.&Overview<Tab><F1>	:help<CR>
80071d4279SBram Moolenaaran 9999.20 &Help.&User\ Manual		:help usr_toc<CR>
81214641f7SBram Moolenaaran 9999.30 &Help.&How-To\ Links		:help how-to<CR>
82071d4279SBram Moolenaaran <silent> 9999.40 &Help.&Find\.\.\.	:call <SID>Helpfind()<CR>
83071d4279SBram Moolenaaran 9999.45 &Help.-sep1-			<Nop>
84071d4279SBram Moolenaaran 9999.50 &Help.&Credits		:help credits<CR>
85071d4279SBram Moolenaaran 9999.60 &Help.Co&pying		:help copying<CR>
86071d4279SBram Moolenaaran 9999.70 &Help.&Sponsor/Register	:help sponsor<CR>
87071d4279SBram Moolenaaran 9999.70 &Help.O&rphans		:help kcc<CR>
88071d4279SBram Moolenaaran 9999.75 &Help.-sep2-			<Nop>
89071d4279SBram Moolenaaran 9999.80 &Help.&Version		:version<CR>
90071d4279SBram Moolenaaran 9999.90 &Help.&About			:intro<CR>
91071d4279SBram Moolenaar
92*b45cd36bSBram Moolenaarif exists(':tlmenu')
93*b45cd36bSBram Moolenaar  tlnoremenu 9999.10 &Help.&Overview<Tab><F1>		<C-W>:help<CR>
94*b45cd36bSBram Moolenaar  tlnoremenu 9999.20 &Help.&User\ Manual		<C-W>:help usr_toc<CR>
95*b45cd36bSBram Moolenaar  tlnoremenu 9999.30 &Help.&How-To\ Links		<C-W>:help how-to<CR>
96*b45cd36bSBram Moolenaar  tlnoremenu <silent> 9999.40 &Help.&Find\.\.\.		<C-W>:call <SID>Helpfind()<CR>
97*b45cd36bSBram Moolenaar  tlnoremenu 9999.45 &Help.-sep1-			<Nop>
98*b45cd36bSBram Moolenaar  tlnoremenu 9999.50 &Help.&Credits			<C-W>:help credits<CR>
99*b45cd36bSBram Moolenaar  tlnoremenu 9999.60 &Help.Co&pying			<C-W>:help copying<CR>
100*b45cd36bSBram Moolenaar  tlnoremenu 9999.70 &Help.&Sponsor/Register		<C-W>:help sponsor<CR>
101*b45cd36bSBram Moolenaar  tlnoremenu 9999.70 &Help.O&rphans			<C-W>:help kcc<CR>
102*b45cd36bSBram Moolenaar  tlnoremenu 9999.75 &Help.-sep2-			<Nop>
103*b45cd36bSBram Moolenaar  tlnoremenu 9999.80 &Help.&Version			<C-W>:version<CR>
104*b45cd36bSBram Moolenaar  tlnoremenu 9999.90 &Help.&About			<C-W>:intro<CR>
105*b45cd36bSBram Moolenaarendif
106*b45cd36bSBram Moolenaar
107071d4279SBram Moolenaarfun! s:Helpfind()
108071d4279SBram Moolenaar  if !exists("g:menutrans_help_dialog")
109071d4279SBram Moolenaar    let g:menutrans_help_dialog = "Enter a command or word to find help on:\n\nPrepend i_ for Input mode commands (e.g.: i_CTRL-X)\nPrepend c_ for command-line editing commands (e.g.: c_<Del>)\nPrepend ' for an option name (e.g.: 'shiftwidth')"
110071d4279SBram Moolenaar  endif
111071d4279SBram Moolenaar  let h = inputdialog(g:menutrans_help_dialog)
112071d4279SBram Moolenaar  if h != ""
113071d4279SBram Moolenaar    let v:errmsg = ""
114071d4279SBram Moolenaar    silent! exe "help " . h
115071d4279SBram Moolenaar    if v:errmsg != ""
116071d4279SBram Moolenaar      echo v:errmsg
117071d4279SBram Moolenaar    endif
118071d4279SBram Moolenaar  endif
119071d4279SBram Moolenaarendfun
120071d4279SBram Moolenaar
121071d4279SBram Moolenaar" File menu
122071d4279SBram Moolenaaran 10.310 &File.&Open\.\.\.<Tab>:e		:browse confirm e<CR>
123071d4279SBram Moolenaaran 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp	:browse sp<CR>
1245c8837f9SBram Moolenaaran 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew	:browse tabnew<CR>
125071d4279SBram Moolenaaran 10.325 &File.&New<Tab>:enew			:confirm enew<CR>
126071d4279SBram Moolenaaran <silent> 10.330 &File.&Close<Tab>:close
127cab49dffSBram Moolenaar	\ :if winheight(2) < 0 && tabpagewinnr(2) == 0 <Bar>
128071d4279SBram Moolenaar	\   confirm enew <Bar>
129071d4279SBram Moolenaar	\ else <Bar>
130071d4279SBram Moolenaar	\   confirm close <Bar>
131071d4279SBram Moolenaar	\ endif<CR>
132071d4279SBram Moolenaaran 10.335 &File.-SEP1-				<Nop>
133071d4279SBram Moolenaaran <silent> 10.340 &File.&Save<Tab>:w		:if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
134071d4279SBram Moolenaaran 10.350 &File.Save\ &As\.\.\.<Tab>:sav	:browse confirm saveas<CR>
135071d4279SBram Moolenaar
136071d4279SBram Moolenaarif has("diff")
137071d4279SBram Moolenaar  an 10.400 &File.-SEP2-			<Nop>
138214641f7SBram Moolenaar  an 10.410 &File.Split\ &Diff\ With\.\.\.	:browse vert diffsplit<CR>
139071d4279SBram Moolenaar  an 10.420 &File.Split\ Patched\ &By\.\.\.	:browse vert diffpatch<CR>
140071d4279SBram Moolenaarendif
141071d4279SBram Moolenaar
142071d4279SBram Moolenaarif has("printer")
143071d4279SBram Moolenaar  an 10.500 &File.-SEP3-			<Nop>
144071d4279SBram Moolenaar  an 10.510 &File.&Print			:hardcopy<CR>
145071d4279SBram Moolenaar  vunmenu   &File.&Print
146071d4279SBram Moolenaar  vnoremenu &File.&Print			:hardcopy<CR>
147071d4279SBram Moolenaarelseif has("unix")
148071d4279SBram Moolenaar  an 10.500 &File.-SEP3-			<Nop>
149071d4279SBram Moolenaar  an 10.510 &File.&Print			:w !lpr<CR>
150071d4279SBram Moolenaar  vunmenu   &File.&Print
151071d4279SBram Moolenaar  vnoremenu &File.&Print			:w !lpr<CR>
152071d4279SBram Moolenaarendif
153071d4279SBram Moolenaaran 10.600 &File.-SEP4-				<Nop>
154071d4279SBram Moolenaaran 10.610 &File.Sa&ve-Exit<Tab>:wqa		:confirm wqa<CR>
155071d4279SBram Moolenaaran 10.620 &File.E&xit<Tab>:qa			:confirm qa<CR>
156071d4279SBram Moolenaar
1575e94a29eSBram Moolenaarfunc s:SelectAll()
158a3e6bc93SBram Moolenaar  exe "norm! gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
159071d4279SBram Moolenaarendfunc
160071d4279SBram Moolenaar
1615e94a29eSBram Moolenaarfunc s:FnameEscape(fname)
162aba8857aSBram Moolenaar  if exists('*fnameescape')
163aba8857aSBram Moolenaar    return fnameescape(a:fname)
1645c73622aSBram Moolenaar  endif
165aba8857aSBram Moolenaar  return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
166aba8857aSBram Moolenaarendfunc
167071d4279SBram Moolenaar
168071d4279SBram Moolenaar" Edit menu
169071d4279SBram Moolenaaran 20.310 &Edit.&Undo<Tab>u			u
170071d4279SBram Moolenaaran 20.320 &Edit.&Redo<Tab>^R			<C-R>
171071d4279SBram Moolenaaran 20.330 &Edit.Rep&eat<Tab>\.			.
172071d4279SBram Moolenaar
173071d4279SBram Moolenaaran 20.335 &Edit.-SEP1-				<Nop>
174071d4279SBram Moolenaarvnoremenu 20.340 &Edit.Cu&t<Tab>"+x		"+x
175071d4279SBram Moolenaarvnoremenu 20.350 &Edit.&Copy<Tab>"+y		"+y
176071d4279SBram Moolenaarcnoremenu 20.350 &Edit.&Copy<Tab>"+y		<C-Y>
1775ef1c6a4SBram Moolenaarif exists(':tlmenu')
1785ef1c6a4SBram Moolenaar  tlnoremenu 20.350 &Edit.&Copy<Tab>"+y 	<C-W>:<C-Y><CR>
1795ef1c6a4SBram Moolenaarendif
180071d4279SBram Moolenaarnnoremenu 20.360 &Edit.&Paste<Tab>"+gP		"+gP
181071d4279SBram Moolenaarcnoremenu	 &Edit.&Paste<Tab>"+gP		<C-R>+
1824c5d8152SBram Moolenaarif exists(':tlmenu')
1834c5d8152SBram Moolenaar  tlnoremenu	 &Edit.&Paste<Tab>"+gP		<C-W>"+
1844c5d8152SBram Moolenaarendif
1854ea8fe1dSBram Moolenaarexe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['v']
1864ea8fe1dSBram Moolenaarexe 'inoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['i']
187071d4279SBram Moolenaarnnoremenu 20.370 &Edit.Put\ &Before<Tab>[p	[p
188071d4279SBram Moolenaarinoremenu	 &Edit.Put\ &Before<Tab>[p	<C-O>[p
189071d4279SBram Moolenaarnnoremenu 20.380 &Edit.Put\ &After<Tab>]p	]p
190071d4279SBram Moolenaarinoremenu	 &Edit.Put\ &After<Tab>]p	<C-O>]p
191040c1febSBram Moolenaarif has("win32")
192071d4279SBram Moolenaar  vnoremenu 20.390 &Edit.&Delete<Tab>x		x
193071d4279SBram Moolenaarendif
194071d4279SBram Moolenaarnoremenu  <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	:<C-U>call <SID>SelectAll()<CR>
195071d4279SBram Moolenaarinoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	<C-O>:call <SID>SelectAll()<CR>
196071d4279SBram Moolenaarcnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	<C-U>call <SID>SelectAll()<CR>
197071d4279SBram Moolenaar
198071d4279SBram Moolenaaran 20.405	 &Edit.-SEP2-				<Nop>
199040c1febSBram Moolenaarif has("win32") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
200071d4279SBram Moolenaar  an 20.410	 &Edit.&Find\.\.\.			:promptfind<CR>
201071d4279SBram Moolenaar  vunmenu	 &Edit.&Find\.\.\.
2024ea8fe1dSBram Moolenaar  vnoremenu <silent>	 &Edit.&Find\.\.\.		y:promptfind <C-R>=<SID>FixFText()<CR><CR>
203071d4279SBram Moolenaar  an 20.420	 &Edit.Find\ and\ Rep&lace\.\.\.	:promptrepl<CR>
204071d4279SBram Moolenaar  vunmenu	 &Edit.Find\ and\ Rep&lace\.\.\.
2054ea8fe1dSBram Moolenaar  vnoremenu <silent>	 &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
206071d4279SBram Moolenaarelse
207071d4279SBram Moolenaar  an 20.410	 &Edit.&Find<Tab>/			/
208071d4279SBram Moolenaar  an 20.420	 &Edit.Find\ and\ Rep&lace<Tab>:%s	:%s/
209071d4279SBram Moolenaar  vunmenu	 &Edit.Find\ and\ Rep&lace<Tab>:%s
210071d4279SBram Moolenaar  vnoremenu	 &Edit.Find\ and\ Rep&lace<Tab>:s	:s/
211071d4279SBram Moolenaarendif
212071d4279SBram Moolenaar
213071d4279SBram Moolenaaran 20.425	 &Edit.-SEP3-				<Nop>
214071d4279SBram Moolenaaran 20.430	 &Edit.Settings\ &Window		:options<CR>
215910f66f9SBram Moolenaaran 20.435	 &Edit.Startup\ &Settings		:call <SID>EditVimrc()<CR>
216910f66f9SBram Moolenaar
217910f66f9SBram Moolenaarfun! s:EditVimrc()
218910f66f9SBram Moolenaar  if $MYVIMRC != ''
219e30de2d1SBram Moolenaar    let fname = $MYVIMRC
22042ebd066SBram Moolenaar  elseif has("win32")
221910f66f9SBram Moolenaar    if $HOME != ''
222e30de2d1SBram Moolenaar      let fname = $HOME . "/_vimrc"
223910f66f9SBram Moolenaar    else
224e30de2d1SBram Moolenaar      let fname = $VIM . "/_vimrc"
225910f66f9SBram Moolenaar    endif
226910f66f9SBram Moolenaar  elseif has("amiga")
227910f66f9SBram Moolenaar    let fname = "s:.vimrc"
228910f66f9SBram Moolenaar  else
229e30de2d1SBram Moolenaar    let fname = $HOME . "/.vimrc"
230910f66f9SBram Moolenaar  endif
231aba8857aSBram Moolenaar  let fname = s:FnameEscape(fname)
232910f66f9SBram Moolenaar  if &mod
233910f66f9SBram Moolenaar    exe "split " . fname
234910f66f9SBram Moolenaar  else
235910f66f9SBram Moolenaar    exe "edit " . fname
236910f66f9SBram Moolenaar  endif
237910f66f9SBram Moolenaarendfun
238071d4279SBram Moolenaar
2395b8d8fdbSBram Moolenaarfun! s:FixFText()
2405b8d8fdbSBram Moolenaar  " Fix text in nameless register to be used with :promptfind.
2414ea8fe1dSBram Moolenaar  return substitute(@", "[\r\n]", '\\n', 'g')
2425b8d8fdbSBram Moolenaarendfun
2435b8d8fdbSBram Moolenaar
244071d4279SBram Moolenaar" Edit/Global Settings
245071d4279SBram Moolenaaran 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	:set hls! hls?<CR>
246214641f7SBram Moolenaaran 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignoring\ Case<Tab>:set\ ic!	:set ic! ic?<CR>
247214641f7SBram Moolenaaran 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	:set sm! sm?<CR>
248071d4279SBram Moolenaar
249214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 1\  :set so=1<CR>
250214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 2\  :set so=2<CR>
251214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 3\  :set so=3<CR>
252214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 4\  :set so=4<CR>
253214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 5\  :set so=5<CR>
254214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 7\  :set so=7<CR>
255214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 10\  :set so=10<CR>
256214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 100\  :set so=100<CR>
257071d4279SBram Moolenaar
258071d4279SBram Moolenaaran 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
259071d4279SBram Moolenaaran 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
260214641f7SBram Moolenaaran 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ Mode :set ve=insert<CR>
261071d4279SBram Moolenaaran 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
262071d4279SBram Moolenaaran 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
263071d4279SBram Moolenaaran 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im!	:set im!<CR>
264214641f7SBram Moolenaaran 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!	:set cp!<CR>
265071d4279SBram Moolenaaran <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\.  :call <SID>SearchP()<CR>
266071d4279SBram Moolenaaran <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\.  :call <SID>TagFiles()<CR>
267071d4279SBram Moolenaar"
268071d4279SBram Moolenaar" GUI options
269071d4279SBram Moolenaaran 20.440.300 &Edit.&Global\ Settings.-SEP1-				<Nop>
270071d4279SBram Moolenaaran <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar		:call <SID>ToggleGuiOption("T")<CR>
271071d4279SBram Moolenaaran <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
272071d4279SBram Moolenaaran <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar	:call <SID>ToggleGuiOption("l")<CR>
273071d4279SBram Moolenaaran <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
274071d4279SBram Moolenaar
275071d4279SBram Moolenaarfun! s:SearchP()
276071d4279SBram Moolenaar  if !exists("g:menutrans_path_dialog")
277071d4279SBram Moolenaar    let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
278071d4279SBram Moolenaar  endif
279071d4279SBram Moolenaar  let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
280071d4279SBram Moolenaar  if n != ""
281071d4279SBram Moolenaar    let &path = substitute(n, ' ', '\\ ', 'g')
282071d4279SBram Moolenaar  endif
283071d4279SBram Moolenaarendfun
284071d4279SBram Moolenaar
285071d4279SBram Moolenaarfun! s:TagFiles()
286071d4279SBram Moolenaar  if !exists("g:menutrans_tags_dialog")
287071d4279SBram Moolenaar    let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
288071d4279SBram Moolenaar  endif
289071d4279SBram Moolenaar  let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
290071d4279SBram Moolenaar  if n != ""
291071d4279SBram Moolenaar    let &tags = substitute(n, ' ', '\\ ', 'g')
292071d4279SBram Moolenaar  endif
293071d4279SBram Moolenaarendfun
294071d4279SBram Moolenaar
295071d4279SBram Moolenaarfun! s:ToggleGuiOption(option)
296071d4279SBram Moolenaar    " If a:option is already set in guioptions, then we want to remove it
297071d4279SBram Moolenaar    if match(&guioptions, "\\C" . a:option) > -1
298071d4279SBram Moolenaar	exec "set go-=" . a:option
299071d4279SBram Moolenaar    else
300071d4279SBram Moolenaar	exec "set go+=" . a:option
301071d4279SBram Moolenaar    endif
302071d4279SBram Moolenaarendfun
303071d4279SBram Moolenaar
304071d4279SBram Moolenaar" Edit/File Settings
305071d4279SBram Moolenaar
306071d4279SBram Moolenaar" Boolean options
307071d4279SBram Moolenaaran 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu!	:set nu! nu?<CR>
308214641f7SBram Moolenaaran 20.440.105 &Edit.F&ile\ Settings.Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu!	:set rnu! rnu?<CR>
309071d4279SBram Moolenaaran 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list!	:set list! list?<CR>
310214641f7SBram Moolenaaran 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrapping<Tab>:set\ wrap!	:set wrap! wrap?<CR>
311214641f7SBram Moolenaaran 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr!	:set lbr! lbr?<CR>
312214641f7SBram Moolenaaran 20.440.160 &Edit.F&ile\ Settings.Toggle\ Tab\ &Expanding<Tab>:set\ et!	:set et! et?<CR>
313214641f7SBram Moolenaaran 20.440.170 &Edit.F&ile\ Settings.Toggle\ &Auto\ Indenting<Tab>:set\ ai!	:set ai! ai?<CR>
314214641f7SBram Moolenaaran 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-Style\ Indenting<Tab>:set\ cin!	:set cin! cin?<CR>
315071d4279SBram Moolenaar
316071d4279SBram Moolenaar" other options
317071d4279SBram Moolenaaran 20.440.600 &Edit.F&ile\ Settings.-SEP2-		<Nop>
318071d4279SBram Moolenaaran 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2	:set sw=2 sw?<CR>
319071d4279SBram Moolenaaran 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3	:set sw=3 sw?<CR>
320071d4279SBram Moolenaaran 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4	:set sw=4 sw?<CR>
321071d4279SBram Moolenaaran 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5	:set sw=5 sw?<CR>
322071d4279SBram Moolenaaran 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6	:set sw=6 sw?<CR>
323071d4279SBram Moolenaaran 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8	:set sw=8 sw?<CR>
324071d4279SBram Moolenaar
325071d4279SBram Moolenaaran 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2	:set sts=2 sts?<CR>
326071d4279SBram Moolenaaran 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3	:set sts=3 sts?<CR>
327071d4279SBram Moolenaaran 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4	:set sts=4 sts?<CR>
328071d4279SBram Moolenaaran 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5	:set sts=5 sts?<CR>
329071d4279SBram Moolenaaran 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6	:set sts=6 sts?<CR>
330071d4279SBram Moolenaaran 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8	:set sts=8 sts?<CR>
331071d4279SBram Moolenaar
332071d4279SBram Moolenaaran <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\.  :call <SID>TextWidth()<CR>
333071d4279SBram Moolenaaran <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\.  :call <SID>FileFormat()<CR>
334071d4279SBram Moolenaarfun! s:TextWidth()
335071d4279SBram Moolenaar  if !exists("g:menutrans_textwidth_dialog")
336071d4279SBram Moolenaar    let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
337071d4279SBram Moolenaar  endif
338071d4279SBram Moolenaar  let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
339071d4279SBram Moolenaar  if n != ""
340ad3b366cSBram Moolenaar    " Remove leading zeros to avoid it being used as an octal number.
341ad3b366cSBram Moolenaar    " But keep a zero by itself.
342ad3b366cSBram Moolenaar    let tw = substitute(n, "^0*", "", "")
343ad3b366cSBram Moolenaar    let &tw = tw == '' ? 0 : tw
344071d4279SBram Moolenaar  endif
345071d4279SBram Moolenaarendfun
346071d4279SBram Moolenaar
347071d4279SBram Moolenaarfun! s:FileFormat()
348071d4279SBram Moolenaar  if !exists("g:menutrans_fileformat_dialog")
349071d4279SBram Moolenaar    let g:menutrans_fileformat_dialog = "Select format for writing the file"
350071d4279SBram Moolenaar  endif
351071d4279SBram Moolenaar  if !exists("g:menutrans_fileformat_choices")
352071d4279SBram Moolenaar    let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
353071d4279SBram Moolenaar  endif
354071d4279SBram Moolenaar  if &ff == "dos"
355071d4279SBram Moolenaar    let def = 2
356071d4279SBram Moolenaar  elseif &ff == "mac"
357071d4279SBram Moolenaar    let def = 3
358071d4279SBram Moolenaar  else
359071d4279SBram Moolenaar    let def = 1
360071d4279SBram Moolenaar  endif
361071d4279SBram Moolenaar  let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
362071d4279SBram Moolenaar  if n == 1
363071d4279SBram Moolenaar    set ff=unix
364071d4279SBram Moolenaar  elseif n == 2
365071d4279SBram Moolenaar    set ff=dos
366071d4279SBram Moolenaar  elseif n == 3
367071d4279SBram Moolenaar    set ff=mac
368071d4279SBram Moolenaar  endif
369071d4279SBram Moolenaarendfun
370071d4279SBram Moolenaar
371040c1febSBram Moolenaarlet s:did_setup_color_schemes = 0
372c5604bc1SBram Moolenaar
373071d4279SBram Moolenaar" Setup the Edit.Color Scheme submenu
3745e94a29eSBram Moolenaarfunc s:SetupColorSchemes() abort
375040c1febSBram Moolenaar  if s:did_setup_color_schemes
376040c1febSBram Moolenaar    return
377040c1febSBram Moolenaar  endif
378040c1febSBram Moolenaar  let s:did_setup_color_schemes = 1
379c5604bc1SBram Moolenaar
380040c1febSBram Moolenaar  let n = globpath(&runtimepath, "colors/*.vim", 1, 1)
38130e9b3c4SBram Moolenaar  let n += globpath(&packpath, "pack/*/start/*/colors/*.vim", 1, 1)
38230e9b3c4SBram Moolenaar  let n += globpath(&packpath, "pack/*/opt/*/colors/*.vim", 1, 1)
383c5604bc1SBram Moolenaar
384040c1febSBram Moolenaar  " Ignore case for VMS and windows, sort on name
385040c1febSBram Moolenaar  let names = sort(map(n, 'substitute(v:val, "\\c.*[/\\\\:\\]]\\([^/\\\\:]*\\)\\.vim", "\\1", "")'), 1)
386c5604bc1SBram Moolenaar
387c5604bc1SBram Moolenaar  " define all the submenu entries
388040c1febSBram Moolenaar  let idx = 100
389040c1febSBram Moolenaar  for name in names
390040c1febSBram Moolenaar    exe "an 20.450." . idx . ' &Edit.C&olor\ Scheme.' . name . " :colors " . name . "<CR>"
391040c1febSBram Moolenaar    let idx = idx + 10
392c5604bc1SBram Moolenaar  endfor
393040c1febSBram Moolenaar  silent! aunmenu &Edit.Show\ C&olor\ Schemes\ in\ Menu
394040c1febSBram Moolenaarendfun
395040c1febSBram Moolenaarif exists("do_no_lazyload_menus")
396040c1febSBram Moolenaar  call s:SetupColorSchemes()
397040c1febSBram Moolenaarelse
398040c1febSBram Moolenaar  an <silent> 20.450 &Edit.Show\ C&olor\ Schemes\ in\ Menu :call <SID>SetupColorSchemes()<CR>
399040c1febSBram Moolenaarendif
400c5604bc1SBram Moolenaar
401071d4279SBram Moolenaar
402071d4279SBram Moolenaar" Setup the Edit.Keymap submenu
403071d4279SBram Moolenaarif has("keymap")
404040c1febSBram Moolenaar  let s:did_setup_keymaps = 0
405040c1febSBram Moolenaar
4065e94a29eSBram Moolenaar  func s:SetupKeymaps() abort
407040c1febSBram Moolenaar    if s:did_setup_keymaps
408040c1febSBram Moolenaar      return
409040c1febSBram Moolenaar    endif
410040c1febSBram Moolenaar    let s:did_setup_keymaps = 1
411040c1febSBram Moolenaar
412040c1febSBram Moolenaar    let n = globpath(&runtimepath, "keymap/*.vim", 1, 1)
413040c1febSBram Moolenaar    if !empty(n)
414040c1febSBram Moolenaar      let idx = 100
415071d4279SBram Moolenaar      an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
416040c1febSBram Moolenaar      for name in n
417071d4279SBram Moolenaar	" Ignore case for VMS and windows
418040c1febSBram Moolenaar	let name = substitute(name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
419040c1febSBram Moolenaar	exe "an 20.460." . idx . ' &Edit.&Keymap.' . name . " :set keymap=" . name . "<CR>"
420040c1febSBram Moolenaar	let idx = idx + 10
421040c1febSBram Moolenaar      endfor
422071d4279SBram Moolenaar    endif
423040c1febSBram Moolenaar    silent! aunmenu &Edit.Show\ &Keymaps\ in\ Menu
424040c1febSBram Moolenaar  endfun
425040c1febSBram Moolenaar  if exists("do_no_lazyload_menus")
426040c1febSBram Moolenaar    call s:SetupKeymaps()
427040c1febSBram Moolenaar  else
428040c1febSBram Moolenaar    an <silent> 20.460 &Edit.Show\ &Keymaps\ in\ Menu :call <SID>SetupKeymaps()<CR>
429071d4279SBram Moolenaar  endif
430040c1febSBram Moolenaarendif
431040c1febSBram Moolenaarif has("win32") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
432071d4279SBram Moolenaar  an 20.470 &Edit.Select\ Fo&nt\.\.\.	:set guifont=*<CR>
433071d4279SBram Moolenaarendif
434071d4279SBram Moolenaar
435071d4279SBram Moolenaar" Programming menu
436071d4279SBram Moolenaarif !exists("g:ctags_command")
437071d4279SBram Moolenaar  if has("vms")
438d675e2c5SBram Moolenaar    let g:ctags_command = "mc vim:ctags *.*"
439071d4279SBram Moolenaar  else
440071d4279SBram Moolenaar    let g:ctags_command = "ctags -R ."
441071d4279SBram Moolenaar  endif
442071d4279SBram Moolenaarendif
443071d4279SBram Moolenaar
444214641f7SBram Moolenaaran 40.300 &Tools.&Jump\ to\ This\ Tag<Tab>g^]	g<C-]>
445214641f7SBram Moolenaarvunmenu &Tools.&Jump\ to\ This\ Tag<Tab>g^]
446214641f7SBram Moolenaarvnoremenu &Tools.&Jump\ to\ This\ Tag<Tab>g^]	g<C-]>
447214641f7SBram Moolenaaran 40.310 &Tools.Jump\ &Back<Tab>^T		<C-T>
448071d4279SBram Moolenaaran 40.320 &Tools.Build\ &Tags\ File		:exe "!" . g:ctags_command<CR>
449071d4279SBram Moolenaar
45082cf9b68SBram Moolenaarif has("folding") || has("spell")
45182cf9b68SBram Moolenaar  an 40.330 &Tools.-SEP1-						<Nop>
45282cf9b68SBram Moolenaarendif
45382cf9b68SBram Moolenaar
454f3681cc3SBram Moolenaar" Tools.Spelling Menu
45582cf9b68SBram Moolenaarif has("spell")
45682cf9b68SBram Moolenaar  an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On		:set spell<CR>
45782cf9b68SBram Moolenaar  an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off		:set nospell<CR>
458214641f7SBram Moolenaar  an 40.335.130 &Tools.&Spelling.To\ &Next\ Error<Tab>]s	]s
459214641f7SBram Moolenaar  an 40.335.130 &Tools.&Spelling.To\ &Previous\ Error<Tab>[s	[s
460362e1a30SBram Moolenaar  an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z=	z=
461214641f7SBram Moolenaar  an 40.335.150 &Tools.&Spelling.&Repeat\ Correction<Tab>:spellrepall	:spellrepall<CR>
46282cf9b68SBram Moolenaar  an 40.335.200 &Tools.&Spelling.-SEP1-				<Nop>
463214641f7SBram Moolenaar  an 40.335.210 &Tools.&Spelling.Set\ Language\ to\ "en"	:set spl=en spell<CR>
464214641f7SBram Moolenaar  an 40.335.220 &Tools.&Spelling.Set\ Language\ to\ "en_au"	:set spl=en_au spell<CR>
465214641f7SBram Moolenaar  an 40.335.230 &Tools.&Spelling.Set\ Language\ to\ "en_ca"	:set spl=en_ca spell<CR>
466214641f7SBram Moolenaar  an 40.335.240 &Tools.&Spelling.Set\ Language\ to\ "en_gb"	:set spl=en_gb spell<CR>
467214641f7SBram Moolenaar  an 40.335.250 &Tools.&Spelling.Set\ Language\ to\ "en_nz"	:set spl=en_nz spell<CR>
468214641f7SBram Moolenaar  an 40.335.260 &Tools.&Spelling.Set\ Language\ to\ "en_us"	:set spl=en_us spell<CR>
46982cf9b68SBram Moolenaar  an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages	:call <SID>SpellLang()<CR>
47082cf9b68SBram Moolenaar
47165e0d77aSBram Moolenaar  let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
4725e94a29eSBram Moolenaar  func s:SpellLang()
47365e0d77aSBram Moolenaar    for cmd in s:undo_spelllang
4745a8684e7SBram Moolenaar      exe "silent! " . cmd
4755a8684e7SBram Moolenaar    endfor
47665e0d77aSBram Moolenaar    let s:undo_spelllang = []
4775a8684e7SBram Moolenaar
47882cf9b68SBram Moolenaar    if &enc == "iso-8859-15"
47982cf9b68SBram Moolenaar      let enc = "latin1"
48082cf9b68SBram Moolenaar    else
48182cf9b68SBram Moolenaar      let enc = &enc
48282cf9b68SBram Moolenaar    endif
4835a8684e7SBram Moolenaar
484f3408e76SBram Moolenaar    if !exists("g:menutrans_set_lang_to")
485214641f7SBram Moolenaar      let g:menutrans_set_lang_to = 'Set Language to'
486f3408e76SBram Moolenaar    endif
487f3408e76SBram Moolenaar
48882cf9b68SBram Moolenaar    let found = 0
489040c1febSBram Moolenaar    let s = globpath(&runtimepath, "spell/*." . enc . ".spl", 1, 1)
490040c1febSBram Moolenaar    if !empty(s)
49182cf9b68SBram Moolenaar      let n = 300
492040c1febSBram Moolenaar      for f in s
49382cf9b68SBram Moolenaar	let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
4945a8684e7SBram Moolenaar	if nm != "en" && nm !~ '/'
495f3408e76SBram Moolenaar          let _nm = nm
49682cf9b68SBram Moolenaar	  let found += 1
497f3408e76SBram Moolenaar	  let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"'
4985a8684e7SBram Moolenaar	  exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
49965e0d77aSBram Moolenaar	  let s:undo_spelllang += ['aun ' . menuname]
50082cf9b68SBram Moolenaar	endif
50182cf9b68SBram Moolenaar	let n += 10
50282cf9b68SBram Moolenaar      endfor
50382cf9b68SBram Moolenaar    endif
50482cf9b68SBram Moolenaar    if found == 0
50582cf9b68SBram Moolenaar      echomsg "Could not find other spell files"
50682cf9b68SBram Moolenaar    elseif found == 1
507f3408e76SBram Moolenaar      echomsg "Found spell file " . _nm
50882cf9b68SBram Moolenaar    else
50982cf9b68SBram Moolenaar      echomsg "Found " . found . " more spell files"
51082cf9b68SBram Moolenaar    endif
5115a8684e7SBram Moolenaar    " Need to redo this when 'encoding' is changed.
5125a8684e7SBram Moolenaar    augroup spellmenu
5135a8684e7SBram Moolenaar    au! EncodingChanged * call <SID>SpellLang()
5145a8684e7SBram Moolenaar    augroup END
51582cf9b68SBram Moolenaar  endfun
51682cf9b68SBram Moolenaar
51782cf9b68SBram Moolenaarendif
51882cf9b68SBram Moolenaar
519071d4279SBram Moolenaar" Tools.Fold Menu
520071d4279SBram Moolenaarif has("folding")
521071d4279SBram Moolenaar  " open close folds
522214641f7SBram Moolenaar  an 40.340.110 &Tools.&Folding.&Enable/Disable\ Folds<Tab>zi		zi
523071d4279SBram Moolenaar  an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv		zv
524214641f7SBram Moolenaar  an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx	zMzx
525214641f7SBram Moolenaar  inoremenu 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx  <C-O>zM<C-O>zx
526214641f7SBram Moolenaar  an 40.340.130 &Tools.&Folding.C&lose\ More\ Folds<Tab>zm		zm
527214641f7SBram Moolenaar  an 40.340.140 &Tools.&Folding.&Close\ All\ Folds<Tab>zM		zM
528214641f7SBram Moolenaar  an 40.340.150 &Tools.&Folding.O&pen\ More\ Folds<Tab>zr		zr
5293df0173fSBram Moolenaar  an 40.340.160 &Tools.&Folding.&Open\ All\ Folds<Tab>zR		zR
530071d4279SBram Moolenaar  " fold method
531071d4279SBram Moolenaar  an 40.340.200 &Tools.&Folding.-SEP1-			<Nop>
532071d4279SBram Moolenaar  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual	:set fdm=manual<CR>
533071d4279SBram Moolenaar  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent	:set fdm=indent<CR>
534071d4279SBram Moolenaar  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
535071d4279SBram Moolenaar  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax	:set fdm=syntax<CR>
536071d4279SBram Moolenaar  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff	:set fdm=diff<CR>
537071d4279SBram Moolenaar  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker	:set fdm=marker<CR>
538071d4279SBram Moolenaar  " create and delete folds
539071d4279SBram Moolenaar  vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf	zf
540071d4279SBram Moolenaar  an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd		zd
541071d4279SBram Moolenaar  an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD	zD
542071d4279SBram Moolenaar  " moving around in folds
543071d4279SBram Moolenaar  an 40.340.300 &Tools.&Folding.-SEP2-				<Nop>
544214641f7SBram Moolenaar  an 40.340.310.10 &Tools.&Folding.Fold\ Col&umn\ Width.\ &0\ 	:set fdc=0<CR>
545214641f7SBram Moolenaar  an 40.340.310.20 &Tools.&Folding.Fold\ Col&umn\ Width.\ &2\ 	:set fdc=2<CR>
546214641f7SBram Moolenaar  an 40.340.310.30 &Tools.&Folding.Fold\ Col&umn\ Width.\ &3\ 	:set fdc=3<CR>
547214641f7SBram Moolenaar  an 40.340.310.40 &Tools.&Folding.Fold\ Col&umn\ Width.\ &4\ 	:set fdc=4<CR>
548214641f7SBram Moolenaar  an 40.340.310.50 &Tools.&Folding.Fold\ Col&umn\ Width.\ &5\ 	:set fdc=5<CR>
549214641f7SBram Moolenaar  an 40.340.310.60 &Tools.&Folding.Fold\ Col&umn\ Width.\ &6\ 	:set fdc=6<CR>
550214641f7SBram Moolenaar  an 40.340.310.70 &Tools.&Folding.Fold\ Col&umn\ Width.\ &7\ 	:set fdc=7<CR>
551214641f7SBram Moolenaar  an 40.340.310.80 &Tools.&Folding.Fold\ Col&umn\ Width.\ &8\ 	:set fdc=8<CR>
552071d4279SBram Moolenaarendif  " has folding
553071d4279SBram Moolenaar
554071d4279SBram Moolenaarif has("diff")
555071d4279SBram Moolenaar  an 40.350.100 &Tools.&Diff.&Update		:diffupdate<CR>
556071d4279SBram Moolenaar  an 40.350.110 &Tools.&Diff.&Get\ Block	:diffget<CR>
557071d4279SBram Moolenaar  vunmenu &Tools.&Diff.&Get\ Block
558071d4279SBram Moolenaar  vnoremenu &Tools.&Diff.&Get\ Block		:diffget<CR>
559071d4279SBram Moolenaar  an 40.350.120 &Tools.&Diff.&Put\ Block	:diffput<CR>
560071d4279SBram Moolenaar  vunmenu &Tools.&Diff.&Put\ Block
561071d4279SBram Moolenaar  vnoremenu &Tools.&Diff.&Put\ Block		:diffput<CR>
562071d4279SBram Moolenaarendif
563071d4279SBram Moolenaar
564071d4279SBram Moolenaaran 40.358 &Tools.-SEP2-					<Nop>
565071d4279SBram Moolenaaran 40.360 &Tools.&Make<Tab>:make			:make<CR>
566071d4279SBram Moolenaaran 40.370 &Tools.&List\ Errors<Tab>:cl			:cl<CR>
567071d4279SBram Moolenaaran 40.380 &Tools.L&ist\ Messages<Tab>:cl!		:cl!<CR>
568071d4279SBram Moolenaaran 40.390 &Tools.&Next\ Error<Tab>:cn			:cn<CR>
569071d4279SBram Moolenaaran 40.400 &Tools.&Previous\ Error<Tab>:cp		:cp<CR>
570071d4279SBram Moolenaaran 40.410 &Tools.&Older\ List<Tab>:cold			:colder<CR>
571071d4279SBram Moolenaaran 40.420 &Tools.N&ewer\ List<Tab>:cnew			:cnewer<CR>
572071d4279SBram Moolenaaran 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin	:cwin<CR>
573071d4279SBram Moolenaaran 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen	:copen<CR>
574071d4279SBram Moolenaaran 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose	:cclose<CR>
575071d4279SBram Moolenaar
576071d4279SBram Moolenaaran 40.520 &Tools.-SEP3-					<Nop>
577071d4279SBram Moolenaaran <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
578071d4279SBram Moolenaar	\ :call <SID>XxdConv()<CR>
579214641f7SBram Moolenaaran <silent> 40.540 &Tools.Conve&rt\ Back<Tab>:%!xxd\ -r
580071d4279SBram Moolenaar	\ :call <SID>XxdBack()<CR>
581071d4279SBram Moolenaar
582071d4279SBram Moolenaar" Use a function to do the conversion, so that it also works with 'insertmode'
583071d4279SBram Moolenaar" set.
5845e94a29eSBram Moolenaarfunc s:XxdConv()
585071d4279SBram Moolenaar  let mod = &mod
586071d4279SBram Moolenaar  if has("vms")
587071d4279SBram Moolenaar    %!mc vim:xxd
588071d4279SBram Moolenaar  else
589071d4279SBram Moolenaar    call s:XxdFind()
5905ef1c6a4SBram Moolenaar    exe '%!' . g:xxdprogram
591071d4279SBram Moolenaar  endif
592071d4279SBram Moolenaar  if getline(1) =~ "^0000000:"		" only if it worked
593071d4279SBram Moolenaar    set ft=xxd
594071d4279SBram Moolenaar  endif
595071d4279SBram Moolenaar  let &mod = mod
596071d4279SBram Moolenaarendfun
597071d4279SBram Moolenaar
5985e94a29eSBram Moolenaarfunc s:XxdBack()
599071d4279SBram Moolenaar  let mod = &mod
600071d4279SBram Moolenaar  if has("vms")
601071d4279SBram Moolenaar    %!mc vim:xxd -r
602071d4279SBram Moolenaar  else
603071d4279SBram Moolenaar    call s:XxdFind()
6045ef1c6a4SBram Moolenaar    exe '%!' . g:xxdprogram . ' -r'
605071d4279SBram Moolenaar  endif
606071d4279SBram Moolenaar  set ft=
607071d4279SBram Moolenaar  doautocmd filetypedetect BufReadPost
608071d4279SBram Moolenaar  let &mod = mod
609071d4279SBram Moolenaarendfun
610071d4279SBram Moolenaar
6115e94a29eSBram Moolenaarfunc s:XxdFind()
612071d4279SBram Moolenaar  if !exists("g:xxdprogram")
613071d4279SBram Moolenaar    " On the PC xxd may not be in the path but in the install directory
61442ebd066SBram Moolenaar    if has("win32") && !executable("xxd")
615071d4279SBram Moolenaar      let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
6165ef1c6a4SBram Moolenaar      if g:xxdprogram =~ ' '
6175ef1c6a4SBram Moolenaar	let g:xxdprogram = '"' .. g:xxdprogram .. '"'
6185ef1c6a4SBram Moolenaar      endif
619071d4279SBram Moolenaar    else
620071d4279SBram Moolenaar      let g:xxdprogram = "xxd"
621071d4279SBram Moolenaar    endif
622071d4279SBram Moolenaar  endif
623071d4279SBram Moolenaarendfun
624071d4279SBram Moolenaar
625040c1febSBram Moolenaarlet s:did_setup_compilers = 0
626040c1febSBram Moolenaar
627071d4279SBram Moolenaar" Setup the Tools.Compiler submenu
6285e94a29eSBram Moolenaarfunc s:SetupCompilers() abort
629040c1febSBram Moolenaar  if s:did_setup_compilers
630040c1febSBram Moolenaar    return
631071d4279SBram Moolenaar  endif
632040c1febSBram Moolenaar  let s:did_setup_compilers = 1
633040c1febSBram Moolenaar
634040c1febSBram Moolenaar  let n = globpath(&runtimepath, "compiler/*.vim", 1, 1)
635040c1febSBram Moolenaar  let idx = 100
636040c1febSBram Moolenaar  for name in n
637071d4279SBram Moolenaar    " Ignore case for VMS and windows
638040c1febSBram Moolenaar    let name = substitute(name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
639040c1febSBram Moolenaar    exe "an 30.440." . idx . ' &Tools.Se&t\ Compiler.' . name . " :compiler " . name . "<CR>"
640040c1febSBram Moolenaar    let idx = idx + 10
641040c1febSBram Moolenaar  endfor
642040c1febSBram Moolenaar  silent! aunmenu &Tools.Show\ Compiler\ Se&ttings\ in\ Menu
643040c1febSBram Moolenaarendfun
644040c1febSBram Moolenaarif exists("do_no_lazyload_menus")
645040c1febSBram Moolenaar  call s:SetupCompilers()
646040c1febSBram Moolenaarelse
647040c1febSBram Moolenaar  an <silent> 30.440 &Tools.Show\ Compiler\ Se&ttings\ in\ Menu :call <SID>SetupCompilers()<CR>
648040c1febSBram Moolenaarendif
649040c1febSBram Moolenaar
650040c1febSBram Moolenaar" Load ColorScheme, Compiler Setting and Keymap menus when idle.
651040c1febSBram Moolenaarif !exists("do_no_lazyload_menus")
6525e94a29eSBram Moolenaar  func s:SetupLazyloadMenus()
653040c1febSBram Moolenaar    call s:SetupColorSchemes()
654040c1febSBram Moolenaar    call s:SetupCompilers()
655040c1febSBram Moolenaar    if has("keymap")
656040c1febSBram Moolenaar      call s:SetupKeymaps()
657040c1febSBram Moolenaar    endif
658040c1febSBram Moolenaar  endfunc
659040c1febSBram Moolenaar  augroup SetupLazyloadMenus
660040c1febSBram Moolenaar    au!
661040c1febSBram Moolenaar    au CursorHold,CursorHoldI * call <SID>SetupLazyloadMenus() | au! SetupLazyloadMenus
662040c1febSBram Moolenaar  augroup END
663040c1febSBram Moolenaarendif
664040c1febSBram Moolenaar
665071d4279SBram Moolenaar
666071d4279SBram Moolenaarif !exists("no_buffers_menu")
667071d4279SBram Moolenaar
668071d4279SBram Moolenaar" Buffer list menu -- Setup functions & actions
669071d4279SBram Moolenaar
670071d4279SBram Moolenaar" wait with building the menu until after loading 'session' files. Makes
671071d4279SBram Moolenaar" startup faster.
672071d4279SBram Moolenaarlet s:bmenu_wait = 1
673071d4279SBram Moolenaar
6745e94a29eSBram Moolenaar" Dictionary of buffer number to name. This helps prevent problems where a
6755e94a29eSBram Moolenaar" buffer as renamed and we didn't keep track of that.
6765e94a29eSBram Moolenaarlet s:bmenu_items = {}
6775e94a29eSBram Moolenaar
678071d4279SBram Moolenaarif !exists("bmenu_priority")
679071d4279SBram Moolenaar  let bmenu_priority = 60
680071d4279SBram Moolenaarendif
681071d4279SBram Moolenaar
6825e94a29eSBram Moolenaar" invoked from a BufCreate or BufFilePost autocommand
6835e94a29eSBram Moolenaarfunc s:BMAdd()
684071d4279SBram Moolenaar  if s:bmenu_wait == 0
685071d4279SBram Moolenaar    " when adding too many buffers, redraw in short format
686071d4279SBram Moolenaar    if s:bmenu_count == &menuitems && s:bmenu_short == 0
687071d4279SBram Moolenaar      call s:BMShow()
688071d4279SBram Moolenaar    else
6895e94a29eSBram Moolenaar      let name = expand("<afile>")
6905908fdf7SBram Moolenaar      let num = expand("<abuf>") + 0 " add zero to convert to a number type
6915e94a29eSBram Moolenaar      if s:BMCanAdd(name, num)
6925e94a29eSBram Moolenaar	call <SID>BMFilename(name, num)
6935e94a29eSBram Moolenaar	let s:bmenu_count += 1
6945e94a29eSBram Moolenaar      endif
695071d4279SBram Moolenaar    endif
696071d4279SBram Moolenaar  endif
697071d4279SBram Moolenaarendfunc
698071d4279SBram Moolenaar
6995e94a29eSBram Moolenaar" invoked from a BufDelete or BufFilePre autocommand
7005e94a29eSBram Moolenaarfunc s:BMRemove()
701071d4279SBram Moolenaar  if s:bmenu_wait == 0
7025e94a29eSBram Moolenaar    let bufnum = expand("<abuf>")
7035e94a29eSBram Moolenaar    if s:bmenu_items->has_key(bufnum)
7045e94a29eSBram Moolenaar      let menu_name = s:bmenu_items[bufnum]
7055e94a29eSBram Moolenaar      exe 'silent! aun &Buffers.' . menu_name
706071d4279SBram Moolenaar      let s:bmenu_count = s:bmenu_count - 1
7075e94a29eSBram Moolenaar      unlet s:bmenu_items[bufnum]
708071d4279SBram Moolenaar    endif
7095e94a29eSBram Moolenaar  endif
7105e94a29eSBram Moolenaarendfunc
7115e94a29eSBram Moolenaar
7125e94a29eSBram Moolenaar" Return non-zero if buffer with number "name" / "num" is useful to add in the
7135e94a29eSBram Moolenaar" buffer menu.
7145e94a29eSBram Moolenaarfunc s:BMCanAdd(name, num)
7155e94a29eSBram Moolenaar  " no directory or unlisted buffer
7165e94a29eSBram Moolenaar  if isdirectory(a:name) || !buflisted(a:num)
7175e94a29eSBram Moolenaar    return 0
7185e94a29eSBram Moolenaar  endif
7195e94a29eSBram Moolenaar
7205e94a29eSBram Moolenaar  " no special buffer, such as terminal or popup
7215e94a29eSBram Moolenaar  let buftype = getbufvar(a:num, '&buftype')
7225e94a29eSBram Moolenaar  if buftype != '' && buftype != 'nofile' && buftype != 'nowrite'
7235e94a29eSBram Moolenaar    return 0
7245e94a29eSBram Moolenaar  endif
7255e94a29eSBram Moolenaar
7265e94a29eSBram Moolenaar  " only existing buffers
7275e94a29eSBram Moolenaar  return bufexists(a:num)
728071d4279SBram Moolenaarendfunc
729071d4279SBram Moolenaar
730071d4279SBram Moolenaar" Create the buffer menu (delete an existing one first).
7315e94a29eSBram Moolenaarfunc s:BMShow(...)
732071d4279SBram Moolenaar  let s:bmenu_wait = 1
733071d4279SBram Moolenaar  let s:bmenu_short = 1
734071d4279SBram Moolenaar  let s:bmenu_count = 0
7355e94a29eSBram Moolenaar  let s:bmenu_items = {}
736071d4279SBram Moolenaar  "
737071d4279SBram Moolenaar  " get new priority, if exists
738071d4279SBram Moolenaar  if a:0 == 1
739071d4279SBram Moolenaar    let g:bmenu_priority = a:1
740071d4279SBram Moolenaar  endif
741071d4279SBram Moolenaar
7425e94a29eSBram Moolenaar  " Remove old menu, if it exists; keep one entry to avoid a torn off menu to
743e24c5b33SBram Moolenaar  " disappear.  Use try/catch to avoid setting v:errmsg
744e24c5b33SBram Moolenaar  try | unmenu &Buffers | catch | endtry
745071d4279SBram Moolenaar  exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
746e24c5b33SBram Moolenaar  try | unmenu! &Buffers | catch | endtry
747071d4279SBram Moolenaar
748071d4279SBram Moolenaar  " create new menu; set 'cpo' to include the <CR>
749071d4279SBram Moolenaar  let cpo_save = &cpo
750071d4279SBram Moolenaar  set cpo&vim
751071d4279SBram Moolenaar  exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
752071d4279SBram Moolenaar  exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
753071d4279SBram Moolenaar  exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
754071d4279SBram Moolenaar  exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
755071d4279SBram Moolenaar  exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
756071d4279SBram Moolenaar  exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
757071d4279SBram Moolenaar  let &cpo = cpo_save
758071d4279SBram Moolenaar  unmenu &Buffers.Dummy
759071d4279SBram Moolenaar
760071d4279SBram Moolenaar  " figure out how many buffers there are
761071d4279SBram Moolenaar  let buf = 1
762071d4279SBram Moolenaar  while buf <= bufnr('$')
7635e94a29eSBram Moolenaar    if s:BMCanAdd(bufname(buf), buf)
764071d4279SBram Moolenaar      let s:bmenu_count = s:bmenu_count + 1
765071d4279SBram Moolenaar    endif
766071d4279SBram Moolenaar    let buf = buf + 1
767071d4279SBram Moolenaar  endwhile
768071d4279SBram Moolenaar  if s:bmenu_count <= &menuitems
769071d4279SBram Moolenaar    let s:bmenu_short = 0
770071d4279SBram Moolenaar  endif
771071d4279SBram Moolenaar
772071d4279SBram Moolenaar  " iterate through buffer list, adding each buffer to the menu:
773071d4279SBram Moolenaar  let buf = 1
774071d4279SBram Moolenaar  while buf <= bufnr('$')
7755e94a29eSBram Moolenaar    let name = bufname(buf)
7765e94a29eSBram Moolenaar    if s:BMCanAdd(name, buf)
7775e94a29eSBram Moolenaar      call <SID>BMFilename(name, buf)
778071d4279SBram Moolenaar    endif
779071d4279SBram Moolenaar    let buf = buf + 1
780071d4279SBram Moolenaar  endwhile
781071d4279SBram Moolenaar  let s:bmenu_wait = 0
782071d4279SBram Moolenaar  aug buffer_list
783071d4279SBram Moolenaar  au!
784071d4279SBram Moolenaar  au BufCreate,BufFilePost * call <SID>BMAdd()
785071d4279SBram Moolenaar  au BufDelete,BufFilePre * call <SID>BMRemove()
786071d4279SBram Moolenaar  aug END
787071d4279SBram Moolenaarendfunc
788071d4279SBram Moolenaar
7895e94a29eSBram Moolenaarfunc s:BMHash(name)
790071d4279SBram Moolenaar  " Make name all upper case, so that chars are between 32 and 96
791071d4279SBram Moolenaar  let nm = substitute(a:name, ".*", '\U\0', "")
792071d4279SBram Moolenaar  if has("ebcdic")
793071d4279SBram Moolenaar    " HACK: Replace all non alphabetics with 'Z'
794071d4279SBram Moolenaar    "       Just to make it work for now.
795071d4279SBram Moolenaar    let nm = substitute(nm, "[^A-Z]", 'Z', "g")
796071d4279SBram Moolenaar    let sp = char2nr('A') - 1
797071d4279SBram Moolenaar  else
798071d4279SBram Moolenaar    let sp = char2nr(' ')
799071d4279SBram Moolenaar  endif
800071d4279SBram Moolenaar  " convert first six chars into a number for sorting:
801071d4279SBram Moolenaar  return (char2nr(nm[0]) - sp) * 0x800000 + (char2nr(nm[1]) - sp) * 0x20000 + (char2nr(nm[2]) - sp) * 0x1000 + (char2nr(nm[3]) - sp) * 0x80 + (char2nr(nm[4]) - sp) * 0x20 + (char2nr(nm[5]) - sp)
802071d4279SBram Moolenaarendfunc
803071d4279SBram Moolenaar
8045e94a29eSBram Moolenaarfunc s:BMHash2(name)
805071d4279SBram Moolenaar  let nm = substitute(a:name, ".", '\L\0', "")
806071d4279SBram Moolenaar  " Not exactly right for EBCDIC...
807071d4279SBram Moolenaar  if nm[0] < 'a' || nm[0] > 'z'
808071d4279SBram Moolenaar    return '&others.'
809071d4279SBram Moolenaar  elseif nm[0] <= 'd'
810071d4279SBram Moolenaar    return '&abcd.'
811071d4279SBram Moolenaar  elseif nm[0] <= 'h'
812071d4279SBram Moolenaar    return '&efgh.'
813071d4279SBram Moolenaar  elseif nm[0] <= 'l'
814071d4279SBram Moolenaar    return '&ijkl.'
815071d4279SBram Moolenaar  elseif nm[0] <= 'p'
816071d4279SBram Moolenaar    return '&mnop.'
817071d4279SBram Moolenaar  elseif nm[0] <= 't'
818071d4279SBram Moolenaar    return '&qrst.'
819071d4279SBram Moolenaar  else
820071d4279SBram Moolenaar    return '&u-z.'
821071d4279SBram Moolenaar  endif
822071d4279SBram Moolenaarendfunc
823071d4279SBram Moolenaar
8245e94a29eSBram Moolenaar" Insert a buffer name into the buffer menu.
8255e94a29eSBram Moolenaarfunc s:BMFilename(name, num)
826071d4279SBram Moolenaar  let munge = <SID>BMMunge(a:name, a:num)
827071d4279SBram Moolenaar  let hash = <SID>BMHash(munge)
828071d4279SBram Moolenaar  if s:bmenu_short == 0
8295e94a29eSBram Moolenaar    let s:bmenu_items[a:num] = munge
8305e94a29eSBram Moolenaar    let cmd = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
831071d4279SBram Moolenaar  else
8325e94a29eSBram Moolenaar    let menu_name = <SID>BMHash2(munge) . munge
8335e94a29eSBram Moolenaar    let s:bmenu_items[a:num] = menu_name
8345e94a29eSBram Moolenaar    let cmd = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . menu_name
835071d4279SBram Moolenaar  endif
836071d4279SBram Moolenaar  " set 'cpo' to include the <CR>
837071d4279SBram Moolenaar  let cpo_save = &cpo
838071d4279SBram Moolenaar  set cpo&vim
8395e94a29eSBram Moolenaar  exe cmd . ' :confirm b' . a:num . '<CR>'
840071d4279SBram Moolenaar  let &cpo = cpo_save
841071d4279SBram Moolenaarendfunc
842071d4279SBram Moolenaar
843071d4279SBram Moolenaar" Truncate a long path to fit it in a menu item.
844071d4279SBram Moolenaarif !exists("g:bmenu_max_pathlen")
845071d4279SBram Moolenaar  let g:bmenu_max_pathlen = 35
846071d4279SBram Moolenaarendif
8475e94a29eSBram Moolenaarfunc s:BMTruncName(fname)
848071d4279SBram Moolenaar  let name = a:fname
849071d4279SBram Moolenaar  if g:bmenu_max_pathlen < 5
850071d4279SBram Moolenaar    let name = ""
851071d4279SBram Moolenaar  else
852071d4279SBram Moolenaar    let len = strlen(name)
853071d4279SBram Moolenaar    if len > g:bmenu_max_pathlen
854071d4279SBram Moolenaar      let amountl = (g:bmenu_max_pathlen / 2) - 2
855071d4279SBram Moolenaar      let amountr = g:bmenu_max_pathlen - amountl - 3
856071d4279SBram Moolenaar      let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
857071d4279SBram Moolenaar      let left = substitute(name, pattern, '\1', '')
858071d4279SBram Moolenaar      let right = substitute(name, pattern, '\2', '')
859071d4279SBram Moolenaar      if strlen(left) + strlen(right) < len
860071d4279SBram Moolenaar	let name = left . '...' . right
861071d4279SBram Moolenaar      endif
862071d4279SBram Moolenaar    endif
863071d4279SBram Moolenaar  endif
864071d4279SBram Moolenaar  return name
865071d4279SBram Moolenaarendfunc
866071d4279SBram Moolenaar
8675e94a29eSBram Moolenaarfunc s:BMMunge(fname, bnum)
868071d4279SBram Moolenaar  let name = a:fname
869071d4279SBram Moolenaar  if name == ''
870071d4279SBram Moolenaar    if !exists("g:menutrans_no_file")
8716dc819b1SBram Moolenaar      let g:menutrans_no_file = "[No Name]"
872071d4279SBram Moolenaar    endif
873071d4279SBram Moolenaar    let name = g:menutrans_no_file
874071d4279SBram Moolenaar  else
875071d4279SBram Moolenaar    let name = fnamemodify(name, ':p:~')
876071d4279SBram Moolenaar  endif
877071d4279SBram Moolenaar  " detach file name and separate it out:
878071d4279SBram Moolenaar  let name2 = fnamemodify(name, ':t')
879071d4279SBram Moolenaar  if a:bnum >= 0
880071d4279SBram Moolenaar    let name2 = name2 . ' (' . a:bnum . ')'
881071d4279SBram Moolenaar  endif
882071d4279SBram Moolenaar  let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
883071d4279SBram Moolenaar  let name = escape(name, "\\. \t|")
884071d4279SBram Moolenaar  let name = substitute(name, "&", "&&", "g")
885071d4279SBram Moolenaar  let name = substitute(name, "\n", "^@", "g")
886071d4279SBram Moolenaar  return name
887071d4279SBram Moolenaarendfunc
888071d4279SBram Moolenaar
889071d4279SBram Moolenaar" When just starting Vim, load the buffer menu later
890071d4279SBram Moolenaarif has("vim_starting")
891071d4279SBram Moolenaar  augroup LoadBufferMenu
892071d4279SBram Moolenaar    au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
893071d4279SBram Moolenaar    au  VimEnter * au! LoadBufferMenu
894071d4279SBram Moolenaar  augroup END
895071d4279SBram Moolenaarelse
896071d4279SBram Moolenaar  call <SID>BMShow()
897071d4279SBram Moolenaarendif
898071d4279SBram Moolenaar
899071d4279SBram Moolenaarendif " !exists("no_buffers_menu")
900071d4279SBram Moolenaar
901071d4279SBram Moolenaar" Window menu
902071d4279SBram Moolenaaran 70.300 &Window.&New<Tab>^Wn			<C-W>n
903071d4279SBram Moolenaaran 70.310 &Window.S&plit<Tab>^Ws		<C-W>s
904071d4279SBram Moolenaaran 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^	<C-W><C-^>
905071d4279SBram Moolenaaran 70.330 &Window.Split\ &Vertically<Tab>^Wv	<C-W>v
906071d4279SBram Moolenaaran <silent> 70.332 &Window.Split\ File\ E&xplorer	:call MenuExplOpen()<CR>
907071d4279SBram Moolenaarif !exists("*MenuExplOpen")
908071d4279SBram Moolenaar  fun MenuExplOpen()
909071d4279SBram Moolenaar    if @% == ""
910071d4279SBram Moolenaar      20vsp .
911071d4279SBram Moolenaar    else
912aba8857aSBram Moolenaar      exe "20vsp " . s:FnameEscape(expand("%:p:h"))
913071d4279SBram Moolenaar    endif
914071d4279SBram Moolenaar  endfun
915071d4279SBram Moolenaarendif
916071d4279SBram Moolenaaran 70.335 &Window.-SEP1-				<Nop>
917071d4279SBram Moolenaaran 70.340 &Window.&Close<Tab>^Wc			:confirm close<CR>
918071d4279SBram Moolenaaran 70.345 &Window.Close\ &Other(s)<Tab>^Wo		:confirm only<CR>
919071d4279SBram Moolenaaran 70.350 &Window.-SEP2-				<Nop>
920071d4279SBram Moolenaaran 70.355 &Window.Move\ &To.&Top<Tab>^WK		<C-W>K
921071d4279SBram Moolenaaran 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ		<C-W>J
922214641f7SBram Moolenaaran 70.355 &Window.Move\ &To.&Left\ Side<Tab>^WH		<C-W>H
923214641f7SBram Moolenaaran 70.355 &Window.Move\ &To.&Right\ Side<Tab>^WL	<C-W>L
924071d4279SBram Moolenaaran 70.360 &Window.Rotate\ &Up<Tab>^WR			<C-W>R
925071d4279SBram Moolenaaran 70.362 &Window.Rotate\ &Down<Tab>^Wr			<C-W>r
926071d4279SBram Moolenaaran 70.365 &Window.-SEP3-				<Nop>
927071d4279SBram Moolenaaran 70.370 &Window.&Equal\ Size<Tab>^W=			<C-W>=
928071d4279SBram Moolenaaran 70.380 &Window.&Max\ Height<Tab>^W_			<C-W>_
929071d4279SBram Moolenaaran 70.390 &Window.M&in\ Height<Tab>^W1_			<C-W>1_
930071d4279SBram Moolenaaran 70.400 &Window.Max\ &Width<Tab>^W\|			<C-W>\|
931071d4279SBram Moolenaaran 70.410 &Window.Min\ Widt&h<Tab>^W1\|			<C-W>1\|
932071d4279SBram Moolenaar
933071d4279SBram Moolenaar" The popup menu
934071d4279SBram Moolenaaran 1.10 PopUp.&Undo			u
935071d4279SBram Moolenaaran 1.15 PopUp.-SEP1-			<Nop>
936071d4279SBram Moolenaarvnoremenu 1.20 PopUp.Cu&t		"+x
937071d4279SBram Moolenaarvnoremenu 1.30 PopUp.&Copy		"+y
938071d4279SBram Moolenaarcnoremenu 1.30 PopUp.&Copy		<C-Y>
939071d4279SBram Moolenaarnnoremenu 1.40 PopUp.&Paste		"+gP
940071d4279SBram Moolenaarcnoremenu 1.40 PopUp.&Paste		<C-R>+
9414ea8fe1dSBram Moolenaarexe 'vnoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['v']
9424ea8fe1dSBram Moolenaarexe 'inoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['i']
943071d4279SBram Moolenaarvnoremenu 1.50 PopUp.&Delete		x
944071d4279SBram Moolenaaran 1.55 PopUp.-SEP2-			<Nop>
945071d4279SBram Moolenaarvnoremenu 1.60 PopUp.Select\ Blockwise	<C-V>
946293ee4d4SBram Moolenaar
947293ee4d4SBram Moolenaarnnoremenu 1.70 PopUp.Select\ &Word	vaw
948293ee4d4SBram Moolenaaronoremenu 1.70 PopUp.Select\ &Word	aw
949293ee4d4SBram Moolenaarvnoremenu 1.70 PopUp.Select\ &Word	<C-C>vaw
950293ee4d4SBram Moolenaarinoremenu 1.70 PopUp.Select\ &Word	<C-O>vaw
951293ee4d4SBram Moolenaarcnoremenu 1.70 PopUp.Select\ &Word	<C-C>vaw
952293ee4d4SBram Moolenaar
953293ee4d4SBram Moolenaarnnoremenu 1.73 PopUp.Select\ &Sentence	vas
954293ee4d4SBram Moolenaaronoremenu 1.73 PopUp.Select\ &Sentence	as
955293ee4d4SBram Moolenaarvnoremenu 1.73 PopUp.Select\ &Sentence	<C-C>vas
956293ee4d4SBram Moolenaarinoremenu 1.73 PopUp.Select\ &Sentence	<C-O>vas
957293ee4d4SBram Moolenaarcnoremenu 1.73 PopUp.Select\ &Sentence	<C-C>vas
958293ee4d4SBram Moolenaar
959293ee4d4SBram Moolenaarnnoremenu 1.77 PopUp.Select\ Pa&ragraph	vap
960293ee4d4SBram Moolenaaronoremenu 1.77 PopUp.Select\ Pa&ragraph	ap
961293ee4d4SBram Moolenaarvnoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-C>vap
962293ee4d4SBram Moolenaarinoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-O>vap
963293ee4d4SBram Moolenaarcnoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-C>vap
964293ee4d4SBram Moolenaar
965293ee4d4SBram Moolenaarnnoremenu 1.80 PopUp.Select\ &Line	V
966293ee4d4SBram Moolenaaronoremenu 1.80 PopUp.Select\ &Line	<C-C>V
967293ee4d4SBram Moolenaarvnoremenu 1.80 PopUp.Select\ &Line	<C-C>V
968293ee4d4SBram Moolenaarinoremenu 1.80 PopUp.Select\ &Line	<C-O>V
969293ee4d4SBram Moolenaarcnoremenu 1.80 PopUp.Select\ &Line	<C-C>V
970293ee4d4SBram Moolenaar
971293ee4d4SBram Moolenaarnnoremenu 1.90 PopUp.Select\ &Block	<C-V>
972293ee4d4SBram Moolenaaronoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
973293ee4d4SBram Moolenaarvnoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
974293ee4d4SBram Moolenaarinoremenu 1.90 PopUp.Select\ &Block	<C-O><C-V>
975293ee4d4SBram Moolenaarcnoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
976293ee4d4SBram Moolenaar
977071d4279SBram Moolenaarnoremenu  <script> <silent> 1.100 PopUp.Select\ &All	:<C-U>call <SID>SelectAll()<CR>
978071d4279SBram Moolenaarinoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-O>:call <SID>SelectAll()<CR>
979071d4279SBram Moolenaarcnoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-U>call <SID>SelectAll()<CR>
980071d4279SBram Moolenaar
9814536002eSBram Moolenaarif has("spell")
9824536002eSBram Moolenaar  " Spell suggestions in the popup menu.  Note that this will slow down the
9834536002eSBram Moolenaar  " appearance of the menu!
9845e94a29eSBram Moolenaar  func s:SpellPopup()
9854536002eSBram Moolenaar    if exists("s:changeitem") && s:changeitem != ''
9864536002eSBram Moolenaar      call <SID>SpellDel()
9874536002eSBram Moolenaar    endif
988b38dea21SBram Moolenaar
989b38dea21SBram Moolenaar    " Return quickly if spell checking is not enabled.
990d8c0087cSBram Moolenaar    if !&spell || &spelllang == ''
991d8c0087cSBram Moolenaar      return
992d8c0087cSBram Moolenaar    endif
9934536002eSBram Moolenaar
9944536002eSBram Moolenaar    let curcol = col('.')
9951c7715dfSBram Moolenaar    let [w, a] = spellbadword()
9964536002eSBram Moolenaar    if col('.') > curcol		" don't use word after the cursor
9974536002eSBram Moolenaar      let w = ''
9984536002eSBram Moolenaar    endif
9994536002eSBram Moolenaar    if w != ''
1000a93fa7eeSBram Moolenaar      if a == 'caps'
1001a93fa7eeSBram Moolenaar	let s:suglist = [substitute(w, '.*', '\u&', '')]
1002a93fa7eeSBram Moolenaar      else
10034536002eSBram Moolenaar	let s:suglist = spellsuggest(w, 10)
1004a93fa7eeSBram Moolenaar      endif
100562292587SBram Moolenaar      if len(s:suglist) > 0
10067c63fbc4SBram Moolenaar	if !exists("g:menutrans_spell_change_ARG_to")
10077c63fbc4SBram Moolenaar	  let g:menutrans_spell_change_ARG_to = 'Change\ "%s"\ to'
10087c63fbc4SBram Moolenaar	endif
10097c63fbc4SBram Moolenaar	let s:changeitem = printf(g:menutrans_spell_change_ARG_to, escape(w, ' .'))
10104536002eSBram Moolenaar	let s:fromword = w
10114536002eSBram Moolenaar	let pri = 1
101262292587SBram Moolenaar	" set 'cpo' to include the <CR>
101362292587SBram Moolenaar	let cpo_save = &cpo
101462292587SBram Moolenaar	set cpo&vim
10154536002eSBram Moolenaar	for sug in s:suglist
1016b38dea21SBram Moolenaar	  exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
10174536002eSBram Moolenaar		\ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
10184536002eSBram Moolenaar	  let pri += 1
10194536002eSBram Moolenaar	endfor
10204536002eSBram Moolenaar
10217c63fbc4SBram Moolenaar	if !exists("g:menutrans_spell_add_ARG_to_word_list")
10227c63fbc4SBram Moolenaar	  let g:menutrans_spell_add_ARG_to_word_list = 'Add\ "%s"\ to\ Word\ List'
10237c63fbc4SBram Moolenaar	endif
10247c63fbc4SBram Moolenaar	let s:additem = printf(g:menutrans_spell_add_ARG_to_word_list, escape(w, ' .'))
1025b38dea21SBram Moolenaar	exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
10264536002eSBram Moolenaar
10277c63fbc4SBram Moolenaar	if !exists("g:menutrans_spell_ignore_ARG")
10287c63fbc4SBram Moolenaar	  let g:menutrans_spell_ignore_ARG = 'Ignore\ "%s"'
10297c63fbc4SBram Moolenaar	endif
10307c63fbc4SBram Moolenaar	let s:ignoreitem = printf(g:menutrans_spell_ignore_ARG, escape(w, ' .'))
1031b38dea21SBram Moolenaar	exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
10324536002eSBram Moolenaar
1033b38dea21SBram Moolenaar	anoremenu 1.8 PopUp.-SpellSep- :
103462292587SBram Moolenaar	let &cpo = cpo_save
10354536002eSBram Moolenaar      endif
10364536002eSBram Moolenaar    endif
103762292587SBram Moolenaar    call cursor(0, curcol)	" put the cursor back where it was
10384536002eSBram Moolenaar  endfunc
10394536002eSBram Moolenaar
10405e94a29eSBram Moolenaar  func s:SpellReplace(n)
10414536002eSBram Moolenaar    let l = getline('.')
104262292587SBram Moolenaar    " Move the cursor to the start of the word.
104362292587SBram Moolenaar    call spellbadword()
10444536002eSBram Moolenaar    call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
10454536002eSBram Moolenaar	  \ . strpart(l, col('.') + len(s:fromword) - 1))
10464536002eSBram Moolenaar  endfunc
10474536002eSBram Moolenaar
10485e94a29eSBram Moolenaar  func s:SpellDel()
10494536002eSBram Moolenaar    exe "aunmenu PopUp." . s:changeitem
10504536002eSBram Moolenaar    exe "aunmenu PopUp." . s:additem
10514536002eSBram Moolenaar    exe "aunmenu PopUp." . s:ignoreitem
10524536002eSBram Moolenaar    aunmenu PopUp.-SpellSep-
10534536002eSBram Moolenaar    let s:changeitem = ''
10544536002eSBram Moolenaar  endfun
10554536002eSBram Moolenaar
1056b38dea21SBram Moolenaar  augroup SpellPopupMenu
10574536002eSBram Moolenaar    au! MenuPopup * call <SID>SpellPopup()
1058b38dea21SBram Moolenaar  augroup END
10594536002eSBram Moolenaarendif
1060071d4279SBram Moolenaar
1061071d4279SBram Moolenaar" The GUI toolbar (for MS-Windows and GTK)
1062071d4279SBram Moolenaarif has("toolbar")
1063071d4279SBram Moolenaar  an 1.10 ToolBar.Open			:browse confirm e<CR>
1064071d4279SBram Moolenaar  an <silent> 1.20 ToolBar.Save		:if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
1065071d4279SBram Moolenaar  an 1.30 ToolBar.SaveAll		:browse confirm wa<CR>
1066071d4279SBram Moolenaar
1067071d4279SBram Moolenaar  if has("printer")
1068071d4279SBram Moolenaar    an 1.40   ToolBar.Print		:hardcopy<CR>
1069071d4279SBram Moolenaar    vunmenu   ToolBar.Print
1070071d4279SBram Moolenaar    vnoremenu ToolBar.Print		:hardcopy<CR>
1071071d4279SBram Moolenaar  elseif has("unix")
1072071d4279SBram Moolenaar    an 1.40   ToolBar.Print		:w !lpr<CR>
1073071d4279SBram Moolenaar    vunmenu   ToolBar.Print
1074071d4279SBram Moolenaar    vnoremenu ToolBar.Print		:w !lpr<CR>
1075071d4279SBram Moolenaar  endif
1076071d4279SBram Moolenaar
1077071d4279SBram Moolenaar  an 1.45 ToolBar.-sep1-		<Nop>
1078071d4279SBram Moolenaar  an 1.50 ToolBar.Undo			u
1079071d4279SBram Moolenaar  an 1.60 ToolBar.Redo			<C-R>
1080071d4279SBram Moolenaar
1081071d4279SBram Moolenaar  an 1.65 ToolBar.-sep2-		<Nop>
1082071d4279SBram Moolenaar  vnoremenu 1.70 ToolBar.Cut		"+x
1083071d4279SBram Moolenaar  vnoremenu 1.80 ToolBar.Copy		"+y
1084071d4279SBram Moolenaar  cnoremenu 1.80 ToolBar.Copy		<C-Y>
1085071d4279SBram Moolenaar  nnoremenu 1.90 ToolBar.Paste		"+gP
1086071d4279SBram Moolenaar  cnoremenu	 ToolBar.Paste		<C-R>+
10874ea8fe1dSBram Moolenaar  exe 'vnoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['v']
10884ea8fe1dSBram Moolenaar  exe 'inoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['i']
1089071d4279SBram Moolenaar
1090071d4279SBram Moolenaar  if !has("gui_athena")
1091071d4279SBram Moolenaar    an 1.95   ToolBar.-sep3-		<Nop>
1092e2cc9702SBram Moolenaar    an 1.100  ToolBar.Replace		:promptrepl<CR>
1093071d4279SBram Moolenaar    vunmenu   ToolBar.Replace
10944ea8fe1dSBram Moolenaar    vnoremenu ToolBar.Replace		y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
1095e2cc9702SBram Moolenaar    an 1.110  ToolBar.FindNext		n
1096e2cc9702SBram Moolenaar    an 1.120  ToolBar.FindPrev		N
1097071d4279SBram Moolenaar  endif
1098071d4279SBram Moolenaar
1099071d4279SBram Moolenaar  an 1.215 ToolBar.-sep5-		<Nop>
1100071d4279SBram Moolenaar  an <silent> 1.220 ToolBar.LoadSesn	:call <SID>LoadVimSesn()<CR>
1101071d4279SBram Moolenaar  an <silent> 1.230 ToolBar.SaveSesn	:call <SID>SaveVimSesn()<CR>
1102071d4279SBram Moolenaar  an 1.240 ToolBar.RunScript		:browse so<CR>
1103071d4279SBram Moolenaar
1104071d4279SBram Moolenaar  an 1.245 ToolBar.-sep6-		<Nop>
1105071d4279SBram Moolenaar  an 1.250 ToolBar.Make			:make<CR>
1106071d4279SBram Moolenaar  an 1.270 ToolBar.RunCtags		:exe "!" . g:ctags_command<CR>
1107071d4279SBram Moolenaar  an 1.280 ToolBar.TagJump		g<C-]>
1108071d4279SBram Moolenaar
1109071d4279SBram Moolenaar  an 1.295 ToolBar.-sep7-		<Nop>
1110071d4279SBram Moolenaar  an 1.300 ToolBar.Help			:help<CR>
1111071d4279SBram Moolenaar  an <silent> 1.310 ToolBar.FindHelp	:call <SID>Helpfind()<CR>
1112071d4279SBram Moolenaar
1113071d4279SBram Moolenaar" Only set the tooltips here if not done in a language menu file
1114071d4279SBram Moolenaarif exists("*Do_toolbar_tmenu")
1115071d4279SBram Moolenaar  call Do_toolbar_tmenu()
1116071d4279SBram Moolenaarelse
1117071d4279SBram Moolenaar  let did_toolbar_tmenu = 1
1118071d4279SBram Moolenaar  tmenu ToolBar.Open		Open file
1119071d4279SBram Moolenaar  tmenu ToolBar.Save		Save current file
1120071d4279SBram Moolenaar  tmenu ToolBar.SaveAll		Save all files
1121071d4279SBram Moolenaar  tmenu ToolBar.Print		Print
1122071d4279SBram Moolenaar  tmenu ToolBar.Undo		Undo
1123071d4279SBram Moolenaar  tmenu ToolBar.Redo		Redo
1124071d4279SBram Moolenaar  tmenu ToolBar.Cut		Cut to clipboard
1125071d4279SBram Moolenaar  tmenu ToolBar.Copy		Copy to clipboard
1126071d4279SBram Moolenaar  tmenu ToolBar.Paste		Paste from Clipboard
1127071d4279SBram Moolenaar  if !has("gui_athena")
11285c73622aSBram Moolenaar    tmenu ToolBar.Replace	Find / Replace...
1129071d4279SBram Moolenaar    tmenu ToolBar.FindNext	Find Next
1130071d4279SBram Moolenaar    tmenu ToolBar.FindPrev	Find Previous
1131071d4279SBram Moolenaar  endif
1132b38dea21SBram Moolenaar  tmenu ToolBar.LoadSesn	Choose a session to load
1133071d4279SBram Moolenaar  tmenu ToolBar.SaveSesn	Save current session
1134b38dea21SBram Moolenaar  tmenu ToolBar.RunScript	Choose a Vim Script to run
1135e2cc9702SBram Moolenaar  tmenu ToolBar.Make		Make current project (:make)
1136e2cc9702SBram Moolenaar  tmenu ToolBar.RunCtags	Build tags in current directory tree (!ctags -R .)
1137071d4279SBram Moolenaar  tmenu ToolBar.TagJump		Jump to tag under cursor
1138071d4279SBram Moolenaar  tmenu ToolBar.Help		Vim Help
1139071d4279SBram Moolenaar  tmenu ToolBar.FindHelp	Search Vim Help
1140071d4279SBram Moolenaarendif
1141071d4279SBram Moolenaar
1142071d4279SBram Moolenaar" Select a session to load; default to current session name if present
1143071d4279SBram Moolenaarfun! s:LoadVimSesn()
1144071d4279SBram Moolenaar  if strlen(v:this_session) > 0
1145aba8857aSBram Moolenaar    let name = s:FnameEscape(v:this_session)
1146071d4279SBram Moolenaar  else
1147071d4279SBram Moolenaar    let name = "Session.vim"
1148071d4279SBram Moolenaar  endif
1149071d4279SBram Moolenaar  execute "browse so " . name
1150071d4279SBram Moolenaarendfun
1151071d4279SBram Moolenaar
1152071d4279SBram Moolenaar" Select a session to save; default to current session name if present
1153071d4279SBram Moolenaarfun! s:SaveVimSesn()
1154071d4279SBram Moolenaar  if strlen(v:this_session) == 0
1155071d4279SBram Moolenaar    let v:this_session = "Session.vim"
1156071d4279SBram Moolenaar  endif
1157aba8857aSBram Moolenaar  execute "browse mksession! " . s:FnameEscape(v:this_session)
1158071d4279SBram Moolenaarendfun
1159071d4279SBram Moolenaar
1160071d4279SBram Moolenaarendif
1161071d4279SBram Moolenaar
1162071d4279SBram Moolenaarendif " !exists("did_install_default_menus")
1163071d4279SBram Moolenaar
1164071d4279SBram Moolenaar" Define these items always, so that syntax can be switched on when it wasn't.
1165071d4279SBram Moolenaar" But skip them when the Syntax menu was disabled by the user.
1166071d4279SBram Moolenaarif !exists("did_install_syntax_menu")
1167071d4279SBram Moolenaar  an 50.212 &Syntax.&Manual		:syn manual<CR>
1168071d4279SBram Moolenaar  an 50.214 &Syntax.A&utomatic		:syn on<CR>
1169214641f7SBram Moolenaar  an <silent> 50.216 &Syntax.On/Off\ for\ &This\ File :call <SID>SynOnOff()<CR>
1170071d4279SBram Moolenaar  if !exists("*s:SynOnOff")
1171071d4279SBram Moolenaar    fun s:SynOnOff()
1172071d4279SBram Moolenaar      if has("syntax_items")
1173071d4279SBram Moolenaar	syn clear
1174071d4279SBram Moolenaar      else
1175071d4279SBram Moolenaar	if !exists("g:syntax_on")
1176071d4279SBram Moolenaar	  syn manual
1177071d4279SBram Moolenaar	endif
1178071d4279SBram Moolenaar	set syn=ON
1179071d4279SBram Moolenaar      endif
1180071d4279SBram Moolenaar    endfun
1181071d4279SBram Moolenaar  endif
1182071d4279SBram Moolenaarendif
1183071d4279SBram Moolenaar
1184071d4279SBram Moolenaar
1185071d4279SBram Moolenaar" Install the Syntax menu only when filetype.vim has been loaded or when
1186071d4279SBram Moolenaar" manual syntax highlighting is enabled.
1187071d4279SBram Moolenaar" Avoid installing the Syntax menu twice.
1188071d4279SBram Moolenaarif (exists("did_load_filetypes") || exists("syntax_on"))
1189071d4279SBram Moolenaar	\ && !exists("did_install_syntax_menu")
1190071d4279SBram Moolenaar  let did_install_syntax_menu = 1
1191071d4279SBram Moolenaar
1192071d4279SBram Moolenaar" Skip setting up the individual syntax selection menus unless
1193071d4279SBram Moolenaar" do_syntax_sel_menu is defined (it takes quite a bit of time).
1194071d4279SBram Moolenaarif exists("do_syntax_sel_menu")
1195071d4279SBram Moolenaar  runtime! synmenu.vim
1196071d4279SBram Moolenaarelse
1197040c1febSBram Moolenaar  an <silent> 50.10 &Syntax.&Show\ File\ Types\ in\ Menu	:let do_syntax_sel_menu = 1<Bar>runtime! synmenu.vim<Bar>aunmenu &Syntax.&Show\ File\ Types\ in\ Menu<CR>
1198071d4279SBram Moolenaar  an 50.195 &Syntax.-SEP1-		<Nop>
1199071d4279SBram Moolenaarendif
1200071d4279SBram Moolenaar
1201071d4279SBram Moolenaaran 50.210 &Syntax.&Off			:syn off<CR>
1202071d4279SBram Moolenaaran 50.700 &Syntax.-SEP3-		<Nop>
1203214641f7SBram Moolenaaran 50.710 &Syntax.Co&lor\ Test		:sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
1204214641f7SBram Moolenaaran 50.720 &Syntax.&Highlight\ Test	:runtime syntax/hitest.vim<CR>
1205071d4279SBram Moolenaaran 50.730 &Syntax.&Convert\ to\ HTML	:runtime syntax/2html.vim<CR>
1206071d4279SBram Moolenaar
1207071d4279SBram Moolenaarendif " !exists("did_install_syntax_menu")
1208071d4279SBram Moolenaar
1209071d4279SBram Moolenaar" Restore the previous value of 'cpoptions'.
1210071d4279SBram Moolenaarlet &cpo = s:cpo_save
1211071d4279SBram Moolenaarunlet s:cpo_save
1212071d4279SBram Moolenaar
1213071d4279SBram Moolenaar" vim: set sw=2 :
1214