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