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