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