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