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