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 Jan 27 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(&packpath, "pack/*/start/*/colors/*.vim", 1, 1) 363 let n += globpath(&packpath, "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 859an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR> 860if !exists("*MenuExplOpen") 861 fun MenuExplOpen() 862 if @% == "" 863 20vsp . 864 else 865 exe "20vsp " . s:FnameEscape(expand("%:p:h")) 866 endif 867 endfun 868endif 869an 70.335 &Window.-SEP1- <Nop> 870an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR> 871an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR> 872an 70.350 &Window.-SEP2- <Nop> 873an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K 874an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J 875an 70.355 &Window.Move\ &To.&Left\ Side<Tab>^WH <C-W>H 876an 70.355 &Window.Move\ &To.&Right\ Side<Tab>^WL <C-W>L 877an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R 878an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r 879an 70.365 &Window.-SEP3- <Nop> 880an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>= 881an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_ 882an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_ 883an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\| 884an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\| 885 886" The popup menu 887an 1.10 PopUp.&Undo u 888an 1.15 PopUp.-SEP1- <Nop> 889vnoremenu 1.20 PopUp.Cu&t "+x 890vnoremenu 1.30 PopUp.&Copy "+y 891cnoremenu 1.30 PopUp.&Copy <C-Y> 892nnoremenu 1.40 PopUp.&Paste "+gP 893cnoremenu 1.40 PopUp.&Paste <C-R>+ 894exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v'] 895exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i'] 896vnoremenu 1.50 PopUp.&Delete x 897an 1.55 PopUp.-SEP2- <Nop> 898vnoremenu 1.60 PopUp.Select\ Blockwise <C-V> 899 900nnoremenu 1.70 PopUp.Select\ &Word vaw 901onoremenu 1.70 PopUp.Select\ &Word aw 902vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw 903inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw 904cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw 905 906nnoremenu 1.73 PopUp.Select\ &Sentence vas 907onoremenu 1.73 PopUp.Select\ &Sentence as 908vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas 909inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas 910cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas 911 912nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap 913onoremenu 1.77 PopUp.Select\ Pa&ragraph ap 914vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap 915inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap 916cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap 917 918nnoremenu 1.80 PopUp.Select\ &Line V 919onoremenu 1.80 PopUp.Select\ &Line <C-C>V 920vnoremenu 1.80 PopUp.Select\ &Line <C-C>V 921inoremenu 1.80 PopUp.Select\ &Line <C-O>V 922cnoremenu 1.80 PopUp.Select\ &Line <C-C>V 923 924nnoremenu 1.90 PopUp.Select\ &Block <C-V> 925onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 926vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 927inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V> 928cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 929 930noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR> 931inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR> 932cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR> 933 934if has("spell") 935 " Spell suggestions in the popup menu. Note that this will slow down the 936 " appearance of the menu! 937 func! <SID>SpellPopup() 938 if exists("s:changeitem") && s:changeitem != '' 939 call <SID>SpellDel() 940 endif 941 942 " Return quickly if spell checking is not enabled. 943 if !&spell || &spelllang == '' 944 return 945 endif 946 947 let curcol = col('.') 948 let [w, a] = spellbadword() 949 if col('.') > curcol " don't use word after the cursor 950 let w = '' 951 endif 952 if w != '' 953 if a == 'caps' 954 let s:suglist = [substitute(w, '.*', '\u&', '')] 955 else 956 let s:suglist = spellsuggest(w, 10) 957 endif 958 if len(s:suglist) > 0 959 if !exists("g:menutrans_spell_change_ARG_to") 960 let g:menutrans_spell_change_ARG_to = 'Change\ "%s"\ to' 961 endif 962 let s:changeitem = printf(g:menutrans_spell_change_ARG_to, escape(w, ' .')) 963 let s:fromword = w 964 let pri = 1 965 " set 'cpo' to include the <CR> 966 let cpo_save = &cpo 967 set cpo&vim 968 for sug in s:suglist 969 exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .') 970 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>' 971 let pri += 1 972 endfor 973 974 if !exists("g:menutrans_spell_add_ARG_to_word_list") 975 let g:menutrans_spell_add_ARG_to_word_list = 'Add\ "%s"\ to\ Word\ List' 976 endif 977 let s:additem = printf(g:menutrans_spell_add_ARG_to_word_list, escape(w, ' .')) 978 exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>' 979 980 if !exists("g:menutrans_spell_ignore_ARG") 981 let g:menutrans_spell_ignore_ARG = 'Ignore\ "%s"' 982 endif 983 let s:ignoreitem = printf(g:menutrans_spell_ignore_ARG, escape(w, ' .')) 984 exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>' 985 986 anoremenu 1.8 PopUp.-SpellSep- : 987 let &cpo = cpo_save 988 endif 989 endif 990 call cursor(0, curcol) " put the cursor back where it was 991 endfunc 992 993 func! <SID>SpellReplace(n) 994 let l = getline('.') 995 " Move the cursor to the start of the word. 996 call spellbadword() 997 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1] 998 \ . strpart(l, col('.') + len(s:fromword) - 1)) 999 endfunc 1000 1001 func! <SID>SpellDel() 1002 exe "aunmenu PopUp." . s:changeitem 1003 exe "aunmenu PopUp." . s:additem 1004 exe "aunmenu PopUp." . s:ignoreitem 1005 aunmenu PopUp.-SpellSep- 1006 let s:changeitem = '' 1007 endfun 1008 1009 augroup SpellPopupMenu 1010 au! MenuPopup * call <SID>SpellPopup() 1011 augroup END 1012endif 1013 1014" The GUI toolbar (for MS-Windows and GTK) 1015if has("toolbar") 1016 an 1.10 ToolBar.Open :browse confirm e<CR> 1017 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR> 1018 an 1.30 ToolBar.SaveAll :browse confirm wa<CR> 1019 1020 if has("printer") 1021 an 1.40 ToolBar.Print :hardcopy<CR> 1022 vunmenu ToolBar.Print 1023 vnoremenu ToolBar.Print :hardcopy<CR> 1024 elseif has("unix") 1025 an 1.40 ToolBar.Print :w !lpr<CR> 1026 vunmenu ToolBar.Print 1027 vnoremenu ToolBar.Print :w !lpr<CR> 1028 endif 1029 1030 an 1.45 ToolBar.-sep1- <Nop> 1031 an 1.50 ToolBar.Undo u 1032 an 1.60 ToolBar.Redo <C-R> 1033 1034 an 1.65 ToolBar.-sep2- <Nop> 1035 vnoremenu 1.70 ToolBar.Cut "+x 1036 vnoremenu 1.80 ToolBar.Copy "+y 1037 cnoremenu 1.80 ToolBar.Copy <C-Y> 1038 nnoremenu 1.90 ToolBar.Paste "+gP 1039 cnoremenu ToolBar.Paste <C-R>+ 1040 exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v'] 1041 exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i'] 1042 1043 if !has("gui_athena") 1044 an 1.95 ToolBar.-sep3- <Nop> 1045 an 1.100 ToolBar.Replace :promptrepl<CR> 1046 vunmenu ToolBar.Replace 1047 vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR> 1048 an 1.110 ToolBar.FindNext n 1049 an 1.120 ToolBar.FindPrev N 1050 endif 1051 1052 an 1.215 ToolBar.-sep5- <Nop> 1053 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR> 1054 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR> 1055 an 1.240 ToolBar.RunScript :browse so<CR> 1056 1057 an 1.245 ToolBar.-sep6- <Nop> 1058 an 1.250 ToolBar.Make :make<CR> 1059 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR> 1060 an 1.280 ToolBar.TagJump g<C-]> 1061 1062 an 1.295 ToolBar.-sep7- <Nop> 1063 an 1.300 ToolBar.Help :help<CR> 1064 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR> 1065 1066" Only set the tooltips here if not done in a language menu file 1067if exists("*Do_toolbar_tmenu") 1068 call Do_toolbar_tmenu() 1069else 1070 let did_toolbar_tmenu = 1 1071 tmenu ToolBar.Open Open file 1072 tmenu ToolBar.Save Save current file 1073 tmenu ToolBar.SaveAll Save all files 1074 tmenu ToolBar.Print Print 1075 tmenu ToolBar.Undo Undo 1076 tmenu ToolBar.Redo Redo 1077 tmenu ToolBar.Cut Cut to clipboard 1078 tmenu ToolBar.Copy Copy to clipboard 1079 tmenu ToolBar.Paste Paste from Clipboard 1080 if !has("gui_athena") 1081 tmenu ToolBar.Replace Find / Replace... 1082 tmenu ToolBar.FindNext Find Next 1083 tmenu ToolBar.FindPrev Find Previous 1084 endif 1085 tmenu ToolBar.LoadSesn Choose a session to load 1086 tmenu ToolBar.SaveSesn Save current session 1087 tmenu ToolBar.RunScript Choose a Vim Script to run 1088 tmenu ToolBar.Make Make current project (:make) 1089 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .) 1090 tmenu ToolBar.TagJump Jump to tag under cursor 1091 tmenu ToolBar.Help Vim Help 1092 tmenu ToolBar.FindHelp Search Vim Help 1093endif 1094 1095" Select a session to load; default to current session name if present 1096fun! s:LoadVimSesn() 1097 if strlen(v:this_session) > 0 1098 let name = s:FnameEscape(v:this_session) 1099 else 1100 let name = "Session.vim" 1101 endif 1102 execute "browse so " . name 1103endfun 1104 1105" Select a session to save; default to current session name if present 1106fun! s:SaveVimSesn() 1107 if strlen(v:this_session) == 0 1108 let v:this_session = "Session.vim" 1109 endif 1110 execute "browse mksession! " . s:FnameEscape(v:this_session) 1111endfun 1112 1113endif 1114 1115endif " !exists("did_install_default_menus") 1116 1117" Define these items always, so that syntax can be switched on when it wasn't. 1118" But skip them when the Syntax menu was disabled by the user. 1119if !exists("did_install_syntax_menu") 1120 an 50.212 &Syntax.&Manual :syn manual<CR> 1121 an 50.214 &Syntax.A&utomatic :syn on<CR> 1122 an <silent> 50.216 &Syntax.On/Off\ for\ &This\ File :call <SID>SynOnOff()<CR> 1123 if !exists("*s:SynOnOff") 1124 fun s:SynOnOff() 1125 if has("syntax_items") 1126 syn clear 1127 else 1128 if !exists("g:syntax_on") 1129 syn manual 1130 endif 1131 set syn=ON 1132 endif 1133 endfun 1134 endif 1135endif 1136 1137 1138" Install the Syntax menu only when filetype.vim has been loaded or when 1139" manual syntax highlighting is enabled. 1140" Avoid installing the Syntax menu twice. 1141if (exists("did_load_filetypes") || exists("syntax_on")) 1142 \ && !exists("did_install_syntax_menu") 1143 let did_install_syntax_menu = 1 1144 1145" Skip setting up the individual syntax selection menus unless 1146" do_syntax_sel_menu is defined (it takes quite a bit of time). 1147if exists("do_syntax_sel_menu") 1148 runtime! synmenu.vim 1149else 1150 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> 1151 an 50.195 &Syntax.-SEP1- <Nop> 1152endif 1153 1154an 50.210 &Syntax.&Off :syn off<CR> 1155an 50.700 &Syntax.-SEP3- <Nop> 1156an 50.710 &Syntax.Co&lor\ Test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR> 1157an 50.720 &Syntax.&Highlight\ Test :runtime syntax/hitest.vim<CR> 1158an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR> 1159 1160endif " !exists("did_install_syntax_menu") 1161 1162" Restore the previous value of 'cpoptions'. 1163let &cpo = s:cpo_save 1164unlet s:cpo_save 1165 1166" vim: set sw=2 : 1167