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