blob: f01ca7719be91f8f9422a030513d169deaeba435 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim support file to define the default menus
2" You can also use this as a start for your own set of menus.
3"
4" Maintainer: Bram Moolenaar <Bram@vim.org>
Bram Moolenaare24c5b32019-12-10 22:11:53 +01005" Last Change: 2019 Dec 10
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" Note that ":an" (short for ":anoremenu") is often used to make a menu work
8" in all modes and avoid side effects from mappings defined by the user.
9
10" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
11" <CR> would not be recognized. See ":help 'cpoptions'".
12let s:cpo_save = &cpo
13set cpo&vim
14
15" Avoid installing the menus twice
16if !exists("did_install_default_menus")
17let did_install_default_menus = 1
18
19
20if exists("v:lang") || &langmenu != ""
21 " Try to find a menu translation file for the current language.
22 if &langmenu != ""
23 if &langmenu =~ "none"
24 let s:lang = ""
25 else
26 let s:lang = &langmenu
27 endif
28 else
29 let s:lang = v:lang
30 endif
31 " A language name must be at least two characters, don't accept "C"
Bram Moolenaar5be4cee2019-09-27 19:34:08 +020032 " Also skip "en_US" to avoid picking up "en_gb" translations.
33 if strlen(s:lang) > 1 && s:lang !~? '^en_us'
Bram Moolenaar071d4272004-06-13 20:20:40 +000034 " When the language does not include the charset add 'encoding'
35 if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
36 let s:lang = s:lang . '.' . &enc
37 endif
38
39 " We always use a lowercase name.
40 " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
41 " systems appear to use this.
42 " Change spaces to underscores.
43 let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
44 let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
45 let s:lang = substitute(s:lang, " ", "_", "g")
46 " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
47 let s:lang = substitute(s:lang, "@euro", "", "")
48 " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
49 " same menu file for them.
50 let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
51 menutrans clear
52 exe "runtime! lang/menu_" . s:lang . ".vim"
53
54 if !exists("did_menu_trans")
55 " There is no exact match, try matching with a wildcard added
56 " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
57 let s:lang = substitute(s:lang, '\.[^.]*', "", "")
Bram Moolenaar05159a02005-02-26 23:04:13 +000058 exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
Bram Moolenaar68f1b1b2018-07-23 05:10:14 +020060 if !exists("did_menu_trans") && s:lang =~ '_'
61 " If the language includes a region try matching without that region.
62 " (e.g. find menu_de.vim if s:lang == de_DE).
63 let langonly = substitute(s:lang, '_.*', "", "")
64 exe "runtime! lang/menu_" . langonly . "[^a-z]*vim"
65 endif
66
Bram Moolenaare2cc9702005-03-15 22:43:58 +000067 if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
Bram Moolenaar071d4272004-06-13 20:20:40 +000068 " On windows locale names are complicated, try using $LANG, it might
Bram Moolenaare2cc9702005-03-15 22:43:58 +000069 " have been set by set_init_1(). But don't do this for "en" or "en_us".
Bram Moolenaar2ce06f62005-01-31 19:19:04 +000070 " But don't match "slovak" when $LANG is "sl".
71 exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
Bram Moolenaar071d4272004-06-13 20:20:40 +000072 endif
73 endif
74 endif
75endif
76
77
78" Help menu
79an 9999.10 &Help.&Overview<Tab><F1> :help<CR>
80an 9999.20 &Help.&User\ Manual :help usr_toc<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +010081an 9999.30 &Help.&How-To\ Links :help how-to<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +000082an <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR>
83an 9999.45 &Help.-sep1- <Nop>
84an 9999.50 &Help.&Credits :help credits<CR>
85an 9999.60 &Help.Co&pying :help copying<CR>
86an 9999.70 &Help.&Sponsor/Register :help sponsor<CR>
87an 9999.70 &Help.O&rphans :help kcc<CR>
88an 9999.75 &Help.-sep2- <Nop>
89an 9999.80 &Help.&Version :version<CR>
90an 9999.90 &Help.&About :intro<CR>
91
92fun! s:Helpfind()
93 if !exists("g:menutrans_help_dialog")
94 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')"
95 endif
96 let h = inputdialog(g:menutrans_help_dialog)
97 if h != ""
98 let v:errmsg = ""
99 silent! exe "help " . h
100 if v:errmsg != ""
101 echo v:errmsg
102 endif
103 endif
104endfun
105
106" File menu
107an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR>
108an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR>
Bram Moolenaar5c8837f2006-02-25 21:52:33 +0000109an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew :browse tabnew<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000110an 10.325 &File.&New<Tab>:enew :confirm enew<CR>
111an <silent> 10.330 &File.&Close<Tab>:close
Bram Moolenaarcab49df2011-03-22 17:40:10 +0100112 \ :if winheight(2) < 0 && tabpagewinnr(2) == 0 <Bar>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000113 \ confirm enew <Bar>
114 \ else <Bar>
115 \ confirm close <Bar>
116 \ endif<CR>
117an 10.335 &File.-SEP1- <Nop>
118an <silent> 10.340 &File.&Save<Tab>:w :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
119an 10.350 &File.Save\ &As\.\.\.<Tab>:sav :browse confirm saveas<CR>
120
121if has("diff")
122 an 10.400 &File.-SEP2- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100123 an 10.410 &File.Split\ &Diff\ With\.\.\. :browse vert diffsplit<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000124 an 10.420 &File.Split\ Patched\ &By\.\.\. :browse vert diffpatch<CR>
125endif
126
127if has("printer")
128 an 10.500 &File.-SEP3- <Nop>
129 an 10.510 &File.&Print :hardcopy<CR>
130 vunmenu &File.&Print
131 vnoremenu &File.&Print :hardcopy<CR>
132elseif has("unix")
133 an 10.500 &File.-SEP3- <Nop>
134 an 10.510 &File.&Print :w !lpr<CR>
135 vunmenu &File.&Print
136 vnoremenu &File.&Print :w !lpr<CR>
137endif
138an 10.600 &File.-SEP4- <Nop>
139an 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR>
140an 10.620 &File.E&xit<Tab>:qa :confirm qa<CR>
141
Bram Moolenaar071d4272004-06-13 20:20:40 +0000142func! <SID>SelectAll()
Bram Moolenaara3e6bc92013-01-30 14:18:00 +0100143 exe "norm! gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000144endfunc
145
Bram Moolenaaraba88572008-06-25 20:13:35 +0000146func! s:FnameEscape(fname)
147 if exists('*fnameescape')
148 return fnameescape(a:fname)
Bram Moolenaar5c736222010-01-06 20:54:52 +0100149 endif
Bram Moolenaaraba88572008-06-25 20:13:35 +0000150 return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
151endfunc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152
153" Edit menu
154an 20.310 &Edit.&Undo<Tab>u u
155an 20.320 &Edit.&Redo<Tab>^R <C-R>
156an 20.330 &Edit.Rep&eat<Tab>\. .
157
158an 20.335 &Edit.-SEP1- <Nop>
159vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
160vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
161cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100162if exists(':tlmenu')
163 tlnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-W>:<C-Y><CR>
164endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000165nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
166cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
Bram Moolenaar4c5d8152018-10-19 22:36:53 +0200167if exists(':tlmenu')
168 tlnoremenu &Edit.&Paste<Tab>"+gP <C-W>"+
169endif
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000170exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v']
171exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['i']
Bram Moolenaar071d4272004-06-13 20:20:40 +0000172nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p
173inoremenu &Edit.Put\ &Before<Tab>[p <C-O>[p
174nnoremenu 20.380 &Edit.Put\ &After<Tab>]p ]p
175inoremenu &Edit.Put\ &After<Tab>]p <C-O>]p
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100176if has("win32")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000177 vnoremenu 20.390 &Edit.&Delete<Tab>x x
178endif
179noremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG :<C-U>call <SID>SelectAll()<CR>
180inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-O>:call <SID>SelectAll()<CR>
181cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-U>call <SID>SelectAll()<CR>
182
183an 20.405 &Edit.-SEP2- <Nop>
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100184if has("win32") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185 an 20.410 &Edit.&Find\.\.\. :promptfind<CR>
186 vunmenu &Edit.&Find\.\.\.
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000187 vnoremenu <silent> &Edit.&Find\.\.\. y:promptfind <C-R>=<SID>FixFText()<CR><CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000188 an 20.420 &Edit.Find\ and\ Rep&lace\.\.\. :promptrepl<CR>
189 vunmenu &Edit.Find\ and\ Rep&lace\.\.\.
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000190 vnoremenu <silent> &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000191else
192 an 20.410 &Edit.&Find<Tab>/ /
193 an 20.420 &Edit.Find\ and\ Rep&lace<Tab>:%s :%s/
194 vunmenu &Edit.Find\ and\ Rep&lace<Tab>:%s
195 vnoremenu &Edit.Find\ and\ Rep&lace<Tab>:s :s/
196endif
197
198an 20.425 &Edit.-SEP3- <Nop>
199an 20.430 &Edit.Settings\ &Window :options<CR>
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000200an 20.435 &Edit.Startup\ &Settings :call <SID>EditVimrc()<CR>
201
202fun! s:EditVimrc()
203 if $MYVIMRC != ''
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000204 let fname = $MYVIMRC
Bram Moolenaar42ebd062016-07-17 13:35:14 +0200205 elseif has("win32")
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000206 if $HOME != ''
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000207 let fname = $HOME . "/_vimrc"
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000208 else
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000209 let fname = $VIM . "/_vimrc"
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000210 endif
211 elseif has("amiga")
212 let fname = "s:.vimrc"
213 else
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000214 let fname = $HOME . "/.vimrc"
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000215 endif
Bram Moolenaaraba88572008-06-25 20:13:35 +0000216 let fname = s:FnameEscape(fname)
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000217 if &mod
218 exe "split " . fname
219 else
220 exe "edit " . fname
221 endif
222endfun
Bram Moolenaar071d4272004-06-13 20:20:40 +0000223
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000224fun! s:FixFText()
225 " Fix text in nameless register to be used with :promptfind.
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000226 return substitute(@", "[\r\n]", '\\n', 'g')
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000227endfun
228
Bram Moolenaar071d4272004-06-13 20:20:40 +0000229" Edit/Global Settings
230an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100231an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignoring\ Case<Tab>:set\ ic! :set ic! ic?<CR>
232an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! :set sm! sm?<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233
Bram Moolenaar214641f2017-03-05 17:04:09 +0100234an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 1\ :set so=1<CR>
235an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 2\ :set so=2<CR>
236an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 3\ :set so=3<CR>
237an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 4\ :set so=4<CR>
238an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 5\ :set so=5<CR>
239an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 7\ :set so=7<CR>
240an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 10\ :set so=10<CR>
241an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 100\ :set so=100<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242
243an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
244an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100245an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ Mode :set ve=insert<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000246an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
247an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
248an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im! :set im!<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100249an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! :set cp!<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000250an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\. :call <SID>SearchP()<CR>
251an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\. :call <SID>TagFiles()<CR>
252"
253" GUI options
254an 20.440.300 &Edit.&Global\ Settings.-SEP1- <Nop>
255an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar :call <SID>ToggleGuiOption("T")<CR>
256an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
257an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR>
258an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
259
260fun! s:SearchP()
261 if !exists("g:menutrans_path_dialog")
262 let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
263 endif
264 let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
265 if n != ""
266 let &path = substitute(n, ' ', '\\ ', 'g')
267 endif
268endfun
269
270fun! s:TagFiles()
271 if !exists("g:menutrans_tags_dialog")
272 let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
273 endif
274 let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
275 if n != ""
276 let &tags = substitute(n, ' ', '\\ ', 'g')
277 endif
278endfun
279
280fun! s:ToggleGuiOption(option)
281 " If a:option is already set in guioptions, then we want to remove it
282 if match(&guioptions, "\\C" . a:option) > -1
283 exec "set go-=" . a:option
284 else
285 exec "set go+=" . a:option
286 endif
287endfun
288
289" Edit/File Settings
290
291" Boolean options
292an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu! :set nu! nu?<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100293an 20.440.105 &Edit.F&ile\ Settings.Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! :set rnu! rnu?<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000294an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list! :set list! list?<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100295an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrapping<Tab>:set\ wrap! :set wrap! wrap?<CR>
296an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! :set lbr! lbr?<CR>
297an 20.440.160 &Edit.F&ile\ Settings.Toggle\ Tab\ &Expanding<Tab>:set\ et! :set et! et?<CR>
298an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &Auto\ Indenting<Tab>:set\ ai! :set ai! ai?<CR>
299an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-Style\ Indenting<Tab>:set\ cin! :set cin! cin?<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000300
301" other options
302an 20.440.600 &Edit.F&ile\ Settings.-SEP2- <Nop>
303an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2 :set sw=2 sw?<CR>
304an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3 :set sw=3 sw?<CR>
305an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4 :set sw=4 sw?<CR>
306an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5 :set sw=5 sw?<CR>
307an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6 :set sw=6 sw?<CR>
308an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8 :set sw=8 sw?<CR>
309
310an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2 :set sts=2 sts?<CR>
311an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3 :set sts=3 sts?<CR>
312an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4 :set sts=4 sts?<CR>
313an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5 :set sts=5 sts?<CR>
314an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6 :set sts=6 sts?<CR>
315an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR>
316
317an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR>
318an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR>
319fun! s:TextWidth()
320 if !exists("g:menutrans_textwidth_dialog")
321 let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
322 endif
323 let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
324 if n != ""
Bram Moolenaarad3b3662013-05-17 18:14:19 +0200325 " Remove leading zeros to avoid it being used as an octal number.
326 " But keep a zero by itself.
327 let tw = substitute(n, "^0*", "", "")
Bram Moolenaar214641f2017-03-05 17:04:09 +0100328 let &tw = tw == '' ? 0 : tw
Bram Moolenaar071d4272004-06-13 20:20:40 +0000329 endif
330endfun
331
332fun! s:FileFormat()
333 if !exists("g:menutrans_fileformat_dialog")
334 let g:menutrans_fileformat_dialog = "Select format for writing the file"
335 endif
336 if !exists("g:menutrans_fileformat_choices")
337 let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
338 endif
339 if &ff == "dos"
340 let def = 2
341 elseif &ff == "mac"
342 let def = 3
343 else
344 let def = 1
345 endif
346 let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
347 if n == 1
348 set ff=unix
349 elseif n == 2
350 set ff=dos
351 elseif n == 3
352 set ff=mac
353 endif
354endfun
355
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100356let s:did_setup_color_schemes = 0
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200357
Bram Moolenaar071d4272004-06-13 20:20:40 +0000358" Setup the Edit.Color Scheme submenu
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100359func! s:SetupColorSchemes() abort
360 if s:did_setup_color_schemes
361 return
362 endif
363 let s:did_setup_color_schemes = 1
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200364
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100365 let n = globpath(&runtimepath, "colors/*.vim", 1, 1)
Bram Moolenaar30e9b3c2019-09-07 16:24:12 +0200366 let n += globpath(&packpath, "pack/*/start/*/colors/*.vim", 1, 1)
367 let n += globpath(&packpath, "pack/*/opt/*/colors/*.vim", 1, 1)
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200368
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100369 " Ignore case for VMS and windows, sort on name
370 let names = sort(map(n, 'substitute(v:val, "\\c.*[/\\\\:\\]]\\([^/\\\\:]*\\)\\.vim", "\\1", "")'), 1)
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200371
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100372 " define all the submenu entries
373 let idx = 100
374 for name in names
375 exe "an 20.450." . idx . ' &Edit.C&olor\ Scheme.' . name . " :colors " . name . "<CR>"
376 let idx = idx + 10
377 endfor
378 silent! aunmenu &Edit.Show\ C&olor\ Schemes\ in\ Menu
379endfun
380if exists("do_no_lazyload_menus")
381 call s:SetupColorSchemes()
382else
383 an <silent> 20.450 &Edit.Show\ C&olor\ Schemes\ in\ Menu :call <SID>SetupColorSchemes()<CR>
384endif
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200385
Bram Moolenaar071d4272004-06-13 20:20:40 +0000386
387" Setup the Edit.Keymap submenu
388if has("keymap")
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100389 let s:did_setup_keymaps = 0
390
391 func! s:SetupKeymaps() abort
392 if s:did_setup_keymaps
393 return
394 endif
395 let s:did_setup_keymaps = 1
396
397 let n = globpath(&runtimepath, "keymap/*.vim", 1, 1)
398 if !empty(n)
399 let idx = 100
400 an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
401 for name in n
402 " Ignore case for VMS and windows
403 let name = substitute(name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
404 exe "an 20.460." . idx . ' &Edit.&Keymap.' . name . " :set keymap=" . name . "<CR>"
405 let idx = idx + 10
406 endfor
407 endif
408 silent! aunmenu &Edit.Show\ &Keymaps\ in\ Menu
409 endfun
410 if exists("do_no_lazyload_menus")
411 call s:SetupKeymaps()
412 else
413 an <silent> 20.460 &Edit.Show\ &Keymaps\ in\ Menu :call <SID>SetupKeymaps()<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000414 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000415endif
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100416if has("win32") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000417 an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
418endif
419
420" Programming menu
421if !exists("g:ctags_command")
422 if has("vms")
Bram Moolenaard675e2c2007-01-09 14:09:25 +0000423 let g:ctags_command = "mc vim:ctags *.*"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000424 else
425 let g:ctags_command = "ctags -R ."
426 endif
427endif
428
Bram Moolenaar214641f2017-03-05 17:04:09 +0100429an 40.300 &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]>
430vunmenu &Tools.&Jump\ to\ This\ Tag<Tab>g^]
431vnoremenu &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]>
432an 40.310 &Tools.Jump\ &Back<Tab>^T <C-T>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000433an 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR>
434
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000435if has("folding") || has("spell")
436 an 40.330 &Tools.-SEP1- <Nop>
437endif
438
Bram Moolenaarf3681cc2005-06-08 22:03:13 +0000439" Tools.Spelling Menu
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000440if has("spell")
441 an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On :set spell<CR>
442 an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off :set nospell<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100443 an 40.335.130 &Tools.&Spelling.To\ &Next\ Error<Tab>]s ]s
444 an 40.335.130 &Tools.&Spelling.To\ &Previous\ Error<Tab>[s [s
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000445 an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z= z=
Bram Moolenaar214641f2017-03-05 17:04:09 +0100446 an 40.335.150 &Tools.&Spelling.&Repeat\ Correction<Tab>:spellrepall :spellrepall<CR>
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000447 an 40.335.200 &Tools.&Spelling.-SEP1- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100448 an 40.335.210 &Tools.&Spelling.Set\ Language\ to\ "en" :set spl=en spell<CR>
449 an 40.335.220 &Tools.&Spelling.Set\ Language\ to\ "en_au" :set spl=en_au spell<CR>
450 an 40.335.230 &Tools.&Spelling.Set\ Language\ to\ "en_ca" :set spl=en_ca spell<CR>
451 an 40.335.240 &Tools.&Spelling.Set\ Language\ to\ "en_gb" :set spl=en_gb spell<CR>
452 an 40.335.250 &Tools.&Spelling.Set\ Language\ to\ "en_nz" :set spl=en_nz spell<CR>
453 an 40.335.260 &Tools.&Spelling.Set\ Language\ to\ "en_us" :set spl=en_us spell<CR>
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000454 an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
455
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000456 let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000457 func! s:SpellLang()
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000458 for cmd in s:undo_spellang
459 exe "silent! " . cmd
460 endfor
461 let s:undo_spellang = []
462
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000463 if &enc == "iso-8859-15"
464 let enc = "latin1"
465 else
466 let enc = &enc
467 endif
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000468
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200469 if !exists("g:menutrans_set_lang_to")
Bram Moolenaar214641f2017-03-05 17:04:09 +0100470 let g:menutrans_set_lang_to = 'Set Language to'
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200471 endif
472
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000473 let found = 0
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100474 let s = globpath(&runtimepath, "spell/*." . enc . ".spl", 1, 1)
475 if !empty(s)
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000476 let n = 300
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100477 for f in s
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000478 let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000479 if nm != "en" && nm !~ '/'
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200480 let _nm = nm
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000481 let found += 1
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200482 let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"'
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000483 exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
484 let s:undo_spellang += ['aun ' . menuname]
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000485 endif
486 let n += 10
487 endfor
488 endif
489 if found == 0
490 echomsg "Could not find other spell files"
491 elseif found == 1
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200492 echomsg "Found spell file " . _nm
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000493 else
494 echomsg "Found " . found . " more spell files"
495 endif
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000496 " Need to redo this when 'encoding' is changed.
497 augroup spellmenu
498 au! EncodingChanged * call <SID>SpellLang()
499 augroup END
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000500 endfun
501
502endif
503
Bram Moolenaar071d4272004-06-13 20:20:40 +0000504" Tools.Fold Menu
505if has("folding")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000506 " open close folds
Bram Moolenaar214641f2017-03-05 17:04:09 +0100507 an 40.340.110 &Tools.&Folding.&Enable/Disable\ Folds<Tab>zi zi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000508 an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv zv
Bram Moolenaar214641f2017-03-05 17:04:09 +0100509 an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx zMzx
510 inoremenu 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx <C-O>zM<C-O>zx
511 an 40.340.130 &Tools.&Folding.C&lose\ More\ Folds<Tab>zm zm
512 an 40.340.140 &Tools.&Folding.&Close\ All\ Folds<Tab>zM zM
513 an 40.340.150 &Tools.&Folding.O&pen\ More\ Folds<Tab>zr zr
Bram Moolenaar3df01732017-02-17 22:47:16 +0100514 an 40.340.160 &Tools.&Folding.&Open\ All\ Folds<Tab>zR zR
Bram Moolenaar071d4272004-06-13 20:20:40 +0000515 " fold method
516 an 40.340.200 &Tools.&Folding.-SEP1- <Nop>
517 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual :set fdm=manual<CR>
518 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent :set fdm=indent<CR>
519 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
520 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax :set fdm=syntax<CR>
521 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff :set fdm=diff<CR>
522 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker :set fdm=marker<CR>
523 " create and delete folds
524 vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf zf
525 an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd zd
526 an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD zD
527 " moving around in folds
528 an 40.340.300 &Tools.&Folding.-SEP2- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100529 an 40.340.310.10 &Tools.&Folding.Fold\ Col&umn\ Width.\ &0\ :set fdc=0<CR>
530 an 40.340.310.20 &Tools.&Folding.Fold\ Col&umn\ Width.\ &2\ :set fdc=2<CR>
531 an 40.340.310.30 &Tools.&Folding.Fold\ Col&umn\ Width.\ &3\ :set fdc=3<CR>
532 an 40.340.310.40 &Tools.&Folding.Fold\ Col&umn\ Width.\ &4\ :set fdc=4<CR>
533 an 40.340.310.50 &Tools.&Folding.Fold\ Col&umn\ Width.\ &5\ :set fdc=5<CR>
534 an 40.340.310.60 &Tools.&Folding.Fold\ Col&umn\ Width.\ &6\ :set fdc=6<CR>
535 an 40.340.310.70 &Tools.&Folding.Fold\ Col&umn\ Width.\ &7\ :set fdc=7<CR>
536 an 40.340.310.80 &Tools.&Folding.Fold\ Col&umn\ Width.\ &8\ :set fdc=8<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000537endif " has folding
538
539if has("diff")
540 an 40.350.100 &Tools.&Diff.&Update :diffupdate<CR>
541 an 40.350.110 &Tools.&Diff.&Get\ Block :diffget<CR>
542 vunmenu &Tools.&Diff.&Get\ Block
543 vnoremenu &Tools.&Diff.&Get\ Block :diffget<CR>
544 an 40.350.120 &Tools.&Diff.&Put\ Block :diffput<CR>
545 vunmenu &Tools.&Diff.&Put\ Block
546 vnoremenu &Tools.&Diff.&Put\ Block :diffput<CR>
547endif
548
549an 40.358 &Tools.-SEP2- <Nop>
550an 40.360 &Tools.&Make<Tab>:make :make<CR>
551an 40.370 &Tools.&List\ Errors<Tab>:cl :cl<CR>
552an 40.380 &Tools.L&ist\ Messages<Tab>:cl! :cl!<CR>
553an 40.390 &Tools.&Next\ Error<Tab>:cn :cn<CR>
554an 40.400 &Tools.&Previous\ Error<Tab>:cp :cp<CR>
555an 40.410 &Tools.&Older\ List<Tab>:cold :colder<CR>
556an 40.420 &Tools.N&ewer\ List<Tab>:cnew :cnewer<CR>
557an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin :cwin<CR>
558an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen :copen<CR>
559an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose :cclose<CR>
560
561an 40.520 &Tools.-SEP3- <Nop>
562an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
563 \ :call <SID>XxdConv()<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100564an <silent> 40.540 &Tools.Conve&rt\ Back<Tab>:%!xxd\ -r
Bram Moolenaar071d4272004-06-13 20:20:40 +0000565 \ :call <SID>XxdBack()<CR>
566
567" Use a function to do the conversion, so that it also works with 'insertmode'
568" set.
569func! s:XxdConv()
570 let mod = &mod
571 if has("vms")
572 %!mc vim:xxd
573 else
574 call s:XxdFind()
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100575 exe '%!' . g:xxdprogram
Bram Moolenaar071d4272004-06-13 20:20:40 +0000576 endif
577 if getline(1) =~ "^0000000:" " only if it worked
578 set ft=xxd
579 endif
580 let &mod = mod
581endfun
582
583func! s:XxdBack()
584 let mod = &mod
585 if has("vms")
586 %!mc vim:xxd -r
587 else
588 call s:XxdFind()
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100589 exe '%!' . g:xxdprogram . ' -r'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000590 endif
591 set ft=
592 doautocmd filetypedetect BufReadPost
593 let &mod = mod
594endfun
595
596func! s:XxdFind()
597 if !exists("g:xxdprogram")
598 " On the PC xxd may not be in the path but in the install directory
Bram Moolenaar42ebd062016-07-17 13:35:14 +0200599 if has("win32") && !executable("xxd")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000600 let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100601 if g:xxdprogram =~ ' '
602 let g:xxdprogram = '"' .. g:xxdprogram .. '"'
603 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000604 else
605 let g:xxdprogram = "xxd"
606 endif
607 endif
608endfun
609
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100610let s:did_setup_compilers = 0
611
Bram Moolenaar071d4272004-06-13 20:20:40 +0000612" Setup the Tools.Compiler submenu
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100613func! s:SetupCompilers() abort
614 if s:did_setup_compilers
615 return
Bram Moolenaar071d4272004-06-13 20:20:40 +0000616 endif
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100617 let s:did_setup_compilers = 1
618
619 let n = globpath(&runtimepath, "compiler/*.vim", 1, 1)
620 let idx = 100
621 for name in n
622 " Ignore case for VMS and windows
623 let name = substitute(name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
624 exe "an 30.440." . idx . ' &Tools.Se&t\ Compiler.' . name . " :compiler " . name . "<CR>"
625 let idx = idx + 10
626 endfor
627 silent! aunmenu &Tools.Show\ Compiler\ Se&ttings\ in\ Menu
628endfun
629if exists("do_no_lazyload_menus")
630 call s:SetupCompilers()
631else
632 an <silent> 30.440 &Tools.Show\ Compiler\ Se&ttings\ in\ Menu :call <SID>SetupCompilers()<CR>
633endif
634
635" Load ColorScheme, Compiler Setting and Keymap menus when idle.
636if !exists("do_no_lazyload_menus")
637 func! s:SetupLazyloadMenus()
638 call s:SetupColorSchemes()
639 call s:SetupCompilers()
640 if has("keymap")
641 call s:SetupKeymaps()
642 endif
643 endfunc
644 augroup SetupLazyloadMenus
645 au!
646 au CursorHold,CursorHoldI * call <SID>SetupLazyloadMenus() | au! SetupLazyloadMenus
647 augroup END
648endif
649
Bram Moolenaar071d4272004-06-13 20:20:40 +0000650
651if !exists("no_buffers_menu")
652
653" Buffer list menu -- Setup functions & actions
654
655" wait with building the menu until after loading 'session' files. Makes
656" startup faster.
657let s:bmenu_wait = 1
658
659if !exists("bmenu_priority")
660 let bmenu_priority = 60
661endif
662
663func! s:BMAdd()
664 if s:bmenu_wait == 0
665 " when adding too many buffers, redraw in short format
666 if s:bmenu_count == &menuitems && s:bmenu_short == 0
667 call s:BMShow()
668 else
669 call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
670 let s:bmenu_count = s:bmenu_count + 1
671 endif
672 endif
673endfunc
674
675func! s:BMRemove()
676 if s:bmenu_wait == 0
677 let name = expand("<afile>")
678 if isdirectory(name)
679 return
680 endif
681 let munge = <SID>BMMunge(name, expand("<abuf>"))
682
683 if s:bmenu_short == 0
684 exe 'silent! aun &Buffers.' . munge
685 else
686 exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
687 endif
688 let s:bmenu_count = s:bmenu_count - 1
689 endif
690endfunc
691
692" Create the buffer menu (delete an existing one first).
693func! s:BMShow(...)
694 let s:bmenu_wait = 1
695 let s:bmenu_short = 1
696 let s:bmenu_count = 0
697 "
698 " get new priority, if exists
699 if a:0 == 1
700 let g:bmenu_priority = a:1
701 endif
702
Bram Moolenaare24c5b32019-12-10 22:11:53 +0100703 " Remove old menu, if exists; keep one entry to avoid a torn off menu to
704 " disappear. Use try/catch to avoid setting v:errmsg
705 try | unmenu &Buffers | catch | endtry
Bram Moolenaar071d4272004-06-13 20:20:40 +0000706 exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
Bram Moolenaare24c5b32019-12-10 22:11:53 +0100707 try | unmenu! &Buffers | catch | endtry
Bram Moolenaar071d4272004-06-13 20:20:40 +0000708
709 " create new menu; set 'cpo' to include the <CR>
710 let cpo_save = &cpo
711 set cpo&vim
712 exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
713 exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
714 exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
715 exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
716 exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
717 exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
718 let &cpo = cpo_save
719 unmenu &Buffers.Dummy
720
721 " figure out how many buffers there are
722 let buf = 1
723 while buf <= bufnr('$')
724 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000725 let s:bmenu_count = s:bmenu_count + 1
726 endif
727 let buf = buf + 1
728 endwhile
729 if s:bmenu_count <= &menuitems
730 let s:bmenu_short = 0
731 endif
732
733 " iterate through buffer list, adding each buffer to the menu:
734 let buf = 1
735 while buf <= bufnr('$')
736 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000737 call <SID>BMFilename(bufname(buf), buf)
738 endif
739 let buf = buf + 1
740 endwhile
741 let s:bmenu_wait = 0
742 aug buffer_list
743 au!
744 au BufCreate,BufFilePost * call <SID>BMAdd()
745 au BufDelete,BufFilePre * call <SID>BMRemove()
746 aug END
747endfunc
748
749func! s:BMHash(name)
750 " Make name all upper case, so that chars are between 32 and 96
751 let nm = substitute(a:name, ".*", '\U\0', "")
752 if has("ebcdic")
753 " HACK: Replace all non alphabetics with 'Z'
754 " Just to make it work for now.
755 let nm = substitute(nm, "[^A-Z]", 'Z', "g")
756 let sp = char2nr('A') - 1
757 else
758 let sp = char2nr(' ')
759 endif
760 " convert first six chars into a number for sorting:
761 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)
762endfunc
763
764func! s:BMHash2(name)
765 let nm = substitute(a:name, ".", '\L\0', "")
766 " Not exactly right for EBCDIC...
767 if nm[0] < 'a' || nm[0] > 'z'
768 return '&others.'
769 elseif nm[0] <= 'd'
770 return '&abcd.'
771 elseif nm[0] <= 'h'
772 return '&efgh.'
773 elseif nm[0] <= 'l'
774 return '&ijkl.'
775 elseif nm[0] <= 'p'
776 return '&mnop.'
777 elseif nm[0] <= 't'
778 return '&qrst.'
779 else
780 return '&u-z.'
781 endif
782endfunc
783
784" insert a buffer name into the buffer menu:
785func! s:BMFilename(name, num)
786 if isdirectory(a:name)
787 return
788 endif
789 let munge = <SID>BMMunge(a:name, a:num)
790 let hash = <SID>BMHash(munge)
791 if s:bmenu_short == 0
792 let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
793 else
794 let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
795 endif
796 " set 'cpo' to include the <CR>
797 let cpo_save = &cpo
798 set cpo&vim
799 exe name . ' :confirm b' . a:num . '<CR>'
800 let &cpo = cpo_save
801endfunc
802
803" Truncate a long path to fit it in a menu item.
804if !exists("g:bmenu_max_pathlen")
805 let g:bmenu_max_pathlen = 35
806endif
807func! s:BMTruncName(fname)
808 let name = a:fname
809 if g:bmenu_max_pathlen < 5
810 let name = ""
811 else
812 let len = strlen(name)
813 if len > g:bmenu_max_pathlen
814 let amountl = (g:bmenu_max_pathlen / 2) - 2
815 let amountr = g:bmenu_max_pathlen - amountl - 3
816 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
817 let left = substitute(name, pattern, '\1', '')
818 let right = substitute(name, pattern, '\2', '')
819 if strlen(left) + strlen(right) < len
820 let name = left . '...' . right
821 endif
822 endif
823 endif
824 return name
825endfunc
826
827func! s:BMMunge(fname, bnum)
828 let name = a:fname
829 if name == ''
830 if !exists("g:menutrans_no_file")
Bram Moolenaar6dc819b2018-07-03 16:42:19 +0200831 let g:menutrans_no_file = "[No Name]"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000832 endif
833 let name = g:menutrans_no_file
834 else
835 let name = fnamemodify(name, ':p:~')
836 endif
837 " detach file name and separate it out:
838 let name2 = fnamemodify(name, ':t')
839 if a:bnum >= 0
840 let name2 = name2 . ' (' . a:bnum . ')'
841 endif
842 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
843 let name = escape(name, "\\. \t|")
844 let name = substitute(name, "&", "&&", "g")
845 let name = substitute(name, "\n", "^@", "g")
846 return name
847endfunc
848
849" When just starting Vim, load the buffer menu later
850if has("vim_starting")
851 augroup LoadBufferMenu
852 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
853 au VimEnter * au! LoadBufferMenu
854 augroup END
855else
856 call <SID>BMShow()
857endif
858
859endif " !exists("no_buffers_menu")
860
861" Window menu
862an 70.300 &Window.&New<Tab>^Wn <C-W>n
863an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
864an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
865an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
Bram Moolenaar314dd792019-02-03 15:27:20 +0100866an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
867if !exists("*MenuExplOpen")
868 fun MenuExplOpen()
869 if @% == ""
870 20vsp .
871 else
872 exe "20vsp " . s:FnameEscape(expand("%:p:h"))
873 endif
874 endfun
Bram Moolenaar071d4272004-06-13 20:20:40 +0000875endif
876an 70.335 &Window.-SEP1- <Nop>
877an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
878an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR>
879an 70.350 &Window.-SEP2- <Nop>
880an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K
881an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J
Bram Moolenaar214641f2017-03-05 17:04:09 +0100882an 70.355 &Window.Move\ &To.&Left\ Side<Tab>^WH <C-W>H
883an 70.355 &Window.Move\ &To.&Right\ Side<Tab>^WL <C-W>L
Bram Moolenaar071d4272004-06-13 20:20:40 +0000884an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R
885an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r
886an 70.365 &Window.-SEP3- <Nop>
887an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>=
888an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_
889an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_
890an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\|
891an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\|
892
893" The popup menu
894an 1.10 PopUp.&Undo u
895an 1.15 PopUp.-SEP1- <Nop>
896vnoremenu 1.20 PopUp.Cu&t "+x
897vnoremenu 1.30 PopUp.&Copy "+y
898cnoremenu 1.30 PopUp.&Copy <C-Y>
899nnoremenu 1.40 PopUp.&Paste "+gP
900cnoremenu 1.40 PopUp.&Paste <C-R>+
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000901exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v']
902exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i']
Bram Moolenaar071d4272004-06-13 20:20:40 +0000903vnoremenu 1.50 PopUp.&Delete x
904an 1.55 PopUp.-SEP2- <Nop>
905vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000906
907nnoremenu 1.70 PopUp.Select\ &Word vaw
908onoremenu 1.70 PopUp.Select\ &Word aw
909vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
910inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw
911cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
912
913nnoremenu 1.73 PopUp.Select\ &Sentence vas
914onoremenu 1.73 PopUp.Select\ &Sentence as
915vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
916inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas
917cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
918
919nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap
920onoremenu 1.77 PopUp.Select\ Pa&ragraph ap
921vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
922inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap
923cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
924
925nnoremenu 1.80 PopUp.Select\ &Line V
926onoremenu 1.80 PopUp.Select\ &Line <C-C>V
927vnoremenu 1.80 PopUp.Select\ &Line <C-C>V
928inoremenu 1.80 PopUp.Select\ &Line <C-O>V
929cnoremenu 1.80 PopUp.Select\ &Line <C-C>V
930
931nnoremenu 1.90 PopUp.Select\ &Block <C-V>
932onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
933vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
934inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V>
935cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
936
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR>
938inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR>
939cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR>
940
Bram Moolenaar45360022005-07-21 21:08:21 +0000941if has("spell")
942 " Spell suggestions in the popup menu. Note that this will slow down the
943 " appearance of the menu!
944 func! <SID>SpellPopup()
945 if exists("s:changeitem") && s:changeitem != ''
946 call <SID>SpellDel()
947 endif
Bram Moolenaarb38dea22006-09-14 11:35:25 +0000948
949 " Return quickly if spell checking is not enabled.
Bram Moolenaard8c00872005-07-22 21:52:15 +0000950 if !&spell || &spelllang == ''
951 return
952 endif
Bram Moolenaar45360022005-07-21 21:08:21 +0000953
954 let curcol = col('.')
Bram Moolenaar1c7715d2005-10-03 22:02:18 +0000955 let [w, a] = spellbadword()
Bram Moolenaar45360022005-07-21 21:08:21 +0000956 if col('.') > curcol " don't use word after the cursor
957 let w = ''
Bram Moolenaar45360022005-07-21 21:08:21 +0000958 endif
959 if w != ''
Bram Moolenaara93fa7e2006-04-17 22:14:47 +0000960 if a == 'caps'
961 let s:suglist = [substitute(w, '.*', '\u&', '')]
962 else
963 let s:suglist = spellsuggest(w, 10)
964 endif
Bram Moolenaar62292582010-07-10 16:36:59 +0200965 if len(s:suglist) > 0
Bram Moolenaar7c63fbc2018-05-17 13:15:23 +0200966 if !exists("g:menutrans_spell_change_ARG_to")
967 let g:menutrans_spell_change_ARG_to = 'Change\ "%s"\ to'
968 endif
969 let s:changeitem = printf(g:menutrans_spell_change_ARG_to, escape(w, ' .'))
Bram Moolenaar45360022005-07-21 21:08:21 +0000970 let s:fromword = w
971 let pri = 1
Bram Moolenaar62292582010-07-10 16:36:59 +0200972 " set 'cpo' to include the <CR>
973 let cpo_save = &cpo
974 set cpo&vim
Bram Moolenaar45360022005-07-21 21:08:21 +0000975 for sug in s:suglist
Bram Moolenaarb38dea22006-09-14 11:35:25 +0000976 exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
Bram Moolenaar45360022005-07-21 21:08:21 +0000977 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
978 let pri += 1
979 endfor
980
Bram Moolenaar7c63fbc2018-05-17 13:15:23 +0200981 if !exists("g:menutrans_spell_add_ARG_to_word_list")
982 let g:menutrans_spell_add_ARG_to_word_list = 'Add\ "%s"\ to\ Word\ List'
983 endif
984 let s:additem = printf(g:menutrans_spell_add_ARG_to_word_list, escape(w, ' .'))
Bram Moolenaarb38dea22006-09-14 11:35:25 +0000985 exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
Bram Moolenaar45360022005-07-21 21:08:21 +0000986
Bram Moolenaar7c63fbc2018-05-17 13:15:23 +0200987 if !exists("g:menutrans_spell_ignore_ARG")
988 let g:menutrans_spell_ignore_ARG = 'Ignore\ "%s"'
989 endif
990 let s:ignoreitem = printf(g:menutrans_spell_ignore_ARG, escape(w, ' .'))
Bram Moolenaarb38dea22006-09-14 11:35:25 +0000991 exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
Bram Moolenaar45360022005-07-21 21:08:21 +0000992
Bram Moolenaarb38dea22006-09-14 11:35:25 +0000993 anoremenu 1.8 PopUp.-SpellSep- :
Bram Moolenaar62292582010-07-10 16:36:59 +0200994 let &cpo = cpo_save
Bram Moolenaar45360022005-07-21 21:08:21 +0000995 endif
996 endif
Bram Moolenaar62292582010-07-10 16:36:59 +0200997 call cursor(0, curcol) " put the cursor back where it was
Bram Moolenaar45360022005-07-21 21:08:21 +0000998 endfunc
999
1000 func! <SID>SpellReplace(n)
1001 let l = getline('.')
Bram Moolenaar62292582010-07-10 16:36:59 +02001002 " Move the cursor to the start of the word.
1003 call spellbadword()
Bram Moolenaar45360022005-07-21 21:08:21 +00001004 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
1005 \ . strpart(l, col('.') + len(s:fromword) - 1))
1006 endfunc
1007
1008 func! <SID>SpellDel()
1009 exe "aunmenu PopUp." . s:changeitem
1010 exe "aunmenu PopUp." . s:additem
1011 exe "aunmenu PopUp." . s:ignoreitem
1012 aunmenu PopUp.-SpellSep-
1013 let s:changeitem = ''
1014 endfun
1015
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001016 augroup SpellPopupMenu
1017 au! MenuPopup * call <SID>SpellPopup()
1018 augroup END
Bram Moolenaar45360022005-07-21 21:08:21 +00001019endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001020
1021" The GUI toolbar (for MS-Windows and GTK)
1022if has("toolbar")
1023 an 1.10 ToolBar.Open :browse confirm e<CR>
1024 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
1025 an 1.30 ToolBar.SaveAll :browse confirm wa<CR>
1026
1027 if has("printer")
1028 an 1.40 ToolBar.Print :hardcopy<CR>
1029 vunmenu ToolBar.Print
1030 vnoremenu ToolBar.Print :hardcopy<CR>
1031 elseif has("unix")
1032 an 1.40 ToolBar.Print :w !lpr<CR>
1033 vunmenu ToolBar.Print
1034 vnoremenu ToolBar.Print :w !lpr<CR>
1035 endif
1036
1037 an 1.45 ToolBar.-sep1- <Nop>
1038 an 1.50 ToolBar.Undo u
1039 an 1.60 ToolBar.Redo <C-R>
1040
1041 an 1.65 ToolBar.-sep2- <Nop>
1042 vnoremenu 1.70 ToolBar.Cut "+x
1043 vnoremenu 1.80 ToolBar.Copy "+y
1044 cnoremenu 1.80 ToolBar.Copy <C-Y>
1045 nnoremenu 1.90 ToolBar.Paste "+gP
1046 cnoremenu ToolBar.Paste <C-R>+
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +00001047 exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v']
1048 exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i']
Bram Moolenaar071d4272004-06-13 20:20:40 +00001049
1050 if !has("gui_athena")
1051 an 1.95 ToolBar.-sep3- <Nop>
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001052 an 1.100 ToolBar.Replace :promptrepl<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001053 vunmenu ToolBar.Replace
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +00001054 vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001055 an 1.110 ToolBar.FindNext n
1056 an 1.120 ToolBar.FindPrev N
Bram Moolenaar071d4272004-06-13 20:20:40 +00001057 endif
1058
Bram Moolenaar071d4272004-06-13 20:20:40 +00001059 an 1.215 ToolBar.-sep5- <Nop>
1060 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR>
1061 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR>
1062 an 1.240 ToolBar.RunScript :browse so<CR>
1063
1064 an 1.245 ToolBar.-sep6- <Nop>
1065 an 1.250 ToolBar.Make :make<CR>
1066 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
1067 an 1.280 ToolBar.TagJump g<C-]>
1068
1069 an 1.295 ToolBar.-sep7- <Nop>
1070 an 1.300 ToolBar.Help :help<CR>
1071 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR>
1072
1073" Only set the tooltips here if not done in a language menu file
1074if exists("*Do_toolbar_tmenu")
1075 call Do_toolbar_tmenu()
1076else
1077 let did_toolbar_tmenu = 1
1078 tmenu ToolBar.Open Open file
1079 tmenu ToolBar.Save Save current file
1080 tmenu ToolBar.SaveAll Save all files
1081 tmenu ToolBar.Print Print
1082 tmenu ToolBar.Undo Undo
1083 tmenu ToolBar.Redo Redo
1084 tmenu ToolBar.Cut Cut to clipboard
1085 tmenu ToolBar.Copy Copy to clipboard
1086 tmenu ToolBar.Paste Paste from Clipboard
1087 if !has("gui_athena")
Bram Moolenaar5c736222010-01-06 20:54:52 +01001088 tmenu ToolBar.Replace Find / Replace...
Bram Moolenaar071d4272004-06-13 20:20:40 +00001089 tmenu ToolBar.FindNext Find Next
1090 tmenu ToolBar.FindPrev Find Previous
Bram Moolenaar071d4272004-06-13 20:20:40 +00001091 endif
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001092 tmenu ToolBar.LoadSesn Choose a session to load
Bram Moolenaar071d4272004-06-13 20:20:40 +00001093 tmenu ToolBar.SaveSesn Save current session
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001094 tmenu ToolBar.RunScript Choose a Vim Script to run
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001095 tmenu ToolBar.Make Make current project (:make)
1096 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001097 tmenu ToolBar.TagJump Jump to tag under cursor
1098 tmenu ToolBar.Help Vim Help
1099 tmenu ToolBar.FindHelp Search Vim Help
1100endif
1101
1102" Select a session to load; default to current session name if present
1103fun! s:LoadVimSesn()
1104 if strlen(v:this_session) > 0
Bram Moolenaaraba88572008-06-25 20:13:35 +00001105 let name = s:FnameEscape(v:this_session)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001106 else
1107 let name = "Session.vim"
1108 endif
1109 execute "browse so " . name
1110endfun
1111
1112" Select a session to save; default to current session name if present
1113fun! s:SaveVimSesn()
1114 if strlen(v:this_session) == 0
1115 let v:this_session = "Session.vim"
1116 endif
Bram Moolenaaraba88572008-06-25 20:13:35 +00001117 execute "browse mksession! " . s:FnameEscape(v:this_session)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001118endfun
1119
1120endif
1121
1122endif " !exists("did_install_default_menus")
1123
1124" Define these items always, so that syntax can be switched on when it wasn't.
1125" But skip them when the Syntax menu was disabled by the user.
1126if !exists("did_install_syntax_menu")
1127 an 50.212 &Syntax.&Manual :syn manual<CR>
1128 an 50.214 &Syntax.A&utomatic :syn on<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +01001129 an <silent> 50.216 &Syntax.On/Off\ for\ &This\ File :call <SID>SynOnOff()<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001130 if !exists("*s:SynOnOff")
1131 fun s:SynOnOff()
1132 if has("syntax_items")
1133 syn clear
1134 else
1135 if !exists("g:syntax_on")
1136 syn manual
1137 endif
1138 set syn=ON
1139 endif
1140 endfun
1141 endif
1142endif
1143
1144
1145" Install the Syntax menu only when filetype.vim has been loaded or when
1146" manual syntax highlighting is enabled.
1147" Avoid installing the Syntax menu twice.
1148if (exists("did_load_filetypes") || exists("syntax_on"))
1149 \ && !exists("did_install_syntax_menu")
1150 let did_install_syntax_menu = 1
1151
1152" Skip setting up the individual syntax selection menus unless
1153" do_syntax_sel_menu is defined (it takes quite a bit of time).
1154if exists("do_syntax_sel_menu")
1155 runtime! synmenu.vim
1156else
Bram Moolenaar040c1fe2017-11-09 19:45:48 +01001157 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>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001158 an 50.195 &Syntax.-SEP1- <Nop>
1159endif
1160
1161an 50.210 &Syntax.&Off :syn off<CR>
1162an 50.700 &Syntax.-SEP3- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +01001163an 50.710 &Syntax.Co&lor\ Test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
1164an 50.720 &Syntax.&Highlight\ Test :runtime syntax/hitest.vim<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001165an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
1166
1167endif " !exists("did_install_syntax_menu")
1168
Bram Moolenaar071d4272004-06-13 20:20:40 +00001169" Restore the previous value of 'cpoptions'.
1170let &cpo = s:cpo_save
1171unlet s:cpo_save
1172
1173" vim: set sw=2 :