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