comparison runtime/menu.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children 4424b47a0797
comparison
equal deleted inserted replaced
6:c2daee826b8f 7:3fc0f57ecb91
1 " 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>
5 " Last Change: 2004 May 26
6
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'".
12 let s:cpo_save = &cpo
13 set cpo&vim
14
15 " Avoid installing the menus twice
16 if !exists("did_install_default_menus")
17 let did_install_default_menus = 1
18
19
20 if 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"
32 if strlen(s:lang) > 1
33 " When the language does not include the charset add 'encoding'
34 if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
35 let s:lang = s:lang . '.' . &enc
36 endif
37
38 " We always use a lowercase name.
39 " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
40 " systems appear to use this.
41 " Change spaces to underscores.
42 let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
43 let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
44 let s:lang = substitute(s:lang, " ", "_", "g")
45 " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
46 let s:lang = substitute(s:lang, "@euro", "", "")
47 " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
48 " same menu file for them.
49 let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
50 menutrans clear
51 exe "runtime! lang/menu_" . s:lang . ".vim"
52
53 if !exists("did_menu_trans")
54 " There is no exact match, try matching with a wildcard added
55 " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
56 let s:lang = substitute(s:lang, '\.[^.]*', "", "")
57 exe "runtime! lang/menu_" . s:lang . "*.vim"
58
59 if !exists("did_menu_trans") && strlen($LANG) > 1
60 " On windows locale names are complicated, try using $LANG, it might
61 " have been set by set_init_1().
62 exe "runtime! lang/menu_" . tolower($LANG) . "*.vim"
63 endif
64 endif
65 endif
66 endif
67
68
69 " Help menu
70 an 9999.10 &Help.&Overview<Tab><F1> :help<CR>
71 an 9999.20 &Help.&User\ Manual :help usr_toc<CR>
72 an 9999.30 &Help.&How-to\ links :help how-to<CR>
73 an <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR>
74 an 9999.45 &Help.-sep1- <Nop>
75 an 9999.50 &Help.&Credits :help credits<CR>
76 an 9999.60 &Help.Co&pying :help copying<CR>
77 an 9999.70 &Help.&Sponsor/Register :help sponsor<CR>
78 an 9999.70 &Help.O&rphans :help kcc<CR>
79 an 9999.75 &Help.-sep2- <Nop>
80 an 9999.80 &Help.&Version :version<CR>
81 an 9999.90 &Help.&About :intro<CR>
82
83 fun! s:Helpfind()
84 if !exists("g:menutrans_help_dialog")
85 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')"
86 endif
87 let h = inputdialog(g:menutrans_help_dialog)
88 if h != ""
89 let v:errmsg = ""
90 silent! exe "help " . h
91 if v:errmsg != ""
92 echo v:errmsg
93 endif
94 endif
95 endfun
96
97 " File menu
98 an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR>
99 an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR>
100 an 10.325 &File.&New<Tab>:enew :confirm enew<CR>
101 an <silent> 10.330 &File.&Close<Tab>:close
102 \ :if winheight(2) < 0 <Bar>
103 \ confirm enew <Bar>
104 \ else <Bar>
105 \ confirm close <Bar>
106 \ endif<CR>
107 an 10.335 &File.-SEP1- <Nop>
108 an <silent> 10.340 &File.&Save<Tab>:w :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
109 an 10.350 &File.Save\ &As\.\.\.<Tab>:sav :browse confirm saveas<CR>
110
111 if has("diff")
112 an 10.400 &File.-SEP2- <Nop>
113 an 10.410 &File.Split\ &Diff\ with\.\.\. :browse vert diffsplit<CR>
114 an 10.420 &File.Split\ Patched\ &By\.\.\. :browse vert diffpatch<CR>
115 endif
116
117 if has("printer")
118 an 10.500 &File.-SEP3- <Nop>
119 an 10.510 &File.&Print :hardcopy<CR>
120 vunmenu &File.&Print
121 vnoremenu &File.&Print :hardcopy<CR>
122 elseif has("unix")
123 an 10.500 &File.-SEP3- <Nop>
124 an 10.510 &File.&Print :w !lpr<CR>
125 vunmenu &File.&Print
126 vnoremenu &File.&Print :w !lpr<CR>
127 endif
128 an 10.600 &File.-SEP4- <Nop>
129 an 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR>
130 an 10.620 &File.E&xit<Tab>:qa :confirm qa<CR>
131
132 " Pasting blockwise and linewise selections is not possible in Insert and
133 " Visual mode without the +virtualedit feature. They are pasted as if they
134 " were characterwise instead. Add to that some tricks to leave the cursor in
135 " the right position, also for "gi".
136 " Note: the same stuff appears in mswin.vim.
137 if has("virtualedit")
138 nnoremap <silent> <script> <SID>Paste :call <SID>Paste()<CR>
139 func! <SID>Paste()
140 let ove = &ve
141 set ve=all
142 normal `^
143 if @+ != ''
144 normal "+gP
145 endif
146 let c = col(".")
147 normal i
148 if col(".") < c " compensate for i<ESC> moving the cursor left
149 normal l
150 endif
151 let &ve = ove
152 endfunc
153 else
154 nnoremap <silent> <script> <SID>Paste "=@+.'xy'<CR>gPFx"_2x
155 endif
156
157 " Use maps for items that are present both in Edit, Popup and Toolbar menu.
158 if has("virtualedit")
159 vnoremap <script> <SID>vPaste "-c<Esc><SID>Paste
160 inoremap <script> <SID>iPaste <Esc><SID>Pastegi
161 else
162 vnoremap <script> <SID>vPaste "-c<Esc>gix<Esc><SID>Paste"_x
163 inoremap <script> <SID>iPaste x<Esc><SID>Paste"_s
164 endif
165
166 func! <SID>SelectAll()
167 exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
168 endfunc
169
170
171 " Edit menu
172 an 20.310 &Edit.&Undo<Tab>u u
173 an 20.320 &Edit.&Redo<Tab>^R <C-R>
174 an 20.330 &Edit.Rep&eat<Tab>\. .
175
176 an 20.335 &Edit.-SEP1- <Nop>
177 vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
178 vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
179 cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
180 nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
181 cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
182 vnoremenu <script> &Edit.&Paste<Tab>"+gP <SID>vPaste
183 inoremenu <script> &Edit.&Paste<Tab>"+gP <SID>iPaste
184 nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p
185 inoremenu &Edit.Put\ &Before<Tab>[p <C-O>[p
186 nnoremenu 20.380 &Edit.Put\ &After<Tab>]p ]p
187 inoremenu &Edit.Put\ &After<Tab>]p <C-O>]p
188 if has("win32") || has("win16")
189 vnoremenu 20.390 &Edit.&Delete<Tab>x x
190 endif
191 noremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG :<C-U>call <SID>SelectAll()<CR>
192 inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-O>:call <SID>SelectAll()<CR>
193 cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-U>call <SID>SelectAll()<CR>
194
195 an 20.405 &Edit.-SEP2- <Nop>
196 if has("win32") || has("win16") || has("gui_gtk") || has("gui_motif")
197 an 20.410 &Edit.&Find\.\.\. :promptfind<CR>
198 vunmenu &Edit.&Find\.\.\.
199 vnoremenu &Edit.&Find\.\.\. y:promptfind <C-R>"<CR>
200 an 20.420 &Edit.Find\ and\ Rep&lace\.\.\. :promptrepl<CR>
201 vunmenu &Edit.Find\ and\ Rep&lace\.\.\.
202 vnoremenu &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>"<CR>
203 else
204 an 20.410 &Edit.&Find<Tab>/ /
205 an 20.420 &Edit.Find\ and\ Rep&lace<Tab>:%s :%s/
206 vunmenu &Edit.Find\ and\ Rep&lace<Tab>:%s
207 vnoremenu &Edit.Find\ and\ Rep&lace<Tab>:s :s/
208 endif
209
210 an 20.425 &Edit.-SEP3- <Nop>
211 an 20.430 &Edit.Settings\ &Window :options<CR>
212
213 " Edit/Global Settings
214 an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR>
215 an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignore-case<Tab>:set\ ic! :set ic! ic?<CR>
216 an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showmatch<Tab>:set\ sm! :set sm! sm?<CR>
217
218 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 1\ :set so=1<CR>
219 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 2\ :set so=2<CR>
220 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 3\ :set so=3<CR>
221 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 4\ :set so=4<CR>
222 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 5\ :set so=5<CR>
223 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 7\ :set so=7<CR>
224 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 10\ :set so=10<CR>
225 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 100\ :set so=100<CR>
226
227 an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
228 an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
229 an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ mode :set ve=insert<CR>
230 an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
231 an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
232 an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im! :set im!<CR>
233 an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatible<Tab>:set\ cp! :set cp!<CR>
234 an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\. :call <SID>SearchP()<CR>
235 an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\. :call <SID>TagFiles()<CR>
236 "
237 " GUI options
238 an 20.440.300 &Edit.&Global\ Settings.-SEP1- <Nop>
239 an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar :call <SID>ToggleGuiOption("T")<CR>
240 an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
241 an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR>
242 an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
243
244 fun! s:SearchP()
245 if !exists("g:menutrans_path_dialog")
246 let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
247 endif
248 let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
249 if n != ""
250 let &path = substitute(n, ' ', '\\ ', 'g')
251 endif
252 endfun
253
254 fun! s:TagFiles()
255 if !exists("g:menutrans_tags_dialog")
256 let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
257 endif
258 let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
259 if n != ""
260 let &tags = substitute(n, ' ', '\\ ', 'g')
261 endif
262 endfun
263
264 fun! s:ToggleGuiOption(option)
265 " If a:option is already set in guioptions, then we want to remove it
266 if match(&guioptions, "\\C" . a:option) > -1
267 exec "set go-=" . a:option
268 else
269 exec "set go+=" . a:option
270 endif
271 endfun
272
273 " Edit/File Settings
274
275 " Boolean options
276 an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu! :set nu! nu?<CR>
277 an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list! :set list! list?<CR>
278 an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap! :set wrap! wrap?<CR>
279 an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr! :set lbr! lbr?<CR>
280 an 20.440.160 &Edit.F&ile\ Settings.Toggle\ &expand-tab<Tab>:set\ et! :set et! et?<CR>
281 an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &auto-indent<Tab>:set\ ai! :set ai! ai?<CR>
282 an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-indenting<Tab>:set\ cin! :set cin! cin?<CR>
283
284 " other options
285 an 20.440.600 &Edit.F&ile\ Settings.-SEP2- <Nop>
286 an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2 :set sw=2 sw?<CR>
287 an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3 :set sw=3 sw?<CR>
288 an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4 :set sw=4 sw?<CR>
289 an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5 :set sw=5 sw?<CR>
290 an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6 :set sw=6 sw?<CR>
291 an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8 :set sw=8 sw?<CR>
292
293 an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2 :set sts=2 sts?<CR>
294 an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3 :set sts=3 sts?<CR>
295 an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4 :set sts=4 sts?<CR>
296 an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5 :set sts=5 sts?<CR>
297 an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6 :set sts=6 sts?<CR>
298 an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR>
299
300 an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR>
301 an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR>
302 fun! s:TextWidth()
303 if !exists("g:menutrans_textwidth_dialog")
304 let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
305 endif
306 let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
307 if n != ""
308 " remove leading zeros to avoid it being used as an octal number
309 let &tw = substitute(n, "^0*", "", "")
310 endif
311 endfun
312
313 fun! s:FileFormat()
314 if !exists("g:menutrans_fileformat_dialog")
315 let g:menutrans_fileformat_dialog = "Select format for writing the file"
316 endif
317 if !exists("g:menutrans_fileformat_choices")
318 let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
319 endif
320 if &ff == "dos"
321 let def = 2
322 elseif &ff == "mac"
323 let def = 3
324 else
325 let def = 1
326 endif
327 let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
328 if n == 1
329 set ff=unix
330 elseif n == 2
331 set ff=dos
332 elseif n == 3
333 set ff=mac
334 endif
335 endfun
336
337 " Setup the Edit.Color Scheme submenu
338 let s:n = globpath(&runtimepath, "colors/*.vim")
339 let s:idx = 100
340 while strlen(s:n) > 0
341 let s:i = stridx(s:n, "\n")
342 if s:i < 0
343 let s:name = s:n
344 let s:n = ""
345 else
346 let s:name = strpart(s:n, 0, s:i)
347 let s:n = strpart(s:n, s:i + 1, 19999)
348 endif
349 " Ignore case for VMS and windows
350 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
351 exe "an 20.450." . s:idx . ' &Edit.C&olor\ Scheme.' . s:name . " :colors " . s:name . "<CR>"
352 unlet s:name
353 unlet s:i
354 let s:idx = s:idx + 10
355 endwhile
356 unlet s:n
357 unlet s:idx
358
359 " Setup the Edit.Keymap submenu
360 if has("keymap")
361 let s:n = globpath(&runtimepath, "keymap/*.vim")
362 if s:n != ""
363 let s:idx = 100
364 an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
365 while strlen(s:n) > 0
366 let s:i = stridx(s:n, "\n")
367 if s:i < 0
368 let s:name = s:n
369 let s:n = ""
370 else
371 let s:name = strpart(s:n, 0, s:i)
372 let s:n = strpart(s:n, s:i + 1, 19999)
373 endif
374 " Ignore case for VMS and windows
375 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
376 exe "an 20.460." . s:idx . ' &Edit.&Keymap.' . s:name . " :set keymap=" . s:name . "<CR>"
377 unlet s:name
378 unlet s:i
379 let s:idx = s:idx + 10
380 endwhile
381 unlet s:idx
382 endif
383 unlet s:n
384 endif
385 if has("win32") || has("win16") || has("gui_gtk") || has("gui_photon")
386 an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
387 endif
388
389 " Programming menu
390 if !exists("g:ctags_command")
391 if has("vms")
392 let g:ctags_command = "mc vim:ctags ."
393 else
394 let g:ctags_command = "ctags -R ."
395 endif
396 endif
397
398 an 40.300 &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
399 vunmenu &Tools.&Jump\ to\ this\ tag<Tab>g^]
400 vnoremenu &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
401 an 40.310 &Tools.Jump\ &back<Tab>^T <C-T>
402 an 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR>
403
404 " Tools.Fold Menu
405 if has("folding")
406 an 40.330 &Tools.-SEP1- <Nop>
407 " open close folds
408 an 40.340.110 &Tools.&Folding.&Enable/Disable\ folds<Tab>zi zi
409 an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv zv
410 an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ only<Tab>zMzx zMzx
411 an 40.340.130 &Tools.&Folding.C&lose\ more\ folds<Tab>zm zm
412 an 40.340.140 &Tools.&Folding.&Close\ all\ folds<Tab>zM zM
413 an 40.340.150 &Tools.&Folding.O&pen\ more\ folds<Tab>zr zr
414 an 40.340.160 &Tools.&Folding.&Open\ all\ folds<Tab>zR zR
415 " fold method
416 an 40.340.200 &Tools.&Folding.-SEP1- <Nop>
417 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual :set fdm=manual<CR>
418 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent :set fdm=indent<CR>
419 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
420 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax :set fdm=syntax<CR>
421 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff :set fdm=diff<CR>
422 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker :set fdm=marker<CR>
423 " create and delete folds
424 vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf zf
425 an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd zd
426 an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD zD
427 " moving around in folds
428 an 40.340.300 &Tools.&Folding.-SEP2- <Nop>
429 an 40.340.310.10 &Tools.&Folding.Fold\ col&umn\ width.\ &0\ :set fdc=0<CR>
430 an 40.340.310.20 &Tools.&Folding.Fold\ col&umn\ width.\ &2\ :set fdc=2<CR>
431 an 40.340.310.30 &Tools.&Folding.Fold\ col&umn\ width.\ &3\ :set fdc=3<CR>
432 an 40.340.310.40 &Tools.&Folding.Fold\ col&umn\ width.\ &4\ :set fdc=4<CR>
433 an 40.340.310.50 &Tools.&Folding.Fold\ col&umn\ width.\ &5\ :set fdc=5<CR>
434 an 40.340.310.60 &Tools.&Folding.Fold\ col&umn\ width.\ &6\ :set fdc=6<CR>
435 an 40.340.310.70 &Tools.&Folding.Fold\ col&umn\ width.\ &7\ :set fdc=7<CR>
436 an 40.340.310.80 &Tools.&Folding.Fold\ col&umn\ width.\ &8\ :set fdc=8<CR>
437 endif " has folding
438
439 if has("diff")
440 an 40.350.100 &Tools.&Diff.&Update :diffupdate<CR>
441 an 40.350.110 &Tools.&Diff.&Get\ Block :diffget<CR>
442 vunmenu &Tools.&Diff.&Get\ Block
443 vnoremenu &Tools.&Diff.&Get\ Block :diffget<CR>
444 an 40.350.120 &Tools.&Diff.&Put\ Block :diffput<CR>
445 vunmenu &Tools.&Diff.&Put\ Block
446 vnoremenu &Tools.&Diff.&Put\ Block :diffput<CR>
447 endif
448
449 an 40.358 &Tools.-SEP2- <Nop>
450 an 40.360 &Tools.&Make<Tab>:make :make<CR>
451 an 40.370 &Tools.&List\ Errors<Tab>:cl :cl<CR>
452 an 40.380 &Tools.L&ist\ Messages<Tab>:cl! :cl!<CR>
453 an 40.390 &Tools.&Next\ Error<Tab>:cn :cn<CR>
454 an 40.400 &Tools.&Previous\ Error<Tab>:cp :cp<CR>
455 an 40.410 &Tools.&Older\ List<Tab>:cold :colder<CR>
456 an 40.420 &Tools.N&ewer\ List<Tab>:cnew :cnewer<CR>
457 an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin :cwin<CR>
458 an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen :copen<CR>
459 an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose :cclose<CR>
460
461 an 40.520 &Tools.-SEP3- <Nop>
462 an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
463 \ :call <SID>XxdConv()<CR>
464 an <silent> 40.540 &Tools.Conve&rt\ back<Tab>:%!xxd\ -r
465 \ :call <SID>XxdBack()<CR>
466
467 " Use a function to do the conversion, so that it also works with 'insertmode'
468 " set.
469 func! s:XxdConv()
470 let mod = &mod
471 if has("vms")
472 %!mc vim:xxd
473 else
474 call s:XxdFind()
475 exe '%!"' . g:xxdprogram . '"'
476 endif
477 if getline(1) =~ "^0000000:" " only if it worked
478 set ft=xxd
479 endif
480 let &mod = mod
481 endfun
482
483 func! s:XxdBack()
484 let mod = &mod
485 if has("vms")
486 %!mc vim:xxd -r
487 else
488 call s:XxdFind()
489 exe '%!"' . g:xxdprogram . '" -r'
490 endif
491 set ft=
492 doautocmd filetypedetect BufReadPost
493 let &mod = mod
494 endfun
495
496 func! s:XxdFind()
497 if !exists("g:xxdprogram")
498 " On the PC xxd may not be in the path but in the install directory
499 if (has("win32") || has("dos32")) && !executable("xxd")
500 let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
501 else
502 let g:xxdprogram = "xxd"
503 endif
504 endif
505 endfun
506
507 " Setup the Tools.Compiler submenu
508 let s:n = globpath(&runtimepath, "compiler/*.vim")
509 let s:idx = 100
510 while strlen(s:n) > 0
511 let s:i = stridx(s:n, "\n")
512 if s:i < 0
513 let s:name = s:n
514 let s:n = ""
515 else
516 let s:name = strpart(s:n, 0, s:i)
517 let s:n = strpart(s:n, s:i + 1, 19999)
518 endif
519 " Ignore case for VMS and windows
520 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
521 exe "an 30.440." . s:idx . ' &Tools.&Set\ Compiler.' . s:name . " :compiler " . s:name . "<CR>"
522 unlet s:name
523 unlet s:i
524 let s:idx = s:idx + 10
525 endwhile
526 unlet s:n
527 unlet s:idx
528
529 if !exists("no_buffers_menu")
530
531 " Buffer list menu -- Setup functions & actions
532
533 " wait with building the menu until after loading 'session' files. Makes
534 " startup faster.
535 let s:bmenu_wait = 1
536
537 if !exists("bmenu_priority")
538 let bmenu_priority = 60
539 endif
540
541 func! s:BMAdd()
542 if s:bmenu_wait == 0
543 " when adding too many buffers, redraw in short format
544 if s:bmenu_count == &menuitems && s:bmenu_short == 0
545 call s:BMShow()
546 else
547 call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
548 let s:bmenu_count = s:bmenu_count + 1
549 endif
550 endif
551 endfunc
552
553 func! s:BMRemove()
554 if s:bmenu_wait == 0
555 let name = expand("<afile>")
556 if isdirectory(name)
557 return
558 endif
559 let munge = <SID>BMMunge(name, expand("<abuf>"))
560
561 if s:bmenu_short == 0
562 exe 'silent! aun &Buffers.' . munge
563 else
564 exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
565 endif
566 let s:bmenu_count = s:bmenu_count - 1
567 endif
568 endfunc
569
570 " Create the buffer menu (delete an existing one first).
571 func! s:BMShow(...)
572 let s:bmenu_wait = 1
573 let s:bmenu_short = 1
574 let s:bmenu_count = 0
575 "
576 " get new priority, if exists
577 if a:0 == 1
578 let g:bmenu_priority = a:1
579 endif
580
581 " remove old menu, if exists; keep one entry to avoid a torn off menu to
582 " disappear.
583 silent! unmenu &Buffers
584 exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
585 silent! unmenu! &Buffers
586
587 " create new menu; set 'cpo' to include the <CR>
588 let cpo_save = &cpo
589 set cpo&vim
590 exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
591 exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
592 exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
593 exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
594 exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
595 exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
596 let &cpo = cpo_save
597 unmenu &Buffers.Dummy
598
599 " figure out how many buffers there are
600 let buf = 1
601 while buf <= bufnr('$')
602 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
603 \ && !getbufvar(buf, "&bufsecret")
604 let s:bmenu_count = s:bmenu_count + 1
605 endif
606 let buf = buf + 1
607 endwhile
608 if s:bmenu_count <= &menuitems
609 let s:bmenu_short = 0
610 endif
611
612 " iterate through buffer list, adding each buffer to the menu:
613 let buf = 1
614 while buf <= bufnr('$')
615 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
616 \ && !getbufvar(buf, "&bufsecret")
617 call <SID>BMFilename(bufname(buf), buf)
618 endif
619 let buf = buf + 1
620 endwhile
621 let s:bmenu_wait = 0
622 aug buffer_list
623 au!
624 au BufCreate,BufFilePost * call <SID>BMAdd()
625 au BufDelete,BufFilePre * call <SID>BMRemove()
626 aug END
627 endfunc
628
629 func! s:BMHash(name)
630 " Make name all upper case, so that chars are between 32 and 96
631 let nm = substitute(a:name, ".*", '\U\0', "")
632 if has("ebcdic")
633 " HACK: Replace all non alphabetics with 'Z'
634 " Just to make it work for now.
635 let nm = substitute(nm, "[^A-Z]", 'Z', "g")
636 let sp = char2nr('A') - 1
637 else
638 let sp = char2nr(' ')
639 endif
640 " convert first six chars into a number for sorting:
641 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)
642 endfunc
643
644 func! s:BMHash2(name)
645 let nm = substitute(a:name, ".", '\L\0', "")
646 " Not exactly right for EBCDIC...
647 if nm[0] < 'a' || nm[0] > 'z'
648 return '&others.'
649 elseif nm[0] <= 'd'
650 return '&abcd.'
651 elseif nm[0] <= 'h'
652 return '&efgh.'
653 elseif nm[0] <= 'l'
654 return '&ijkl.'
655 elseif nm[0] <= 'p'
656 return '&mnop.'
657 elseif nm[0] <= 't'
658 return '&qrst.'
659 else
660 return '&u-z.'
661 endif
662 endfunc
663
664 " insert a buffer name into the buffer menu:
665 func! s:BMFilename(name, num)
666 if isdirectory(a:name)
667 return
668 endif
669 let munge = <SID>BMMunge(a:name, a:num)
670 let hash = <SID>BMHash(munge)
671 if s:bmenu_short == 0
672 let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
673 else
674 let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
675 endif
676 " set 'cpo' to include the <CR>
677 let cpo_save = &cpo
678 set cpo&vim
679 exe name . ' :confirm b' . a:num . '<CR>'
680 let &cpo = cpo_save
681 endfunc
682
683 " Truncate a long path to fit it in a menu item.
684 if !exists("g:bmenu_max_pathlen")
685 let g:bmenu_max_pathlen = 35
686 endif
687 func! s:BMTruncName(fname)
688 let name = a:fname
689 if g:bmenu_max_pathlen < 5
690 let name = ""
691 else
692 let len = strlen(name)
693 if len > g:bmenu_max_pathlen
694 let amountl = (g:bmenu_max_pathlen / 2) - 2
695 let amountr = g:bmenu_max_pathlen - amountl - 3
696 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
697 let left = substitute(name, pattern, '\1', '')
698 let right = substitute(name, pattern, '\2', '')
699 if strlen(left) + strlen(right) < len
700 let name = left . '...' . right
701 endif
702 endif
703 endif
704 return name
705 endfunc
706
707 func! s:BMMunge(fname, bnum)
708 let name = a:fname
709 if name == ''
710 if !exists("g:menutrans_no_file")
711 let g:menutrans_no_file = "[No file]"
712 endif
713 let name = g:menutrans_no_file
714 else
715 let name = fnamemodify(name, ':p:~')
716 endif
717 " detach file name and separate it out:
718 let name2 = fnamemodify(name, ':t')
719 if a:bnum >= 0
720 let name2 = name2 . ' (' . a:bnum . ')'
721 endif
722 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
723 let name = escape(name, "\\. \t|")
724 let name = substitute(name, "&", "&&", "g")
725 let name = substitute(name, "\n", "^@", "g")
726 return name
727 endfunc
728
729 " When just starting Vim, load the buffer menu later
730 if has("vim_starting")
731 augroup LoadBufferMenu
732 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
733 au VimEnter * au! LoadBufferMenu
734 augroup END
735 else
736 call <SID>BMShow()
737 endif
738
739 endif " !exists("no_buffers_menu")
740
741 " Window menu
742 an 70.300 &Window.&New<Tab>^Wn <C-W>n
743 an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
744 an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
745 an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
746 if has("vertsplit")
747 an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
748 if !exists("*MenuExplOpen")
749 fun MenuExplOpen()
750 if @% == ""
751 20vsp .
752 else
753 exe "20vsp " . expand("%:p:h")
754 endif
755 endfun
756 endif
757 endif
758 an 70.335 &Window.-SEP1- <Nop>
759 an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
760 an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR>
761 an 70.350 &Window.-SEP2- <Nop>
762 an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K
763 an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J
764 an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH <C-W>H
765 an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL <C-W>L
766 an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R
767 an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r
768 an 70.365 &Window.-SEP3- <Nop>
769 an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>=
770 an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_
771 an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_
772 an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\|
773 an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\|
774
775 " The popup menu
776 an 1.10 PopUp.&Undo u
777 an 1.15 PopUp.-SEP1- <Nop>
778 vnoremenu 1.20 PopUp.Cu&t "+x
779 vnoremenu 1.30 PopUp.&Copy "+y
780 cnoremenu 1.30 PopUp.&Copy <C-Y>
781 nnoremenu 1.40 PopUp.&Paste "+gP
782 cnoremenu 1.40 PopUp.&Paste <C-R>+
783 vnoremenu <script> 1.40 PopUp.&Paste <SID>vPaste
784 inoremenu <script> 1.40 PopUp.&Paste <SID>iPaste
785 vnoremenu 1.50 PopUp.&Delete x
786 an 1.55 PopUp.-SEP2- <Nop>
787 vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
788 an 1.70 PopUp.Select\ &Word vaw
789 an 1.80 PopUp.Select\ &Line V
790 an 1.90 PopUp.Select\ &Block <C-V>
791 noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR>
792 inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR>
793 cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR>
794
795
796 " The GUI toolbar (for MS-Windows and GTK)
797 if has("toolbar")
798 an 1.10 ToolBar.Open :browse confirm e<CR>
799 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
800 an 1.30 ToolBar.SaveAll :browse confirm wa<CR>
801
802 if has("printer")
803 an 1.40 ToolBar.Print :hardcopy<CR>
804 vunmenu ToolBar.Print
805 vnoremenu ToolBar.Print :hardcopy<CR>
806 elseif has("unix")
807 an 1.40 ToolBar.Print :w !lpr<CR>
808 vunmenu ToolBar.Print
809 vnoremenu ToolBar.Print :w !lpr<CR>
810 endif
811
812 an 1.45 ToolBar.-sep1- <Nop>
813 an 1.50 ToolBar.Undo u
814 an 1.60 ToolBar.Redo <C-R>
815
816 an 1.65 ToolBar.-sep2- <Nop>
817 vnoremenu 1.70 ToolBar.Cut "+x
818 vnoremenu 1.80 ToolBar.Copy "+y
819 cnoremenu 1.80 ToolBar.Copy <C-Y>
820 nnoremenu 1.90 ToolBar.Paste "+gP
821 cnoremenu ToolBar.Paste <C-R>+
822 vnoremenu <script> ToolBar.Paste <SID>vPaste
823 inoremenu <script> ToolBar.Paste <SID>iPaste
824
825 if !has("gui_athena")
826 an 1.95 ToolBar.-sep3- <Nop>
827 an 1.100 ToolBar.Find :promptfind<CR>
828 vunmenu ToolBar.Find
829 vnoremenu ToolBar.Find y:promptfind <C-R>"<CR>
830 an 1.110 ToolBar.FindNext n
831 an 1.120 ToolBar.FindPrev N
832 an 1.130 ToolBar.Replace :promptrepl<CR>
833 vunmenu ToolBar.Replace
834 vnoremenu ToolBar.Replace y:promptrepl <C-R>"<CR>
835 endif
836
837 if 0 " disabled; These are in the Windows menu
838 an 1.135 ToolBar.-sep4- <Nop>
839 an 1.140 ToolBar.New <C-W>n
840 an 1.150 ToolBar.WinSplit <C-W>s
841 an 1.160 ToolBar.WinMax :resize 200<CR>
842 an 1.170 ToolBar.WinMin :resize 1<CR>
843 an 1.180 ToolBar.WinVSplit <C-W>v
844 an 1.190 ToolBar.WinMaxWidth <C-W>500>
845 an 1.200 ToolBar.WinMinWidth <C-W>1\|
846 an 1.210 ToolBar.WinClose :close<CR>
847 endif
848
849 an 1.215 ToolBar.-sep5- <Nop>
850 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR>
851 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR>
852 an 1.240 ToolBar.RunScript :browse so<CR>
853
854 an 1.245 ToolBar.-sep6- <Nop>
855 an 1.250 ToolBar.Make :make<CR>
856 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
857 an 1.280 ToolBar.TagJump g<C-]>
858
859 an 1.295 ToolBar.-sep7- <Nop>
860 an 1.300 ToolBar.Help :help<CR>
861 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR>
862
863 " Only set the tooltips here if not done in a language menu file
864 if exists("*Do_toolbar_tmenu")
865 call Do_toolbar_tmenu()
866 else
867 let did_toolbar_tmenu = 1
868 tmenu ToolBar.Open Open file
869 tmenu ToolBar.Save Save current file
870 tmenu ToolBar.SaveAll Save all files
871 tmenu ToolBar.Print Print
872 tmenu ToolBar.Undo Undo
873 tmenu ToolBar.Redo Redo
874 tmenu ToolBar.Cut Cut to clipboard
875 tmenu ToolBar.Copy Copy to clipboard
876 tmenu ToolBar.Paste Paste from Clipboard
877 if !has("gui_athena")
878 tmenu ToolBar.Find Find...
879 tmenu ToolBar.FindNext Find Next
880 tmenu ToolBar.FindPrev Find Previous
881 tmenu ToolBar.Replace Find / Replace...
882 endif
883 if 0 " disabled; These are in the Windows menu
884 tmenu ToolBar.New New Window
885 tmenu ToolBar.WinSplit Split Window
886 tmenu ToolBar.WinMax Maximise Window
887 tmenu ToolBar.WinMin Minimise Window
888 tmenu ToolBar.WinVSplit Split Window Vertically
889 tmenu ToolBar.WinMaxWidth Maximise Window Width
890 tmenu ToolBar.WinMinWidth Minimise Window Width
891 tmenu ToolBar.WinClose Close Window
892 endif
893 tmenu ToolBar.LoadSesn Load session
894 tmenu ToolBar.SaveSesn Save current session
895 tmenu ToolBar.RunScript Run a Vim Script
896 tmenu ToolBar.Make Make current project
897 tmenu ToolBar.RunCtags Build tags in current directory tree
898 tmenu ToolBar.TagJump Jump to tag under cursor
899 tmenu ToolBar.Help Vim Help
900 tmenu ToolBar.FindHelp Search Vim Help
901 endif
902
903 " Select a session to load; default to current session name if present
904 fun! s:LoadVimSesn()
905 if strlen(v:this_session) > 0
906 let name = v:this_session
907 else
908 let name = "Session.vim"
909 endif
910 execute "browse so " . name
911 endfun
912
913 " Select a session to save; default to current session name if present
914 fun! s:SaveVimSesn()
915 if strlen(v:this_session) == 0
916 let v:this_session = "Session.vim"
917 endif
918 execute "browse mksession! " . v:this_session
919 endfun
920
921 endif
922
923 endif " !exists("did_install_default_menus")
924
925 " Define these items always, so that syntax can be switched on when it wasn't.
926 " But skip them when the Syntax menu was disabled by the user.
927 if !exists("did_install_syntax_menu")
928 an 50.212 &Syntax.&Manual :syn manual<CR>
929 an 50.214 &Syntax.A&utomatic :syn on<CR>
930 an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
931 if !exists("*s:SynOnOff")
932 fun s:SynOnOff()
933 if has("syntax_items")
934 syn clear
935 else
936 if !exists("g:syntax_on")
937 syn manual
938 endif
939 set syn=ON
940 endif
941 endfun
942 endif
943 endif
944
945
946 " Install the Syntax menu only when filetype.vim has been loaded or when
947 " manual syntax highlighting is enabled.
948 " Avoid installing the Syntax menu twice.
949 if (exists("did_load_filetypes") || exists("syntax_on"))
950 \ && !exists("did_install_syntax_menu")
951 let did_install_syntax_menu = 1
952
953 " Skip setting up the individual syntax selection menus unless
954 " do_syntax_sel_menu is defined (it takes quite a bit of time).
955 if exists("do_syntax_sel_menu")
956 runtime! synmenu.vim
957 else
958 an 50.10 &Syntax.&Show\ filetypes\ in\ menu :let do_syntax_sel_menu = 1<Bar>runtime! synmenu.vim<Bar>aunmenu &Syntax.&Show\ filetypes\ in\ menu<CR>
959 an 50.195 &Syntax.-SEP1- <Nop>
960 endif
961
962 an 50.210 &Syntax.&Off :syn off<CR>
963 an 50.700 &Syntax.-SEP3- <Nop>
964 an 50.710 &Syntax.Co&lor\ test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
965 an 50.720 &Syntax.&Highlight\ test :runtime syntax/hitest.vim<CR>
966 an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
967
968 endif " !exists("did_install_syntax_menu")
969
970 " Restore the previous value of 'cpoptions'.
971 let &cpo = s:cpo_save
972 unlet s:cpo_save
973
974 " vim: set sw=2 :