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