1 " Vim support file to define the default menus
2 " You can also use this as a start for your own set of menus.
4 " Maintainer: Bram Moolenaar <Bram@vim.org>
5 " Last Change: 2008 Jun 30
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.
10 " Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
11 " <CR> would not be recognized. See ":help 'cpoptions'".
15 " Avoid installing the menus twice
16 if !exists("did_install_default_menus")
17 let did_install_default_menus = 1
20 if exists("v:lang") || &langmenu != ""
21 " Try to find a menu translation file for the current language.
23 if &langmenu =~ "none"
26 let s:lang = &langmenu
31 " A language name must be at least two characters, don't accept "C"
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
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", "")
51 exe "runtime! lang/menu_" . s:lang . ".vim"
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 . "[^a-z]*vim"
59 if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
60 " On windows locale names are complicated, try using $LANG, it might
61 " have been set by set_init_1(). But don't do this for "en" or "en_us".
62 " But don't match "slovak" when $LANG is "sl".
63 exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
71 an 9999.10 &Help.&Overview<Tab><F1> :help<CR>
72 an 9999.20 &Help.&User\ Manual :help usr_toc<CR>
73 an 9999.30 &Help.&How-to\ links :help how-to<CR>
74 an <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR>
75 an 9999.45 &Help.-sep1- <Nop>
76 an 9999.50 &Help.&Credits :help credits<CR>
77 an 9999.60 &Help.Co&pying :help copying<CR>
78 an 9999.70 &Help.&Sponsor/Register :help sponsor<CR>
79 an 9999.70 &Help.O&rphans :help kcc<CR>
80 an 9999.75 &Help.-sep2- <Nop>
81 an 9999.80 &Help.&Version :version<CR>
82 an 9999.90 &Help.&About :intro<CR>
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')"
88 let h = inputdialog(g:menutrans_help_dialog)
91 silent! exe "help " . h
99 an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR>
100 an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR>
101 an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew :browse tabnew<CR>
102 an 10.325 &File.&New<Tab>:enew :confirm enew<CR>
103 an <silent> 10.330 &File.&Close<Tab>:close
104 \ :if winheight(2) < 0 <Bar>
107 \ confirm close <Bar>
109 an 10.335 &File.-SEP1- <Nop>
110 an <silent> 10.340 &File.&Save<Tab>:w :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
111 an 10.350 &File.Save\ &As\.\.\.<Tab>:sav :browse confirm saveas<CR>
114 an 10.400 &File.-SEP2- <Nop>
115 an 10.410 &File.Split\ &Diff\ with\.\.\. :browse vert diffsplit<CR>
116 an 10.420 &File.Split\ Patched\ &By\.\.\. :browse vert diffpatch<CR>
120 an 10.500 &File.-SEP3- <Nop>
121 an 10.510 &File.&Print :hardcopy<CR>
123 vnoremenu &File.&Print :hardcopy<CR>
125 an 10.500 &File.-SEP3- <Nop>
126 an 10.510 &File.&Print :w !lpr<CR>
128 vnoremenu &File.&Print :w !lpr<CR>
130 an 10.600 &File.-SEP4- <Nop>
131 an 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR>
132 an 10.620 &File.E&xit<Tab>:qa :confirm qa<CR>
134 func! <SID>SelectAll()
135 exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
138 func! s:FnameEscape(fname)
139 if exists('*fnameescape')
140 return fnameescape(a:fname)
141 return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
145 an 20.310 &Edit.&Undo<Tab>u u
146 an 20.320 &Edit.&Redo<Tab>^R <C-R>
147 an 20.330 &Edit.Rep&eat<Tab>\. .
149 an 20.335 &Edit.-SEP1- <Nop>
150 vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
151 vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
152 cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
153 nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
154 cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
155 exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v']
156 exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['i']
157 nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p
158 inoremenu &Edit.Put\ &Before<Tab>[p <C-O>[p
159 nnoremenu 20.380 &Edit.Put\ &After<Tab>]p ]p
160 inoremenu &Edit.Put\ &After<Tab>]p <C-O>]p
161 if has("win32") || has("win16")
162 vnoremenu 20.390 &Edit.&Delete<Tab>x x
164 noremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG :<C-U>call <SID>SelectAll()<CR>
165 inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-O>:call <SID>SelectAll()<CR>
166 cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-U>call <SID>SelectAll()<CR>
168 an 20.405 &Edit.-SEP2- <Nop>
169 if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
170 an 20.410 &Edit.&Find\.\.\. :promptfind<CR>
171 vunmenu &Edit.&Find\.\.\.
172 vnoremenu <silent> &Edit.&Find\.\.\. y:promptfind <C-R>=<SID>FixFText()<CR><CR>
173 an 20.420 &Edit.Find\ and\ Rep&lace\.\.\. :promptrepl<CR>
174 vunmenu &Edit.Find\ and\ Rep&lace\.\.\.
175 vnoremenu <silent> &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
177 an 20.410 &Edit.&Find<Tab>/ /
178 an 20.420 &Edit.Find\ and\ Rep&lace<Tab>:%s :%s/
179 vunmenu &Edit.Find\ and\ Rep&lace<Tab>:%s
180 vnoremenu &Edit.Find\ and\ Rep&lace<Tab>:s :s/
183 an 20.425 &Edit.-SEP3- <Nop>
184 an 20.430 &Edit.Settings\ &Window :options<CR>
185 an 20.435 &Edit.Startup\ &Settings :call <SID>EditVimrc()<CR>
190 elseif has("win32") || has("dos32") || has("dos16") || has("os2")
192 let fname = $HOME . "/_vimrc"
194 let fname = $VIM . "/_vimrc"
197 let fname = "s:.vimrc"
199 let fname = $HOME . "/.vimrc"
201 let fname = s:FnameEscape(fname)
210 " Fix text in nameless register to be used with :promptfind.
211 return substitute(@", "[\r\n]", '\\n', 'g')
214 " Edit/Global Settings
215 an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR>
216 an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignore-case<Tab>:set\ ic! :set ic! ic?<CR>
217 an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showmatch<Tab>:set\ sm! :set sm! sm?<CR>
219 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 1\ :set so=1<CR>
220 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 2\ :set so=2<CR>
221 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 3\ :set so=3<CR>
222 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 4\ :set so=4<CR>
223 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 5\ :set so=5<CR>
224 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 7\ :set so=7<CR>
225 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 10\ :set so=10<CR>
226 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 100\ :set so=100<CR>
228 an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
229 an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
230 an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ mode :set ve=insert<CR>
231 an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
232 an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
233 an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im! :set im!<CR>
234 an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatible<Tab>:set\ cp! :set cp!<CR>
235 an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\. :call <SID>SearchP()<CR>
236 an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\. :call <SID>TagFiles()<CR>
239 an 20.440.300 &Edit.&Global\ Settings.-SEP1- <Nop>
240 an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar :call <SID>ToggleGuiOption("T")<CR>
241 an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
242 an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR>
243 an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
246 if !exists("g:menutrans_path_dialog")
247 let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
249 let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
251 let &path = substitute(n, ' ', '\\ ', 'g')
256 if !exists("g:menutrans_tags_dialog")
257 let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
259 let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
261 let &tags = substitute(n, ' ', '\\ ', 'g')
265 fun! s:ToggleGuiOption(option)
266 " If a:option is already set in guioptions, then we want to remove it
267 if match(&guioptions, "\\C" . a:option) > -1
268 exec "set go-=" . a:option
270 exec "set go+=" . a:option
277 an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu! :set nu! nu?<CR>
278 an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list! :set list! list?<CR>
279 an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap! :set wrap! wrap?<CR>
280 an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr! :set lbr! lbr?<CR>
281 an 20.440.160 &Edit.F&ile\ Settings.Toggle\ &expand-tab<Tab>:set\ et! :set et! et?<CR>
282 an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &auto-indent<Tab>:set\ ai! :set ai! ai?<CR>
283 an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-indenting<Tab>:set\ cin! :set cin! cin?<CR>
286 an 20.440.600 &Edit.F&ile\ Settings.-SEP2- <Nop>
287 an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2 :set sw=2 sw?<CR>
288 an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3 :set sw=3 sw?<CR>
289 an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4 :set sw=4 sw?<CR>
290 an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5 :set sw=5 sw?<CR>
291 an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6 :set sw=6 sw?<CR>
292 an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8 :set sw=8 sw?<CR>
294 an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2 :set sts=2 sts?<CR>
295 an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3 :set sts=3 sts?<CR>
296 an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4 :set sts=4 sts?<CR>
297 an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5 :set sts=5 sts?<CR>
298 an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6 :set sts=6 sts?<CR>
299 an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR>
301 an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR>
302 an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR>
304 if !exists("g:menutrans_textwidth_dialog")
305 let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
307 let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
309 " remove leading zeros to avoid it being used as an octal number
310 let &tw = substitute(n, "^0*", "", "")
315 if !exists("g:menutrans_fileformat_dialog")
316 let g:menutrans_fileformat_dialog = "Select format for writing the file"
318 if !exists("g:menutrans_fileformat_choices")
319 let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
328 let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
338 " Setup the Edit.Color Scheme submenu
339 let s:n = globpath(&runtimepath, "colors/*.vim")
341 while strlen(s:n) > 0
342 let s:i = stridx(s:n, "\n")
347 let s:name = strpart(s:n, 0, s:i)
348 let s:n = strpart(s:n, s:i + 1, 19999)
350 " Ignore case for VMS and windows
351 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
352 exe "an 20.450." . s:idx . ' &Edit.C&olor\ Scheme.' . s:name . " :colors " . s:name . "<CR>"
355 let s:idx = s:idx + 10
360 " Setup the Edit.Keymap submenu
362 let s:n = globpath(&runtimepath, "keymap/*.vim")
365 an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
366 while strlen(s:n) > 0
367 let s:i = stridx(s:n, "\n")
372 let s:name = strpart(s:n, 0, s:i)
373 let s:n = strpart(s:n, s:i + 1, 19999)
375 " Ignore case for VMS and windows
376 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
377 exe "an 20.460." . s:idx . ' &Edit.&Keymap.' . s:name . " :set keymap=" . s:name . "<CR>"
380 let s:idx = s:idx + 10
386 if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
387 an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
391 if !exists("g:ctags_command")
393 let g:ctags_command = "mc vim:ctags *.*"
395 let g:ctags_command = "ctags -R ."
399 an 40.300 &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
400 vunmenu &Tools.&Jump\ to\ this\ tag<Tab>g^]
401 vnoremenu &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
402 an 40.310 &Tools.Jump\ &back<Tab>^T <C-T>
403 an 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR>
405 if has("folding") || has("spell")
406 an 40.330 &Tools.-SEP1- <Nop>
409 " Tools.Spelling Menu
411 an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On :set spell<CR>
412 an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off :set nospell<CR>
413 an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s ]s
414 an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s [s
415 an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z= z=
416 an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall :spellrepall<CR>
417 an 40.335.200 &Tools.&Spelling.-SEP1- <Nop>
418 an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en" :set spl=en spell<CR>
419 an 40.335.220 &Tools.&Spelling.Set\ language\ to\ "en_au" :set spl=en_au spell<CR>
420 an 40.335.230 &Tools.&Spelling.Set\ language\ to\ "en_ca" :set spl=en_ca spell<CR>
421 an 40.335.240 &Tools.&Spelling.Set\ language\ to\ "en_gb" :set spl=en_gb spell<CR>
422 an 40.335.250 &Tools.&Spelling.Set\ language\ to\ "en_nz" :set spl=en_nz spell<CR>
423 an 40.335.260 &Tools.&Spelling.Set\ language\ to\ "en_us" :set spl=en_us spell<CR>
424 an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
426 let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
428 for cmd in s:undo_spellang
431 let s:undo_spellang = []
433 if &enc == "iso-8859-15"
440 let s = globpath(&rtp, "spell/*." . enc . ".spl")
443 for f in split(s, "\n")
444 let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
445 if nm != "en" && nm !~ '/'
447 let menuname = '&Tools.&Spelling.Set\ language\ to\ "' . nm . '"'
448 exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
449 let s:undo_spellang += ['aun ' . menuname]
455 echomsg "Could not find other spell files"
457 echomsg "Found spell file " . nm
459 echomsg "Found " . found . " more spell files"
461 " Need to redo this when 'encoding' is changed.
463 au! EncodingChanged * call <SID>SpellLang()
472 an 40.340.110 &Tools.&Folding.&Enable/Disable\ folds<Tab>zi zi
473 an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv zv
474 an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ only<Tab>zMzx zMzx
475 an 40.340.130 &Tools.&Folding.C&lose\ more\ folds<Tab>zm zm
476 an 40.340.140 &Tools.&Folding.&Close\ all\ folds<Tab>zM zM
477 an 40.340.150 &Tools.&Folding.O&pen\ more\ folds<Tab>zr zr
478 an 40.340.160 &Tools.&Folding.&Open\ all\ folds<Tab>zR zR
480 an 40.340.200 &Tools.&Folding.-SEP1- <Nop>
481 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual :set fdm=manual<CR>
482 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent :set fdm=indent<CR>
483 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
484 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax :set fdm=syntax<CR>
485 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff :set fdm=diff<CR>
486 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker :set fdm=marker<CR>
487 " create and delete folds
488 vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf zf
489 an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd zd
490 an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD zD
491 " moving around in folds
492 an 40.340.300 &Tools.&Folding.-SEP2- <Nop>
493 an 40.340.310.10 &Tools.&Folding.Fold\ col&umn\ width.\ &0\ :set fdc=0<CR>
494 an 40.340.310.20 &Tools.&Folding.Fold\ col&umn\ width.\ &2\ :set fdc=2<CR>
495 an 40.340.310.30 &Tools.&Folding.Fold\ col&umn\ width.\ &3\ :set fdc=3<CR>
496 an 40.340.310.40 &Tools.&Folding.Fold\ col&umn\ width.\ &4\ :set fdc=4<CR>
497 an 40.340.310.50 &Tools.&Folding.Fold\ col&umn\ width.\ &5\ :set fdc=5<CR>
498 an 40.340.310.60 &Tools.&Folding.Fold\ col&umn\ width.\ &6\ :set fdc=6<CR>
499 an 40.340.310.70 &Tools.&Folding.Fold\ col&umn\ width.\ &7\ :set fdc=7<CR>
500 an 40.340.310.80 &Tools.&Folding.Fold\ col&umn\ width.\ &8\ :set fdc=8<CR>
504 an 40.350.100 &Tools.&Diff.&Update :diffupdate<CR>
505 an 40.350.110 &Tools.&Diff.&Get\ Block :diffget<CR>
506 vunmenu &Tools.&Diff.&Get\ Block
507 vnoremenu &Tools.&Diff.&Get\ Block :diffget<CR>
508 an 40.350.120 &Tools.&Diff.&Put\ Block :diffput<CR>
509 vunmenu &Tools.&Diff.&Put\ Block
510 vnoremenu &Tools.&Diff.&Put\ Block :diffput<CR>
513 an 40.358 &Tools.-SEP2- <Nop>
514 an 40.360 &Tools.&Make<Tab>:make :make<CR>
515 an 40.370 &Tools.&List\ Errors<Tab>:cl :cl<CR>
516 an 40.380 &Tools.L&ist\ Messages<Tab>:cl! :cl!<CR>
517 an 40.390 &Tools.&Next\ Error<Tab>:cn :cn<CR>
518 an 40.400 &Tools.&Previous\ Error<Tab>:cp :cp<CR>
519 an 40.410 &Tools.&Older\ List<Tab>:cold :colder<CR>
520 an 40.420 &Tools.N&ewer\ List<Tab>:cnew :cnewer<CR>
521 an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin :cwin<CR>
522 an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen :copen<CR>
523 an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose :cclose<CR>
525 an 40.520 &Tools.-SEP3- <Nop>
526 an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
527 \ :call <SID>XxdConv()<CR>
528 an <silent> 40.540 &Tools.Conve&rt\ back<Tab>:%!xxd\ -r
529 \ :call <SID>XxdBack()<CR>
531 " Use a function to do the conversion, so that it also works with 'insertmode'
539 exe '%!"' . g:xxdprogram . '"'
541 if getline(1) =~ "^0000000:" " only if it worked
553 exe '%!"' . g:xxdprogram . '" -r'
556 doautocmd filetypedetect BufReadPost
561 if !exists("g:xxdprogram")
562 " On the PC xxd may not be in the path but in the install directory
563 if (has("win32") || has("dos32")) && !executable("xxd")
564 let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
566 let g:xxdprogram = "xxd"
571 " Setup the Tools.Compiler submenu
572 let s:n = globpath(&runtimepath, "compiler/*.vim")
574 while strlen(s:n) > 0
575 let s:i = stridx(s:n, "\n")
580 let s:name = strpart(s:n, 0, s:i)
581 let s:n = strpart(s:n, s:i + 1, 19999)
583 " Ignore case for VMS and windows
584 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
585 exe "an 30.440." . s:idx . ' &Tools.Se&T\ Compiler.' . s:name . " :compiler " . s:name . "<CR>"
588 let s:idx = s:idx + 10
593 if !exists("no_buffers_menu")
595 " Buffer list menu -- Setup functions & actions
597 " wait with building the menu until after loading 'session' files. Makes
601 if !exists("bmenu_priority")
602 let bmenu_priority = 60
607 " when adding too many buffers, redraw in short format
608 if s:bmenu_count == &menuitems && s:bmenu_short == 0
611 call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
612 let s:bmenu_count = s:bmenu_count + 1
619 let name = expand("<afile>")
623 let munge = <SID>BMMunge(name, expand("<abuf>"))
625 if s:bmenu_short == 0
626 exe 'silent! aun &Buffers.' . munge
628 exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
630 let s:bmenu_count = s:bmenu_count - 1
634 " Create the buffer menu (delete an existing one first).
637 let s:bmenu_short = 1
638 let s:bmenu_count = 0
640 " get new priority, if exists
642 let g:bmenu_priority = a:1
645 " remove old menu, if exists; keep one entry to avoid a torn off menu to
647 silent! unmenu &Buffers
648 exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
649 silent! unmenu! &Buffers
651 " create new menu; set 'cpo' to include the <CR>
654 exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
655 exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
656 exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
657 exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
658 exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
659 exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
661 unmenu &Buffers.Dummy
663 " figure out how many buffers there are
665 while buf <= bufnr('$')
666 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
667 let s:bmenu_count = s:bmenu_count + 1
671 if s:bmenu_count <= &menuitems
672 let s:bmenu_short = 0
675 " iterate through buffer list, adding each buffer to the menu:
677 while buf <= bufnr('$')
678 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
679 call <SID>BMFilename(bufname(buf), buf)
686 au BufCreate,BufFilePost * call <SID>BMAdd()
687 au BufDelete,BufFilePre * call <SID>BMRemove()
692 " Make name all upper case, so that chars are between 32 and 96
693 let nm = substitute(a:name, ".*", '\U\0', "")
695 " HACK: Replace all non alphabetics with 'Z'
696 " Just to make it work for now.
697 let nm = substitute(nm, "[^A-Z]", 'Z', "g")
698 let sp = char2nr('A') - 1
700 let sp = char2nr(' ')
702 " convert first six chars into a number for sorting:
703 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)
706 func! s:BMHash2(name)
707 let nm = substitute(a:name, ".", '\L\0', "")
708 " Not exactly right for EBCDIC...
709 if nm[0] < 'a' || nm[0] > 'z'
726 " insert a buffer name into the buffer menu:
727 func! s:BMFilename(name, num)
728 if isdirectory(a:name)
731 let munge = <SID>BMMunge(a:name, a:num)
732 let hash = <SID>BMHash(munge)
733 if s:bmenu_short == 0
734 let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
736 let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
738 " set 'cpo' to include the <CR>
741 exe name . ' :confirm b' . a:num . '<CR>'
745 " Truncate a long path to fit it in a menu item.
746 if !exists("g:bmenu_max_pathlen")
747 let g:bmenu_max_pathlen = 35
749 func! s:BMTruncName(fname)
751 if g:bmenu_max_pathlen < 5
754 let len = strlen(name)
755 if len > g:bmenu_max_pathlen
756 let amountl = (g:bmenu_max_pathlen / 2) - 2
757 let amountr = g:bmenu_max_pathlen - amountl - 3
758 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
759 let left = substitute(name, pattern, '\1', '')
760 let right = substitute(name, pattern, '\2', '')
761 if strlen(left) + strlen(right) < len
762 let name = left . '...' . right
769 func! s:BMMunge(fname, bnum)
772 if !exists("g:menutrans_no_file")
773 let g:menutrans_no_file = "[No file]"
775 let name = g:menutrans_no_file
777 let name = fnamemodify(name, ':p:~')
779 " detach file name and separate it out:
780 let name2 = fnamemodify(name, ':t')
782 let name2 = name2 . ' (' . a:bnum . ')'
784 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
785 let name = escape(name, "\\. \t|")
786 let name = substitute(name, "&", "&&", "g")
787 let name = substitute(name, "\n", "^@", "g")
791 " When just starting Vim, load the buffer menu later
792 if has("vim_starting")
793 augroup LoadBufferMenu
794 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
795 au VimEnter * au! LoadBufferMenu
801 endif " !exists("no_buffers_menu")
804 an 70.300 &Window.&New<Tab>^Wn <C-W>n
805 an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
806 an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
807 an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
809 an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
810 if !exists("*MenuExplOpen")
815 exe "20vsp " . s:FnameEscape(expand("%:p:h"))
820 an 70.335 &Window.-SEP1- <Nop>
821 an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
822 an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR>
823 an 70.350 &Window.-SEP2- <Nop>
824 an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K
825 an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J
826 an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH <C-W>H
827 an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL <C-W>L
828 an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R
829 an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r
830 an 70.365 &Window.-SEP3- <Nop>
831 an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>=
832 an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_
833 an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_
834 an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\|
835 an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\|
838 an 1.10 PopUp.&Undo u
839 an 1.15 PopUp.-SEP1- <Nop>
840 vnoremenu 1.20 PopUp.Cu&t "+x
841 vnoremenu 1.30 PopUp.&Copy "+y
842 cnoremenu 1.30 PopUp.&Copy <C-Y>
843 nnoremenu 1.40 PopUp.&Paste "+gP
844 cnoremenu 1.40 PopUp.&Paste <C-R>+
845 exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v']
846 exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i']
847 vnoremenu 1.50 PopUp.&Delete x
848 an 1.55 PopUp.-SEP2- <Nop>
849 vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
851 nnoremenu 1.70 PopUp.Select\ &Word vaw
852 onoremenu 1.70 PopUp.Select\ &Word aw
853 vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
854 inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw
855 cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
857 nnoremenu 1.73 PopUp.Select\ &Sentence vas
858 onoremenu 1.73 PopUp.Select\ &Sentence as
859 vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
860 inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas
861 cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
863 nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap
864 onoremenu 1.77 PopUp.Select\ Pa&ragraph ap
865 vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
866 inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap
867 cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
869 nnoremenu 1.80 PopUp.Select\ &Line V
870 onoremenu 1.80 PopUp.Select\ &Line <C-C>V
871 vnoremenu 1.80 PopUp.Select\ &Line <C-C>V
872 inoremenu 1.80 PopUp.Select\ &Line <C-O>V
873 cnoremenu 1.80 PopUp.Select\ &Line <C-C>V
875 nnoremenu 1.90 PopUp.Select\ &Block <C-V>
876 onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
877 vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
878 inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V>
879 cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
881 noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR>
882 inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR>
883 cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR>
886 " Spell suggestions in the popup menu. Note that this will slow down the
887 " appearance of the menu!
888 func! <SID>SpellPopup()
889 if exists("s:changeitem") && s:changeitem != ''
893 " Return quickly if spell checking is not enabled.
894 if !&spell || &spelllang == ''
898 let curcol = col('.')
899 let [w, a] = spellbadword()
900 if col('.') > curcol " don't use word after the cursor
902 call cursor(0, curcol) " put the cursor back where it was
906 let s:suglist = [substitute(w, '.*', '\u&', '')]
908 let s:suglist = spellsuggest(w, 10)
910 if len(s:suglist) <= 0
911 call cursor(0, curcol) " put the cursor back where it was
913 let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
917 exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
918 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
922 let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
923 exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
925 let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
926 exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
928 anoremenu 1.8 PopUp.-SpellSep- :
933 func! <SID>SpellReplace(n)
935 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
936 \ . strpart(l, col('.') + len(s:fromword) - 1))
939 func! <SID>SpellDel()
940 exe "aunmenu PopUp." . s:changeitem
941 exe "aunmenu PopUp." . s:additem
942 exe "aunmenu PopUp." . s:ignoreitem
943 aunmenu PopUp.-SpellSep-
944 let s:changeitem = ''
947 augroup SpellPopupMenu
948 au! MenuPopup * call <SID>SpellPopup()
952 " The GUI toolbar (for MS-Windows and GTK)
954 an 1.10 ToolBar.Open :browse confirm e<CR>
955 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
956 an 1.30 ToolBar.SaveAll :browse confirm wa<CR>
959 an 1.40 ToolBar.Print :hardcopy<CR>
960 vunmenu ToolBar.Print
961 vnoremenu ToolBar.Print :hardcopy<CR>
963 an 1.40 ToolBar.Print :w !lpr<CR>
964 vunmenu ToolBar.Print
965 vnoremenu ToolBar.Print :w !lpr<CR>
968 an 1.45 ToolBar.-sep1- <Nop>
969 an 1.50 ToolBar.Undo u
970 an 1.60 ToolBar.Redo <C-R>
972 an 1.65 ToolBar.-sep2- <Nop>
973 vnoremenu 1.70 ToolBar.Cut "+x
974 vnoremenu 1.80 ToolBar.Copy "+y
975 cnoremenu 1.80 ToolBar.Copy <C-Y>
976 nnoremenu 1.90 ToolBar.Paste "+gP
977 cnoremenu ToolBar.Paste <C-R>+
978 exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v']
979 exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i']
981 if !has("gui_athena")
982 an 1.95 ToolBar.-sep3- <Nop>
983 an 1.100 ToolBar.Replace :promptrepl<CR>
984 vunmenu ToolBar.Replace
985 vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
986 an 1.110 ToolBar.FindNext n
987 an 1.120 ToolBar.FindPrev N
990 an 1.215 ToolBar.-sep5- <Nop>
991 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR>
992 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR>
993 an 1.240 ToolBar.RunScript :browse so<CR>
995 an 1.245 ToolBar.-sep6- <Nop>
996 an 1.250 ToolBar.Make :make<CR>
997 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
998 an 1.280 ToolBar.TagJump g<C-]>
1000 an 1.295 ToolBar.-sep7- <Nop>
1001 an 1.300 ToolBar.Help :help<CR>
1002 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR>
1004 " Only set the tooltips here if not done in a language menu file
1005 if exists("*Do_toolbar_tmenu")
1006 call Do_toolbar_tmenu()
1008 let did_toolbar_tmenu = 1
1009 tmenu ToolBar.Open Open file
1010 tmenu ToolBar.Save Save current file
1011 tmenu ToolBar.SaveAll Save all files
1012 tmenu ToolBar.Print Print
1013 tmenu ToolBar.Undo Undo
1014 tmenu ToolBar.Redo Redo
1015 tmenu ToolBar.Cut Cut to clipboard
1016 tmenu ToolBar.Copy Copy to clipboard
1017 tmenu ToolBar.Paste Paste from Clipboard
1018 if !has("gui_athena")
1019 tmenu ToolBar.Find Find...
1020 tmenu ToolBar.FindNext Find Next
1021 tmenu ToolBar.FindPrev Find Previous
1022 tmenu ToolBar.Replace Find / Replace...
1024 tmenu ToolBar.LoadSesn Choose a session to load
1025 tmenu ToolBar.SaveSesn Save current session
1026 tmenu ToolBar.RunScript Choose a Vim Script to run
1027 tmenu ToolBar.Make Make current project (:make)
1028 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .)
1029 tmenu ToolBar.TagJump Jump to tag under cursor
1030 tmenu ToolBar.Help Vim Help
1031 tmenu ToolBar.FindHelp Search Vim Help
1034 " Select a session to load; default to current session name if present
1035 fun! s:LoadVimSesn()
1036 if strlen(v:this_session) > 0
1037 let name = s:FnameEscape(v:this_session)
1039 let name = "Session.vim"
1041 execute "browse so " . name
1044 " Select a session to save; default to current session name if present
1045 fun! s:SaveVimSesn()
1046 if strlen(v:this_session) == 0
1047 let v:this_session = "Session.vim"
1049 execute "browse mksession! " . s:FnameEscape(v:this_session)
1054 endif " !exists("did_install_default_menus")
1056 " Define these items always, so that syntax can be switched on when it wasn't.
1057 " But skip them when the Syntax menu was disabled by the user.
1058 if !exists("did_install_syntax_menu")
1059 an 50.212 &Syntax.&Manual :syn manual<CR>
1060 an 50.214 &Syntax.A&utomatic :syn on<CR>
1061 an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
1062 if !exists("*s:SynOnOff")
1064 if has("syntax_items")
1067 if !exists("g:syntax_on")
1077 " Install the Syntax menu only when filetype.vim has been loaded or when
1078 " manual syntax highlighting is enabled.
1079 " Avoid installing the Syntax menu twice.
1080 if (exists("did_load_filetypes") || exists("syntax_on"))
1081 \ && !exists("did_install_syntax_menu")
1082 let did_install_syntax_menu = 1
1084 " Skip setting up the individual syntax selection menus unless
1085 " do_syntax_sel_menu is defined (it takes quite a bit of time).
1086 if exists("do_syntax_sel_menu")
1087 runtime! synmenu.vim
1089 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>
1090 an 50.195 &Syntax.-SEP1- <Nop>
1093 an 50.210 &Syntax.&Off :syn off<CR>
1094 an 50.700 &Syntax.-SEP3- <Nop>
1095 an 50.710 &Syntax.Co&lor\ test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
1096 an 50.720 &Syntax.&Highlight\ test :runtime syntax/hitest.vim<CR>
1097 an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
1099 endif " !exists("did_install_syntax_menu")
1101 " Restore the previous value of 'cpoptions'.
1102 let &cpo = s:cpo_save