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