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