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