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