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