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