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 Jan 09 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 \ && !getbufvar(buf, "&bufsecret") 662 let s:bmenu_count = s:bmenu_count + 1 663 endif 664 let buf = buf + 1 665 endwhile 666 if s:bmenu_count <= &menuitems 667 let s:bmenu_short = 0 668 endif 669 670 " iterate through buffer list, adding each buffer to the menu: 671 let buf = 1 672 while buf <= bufnr('$') 673 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf) 674 \ && !getbufvar(buf, "&bufsecret") 675 call <SID>BMFilename(bufname(buf), buf) 676 endif 677 let buf = buf + 1 678 endwhile 679 let s:bmenu_wait = 0 680 aug buffer_list 681 au! 682 au BufCreate,BufFilePost * call <SID>BMAdd() 683 au BufDelete,BufFilePre * call <SID>BMRemove() 684 aug END 685endfunc 686 687func! s:BMHash(name) 688 " Make name all upper case, so that chars are between 32 and 96 689 let nm = substitute(a:name, ".*", '\U\0', "") 690 if has("ebcdic") 691 " HACK: Replace all non alphabetics with 'Z' 692 " Just to make it work for now. 693 let nm = substitute(nm, "[^A-Z]", 'Z', "g") 694 let sp = char2nr('A') - 1 695 else 696 let sp = char2nr(' ') 697 endif 698 " convert first six chars into a number for sorting: 699 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) 700endfunc 701 702func! s:BMHash2(name) 703 let nm = substitute(a:name, ".", '\L\0', "") 704 " Not exactly right for EBCDIC... 705 if nm[0] < 'a' || nm[0] > 'z' 706 return '&others.' 707 elseif nm[0] <= 'd' 708 return '&abcd.' 709 elseif nm[0] <= 'h' 710 return '&efgh.' 711 elseif nm[0] <= 'l' 712 return '&ijkl.' 713 elseif nm[0] <= 'p' 714 return '&mnop.' 715 elseif nm[0] <= 't' 716 return '&qrst.' 717 else 718 return '&u-z.' 719 endif 720endfunc 721 722" insert a buffer name into the buffer menu: 723func! s:BMFilename(name, num) 724 if isdirectory(a:name) 725 return 726 endif 727 let munge = <SID>BMMunge(a:name, a:num) 728 let hash = <SID>BMHash(munge) 729 if s:bmenu_short == 0 730 let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge 731 else 732 let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge 733 endif 734 " set 'cpo' to include the <CR> 735 let cpo_save = &cpo 736 set cpo&vim 737 exe name . ' :confirm b' . a:num . '<CR>' 738 let &cpo = cpo_save 739endfunc 740 741" Truncate a long path to fit it in a menu item. 742if !exists("g:bmenu_max_pathlen") 743 let g:bmenu_max_pathlen = 35 744endif 745func! s:BMTruncName(fname) 746 let name = a:fname 747 if g:bmenu_max_pathlen < 5 748 let name = "" 749 else 750 let len = strlen(name) 751 if len > g:bmenu_max_pathlen 752 let amountl = (g:bmenu_max_pathlen / 2) - 2 753 let amountr = g:bmenu_max_pathlen - amountl - 3 754 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$' 755 let left = substitute(name, pattern, '\1', '') 756 let right = substitute(name, pattern, '\2', '') 757 if strlen(left) + strlen(right) < len 758 let name = left . '...' . right 759 endif 760 endif 761 endif 762 return name 763endfunc 764 765func! s:BMMunge(fname, bnum) 766 let name = a:fname 767 if name == '' 768 if !exists("g:menutrans_no_file") 769 let g:menutrans_no_file = "[No file]" 770 endif 771 let name = g:menutrans_no_file 772 else 773 let name = fnamemodify(name, ':p:~') 774 endif 775 " detach file name and separate it out: 776 let name2 = fnamemodify(name, ':t') 777 if a:bnum >= 0 778 let name2 = name2 . ' (' . a:bnum . ')' 779 endif 780 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h')) 781 let name = escape(name, "\\. \t|") 782 let name = substitute(name, "&", "&&", "g") 783 let name = substitute(name, "\n", "^@", "g") 784 return name 785endfunc 786 787" When just starting Vim, load the buffer menu later 788if has("vim_starting") 789 augroup LoadBufferMenu 790 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif 791 au VimEnter * au! LoadBufferMenu 792 augroup END 793else 794 call <SID>BMShow() 795endif 796 797endif " !exists("no_buffers_menu") 798 799" Window menu 800an 70.300 &Window.&New<Tab>^Wn <C-W>n 801an 70.310 &Window.S&plit<Tab>^Ws <C-W>s 802an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^> 803an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v 804if has("vertsplit") 805 an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR> 806 if !exists("*MenuExplOpen") 807 fun MenuExplOpen() 808 if @% == "" 809 20vsp . 810 else 811 exe "20vsp " . expand("%:p:h") 812 endif 813 endfun 814 endif 815endif 816an 70.335 &Window.-SEP1- <Nop> 817an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR> 818an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR> 819an 70.350 &Window.-SEP2- <Nop> 820an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K 821an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J 822an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH <C-W>H 823an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL <C-W>L 824an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R 825an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r 826an 70.365 &Window.-SEP3- <Nop> 827an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>= 828an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_ 829an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_ 830an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\| 831an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\| 832 833" The popup menu 834an 1.10 PopUp.&Undo u 835an 1.15 PopUp.-SEP1- <Nop> 836vnoremenu 1.20 PopUp.Cu&t "+x 837vnoremenu 1.30 PopUp.&Copy "+y 838cnoremenu 1.30 PopUp.&Copy <C-Y> 839nnoremenu 1.40 PopUp.&Paste "+gP 840cnoremenu 1.40 PopUp.&Paste <C-R>+ 841exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v'] 842exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i'] 843vnoremenu 1.50 PopUp.&Delete x 844an 1.55 PopUp.-SEP2- <Nop> 845vnoremenu 1.60 PopUp.Select\ Blockwise <C-V> 846 847nnoremenu 1.70 PopUp.Select\ &Word vaw 848onoremenu 1.70 PopUp.Select\ &Word aw 849vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw 850inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw 851cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw 852 853nnoremenu 1.73 PopUp.Select\ &Sentence vas 854onoremenu 1.73 PopUp.Select\ &Sentence as 855vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas 856inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas 857cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas 858 859nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap 860onoremenu 1.77 PopUp.Select\ Pa&ragraph ap 861vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap 862inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap 863cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap 864 865nnoremenu 1.80 PopUp.Select\ &Line V 866onoremenu 1.80 PopUp.Select\ &Line <C-C>V 867vnoremenu 1.80 PopUp.Select\ &Line <C-C>V 868inoremenu 1.80 PopUp.Select\ &Line <C-O>V 869cnoremenu 1.80 PopUp.Select\ &Line <C-C>V 870 871nnoremenu 1.90 PopUp.Select\ &Block <C-V> 872onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 873vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 874inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V> 875cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 876 877noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR> 878inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR> 879cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR> 880 881if has("spell") 882 " Spell suggestions in the popup menu. Note that this will slow down the 883 " appearance of the menu! 884 func! <SID>SpellPopup() 885 if exists("s:changeitem") && s:changeitem != '' 886 call <SID>SpellDel() 887 endif 888 889 " Return quickly if spell checking is not enabled. 890 if !&spell || &spelllang == '' 891 return 892 endif 893 894 let curcol = col('.') 895 let [w, a] = spellbadword() 896 if col('.') > curcol " don't use word after the cursor 897 let w = '' 898 call cursor(0, curcol) " put the cursor back where it was 899 endif 900 if w != '' 901 if a == 'caps' 902 let s:suglist = [substitute(w, '.*', '\u&', '')] 903 else 904 let s:suglist = spellsuggest(w, 10) 905 endif 906 if len(s:suglist) <= 0 907 call cursor(0, curcol) " put the cursor back where it was 908 else 909 let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to' 910 let s:fromword = w 911 let pri = 1 912 for sug in s:suglist 913 exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .') 914 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>' 915 let pri += 1 916 endfor 917 918 let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list' 919 exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>' 920 921 let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"' 922 exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>' 923 924 anoremenu 1.8 PopUp.-SpellSep- : 925 endif 926 endif 927 endfunc 928 929 func! <SID>SpellReplace(n) 930 let l = getline('.') 931 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1] 932 \ . strpart(l, col('.') + len(s:fromword) - 1)) 933 endfunc 934 935 func! <SID>SpellDel() 936 exe "aunmenu PopUp." . s:changeitem 937 exe "aunmenu PopUp." . s:additem 938 exe "aunmenu PopUp." . s:ignoreitem 939 aunmenu PopUp.-SpellSep- 940 let s:changeitem = '' 941 endfun 942 943 augroup SpellPopupMenu 944 au! MenuPopup * call <SID>SpellPopup() 945 augroup END 946endif 947 948" The GUI toolbar (for MS-Windows and GTK) 949if has("toolbar") 950 an 1.10 ToolBar.Open :browse confirm e<CR> 951 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR> 952 an 1.30 ToolBar.SaveAll :browse confirm wa<CR> 953 954 if has("printer") 955 an 1.40 ToolBar.Print :hardcopy<CR> 956 vunmenu ToolBar.Print 957 vnoremenu ToolBar.Print :hardcopy<CR> 958 elseif has("unix") 959 an 1.40 ToolBar.Print :w !lpr<CR> 960 vunmenu ToolBar.Print 961 vnoremenu ToolBar.Print :w !lpr<CR> 962 endif 963 964 an 1.45 ToolBar.-sep1- <Nop> 965 an 1.50 ToolBar.Undo u 966 an 1.60 ToolBar.Redo <C-R> 967 968 an 1.65 ToolBar.-sep2- <Nop> 969 vnoremenu 1.70 ToolBar.Cut "+x 970 vnoremenu 1.80 ToolBar.Copy "+y 971 cnoremenu 1.80 ToolBar.Copy <C-Y> 972 nnoremenu 1.90 ToolBar.Paste "+gP 973 cnoremenu ToolBar.Paste <C-R>+ 974 exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v'] 975 exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i'] 976 977 if !has("gui_athena") 978 an 1.95 ToolBar.-sep3- <Nop> 979 an 1.100 ToolBar.Replace :promptrepl<CR> 980 vunmenu ToolBar.Replace 981 vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR> 982 an 1.110 ToolBar.FindNext n 983 an 1.120 ToolBar.FindPrev N 984 endif 985 986 an 1.215 ToolBar.-sep5- <Nop> 987 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR> 988 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR> 989 an 1.240 ToolBar.RunScript :browse so<CR> 990 991 an 1.245 ToolBar.-sep6- <Nop> 992 an 1.250 ToolBar.Make :make<CR> 993 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR> 994 an 1.280 ToolBar.TagJump g<C-]> 995 996 an 1.295 ToolBar.-sep7- <Nop> 997 an 1.300 ToolBar.Help :help<CR> 998 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR> 999 1000" Only set the tooltips here if not done in a language menu file 1001if exists("*Do_toolbar_tmenu") 1002 call Do_toolbar_tmenu() 1003else 1004 let did_toolbar_tmenu = 1 1005 tmenu ToolBar.Open Open file 1006 tmenu ToolBar.Save Save current file 1007 tmenu ToolBar.SaveAll Save all files 1008 tmenu ToolBar.Print Print 1009 tmenu ToolBar.Undo Undo 1010 tmenu ToolBar.Redo Redo 1011 tmenu ToolBar.Cut Cut to clipboard 1012 tmenu ToolBar.Copy Copy to clipboard 1013 tmenu ToolBar.Paste Paste from Clipboard 1014 if !has("gui_athena") 1015 tmenu ToolBar.Find Find... 1016 tmenu ToolBar.FindNext Find Next 1017 tmenu ToolBar.FindPrev Find Previous 1018 tmenu ToolBar.Replace Find / Replace... 1019 endif 1020 tmenu ToolBar.LoadSesn Choose a session to load 1021 tmenu ToolBar.SaveSesn Save current session 1022 tmenu ToolBar.RunScript Choose a Vim Script to run 1023 tmenu ToolBar.Make Make current project (:make) 1024 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .) 1025 tmenu ToolBar.TagJump Jump to tag under cursor 1026 tmenu ToolBar.Help Vim Help 1027 tmenu ToolBar.FindHelp Search Vim Help 1028endif 1029 1030" Select a session to load; default to current session name if present 1031fun! s:LoadVimSesn() 1032 if strlen(v:this_session) > 0 1033 let name = escape(v:this_session, ' \t#%$|<>"*?[{`') 1034 else 1035 let name = "Session.vim" 1036 endif 1037 execute "browse so " . name 1038endfun 1039 1040" Select a session to save; default to current session name if present 1041fun! s:SaveVimSesn() 1042 if strlen(v:this_session) == 0 1043 let v:this_session = "Session.vim" 1044 endif 1045 execute "browse mksession! " . escape(v:this_session, ' \t#%$|<>"*?[{`') 1046endfun 1047 1048endif 1049 1050endif " !exists("did_install_default_menus") 1051 1052" Define these items always, so that syntax can be switched on when it wasn't. 1053" But skip them when the Syntax menu was disabled by the user. 1054if !exists("did_install_syntax_menu") 1055 an 50.212 &Syntax.&Manual :syn manual<CR> 1056 an 50.214 &Syntax.A&utomatic :syn on<CR> 1057 an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR> 1058 if !exists("*s:SynOnOff") 1059 fun s:SynOnOff() 1060 if has("syntax_items") 1061 syn clear 1062 else 1063 if !exists("g:syntax_on") 1064 syn manual 1065 endif 1066 set syn=ON 1067 endif 1068 endfun 1069 endif 1070endif 1071 1072 1073" Install the Syntax menu only when filetype.vim has been loaded or when 1074" manual syntax highlighting is enabled. 1075" Avoid installing the Syntax menu twice. 1076if (exists("did_load_filetypes") || exists("syntax_on")) 1077 \ && !exists("did_install_syntax_menu") 1078 let did_install_syntax_menu = 1 1079 1080" Skip setting up the individual syntax selection menus unless 1081" do_syntax_sel_menu is defined (it takes quite a bit of time). 1082if exists("do_syntax_sel_menu") 1083 runtime! synmenu.vim 1084else 1085 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> 1086 an 50.195 &Syntax.-SEP1- <Nop> 1087endif 1088 1089an 50.210 &Syntax.&Off :syn off<CR> 1090an 50.700 &Syntax.-SEP3- <Nop> 1091an 50.710 &Syntax.Co&lor\ test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR> 1092an 50.720 &Syntax.&Highlight\ test :runtime syntax/hitest.vim<CR> 1093an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR> 1094 1095endif " !exists("did_install_syntax_menu") 1096 1097" Restore the previous value of 'cpoptions'. 1098let &cpo = s:cpo_save 1099unlet s:cpo_save 1100 1101" vim: set sw=2 : 1102