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