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