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: 2007 Jan 09
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 " Localized menus currently not supported in MacVim
21 if !has("gui_macvim") && (exists("v:lang") || &langmenu != "")
22 " Try to find a menu translation file for the current language.
24 if &langmenu =~ "none"
27 let s:lang = &langmenu
32 " A language name must be at least two characters, don't accept "C"
34 " When the language does not include the charset add 'encoding'
35 if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
36 let s:lang = s:lang . '.' . &enc
39 " We always use a lowercase name.
40 " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
41 " systems appear to use this.
42 " Change spaces to underscores.
43 let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
44 let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
45 let s:lang = substitute(s:lang, " ", "_", "g")
46 " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
47 let s:lang = substitute(s:lang, "@euro", "", "")
48 " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
49 " same menu file for them.
50 let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
52 exe "runtime! lang/menu_" . s:lang . ".vim"
54 if !exists("did_menu_trans")
55 " There is no exact match, try matching with a wildcard added
56 " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
57 let s:lang = substitute(s:lang, '\.[^.]*', "", "")
58 exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
60 if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
61 " On windows locale names are complicated, try using $LANG, it might
62 " have been set by set_init_1(). But don't do this for "en" or "en_us".
63 " But don't match "slovak" when $LANG is "sl".
64 exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
72 an 9999.10 &Help.&Overview<Tab><F1> :help<CR>
73 an 9999.20 &Help.&User\ Manual :help usr_toc<CR>
74 an 9999.30 &Help.&How-to\ links :help how-to<CR>
75 an <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR>
76 an 9999.45 &Help.-sep1- <Nop>
77 an 9999.50 &Help.&Credits :help credits<CR>
78 an 9999.60 &Help.Co&pying :help copying<CR>
79 an 9999.70 &Help.&Sponsor/Register :help sponsor<CR>
80 an 9999.70 &Help.O&rphans :help kcc<CR>
81 an 9999.75 &Help.-sep2- <Nop>
82 an 9999.80 &Help.&Version :version<CR>
83 an 9999.90 &Help.&About :intro<CR>
86 if !exists("g:menutrans_help_dialog")
87 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')"
89 let h = inputdialog(g:menutrans_help_dialog)
92 silent! exe "help " . h
100 an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR>
101 an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR>
102 an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew :browse tabnew<CR>
103 an 10.325 &File.&New<Tab>:enew :confirm enew<CR>
104 an <silent> 10.330 &File.&Close<Tab>:close
105 \ :if winheight(2) < 0 <Bar>
108 \ confirm close <Bar>
110 an 10.335 &File.-SEP1- <Nop>
111 an <silent> 10.340 &File.&Save<Tab>:w :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
112 an 10.350 &File.Save\ &As\.\.\.<Tab>:sav :browse confirm saveas<CR>
115 an 10.400 &File.-SEP2- <Nop>
116 an 10.410 &File.Split\ &Diff\ with\.\.\. :browse vert diffsplit<CR>
117 an 10.420 &File.Split\ Patched\ &By\.\.\. :browse vert diffpatch<CR>
121 an 10.500 &File.-SEP3- <Nop>
122 an 10.510 &File.&Print :hardcopy<CR>
124 vnoremenu &File.&Print :hardcopy<CR>
126 an 10.500 &File.-SEP3- <Nop>
127 an 10.510 &File.&Print :w !lpr<CR>
129 vnoremenu &File.&Print :w !lpr<CR>
131 an 10.600 &File.-SEP4- <Nop>
132 an 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR>
133 an 10.620 &File.E&xit<Tab>:qa :confirm qa<CR>
135 func! <SID>SelectAll()
136 exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
141 an 20.310 &Edit.&Undo<Tab>u u
142 an 20.320 &Edit.&Redo<Tab>^R <C-R>
143 an 20.330 &Edit.Rep&eat<Tab>\. .
145 an 20.335 &Edit.-SEP1- <Nop>
146 vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
147 vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
148 cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
149 nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
150 cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
151 exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v']
152 exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['i']
153 nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p
154 inoremenu &Edit.Put\ &Before<Tab>[p <C-O>[p
155 nnoremenu 20.380 &Edit.Put\ &After<Tab>]p ]p
156 inoremenu &Edit.Put\ &After<Tab>]p <C-O>]p
157 if has("win32") || has("win16")
158 vnoremenu 20.390 &Edit.&Delete<Tab>x x
160 noremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG :<C-U>call <SID>SelectAll()<CR>
161 inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-O>:call <SID>SelectAll()<CR>
162 cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-U>call <SID>SelectAll()<CR>
164 an 20.405 &Edit.-SEP2- <Nop>
165 if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
166 an 20.410 &Edit.&Find\.\.\. :promptfind<CR>
167 vunmenu &Edit.&Find\.\.\.
168 vnoremenu <silent> &Edit.&Find\.\.\. y:promptfind <C-R>=<SID>FixFText()<CR><CR>
169 an 20.420 &Edit.Find\ and\ Rep&lace\.\.\. :promptrepl<CR>
170 vunmenu &Edit.Find\ and\ Rep&lace\.\.\.
171 vnoremenu <silent> &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
173 an 20.410 &Edit.&Find<Tab>/ /
174 an 20.420 &Edit.Find\ and\ Rep&lace<Tab>:%s :%s/
175 vunmenu &Edit.Find\ and\ Rep&lace<Tab>:%s
176 vnoremenu &Edit.Find\ and\ Rep&lace<Tab>:s :s/
179 an 20.425 &Edit.-SEP3- <Nop>
180 an 20.430 &Edit.Settings\ &Window :options<CR>
181 an 20.435 &Edit.Startup\ &Settings :call <SID>EditVimrc()<CR>
185 let fname = "$MYVIMRC"
186 elseif has("win32") || has("dos32") || has("dos16") || has("os2")
188 let fname = "$HOME/_vimrc"
190 let fname = "$VIM/_vimrc"
193 let fname = "s:.vimrc"
195 let fname = "$HOME/.vimrc"
205 " Fix text in nameless register to be used with :promptfind.
206 return substitute(@", "[\r\n]", '\\n', 'g')
209 " Edit/Global Settings
210 an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR>
211 an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignore-case<Tab>:set\ ic! :set ic! ic?<CR>
212 an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showmatch<Tab>:set\ sm! :set sm! sm?<CR>
214 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 1\ :set so=1<CR>
215 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 2\ :set so=2<CR>
216 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 3\ :set so=3<CR>
217 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 4\ :set so=4<CR>
218 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 5\ :set so=5<CR>
219 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 7\ :set so=7<CR>
220 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 10\ :set so=10<CR>
221 an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 100\ :set so=100<CR>
223 an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
224 an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
225 an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ mode :set ve=insert<CR>
226 an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
227 an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
228 an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im! :set im!<CR>
229 an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatible<Tab>:set\ cp! :set cp!<CR>
230 an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\. :call <SID>SearchP()<CR>
231 an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\. :call <SID>TagFiles()<CR>
234 an 20.440.300 &Edit.&Global\ Settings.-SEP1- <Nop>
235 an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar :call <SID>ToggleGuiOption("T")<CR>
236 an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
237 an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR>
238 an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
241 if !exists("g:menutrans_path_dialog")
242 let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
244 let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
246 let &path = substitute(n, ' ', '\\ ', 'g')
251 if !exists("g:menutrans_tags_dialog")
252 let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
254 let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
256 let &tags = substitute(n, ' ', '\\ ', 'g')
260 fun! s:ToggleGuiOption(option)
261 " If a:option is already set in guioptions, then we want to remove it
262 if match(&guioptions, "\\C" . a:option) > -1
263 exec "set go-=" . a:option
265 exec "set go+=" . a:option
272 an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu! :set nu! nu?<CR>
273 an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list! :set list! list?<CR>
274 an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap! :set wrap! wrap?<CR>
275 an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr! :set lbr! lbr?<CR>
276 an 20.440.160 &Edit.F&ile\ Settings.Toggle\ &expand-tab<Tab>:set\ et! :set et! et?<CR>
277 an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &auto-indent<Tab>:set\ ai! :set ai! ai?<CR>
278 an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-indenting<Tab>:set\ cin! :set cin! cin?<CR>
281 an 20.440.600 &Edit.F&ile\ Settings.-SEP2- <Nop>
282 an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2 :set sw=2 sw?<CR>
283 an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3 :set sw=3 sw?<CR>
284 an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4 :set sw=4 sw?<CR>
285 an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5 :set sw=5 sw?<CR>
286 an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6 :set sw=6 sw?<CR>
287 an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8 :set sw=8 sw?<CR>
289 an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2 :set sts=2 sts?<CR>
290 an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3 :set sts=3 sts?<CR>
291 an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4 :set sts=4 sts?<CR>
292 an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5 :set sts=5 sts?<CR>
293 an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6 :set sts=6 sts?<CR>
294 an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR>
296 an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR>
297 an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR>
299 if !exists("g:menutrans_textwidth_dialog")
300 let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
302 let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
304 " remove leading zeros to avoid it being used as an octal number
305 let &tw = substitute(n, "^0*", "", "")
310 if !exists("g:menutrans_fileformat_dialog")
311 let g:menutrans_fileformat_dialog = "Select format for writing the file"
313 if !exists("g:menutrans_fileformat_choices")
314 let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
323 let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
333 " Setup the Edit.Color Scheme submenu
334 let s:n = globpath(&runtimepath, "colors/*.vim")
336 while strlen(s:n) > 0
337 let s:i = stridx(s:n, "\n")
342 let s:name = strpart(s:n, 0, s:i)
343 let s:n = strpart(s:n, s:i + 1, 19999)
345 " Ignore case for VMS and windows
346 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
347 exe "an 20.450." . s:idx . ' &Edit.C&olor\ Scheme.' . s:name . " :colors " . s:name . "<CR>"
350 let s:idx = s:idx + 10
355 " Setup the Edit.Keymap submenu
357 let s:n = globpath(&runtimepath, "keymap/*.vim")
360 an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
361 while strlen(s:n) > 0
362 let s:i = stridx(s:n, "\n")
367 let s:name = strpart(s:n, 0, s:i)
368 let s:n = strpart(s:n, s:i + 1, 19999)
370 " Ignore case for VMS and windows
371 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
372 exe "an 20.460." . s:idx . ' &Edit.&Keymap.' . s:name . " :set keymap=" . s:name . "<CR>"
375 let s:idx = s:idx + 10
381 if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
382 an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
386 if !exists("g:ctags_command")
388 let g:ctags_command = "mc vim:ctags *.*"
390 let g:ctags_command = "ctags -R ."
394 an 40.300 &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
395 vunmenu &Tools.&Jump\ to\ this\ tag<Tab>g^]
396 vnoremenu &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
397 an 40.310 &Tools.Jump\ &back<Tab>^T <C-T>
398 an 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR>
400 if has("folding") || has("spell")
401 an 40.330 &Tools.-SEP1- <Nop>
404 " Tools.Spelling Menu
406 an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On :set spell<CR>
407 an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off :set nospell<CR>
408 an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s ]s
409 an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s [s
410 an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z= z=
411 an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall :spellrepall<CR>
412 an 40.335.200 &Tools.&Spelling.-SEP1- <Nop>
413 an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en" :set spl=en spell<CR>
414 an 40.335.220 &Tools.&Spelling.Set\ language\ to\ "en_au" :set spl=en_au spell<CR>
415 an 40.335.230 &Tools.&Spelling.Set\ language\ to\ "en_ca" :set spl=en_ca spell<CR>
416 an 40.335.240 &Tools.&Spelling.Set\ language\ to\ "en_gb" :set spl=en_gb spell<CR>
417 an 40.335.250 &Tools.&Spelling.Set\ language\ to\ "en_nz" :set spl=en_nz spell<CR>
418 an 40.335.260 &Tools.&Spelling.Set\ language\ to\ "en_us" :set spl=en_us spell<CR>
419 an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
421 let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
423 for cmd in s:undo_spellang
426 let s:undo_spellang = []
428 if &enc == "iso-8859-15"
435 let s = globpath(&rtp, "spell/*." . enc . ".spl")
438 for f in split(s, "\n")
439 let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
440 if nm != "en" && nm !~ '/'
442 let menuname = '&Tools.&Spelling.Set\ language\ to\ "' . nm . '"'
443 exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
444 let s:undo_spellang += ['aun ' . menuname]
450 echomsg "Could not find other spell files"
452 echomsg "Found spell file " . nm
454 echomsg "Found " . found . " more spell files"
456 " Need to redo this when 'encoding' is changed.
458 au! EncodingChanged * call <SID>SpellLang()
467 an 40.340.110 &Tools.&Folding.&Enable/Disable\ folds<Tab>zi zi
468 an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv zv
469 an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ only<Tab>zMzx zMzx
470 an 40.340.130 &Tools.&Folding.C&lose\ more\ folds<Tab>zm zm
471 an 40.340.140 &Tools.&Folding.&Close\ all\ folds<Tab>zM zM
472 an 40.340.150 &Tools.&Folding.O&pen\ more\ folds<Tab>zr zr
473 an 40.340.160 &Tools.&Folding.&Open\ all\ folds<Tab>zR zR
475 an 40.340.200 &Tools.&Folding.-SEP1- <Nop>
476 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual :set fdm=manual<CR>
477 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent :set fdm=indent<CR>
478 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
479 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax :set fdm=syntax<CR>
480 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff :set fdm=diff<CR>
481 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker :set fdm=marker<CR>
482 " create and delete folds
483 vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf zf
484 an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd zd
485 an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD zD
486 " moving around in folds
487 an 40.340.300 &Tools.&Folding.-SEP2- <Nop>
488 an 40.340.310.10 &Tools.&Folding.Fold\ col&umn\ width.\ &0\ :set fdc=0<CR>
489 an 40.340.310.20 &Tools.&Folding.Fold\ col&umn\ width.\ &2\ :set fdc=2<CR>
490 an 40.340.310.30 &Tools.&Folding.Fold\ col&umn\ width.\ &3\ :set fdc=3<CR>
491 an 40.340.310.40 &Tools.&Folding.Fold\ col&umn\ width.\ &4\ :set fdc=4<CR>
492 an 40.340.310.50 &Tools.&Folding.Fold\ col&umn\ width.\ &5\ :set fdc=5<CR>
493 an 40.340.310.60 &Tools.&Folding.Fold\ col&umn\ width.\ &6\ :set fdc=6<CR>
494 an 40.340.310.70 &Tools.&Folding.Fold\ col&umn\ width.\ &7\ :set fdc=7<CR>
495 an 40.340.310.80 &Tools.&Folding.Fold\ col&umn\ width.\ &8\ :set fdc=8<CR>
499 an 40.350.100 &Tools.&Diff.&Update :diffupdate<CR>
500 an 40.350.110 &Tools.&Diff.&Get\ Block :diffget<CR>
501 vunmenu &Tools.&Diff.&Get\ Block
502 vnoremenu &Tools.&Diff.&Get\ Block :diffget<CR>
503 an 40.350.120 &Tools.&Diff.&Put\ Block :diffput<CR>
504 vunmenu &Tools.&Diff.&Put\ Block
505 vnoremenu &Tools.&Diff.&Put\ Block :diffput<CR>
508 an 40.358 &Tools.-SEP2- <Nop>
509 an 40.360 &Tools.&Make<Tab>:make :make<CR>
510 an 40.370 &Tools.&List\ Errors<Tab>:cl :cl<CR>
511 an 40.380 &Tools.L&ist\ Messages<Tab>:cl! :cl!<CR>
512 an 40.390 &Tools.&Next\ Error<Tab>:cn :cn<CR>
513 an 40.400 &Tools.&Previous\ Error<Tab>:cp :cp<CR>
514 an 40.410 &Tools.&Older\ List<Tab>:cold :colder<CR>
515 an 40.420 &Tools.N&ewer\ List<Tab>:cnew :cnewer<CR>
516 an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin :cwin<CR>
517 an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen :copen<CR>
518 an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose :cclose<CR>
520 an 40.520 &Tools.-SEP3- <Nop>
521 an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
522 \ :call <SID>XxdConv()<CR>
523 an <silent> 40.540 &Tools.Conve&rt\ back<Tab>:%!xxd\ -r
524 \ :call <SID>XxdBack()<CR>
526 " Use a function to do the conversion, so that it also works with 'insertmode'
534 exe '%!"' . g:xxdprogram . '"'
536 if getline(1) =~ "^0000000:" " only if it worked
548 exe '%!"' . g:xxdprogram . '" -r'
551 doautocmd filetypedetect BufReadPost
556 if !exists("g:xxdprogram")
557 " On the PC xxd may not be in the path but in the install directory
558 if (has("win32") || has("dos32")) && !executable("xxd")
559 let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
561 let g:xxdprogram = "xxd"
566 " Setup the Tools.Compiler submenu
567 let s:n = globpath(&runtimepath, "compiler/*.vim")
569 while strlen(s:n) > 0
570 let s:i = stridx(s:n, "\n")
575 let s:name = strpart(s:n, 0, s:i)
576 let s:n = strpart(s:n, s:i + 1, 19999)
578 " Ignore case for VMS and windows
579 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
580 exe "an 30.440." . s:idx . ' &Tools.Se&T\ Compiler.' . s:name . " :compiler " . s:name . "<CR>"
583 let s:idx = s:idx + 10
588 if !exists("no_buffers_menu")
590 " Buffer list menu -- Setup functions & actions
592 " wait with building the menu until after loading 'session' files. Makes
596 if !exists("bmenu_priority")
597 let bmenu_priority = 60
602 " when adding too many buffers, redraw in short format
603 if s:bmenu_count == &menuitems && s:bmenu_short == 0
606 call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
607 let s:bmenu_count = s:bmenu_count + 1
614 let name = expand("<afile>")
618 let munge = <SID>BMMunge(name, expand("<abuf>"))
620 if s:bmenu_short == 0
621 exe 'silent! aun &Buffers.' . munge
623 exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
625 let s:bmenu_count = s:bmenu_count - 1
629 " Create the buffer menu (delete an existing one first).
632 let s:bmenu_short = 1
633 let s:bmenu_count = 0
635 " get new priority, if exists
637 let g:bmenu_priority = a:1
640 " remove old menu, if exists; keep one entry to avoid a torn off menu to
642 silent! unmenu &Buffers
643 exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
644 silent! unmenu! &Buffers
646 " create new menu; set 'cpo' to include the <CR>
649 exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
650 exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
651 exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
652 exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
653 exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
654 exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
656 unmenu &Buffers.Dummy
658 " figure out how many buffers there are
660 while buf <= bufnr('$')
661 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
662 \ && !getbufvar(buf, "&bufsecret")
663 let s:bmenu_count = s:bmenu_count + 1
667 if s:bmenu_count <= &menuitems
668 let s:bmenu_short = 0
671 " iterate through buffer list, adding each buffer to the menu:
673 while buf <= bufnr('$')
674 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
675 \ && !getbufvar(buf, "&bufsecret")
676 call <SID>BMFilename(bufname(buf), buf)
683 au BufCreate,BufFilePost * call <SID>BMAdd()
684 au BufDelete,BufFilePre * call <SID>BMRemove()
689 " Make name all upper case, so that chars are between 32 and 96
690 let nm = substitute(a:name, ".*", '\U\0', "")
692 " HACK: Replace all non alphabetics with 'Z'
693 " Just to make it work for now.
694 let nm = substitute(nm, "[^A-Z]", 'Z', "g")
695 let sp = char2nr('A') - 1
697 let sp = char2nr(' ')
699 " convert first six chars into a number for sorting:
700 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)
703 func! s:BMHash2(name)
704 let nm = substitute(a:name, ".", '\L\0', "")
705 " Not exactly right for EBCDIC...
706 if nm[0] < 'a' || nm[0] > 'z'
723 " insert a buffer name into the buffer menu:
724 func! s:BMFilename(name, num)
725 if isdirectory(a:name)
728 let munge = <SID>BMMunge(a:name, a:num)
729 let hash = <SID>BMHash(munge)
730 if s:bmenu_short == 0
731 let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
733 let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
735 " set 'cpo' to include the <CR>
738 exe name . ' :confirm b' . a:num . '<CR>'
742 " Truncate a long path to fit it in a menu item.
743 if !exists("g:bmenu_max_pathlen")
744 let g:bmenu_max_pathlen = 35
746 func! s:BMTruncName(fname)
748 if g:bmenu_max_pathlen < 5
751 let len = strlen(name)
752 if len > g:bmenu_max_pathlen
753 let amountl = (g:bmenu_max_pathlen / 2) - 2
754 let amountr = g:bmenu_max_pathlen - amountl - 3
755 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
756 let left = substitute(name, pattern, '\1', '')
757 let right = substitute(name, pattern, '\2', '')
758 if strlen(left) + strlen(right) < len
759 let name = left . '...' . right
766 func! s:BMMunge(fname, bnum)
769 if !exists("g:menutrans_no_file")
770 let g:menutrans_no_file = "[No file]"
772 let name = g:menutrans_no_file
774 let name = fnamemodify(name, ':p:~')
776 " detach file name and separate it out:
777 let name2 = fnamemodify(name, ':t')
779 let name2 = name2 . ' (' . a:bnum . ')'
781 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
782 let name = escape(name, "\\. \t|")
783 let name = substitute(name, "&", "&&", "g")
784 let name = substitute(name, "\n", "^@", "g")
788 " When just starting Vim, load the buffer menu later
789 if has("vim_starting")
790 augroup LoadBufferMenu
791 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
792 au VimEnter * au! LoadBufferMenu
798 endif " !exists("no_buffers_menu")
801 an 70.300 &Window.&New<Tab>^Wn <C-W>n
802 an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
803 an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
804 an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
806 an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
807 if !exists("*MenuExplOpen")
812 exe "20vsp " . expand("%:p:h")
817 an 70.335 &Window.-SEP1- <Nop>
818 an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
819 an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR>
820 an 70.350 &Window.-SEP2- <Nop>
821 an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K
822 an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J
823 an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH <C-W>H
824 an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL <C-W>L
825 an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R
826 an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r
827 an 70.365 &Window.-SEP3- <Nop>
828 an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>=
829 an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_
830 an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_
831 an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\|
832 an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\|
835 an 1.10 PopUp.&Undo u
836 an 1.15 PopUp.-SEP1- <Nop>
837 vnoremenu 1.20 PopUp.Cu&t "+x
838 vnoremenu 1.30 PopUp.&Copy "+y
839 cnoremenu 1.30 PopUp.&Copy <C-Y>
840 nnoremenu 1.40 PopUp.&Paste "+gP
841 cnoremenu 1.40 PopUp.&Paste <C-R>+
842 exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v']
843 exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i']
844 vnoremenu 1.50 PopUp.&Delete x
845 an 1.55 PopUp.-SEP2- <Nop>
846 vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
848 nnoremenu 1.70 PopUp.Select\ &Word vaw
849 onoremenu 1.70 PopUp.Select\ &Word aw
850 vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
851 inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw
852 cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
854 nnoremenu 1.73 PopUp.Select\ &Sentence vas
855 onoremenu 1.73 PopUp.Select\ &Sentence as
856 vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
857 inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas
858 cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
860 nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap
861 onoremenu 1.77 PopUp.Select\ Pa&ragraph ap
862 vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
863 inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap
864 cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
866 nnoremenu 1.80 PopUp.Select\ &Line V
867 onoremenu 1.80 PopUp.Select\ &Line <C-C>V
868 vnoremenu 1.80 PopUp.Select\ &Line <C-C>V
869 inoremenu 1.80 PopUp.Select\ &Line <C-O>V
870 cnoremenu 1.80 PopUp.Select\ &Line <C-C>V
872 nnoremenu 1.90 PopUp.Select\ &Block <C-V>
873 onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
874 vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
875 inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V>
876 cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
878 noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR>
879 inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR>
880 cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR>
883 " Spell suggestions in the popup menu. Note that this will slow down the
884 " appearance of the menu!
885 func! <SID>SpellPopup()
886 if exists("s:changeitem") && s:changeitem != ''
890 " Return quickly if spell checking is not enabled.
891 if !&spell || &spelllang == ''
895 let curcol = col('.')
896 let [w, a] = spellbadword()
897 if col('.') > curcol " don't use word after the cursor
899 call cursor(0, curcol) " put the cursor back where it was
903 let s:suglist = [substitute(w, '.*', '\u&', '')]
905 let s:suglist = spellsuggest(w, 10)
907 if len(s:suglist) <= 0
908 call cursor(0, curcol) " put the cursor back where it was
910 let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
914 exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
915 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
919 let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
920 exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
922 let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
923 exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
925 anoremenu 1.8 PopUp.-SpellSep- :
930 func! <SID>SpellReplace(n)
932 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
933 \ . strpart(l, col('.') + len(s:fromword) - 1))
936 func! <SID>SpellDel()
937 exe "aunmenu PopUp." . s:changeitem
938 exe "aunmenu PopUp." . s:additem
939 exe "aunmenu PopUp." . s:ignoreitem
940 aunmenu PopUp.-SpellSep-
941 let s:changeitem = ''
944 augroup SpellPopupMenu
945 au! MenuPopup * call <SID>SpellPopup()
949 " The GUI toolbar (for MS-Windows and GTK)
951 an 1.10 ToolBar.Open :browse confirm e<CR>
952 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
953 an 1.30 ToolBar.SaveAll :browse confirm wa<CR>
956 an 1.40 ToolBar.Print :hardcopy<CR>
957 vunmenu ToolBar.Print
958 vnoremenu ToolBar.Print :hardcopy<CR>
960 an 1.40 ToolBar.Print :w !lpr<CR>
961 vunmenu ToolBar.Print
962 vnoremenu ToolBar.Print :w !lpr<CR>
965 an 1.45 ToolBar.-sep1- <Nop>
966 an 1.50 ToolBar.Undo u
967 an 1.60 ToolBar.Redo <C-R>
969 an 1.65 ToolBar.-sep2- <Nop>
970 vnoremenu 1.70 ToolBar.Cut "+x
971 vnoremenu 1.80 ToolBar.Copy "+y
972 cnoremenu 1.80 ToolBar.Copy <C-Y>
973 nnoremenu 1.90 ToolBar.Paste "+gP
974 cnoremenu ToolBar.Paste <C-R>+
975 exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v']
976 exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i']
978 if !has("gui_athena")
979 an 1.95 ToolBar.-sep3- <Nop>
980 an 1.100 ToolBar.Replace :promptrepl<CR>
981 vunmenu ToolBar.Replace
982 vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
983 an 1.110 ToolBar.FindNext n
984 an 1.120 ToolBar.FindPrev N
987 an 1.215 ToolBar.-sep5- <Nop>
988 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR>
989 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR>
990 an 1.240 ToolBar.RunScript :browse so<CR>
992 an 1.245 ToolBar.-sep6- <Nop>
993 an 1.250 ToolBar.Make :make<CR>
994 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
995 an 1.280 ToolBar.TagJump g<C-]>
997 an 1.295 ToolBar.-sep7- <Nop>
998 an 1.300 ToolBar.Help :help<CR>
999 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR>
1001 " Only set the tooltips here if not done in a language menu file
1002 if exists("*Do_toolbar_tmenu")
1003 call Do_toolbar_tmenu()
1005 let did_toolbar_tmenu = 1
1006 tmenu ToolBar.Open Open file
1007 tmenu ToolBar.Save Save current file
1008 tmenu ToolBar.SaveAll Save all files
1009 tmenu ToolBar.Print Print
1010 tmenu ToolBar.Undo Undo
1011 tmenu ToolBar.Redo Redo
1012 tmenu ToolBar.Cut Cut to clipboard
1013 tmenu ToolBar.Copy Copy to clipboard
1014 tmenu ToolBar.Paste Paste from Clipboard
1015 if !has("gui_athena")
1016 tmenu ToolBar.Find Find...
1017 tmenu ToolBar.FindNext Find Next
1018 tmenu ToolBar.FindPrev Find Previous
1019 tmenu ToolBar.Replace Find / Replace...
1021 tmenu ToolBar.LoadSesn Choose a session to load
1022 tmenu ToolBar.SaveSesn Save current session
1023 tmenu ToolBar.RunScript Choose a Vim Script to run
1024 tmenu ToolBar.Make Make current project (:make)
1025 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .)
1026 tmenu ToolBar.TagJump Jump to tag under cursor
1027 tmenu ToolBar.Help Vim Help
1028 tmenu ToolBar.FindHelp Search Vim Help
1031 " Select a session to load; default to current session name if present
1032 fun! s:LoadVimSesn()
1033 if strlen(v:this_session) > 0
1034 let name = escape(v:this_session, ' \t#%$|<>"*?[{`')
1036 let name = "Session.vim"
1038 execute "browse so " . name
1041 " Select a session to save; default to current session name if present
1042 fun! s:SaveVimSesn()
1043 if strlen(v:this_session) == 0
1044 let v:this_session = "Session.vim"
1046 execute "browse mksession! " . escape(v:this_session, ' \t#%$|<>"*?[{`')
1051 endif " !exists("did_install_default_menus")
1053 " Define these items always, so that syntax can be switched on when it wasn't.
1054 " But skip them when the Syntax menu was disabled by the user.
1055 if !exists("did_install_syntax_menu")
1056 an 50.212 &Syntax.&Manual :syn manual<CR>
1057 an 50.214 &Syntax.A&utomatic :syn on<CR>
1058 an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
1059 if !exists("*s:SynOnOff")
1061 if has("syntax_items")
1064 if !exists("g:syntax_on")
1074 " Install the Syntax menu only when filetype.vim has been loaded or when
1075 " manual syntax highlighting is enabled.
1076 " Avoid installing the Syntax menu twice.
1077 if (exists("did_load_filetypes") || exists("syntax_on"))
1078 \ && !exists("did_install_syntax_menu")
1079 let did_install_syntax_menu = 1
1081 " Skip setting up the individual syntax selection menus unless
1082 " do_syntax_sel_menu is defined (it takes quite a bit of time).
1083 if exists("do_syntax_sel_menu")
1084 runtime! synmenu.vim
1086 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>
1087 an 50.195 &Syntax.-SEP1- <Nop>
1090 an 50.210 &Syntax.&Off :syn off<CR>
1091 an 50.700 &Syntax.-SEP3- <Nop>
1092 an 50.710 &Syntax.Co&lor\ test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
1093 an 50.720 &Syntax.&Highlight\ test :runtime syntax/hitest.vim<CR>
1094 an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
1096 endif " !exists("did_install_syntax_menu")
1098 " Restore the previous value of 'cpoptions'.
1099 let &cpo = s:cpo_save