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 Nov 19
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 let s:bmenu_count = s:bmenu_count + 1
666 if s:bmenu_count <= &menuitems
667 let s:bmenu_short = 0
670 " iterate through buffer list, adding each buffer to the menu:
672 while buf <= bufnr('$')
673 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
674 call <SID>BMFilename(bufname(buf), buf)
681 au BufCreate,BufFilePost * call <SID>BMAdd()
682 au BufDelete,BufFilePre * call <SID>BMRemove()
687 " Make name all upper case, so that chars are between 32 and 96
688 let nm = substitute(a:name, ".*", '\U\0', "")
690 " HACK: Replace all non alphabetics with 'Z'
691 " Just to make it work for now.
692 let nm = substitute(nm, "[^A-Z]", 'Z', "g")
693 let sp = char2nr('A') - 1
695 let sp = char2nr(' ')
697 " convert first six chars into a number for sorting:
698 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)
701 func! s:BMHash2(name)
702 let nm = substitute(a:name, ".", '\L\0', "")
703 " Not exactly right for EBCDIC...
704 if nm[0] < 'a' || nm[0] > 'z'
721 " insert a buffer name into the buffer menu:
722 func! s:BMFilename(name, num)
723 if isdirectory(a:name)
726 let munge = <SID>BMMunge(a:name, a:num)
727 let hash = <SID>BMHash(munge)
728 if s:bmenu_short == 0
729 let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
731 let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
733 " set 'cpo' to include the <CR>
736 exe name . ' :confirm b' . a:num . '<CR>'
740 " Truncate a long path to fit it in a menu item.
741 if !exists("g:bmenu_max_pathlen")
742 let g:bmenu_max_pathlen = 35
744 func! s:BMTruncName(fname)
746 if g:bmenu_max_pathlen < 5
749 let len = strlen(name)
750 if len > g:bmenu_max_pathlen
751 let amountl = (g:bmenu_max_pathlen / 2) - 2
752 let amountr = g:bmenu_max_pathlen - amountl - 3
753 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
754 let left = substitute(name, pattern, '\1', '')
755 let right = substitute(name, pattern, '\2', '')
756 if strlen(left) + strlen(right) < len
757 let name = left . '...' . right
764 func! s:BMMunge(fname, bnum)
767 if !exists("g:menutrans_no_file")
768 let g:menutrans_no_file = "[No file]"
770 let name = g:menutrans_no_file
772 let name = fnamemodify(name, ':p:~')
774 " detach file name and separate it out:
775 let name2 = fnamemodify(name, ':t')
777 let name2 = name2 . ' (' . a:bnum . ')'
779 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
780 let name = escape(name, "\\. \t|")
781 let name = substitute(name, "&", "&&", "g")
782 let name = substitute(name, "\n", "^@", "g")
786 " When just starting Vim, load the buffer menu later
787 if has("vim_starting")
788 augroup LoadBufferMenu
789 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
790 au VimEnter * au! LoadBufferMenu
796 endif " !exists("no_buffers_menu")
799 an 70.300 &Window.&New<Tab>^Wn <C-W>n
800 an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
801 an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
802 an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
804 an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
805 if !exists("*MenuExplOpen")
810 exe "20vsp " . expand("%:p:h")
815 an 70.335 &Window.-SEP1- <Nop>
816 an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
817 an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR>
818 an 70.350 &Window.-SEP2- <Nop>
819 an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K
820 an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J
821 an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH <C-W>H
822 an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL <C-W>L
823 an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R
824 an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r
825 an 70.365 &Window.-SEP3- <Nop>
826 an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>=
827 an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_
828 an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_
829 an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\|
830 an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\|
833 an 1.10 PopUp.&Undo u
834 an 1.15 PopUp.-SEP1- <Nop>
835 vnoremenu 1.20 PopUp.Cu&t "+x
836 vnoremenu 1.30 PopUp.&Copy "+y
837 cnoremenu 1.30 PopUp.&Copy <C-Y>
838 nnoremenu 1.40 PopUp.&Paste "+gP
839 cnoremenu 1.40 PopUp.&Paste <C-R>+
840 exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v']
841 exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i']
842 vnoremenu 1.50 PopUp.&Delete x
843 an 1.55 PopUp.-SEP2- <Nop>
844 vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
846 nnoremenu 1.70 PopUp.Select\ &Word vaw
847 onoremenu 1.70 PopUp.Select\ &Word aw
848 vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
849 inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw
850 cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
852 nnoremenu 1.73 PopUp.Select\ &Sentence vas
853 onoremenu 1.73 PopUp.Select\ &Sentence as
854 vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
855 inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas
856 cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
858 nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap
859 onoremenu 1.77 PopUp.Select\ Pa&ragraph ap
860 vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
861 inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap
862 cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
864 nnoremenu 1.80 PopUp.Select\ &Line V
865 onoremenu 1.80 PopUp.Select\ &Line <C-C>V
866 vnoremenu 1.80 PopUp.Select\ &Line <C-C>V
867 inoremenu 1.80 PopUp.Select\ &Line <C-O>V
868 cnoremenu 1.80 PopUp.Select\ &Line <C-C>V
870 nnoremenu 1.90 PopUp.Select\ &Block <C-V>
871 onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
872 vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
873 inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V>
874 cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
876 noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR>
877 inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR>
878 cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR>
881 " Spell suggestions in the popup menu. Note that this will slow down the
882 " appearance of the menu!
883 func! <SID>SpellPopup()
884 if exists("s:changeitem") && s:changeitem != ''
888 " Return quickly if spell checking is not enabled.
889 if !&spell || &spelllang == ''
893 let curcol = col('.')
894 let [w, a] = spellbadword()
895 if col('.') > curcol " don't use word after the cursor
897 call cursor(0, curcol) " put the cursor back where it was
901 let s:suglist = [substitute(w, '.*', '\u&', '')]
903 let s:suglist = spellsuggest(w, 10)
905 if len(s:suglist) <= 0
906 call cursor(0, curcol) " put the cursor back where it was
908 let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
912 exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
913 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
917 let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
918 exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
920 let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
921 exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
923 anoremenu 1.8 PopUp.-SpellSep- :
928 func! <SID>SpellReplace(n)
930 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
931 \ . strpart(l, col('.') + len(s:fromword) - 1))
934 func! <SID>SpellDel()
935 exe "aunmenu PopUp." . s:changeitem
936 exe "aunmenu PopUp." . s:additem
937 exe "aunmenu PopUp." . s:ignoreitem
938 aunmenu PopUp.-SpellSep-
939 let s:changeitem = ''
942 augroup SpellPopupMenu
943 au! MenuPopup * call <SID>SpellPopup()
947 " The GUI toolbar (for MS-Windows and GTK)
949 an 1.10 ToolBar.Open :browse confirm e<CR>
950 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
951 an 1.30 ToolBar.SaveAll :browse confirm wa<CR>
954 an 1.40 ToolBar.Print :hardcopy<CR>
955 vunmenu ToolBar.Print
956 vnoremenu ToolBar.Print :hardcopy<CR>
958 an 1.40 ToolBar.Print :w !lpr<CR>
959 vunmenu ToolBar.Print
960 vnoremenu ToolBar.Print :w !lpr<CR>
963 an 1.45 ToolBar.-sep1- <Nop>
964 an 1.50 ToolBar.Undo u
965 an 1.60 ToolBar.Redo <C-R>
967 an 1.65 ToolBar.-sep2- <Nop>
968 vnoremenu 1.70 ToolBar.Cut "+x
969 vnoremenu 1.80 ToolBar.Copy "+y
970 cnoremenu 1.80 ToolBar.Copy <C-Y>
971 nnoremenu 1.90 ToolBar.Paste "+gP
972 cnoremenu ToolBar.Paste <C-R>+
973 exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v']
974 exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i']
976 if !has("gui_athena")
977 an 1.95 ToolBar.-sep3- <Nop>
978 an 1.100 ToolBar.Replace :promptrepl<CR>
979 vunmenu ToolBar.Replace
980 vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
981 an 1.110 ToolBar.FindNext n
982 an 1.120 ToolBar.FindPrev N
985 an 1.215 ToolBar.-sep5- <Nop>
986 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR>
987 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR>
988 an 1.240 ToolBar.RunScript :browse so<CR>
990 an 1.245 ToolBar.-sep6- <Nop>
991 an 1.250 ToolBar.Make :make<CR>
992 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
993 an 1.280 ToolBar.TagJump g<C-]>
995 an 1.295 ToolBar.-sep7- <Nop>
996 an 1.300 ToolBar.Help :help<CR>
997 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR>
999 " Only set the tooltips here if not done in a language menu file
1000 if exists("*Do_toolbar_tmenu")
1001 call Do_toolbar_tmenu()
1003 let did_toolbar_tmenu = 1
1004 tmenu ToolBar.Open Open file
1005 tmenu ToolBar.Save Save current file
1006 tmenu ToolBar.SaveAll Save all files
1007 tmenu ToolBar.Print Print
1008 tmenu ToolBar.Undo Undo
1009 tmenu ToolBar.Redo Redo
1010 tmenu ToolBar.Cut Cut to clipboard
1011 tmenu ToolBar.Copy Copy to clipboard
1012 tmenu ToolBar.Paste Paste from Clipboard
1013 if !has("gui_athena")
1014 tmenu ToolBar.Find Find...
1015 tmenu ToolBar.FindNext Find Next
1016 tmenu ToolBar.FindPrev Find Previous
1017 tmenu ToolBar.Replace Find / Replace...
1019 tmenu ToolBar.LoadSesn Choose a session to load
1020 tmenu ToolBar.SaveSesn Save current session
1021 tmenu ToolBar.RunScript Choose a Vim Script to run
1022 tmenu ToolBar.Make Make current project (:make)
1023 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .)
1024 tmenu ToolBar.TagJump Jump to tag under cursor
1025 tmenu ToolBar.Help Vim Help
1026 tmenu ToolBar.FindHelp Search Vim Help
1029 " Select a session to load; default to current session name if present
1030 fun! s:LoadVimSesn()
1031 if strlen(v:this_session) > 0
1032 let name = escape(v:this_session, ' \t#%$|<>"*?[{`')
1034 let name = "Session.vim"
1036 execute "browse so " . name
1039 " Select a session to save; default to current session name if present
1040 fun! s:SaveVimSesn()
1041 if strlen(v:this_session) == 0
1042 let v:this_session = "Session.vim"
1044 execute "browse mksession! " . escape(v:this_session, ' \t#%$|<>"*?[{`')
1049 endif " !exists("did_install_default_menus")
1051 " Define these items always, so that syntax can be switched on when it wasn't.
1052 " But skip them when the Syntax menu was disabled by the user.
1053 if !exists("did_install_syntax_menu")
1054 an 50.212 &Syntax.&Manual :syn manual<CR>
1055 an 50.214 &Syntax.A&utomatic :syn on<CR>
1056 an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
1057 if !exists("*s:SynOnOff")
1059 if has("syntax_items")
1062 if !exists("g:syntax_on")
1072 " Install the Syntax menu only when filetype.vim has been loaded or when
1073 " manual syntax highlighting is enabled.
1074 " Avoid installing the Syntax menu twice.
1075 if (exists("did_load_filetypes") || exists("syntax_on"))
1076 \ && !exists("did_install_syntax_menu")
1077 let did_install_syntax_menu = 1
1079 " Skip setting up the individual syntax selection menus unless
1080 " do_syntax_sel_menu is defined (it takes quite a bit of time).
1081 if exists("do_syntax_sel_menu")
1082 runtime! synmenu.vim
1084 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>
1085 an 50.195 &Syntax.-SEP1- <Nop>
1088 an 50.210 &Syntax.&Off :syn off<CR>
1089 an 50.700 &Syntax.-SEP3- <Nop>
1090 an 50.710 &Syntax.Co&lor\ test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
1091 an 50.720 &Syntax.&Highlight\ test :runtime syntax/hitest.vim<CR>
1092 an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
1094 endif " !exists("did_install_syntax_menu")
1096 " Restore the previous value of 'cpoptions'.
1097 let &cpo = s:cpo_save