1071d4279SBram Moolenaar" Vim support file to define the default menus 2071d4279SBram Moolenaar" You can also use this as a start for your own set of menus. 3071d4279SBram Moolenaar" 4071d4279SBram Moolenaar" Maintainer: Bram Moolenaar <[email protected]> 5*b45cd36bSBram Moolenaar" Last Change: 2020 Sep 28 6071d4279SBram Moolenaar 7071d4279SBram Moolenaar" Note that ":an" (short for ":anoremenu") is often used to make a menu work 8071d4279SBram Moolenaar" in all modes and avoid side effects from mappings defined by the user. 9071d4279SBram Moolenaar 10071d4279SBram Moolenaar" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise 11071d4279SBram Moolenaar" <CR> would not be recognized. See ":help 'cpoptions'". 12071d4279SBram Moolenaarlet s:cpo_save = &cpo 13071d4279SBram Moolenaarset cpo&vim 14071d4279SBram Moolenaar 15071d4279SBram Moolenaar" Avoid installing the menus twice 16071d4279SBram Moolenaarif !exists("did_install_default_menus") 17071d4279SBram Moolenaarlet did_install_default_menus = 1 18071d4279SBram Moolenaar 19071d4279SBram Moolenaar 20071d4279SBram Moolenaarif exists("v:lang") || &langmenu != "" 21071d4279SBram Moolenaar " Try to find a menu translation file for the current language. 22071d4279SBram Moolenaar if &langmenu != "" 23071d4279SBram Moolenaar if &langmenu =~ "none" 24071d4279SBram Moolenaar let s:lang = "" 25071d4279SBram Moolenaar else 26071d4279SBram Moolenaar let s:lang = &langmenu 27071d4279SBram Moolenaar endif 28071d4279SBram Moolenaar else 29071d4279SBram Moolenaar let s:lang = v:lang 30071d4279SBram Moolenaar endif 31071d4279SBram Moolenaar " A language name must be at least two characters, don't accept "C" 325be4ceecSBram Moolenaar " Also skip "en_US" to avoid picking up "en_gb" translations. 335be4ceecSBram Moolenaar if strlen(s:lang) > 1 && s:lang !~? '^en_us' 34071d4279SBram Moolenaar " When the language does not include the charset add 'encoding' 35071d4279SBram Moolenaar if s:lang =~ '^\a\a$\|^\a\a_\a\a$' 36071d4279SBram Moolenaar let s:lang = s:lang . '.' . &enc 37071d4279SBram Moolenaar endif 38071d4279SBram Moolenaar 39071d4279SBram Moolenaar " We always use a lowercase name. 40071d4279SBram Moolenaar " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some 41071d4279SBram Moolenaar " systems appear to use this. 42071d4279SBram Moolenaar " Change spaces to underscores. 43071d4279SBram Moolenaar let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "") 44071d4279SBram Moolenaar let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "") 45071d4279SBram Moolenaar let s:lang = substitute(s:lang, " ", "_", "g") 46071d4279SBram Moolenaar " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus 47071d4279SBram Moolenaar let s:lang = substitute(s:lang, "@euro", "", "") 48071d4279SBram Moolenaar " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the 49071d4279SBram Moolenaar " same menu file for them. 50071d4279SBram Moolenaar let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "") 51071d4279SBram Moolenaar menutrans clear 52071d4279SBram Moolenaar exe "runtime! lang/menu_" . s:lang . ".vim" 53071d4279SBram Moolenaar 54071d4279SBram Moolenaar if !exists("did_menu_trans") 55071d4279SBram Moolenaar " There is no exact match, try matching with a wildcard added 56071d4279SBram Moolenaar " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE). 57071d4279SBram Moolenaar let s:lang = substitute(s:lang, '\.[^.]*', "", "") 5805159a0cSBram Moolenaar exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim" 59071d4279SBram Moolenaar 6068f1b1b3SBram Moolenaar if !exists("did_menu_trans") && s:lang =~ '_' 6168f1b1b3SBram Moolenaar " If the language includes a region try matching without that region. 6268f1b1b3SBram Moolenaar " (e.g. find menu_de.vim if s:lang == de_DE). 6368f1b1b3SBram Moolenaar let langonly = substitute(s:lang, '_.*', "", "") 6468f1b1b3SBram Moolenaar exe "runtime! lang/menu_" . langonly . "[^a-z]*vim" 6568f1b1b3SBram Moolenaar endif 6668f1b1b3SBram Moolenaar 67e2cc9702SBram Moolenaar if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us' 68071d4279SBram Moolenaar " On windows locale names are complicated, try using $LANG, it might 69e2cc9702SBram Moolenaar " have been set by set_init_1(). But don't do this for "en" or "en_us". 702ce06f6eSBram Moolenaar " But don't match "slovak" when $LANG is "sl". 712ce06f6eSBram Moolenaar exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim" 72071d4279SBram Moolenaar endif 73071d4279SBram Moolenaar endif 74071d4279SBram Moolenaar endif 75071d4279SBram Moolenaarendif 76071d4279SBram Moolenaar 77071d4279SBram Moolenaar 78071d4279SBram Moolenaar" Help menu 79071d4279SBram Moolenaaran 9999.10 &Help.&Overview<Tab><F1> :help<CR> 80071d4279SBram Moolenaaran 9999.20 &Help.&User\ Manual :help usr_toc<CR> 81214641f7SBram Moolenaaran 9999.30 &Help.&How-To\ Links :help how-to<CR> 82071d4279SBram Moolenaaran <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR> 83071d4279SBram Moolenaaran 9999.45 &Help.-sep1- <Nop> 84071d4279SBram Moolenaaran 9999.50 &Help.&Credits :help credits<CR> 85071d4279SBram Moolenaaran 9999.60 &Help.Co&pying :help copying<CR> 86071d4279SBram Moolenaaran 9999.70 &Help.&Sponsor/Register :help sponsor<CR> 87071d4279SBram Moolenaaran 9999.70 &Help.O&rphans :help kcc<CR> 88071d4279SBram Moolenaaran 9999.75 &Help.-sep2- <Nop> 89071d4279SBram Moolenaaran 9999.80 &Help.&Version :version<CR> 90071d4279SBram Moolenaaran 9999.90 &Help.&About :intro<CR> 91071d4279SBram Moolenaar 92*b45cd36bSBram Moolenaarif exists(':tlmenu') 93*b45cd36bSBram Moolenaar tlnoremenu 9999.10 &Help.&Overview<Tab><F1> <C-W>:help<CR> 94*b45cd36bSBram Moolenaar tlnoremenu 9999.20 &Help.&User\ Manual <C-W>:help usr_toc<CR> 95*b45cd36bSBram Moolenaar tlnoremenu 9999.30 &Help.&How-To\ Links <C-W>:help how-to<CR> 96*b45cd36bSBram Moolenaar tlnoremenu <silent> 9999.40 &Help.&Find\.\.\. <C-W>:call <SID>Helpfind()<CR> 97*b45cd36bSBram Moolenaar tlnoremenu 9999.45 &Help.-sep1- <Nop> 98*b45cd36bSBram Moolenaar tlnoremenu 9999.50 &Help.&Credits <C-W>:help credits<CR> 99*b45cd36bSBram Moolenaar tlnoremenu 9999.60 &Help.Co&pying <C-W>:help copying<CR> 100*b45cd36bSBram Moolenaar tlnoremenu 9999.70 &Help.&Sponsor/Register <C-W>:help sponsor<CR> 101*b45cd36bSBram Moolenaar tlnoremenu 9999.70 &Help.O&rphans <C-W>:help kcc<CR> 102*b45cd36bSBram Moolenaar tlnoremenu 9999.75 &Help.-sep2- <Nop> 103*b45cd36bSBram Moolenaar tlnoremenu 9999.80 &Help.&Version <C-W>:version<CR> 104*b45cd36bSBram Moolenaar tlnoremenu 9999.90 &Help.&About <C-W>:intro<CR> 105*b45cd36bSBram Moolenaarendif 106*b45cd36bSBram Moolenaar 107071d4279SBram Moolenaarfun! s:Helpfind() 108071d4279SBram Moolenaar if !exists("g:menutrans_help_dialog") 109071d4279SBram Moolenaar 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')" 110071d4279SBram Moolenaar endif 111071d4279SBram Moolenaar let h = inputdialog(g:menutrans_help_dialog) 112071d4279SBram Moolenaar if h != "" 113071d4279SBram Moolenaar let v:errmsg = "" 114071d4279SBram Moolenaar silent! exe "help " . h 115071d4279SBram Moolenaar if v:errmsg != "" 116071d4279SBram Moolenaar echo v:errmsg 117071d4279SBram Moolenaar endif 118071d4279SBram Moolenaar endif 119071d4279SBram Moolenaarendfun 120071d4279SBram Moolenaar 121071d4279SBram Moolenaar" File menu 122071d4279SBram Moolenaaran 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR> 123071d4279SBram Moolenaaran 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR> 1245c8837f9SBram Moolenaaran 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew :browse tabnew<CR> 125071d4279SBram Moolenaaran 10.325 &File.&New<Tab>:enew :confirm enew<CR> 126071d4279SBram Moolenaaran <silent> 10.330 &File.&Close<Tab>:close 127cab49dffSBram Moolenaar \ :if winheight(2) < 0 && tabpagewinnr(2) == 0 <Bar> 128071d4279SBram Moolenaar \ confirm enew <Bar> 129071d4279SBram Moolenaar \ else <Bar> 130071d4279SBram Moolenaar \ confirm close <Bar> 131071d4279SBram Moolenaar \ endif<CR> 132071d4279SBram Moolenaaran 10.335 &File.-SEP1- <Nop> 133071d4279SBram Moolenaaran <silent> 10.340 &File.&Save<Tab>:w :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR> 134071d4279SBram Moolenaaran 10.350 &File.Save\ &As\.\.\.<Tab>:sav :browse confirm saveas<CR> 135071d4279SBram Moolenaar 136071d4279SBram Moolenaarif has("diff") 137071d4279SBram Moolenaar an 10.400 &File.-SEP2- <Nop> 138214641f7SBram Moolenaar an 10.410 &File.Split\ &Diff\ With\.\.\. :browse vert diffsplit<CR> 139071d4279SBram Moolenaar an 10.420 &File.Split\ Patched\ &By\.\.\. :browse vert diffpatch<CR> 140071d4279SBram Moolenaarendif 141071d4279SBram Moolenaar 142071d4279SBram Moolenaarif has("printer") 143071d4279SBram Moolenaar an 10.500 &File.-SEP3- <Nop> 144071d4279SBram Moolenaar an 10.510 &File.&Print :hardcopy<CR> 145071d4279SBram Moolenaar vunmenu &File.&Print 146071d4279SBram Moolenaar vnoremenu &File.&Print :hardcopy<CR> 147071d4279SBram Moolenaarelseif has("unix") 148071d4279SBram Moolenaar an 10.500 &File.-SEP3- <Nop> 149071d4279SBram Moolenaar an 10.510 &File.&Print :w !lpr<CR> 150071d4279SBram Moolenaar vunmenu &File.&Print 151071d4279SBram Moolenaar vnoremenu &File.&Print :w !lpr<CR> 152071d4279SBram Moolenaarendif 153071d4279SBram Moolenaaran 10.600 &File.-SEP4- <Nop> 154071d4279SBram Moolenaaran 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR> 155071d4279SBram Moolenaaran 10.620 &File.E&xit<Tab>:qa :confirm qa<CR> 156071d4279SBram Moolenaar 1575e94a29eSBram Moolenaarfunc s:SelectAll() 158a3e6bc93SBram Moolenaar exe "norm! gg" . (&slm == "" ? "VG" : "gH\<C-O>G") 159071d4279SBram Moolenaarendfunc 160071d4279SBram Moolenaar 1615e94a29eSBram Moolenaarfunc s:FnameEscape(fname) 162aba8857aSBram Moolenaar if exists('*fnameescape') 163aba8857aSBram Moolenaar return fnameescape(a:fname) 1645c73622aSBram Moolenaar endif 165aba8857aSBram Moolenaar return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<") 166aba8857aSBram Moolenaarendfunc 167071d4279SBram Moolenaar 168071d4279SBram Moolenaar" Edit menu 169071d4279SBram Moolenaaran 20.310 &Edit.&Undo<Tab>u u 170071d4279SBram Moolenaaran 20.320 &Edit.&Redo<Tab>^R <C-R> 171071d4279SBram Moolenaaran 20.330 &Edit.Rep&eat<Tab>\. . 172071d4279SBram Moolenaar 173071d4279SBram Moolenaaran 20.335 &Edit.-SEP1- <Nop> 174071d4279SBram Moolenaarvnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x 175071d4279SBram Moolenaarvnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y 176071d4279SBram Moolenaarcnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y> 1775ef1c6a4SBram Moolenaarif exists(':tlmenu') 1785ef1c6a4SBram Moolenaar tlnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-W>:<C-Y><CR> 1795ef1c6a4SBram Moolenaarendif 180071d4279SBram Moolenaarnnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP 181071d4279SBram Moolenaarcnoremenu &Edit.&Paste<Tab>"+gP <C-R>+ 1824c5d8152SBram Moolenaarif exists(':tlmenu') 1834c5d8152SBram Moolenaar tlnoremenu &Edit.&Paste<Tab>"+gP <C-W>"+ 1844c5d8152SBram Moolenaarendif 1854ea8fe1dSBram Moolenaarexe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v'] 1864ea8fe1dSBram Moolenaarexe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['i'] 187071d4279SBram Moolenaarnnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p 188071d4279SBram Moolenaarinoremenu &Edit.Put\ &Before<Tab>[p <C-O>[p 189071d4279SBram Moolenaarnnoremenu 20.380 &Edit.Put\ &After<Tab>]p ]p 190071d4279SBram Moolenaarinoremenu &Edit.Put\ &After<Tab>]p <C-O>]p 191040c1febSBram Moolenaarif has("win32") 192071d4279SBram Moolenaar vnoremenu 20.390 &Edit.&Delete<Tab>x x 193071d4279SBram Moolenaarendif 194071d4279SBram Moolenaarnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG :<C-U>call <SID>SelectAll()<CR> 195071d4279SBram Moolenaarinoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-O>:call <SID>SelectAll()<CR> 196071d4279SBram Moolenaarcnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-U>call <SID>SelectAll()<CR> 197071d4279SBram Moolenaar 198071d4279SBram Moolenaaran 20.405 &Edit.-SEP2- <Nop> 199040c1febSBram Moolenaarif has("win32") || has("gui_gtk") || has("gui_kde") || has("gui_motif") 200071d4279SBram Moolenaar an 20.410 &Edit.&Find\.\.\. :promptfind<CR> 201071d4279SBram Moolenaar vunmenu &Edit.&Find\.\.\. 2024ea8fe1dSBram Moolenaar vnoremenu <silent> &Edit.&Find\.\.\. y:promptfind <C-R>=<SID>FixFText()<CR><CR> 203071d4279SBram Moolenaar an 20.420 &Edit.Find\ and\ Rep&lace\.\.\. :promptrepl<CR> 204071d4279SBram Moolenaar vunmenu &Edit.Find\ and\ Rep&lace\.\.\. 2054ea8fe1dSBram Moolenaar vnoremenu <silent> &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR> 206071d4279SBram Moolenaarelse 207071d4279SBram Moolenaar an 20.410 &Edit.&Find<Tab>/ / 208071d4279SBram Moolenaar an 20.420 &Edit.Find\ and\ Rep&lace<Tab>:%s :%s/ 209071d4279SBram Moolenaar vunmenu &Edit.Find\ and\ Rep&lace<Tab>:%s 210071d4279SBram Moolenaar vnoremenu &Edit.Find\ and\ Rep&lace<Tab>:s :s/ 211071d4279SBram Moolenaarendif 212071d4279SBram Moolenaar 213071d4279SBram Moolenaaran 20.425 &Edit.-SEP3- <Nop> 214071d4279SBram Moolenaaran 20.430 &Edit.Settings\ &Window :options<CR> 215910f66f9SBram Moolenaaran 20.435 &Edit.Startup\ &Settings :call <SID>EditVimrc()<CR> 216910f66f9SBram Moolenaar 217910f66f9SBram Moolenaarfun! s:EditVimrc() 218910f66f9SBram Moolenaar if $MYVIMRC != '' 219e30de2d1SBram Moolenaar let fname = $MYVIMRC 22042ebd066SBram Moolenaar elseif has("win32") 221910f66f9SBram Moolenaar if $HOME != '' 222e30de2d1SBram Moolenaar let fname = $HOME . "/_vimrc" 223910f66f9SBram Moolenaar else 224e30de2d1SBram Moolenaar let fname = $VIM . "/_vimrc" 225910f66f9SBram Moolenaar endif 226910f66f9SBram Moolenaar elseif has("amiga") 227910f66f9SBram Moolenaar let fname = "s:.vimrc" 228910f66f9SBram Moolenaar else 229e30de2d1SBram Moolenaar let fname = $HOME . "/.vimrc" 230910f66f9SBram Moolenaar endif 231aba8857aSBram Moolenaar let fname = s:FnameEscape(fname) 232910f66f9SBram Moolenaar if &mod 233910f66f9SBram Moolenaar exe "split " . fname 234910f66f9SBram Moolenaar else 235910f66f9SBram Moolenaar exe "edit " . fname 236910f66f9SBram Moolenaar endif 237910f66f9SBram Moolenaarendfun 238071d4279SBram Moolenaar 2395b8d8fdbSBram Moolenaarfun! s:FixFText() 2405b8d8fdbSBram Moolenaar " Fix text in nameless register to be used with :promptfind. 2414ea8fe1dSBram Moolenaar return substitute(@", "[\r\n]", '\\n', 'g') 2425b8d8fdbSBram Moolenaarendfun 2435b8d8fdbSBram Moolenaar 244071d4279SBram Moolenaar" Edit/Global Settings 245071d4279SBram Moolenaaran 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR> 246214641f7SBram Moolenaaran 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignoring\ Case<Tab>:set\ ic! :set ic! ic?<CR> 247214641f7SBram Moolenaaran 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! :set sm! sm?<CR> 248071d4279SBram Moolenaar 249214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 1\ :set so=1<CR> 250214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 2\ :set so=2<CR> 251214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 3\ :set so=3<CR> 252214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 4\ :set so=4<CR> 253214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 5\ :set so=5<CR> 254214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 7\ :set so=7<CR> 255214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 10\ :set so=10<CR> 256214641f7SBram Moolenaaran 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 100\ :set so=100<CR> 257071d4279SBram Moolenaar 258071d4279SBram Moolenaaran 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR> 259071d4279SBram Moolenaaran 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR> 260214641f7SBram Moolenaaran 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ Mode :set ve=insert<CR> 261071d4279SBram Moolenaaran 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR> 262071d4279SBram Moolenaaran 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR> 263071d4279SBram Moolenaaran 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im! :set im!<CR> 264214641f7SBram Moolenaaran 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! :set cp!<CR> 265071d4279SBram Moolenaaran <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\. :call <SID>SearchP()<CR> 266071d4279SBram Moolenaaran <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\. :call <SID>TagFiles()<CR> 267071d4279SBram Moolenaar" 268071d4279SBram Moolenaar" GUI options 269071d4279SBram Moolenaaran 20.440.300 &Edit.&Global\ Settings.-SEP1- <Nop> 270071d4279SBram Moolenaaran <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar :call <SID>ToggleGuiOption("T")<CR> 271071d4279SBram Moolenaaran <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR> 272071d4279SBram Moolenaaran <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR> 273071d4279SBram Moolenaaran <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR> 274071d4279SBram Moolenaar 275071d4279SBram Moolenaarfun! s:SearchP() 276071d4279SBram Moolenaar if !exists("g:menutrans_path_dialog") 277071d4279SBram Moolenaar let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma." 278071d4279SBram Moolenaar endif 279071d4279SBram Moolenaar let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g')) 280071d4279SBram Moolenaar if n != "" 281071d4279SBram Moolenaar let &path = substitute(n, ' ', '\\ ', 'g') 282071d4279SBram Moolenaar endif 283071d4279SBram Moolenaarendfun 284071d4279SBram Moolenaar 285071d4279SBram Moolenaarfun! s:TagFiles() 286071d4279SBram Moolenaar if !exists("g:menutrans_tags_dialog") 287071d4279SBram Moolenaar let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma." 288071d4279SBram Moolenaar endif 289071d4279SBram Moolenaar let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g')) 290071d4279SBram Moolenaar if n != "" 291071d4279SBram Moolenaar let &tags = substitute(n, ' ', '\\ ', 'g') 292071d4279SBram Moolenaar endif 293071d4279SBram Moolenaarendfun 294071d4279SBram Moolenaar 295071d4279SBram Moolenaarfun! s:ToggleGuiOption(option) 296071d4279SBram Moolenaar " If a:option is already set in guioptions, then we want to remove it 297071d4279SBram Moolenaar if match(&guioptions, "\\C" . a:option) > -1 298071d4279SBram Moolenaar exec "set go-=" . a:option 299071d4279SBram Moolenaar else 300071d4279SBram Moolenaar exec "set go+=" . a:option 301071d4279SBram Moolenaar endif 302071d4279SBram Moolenaarendfun 303071d4279SBram Moolenaar 304071d4279SBram Moolenaar" Edit/File Settings 305071d4279SBram Moolenaar 306071d4279SBram Moolenaar" Boolean options 307071d4279SBram Moolenaaran 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu! :set nu! nu?<CR> 308214641f7SBram Moolenaaran 20.440.105 &Edit.F&ile\ Settings.Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! :set rnu! rnu?<CR> 309071d4279SBram Moolenaaran 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list! :set list! list?<CR> 310214641f7SBram Moolenaaran 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrapping<Tab>:set\ wrap! :set wrap! wrap?<CR> 311214641f7SBram Moolenaaran 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! :set lbr! lbr?<CR> 312214641f7SBram Moolenaaran 20.440.160 &Edit.F&ile\ Settings.Toggle\ Tab\ &Expanding<Tab>:set\ et! :set et! et?<CR> 313214641f7SBram Moolenaaran 20.440.170 &Edit.F&ile\ Settings.Toggle\ &Auto\ Indenting<Tab>:set\ ai! :set ai! ai?<CR> 314214641f7SBram Moolenaaran 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-Style\ Indenting<Tab>:set\ cin! :set cin! cin?<CR> 315071d4279SBram Moolenaar 316071d4279SBram Moolenaar" other options 317071d4279SBram Moolenaaran 20.440.600 &Edit.F&ile\ Settings.-SEP2- <Nop> 318071d4279SBram Moolenaaran 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2 :set sw=2 sw?<CR> 319071d4279SBram Moolenaaran 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3 :set sw=3 sw?<CR> 320071d4279SBram Moolenaaran 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4 :set sw=4 sw?<CR> 321071d4279SBram Moolenaaran 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5 :set sw=5 sw?<CR> 322071d4279SBram Moolenaaran 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6 :set sw=6 sw?<CR> 323071d4279SBram Moolenaaran 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8 :set sw=8 sw?<CR> 324071d4279SBram Moolenaar 325071d4279SBram Moolenaaran 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2 :set sts=2 sts?<CR> 326071d4279SBram Moolenaaran 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3 :set sts=3 sts?<CR> 327071d4279SBram Moolenaaran 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4 :set sts=4 sts?<CR> 328071d4279SBram Moolenaaran 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5 :set sts=5 sts?<CR> 329071d4279SBram Moolenaaran 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6 :set sts=6 sts?<CR> 330071d4279SBram Moolenaaran 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR> 331071d4279SBram Moolenaar 332071d4279SBram Moolenaaran <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR> 333071d4279SBram Moolenaaran <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR> 334071d4279SBram Moolenaarfun! s:TextWidth() 335071d4279SBram Moolenaar if !exists("g:menutrans_textwidth_dialog") 336071d4279SBram Moolenaar let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): " 337071d4279SBram Moolenaar endif 338071d4279SBram Moolenaar let n = inputdialog(g:menutrans_textwidth_dialog, &tw) 339071d4279SBram Moolenaar if n != "" 340ad3b366cSBram Moolenaar " Remove leading zeros to avoid it being used as an octal number. 341ad3b366cSBram Moolenaar " But keep a zero by itself. 342ad3b366cSBram Moolenaar let tw = substitute(n, "^0*", "", "") 343ad3b366cSBram Moolenaar let &tw = tw == '' ? 0 : tw 344071d4279SBram Moolenaar endif 345071d4279SBram Moolenaarendfun 346071d4279SBram Moolenaar 347071d4279SBram Moolenaarfun! s:FileFormat() 348071d4279SBram Moolenaar if !exists("g:menutrans_fileformat_dialog") 349071d4279SBram Moolenaar let g:menutrans_fileformat_dialog = "Select format for writing the file" 350071d4279SBram Moolenaar endif 351071d4279SBram Moolenaar if !exists("g:menutrans_fileformat_choices") 352071d4279SBram Moolenaar let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel" 353071d4279SBram Moolenaar endif 354071d4279SBram Moolenaar if &ff == "dos" 355071d4279SBram Moolenaar let def = 2 356071d4279SBram Moolenaar elseif &ff == "mac" 357071d4279SBram Moolenaar let def = 3 358071d4279SBram Moolenaar else 359071d4279SBram Moolenaar let def = 1 360071d4279SBram Moolenaar endif 361071d4279SBram Moolenaar let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question") 362071d4279SBram Moolenaar if n == 1 363071d4279SBram Moolenaar set ff=unix 364071d4279SBram Moolenaar elseif n == 2 365071d4279SBram Moolenaar set ff=dos 366071d4279SBram Moolenaar elseif n == 3 367071d4279SBram Moolenaar set ff=mac 368071d4279SBram Moolenaar endif 369071d4279SBram Moolenaarendfun 370071d4279SBram Moolenaar 371040c1febSBram Moolenaarlet s:did_setup_color_schemes = 0 372c5604bc1SBram Moolenaar 373071d4279SBram Moolenaar" Setup the Edit.Color Scheme submenu 3745e94a29eSBram Moolenaarfunc s:SetupColorSchemes() abort 375040c1febSBram Moolenaar if s:did_setup_color_schemes 376040c1febSBram Moolenaar return 377040c1febSBram Moolenaar endif 378040c1febSBram Moolenaar let s:did_setup_color_schemes = 1 379c5604bc1SBram Moolenaar 380040c1febSBram Moolenaar let n = globpath(&runtimepath, "colors/*.vim", 1, 1) 38130e9b3c4SBram Moolenaar let n += globpath(&packpath, "pack/*/start/*/colors/*.vim", 1, 1) 38230e9b3c4SBram Moolenaar let n += globpath(&packpath, "pack/*/opt/*/colors/*.vim", 1, 1) 383c5604bc1SBram Moolenaar 384040c1febSBram Moolenaar " Ignore case for VMS and windows, sort on name 385040c1febSBram Moolenaar let names = sort(map(n, 'substitute(v:val, "\\c.*[/\\\\:\\]]\\([^/\\\\:]*\\)\\.vim", "\\1", "")'), 1) 386c5604bc1SBram Moolenaar 387c5604bc1SBram Moolenaar " define all the submenu entries 388040c1febSBram Moolenaar let idx = 100 389040c1febSBram Moolenaar for name in names 390040c1febSBram Moolenaar exe "an 20.450." . idx . ' &Edit.C&olor\ Scheme.' . name . " :colors " . name . "<CR>" 391040c1febSBram Moolenaar let idx = idx + 10 392c5604bc1SBram Moolenaar endfor 393040c1febSBram Moolenaar silent! aunmenu &Edit.Show\ C&olor\ Schemes\ in\ Menu 394040c1febSBram Moolenaarendfun 395040c1febSBram Moolenaarif exists("do_no_lazyload_menus") 396040c1febSBram Moolenaar call s:SetupColorSchemes() 397040c1febSBram Moolenaarelse 398040c1febSBram Moolenaar an <silent> 20.450 &Edit.Show\ C&olor\ Schemes\ in\ Menu :call <SID>SetupColorSchemes()<CR> 399040c1febSBram Moolenaarendif 400c5604bc1SBram Moolenaar 401071d4279SBram Moolenaar 402071d4279SBram Moolenaar" Setup the Edit.Keymap submenu 403071d4279SBram Moolenaarif has("keymap") 404040c1febSBram Moolenaar let s:did_setup_keymaps = 0 405040c1febSBram Moolenaar 4065e94a29eSBram Moolenaar func s:SetupKeymaps() abort 407040c1febSBram Moolenaar if s:did_setup_keymaps 408040c1febSBram Moolenaar return 409040c1febSBram Moolenaar endif 410040c1febSBram Moolenaar let s:did_setup_keymaps = 1 411040c1febSBram Moolenaar 412040c1febSBram Moolenaar let n = globpath(&runtimepath, "keymap/*.vim", 1, 1) 413040c1febSBram Moolenaar if !empty(n) 414040c1febSBram Moolenaar let idx = 100 415071d4279SBram Moolenaar an 20.460.90 &Edit.&Keymap.None :set keymap=<CR> 416040c1febSBram Moolenaar for name in n 417071d4279SBram Moolenaar " Ignore case for VMS and windows 418040c1febSBram Moolenaar let name = substitute(name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '') 419040c1febSBram Moolenaar exe "an 20.460." . idx . ' &Edit.&Keymap.' . name . " :set keymap=" . name . "<CR>" 420040c1febSBram Moolenaar let idx = idx + 10 421040c1febSBram Moolenaar endfor 422071d4279SBram Moolenaar endif 423040c1febSBram Moolenaar silent! aunmenu &Edit.Show\ &Keymaps\ in\ Menu 424040c1febSBram Moolenaar endfun 425040c1febSBram Moolenaar if exists("do_no_lazyload_menus") 426040c1febSBram Moolenaar call s:SetupKeymaps() 427040c1febSBram Moolenaar else 428040c1febSBram Moolenaar an <silent> 20.460 &Edit.Show\ &Keymaps\ in\ Menu :call <SID>SetupKeymaps()<CR> 429071d4279SBram Moolenaar endif 430040c1febSBram Moolenaarendif 431040c1febSBram Moolenaarif has("win32") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac") 432071d4279SBram Moolenaar an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR> 433071d4279SBram Moolenaarendif 434071d4279SBram Moolenaar 435071d4279SBram Moolenaar" Programming menu 436071d4279SBram Moolenaarif !exists("g:ctags_command") 437071d4279SBram Moolenaar if has("vms") 438d675e2c5SBram Moolenaar let g:ctags_command = "mc vim:ctags *.*" 439071d4279SBram Moolenaar else 440071d4279SBram Moolenaar let g:ctags_command = "ctags -R ." 441071d4279SBram Moolenaar endif 442071d4279SBram Moolenaarendif 443071d4279SBram Moolenaar 444214641f7SBram Moolenaaran 40.300 &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]> 445214641f7SBram Moolenaarvunmenu &Tools.&Jump\ to\ This\ Tag<Tab>g^] 446214641f7SBram Moolenaarvnoremenu &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]> 447214641f7SBram Moolenaaran 40.310 &Tools.Jump\ &Back<Tab>^T <C-T> 448071d4279SBram Moolenaaran 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR> 449071d4279SBram Moolenaar 45082cf9b68SBram Moolenaarif has("folding") || has("spell") 45182cf9b68SBram Moolenaar an 40.330 &Tools.-SEP1- <Nop> 45282cf9b68SBram Moolenaarendif 45382cf9b68SBram Moolenaar 454f3681cc3SBram Moolenaar" Tools.Spelling Menu 45582cf9b68SBram Moolenaarif has("spell") 45682cf9b68SBram Moolenaar an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On :set spell<CR> 45782cf9b68SBram Moolenaar an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off :set nospell<CR> 458214641f7SBram Moolenaar an 40.335.130 &Tools.&Spelling.To\ &Next\ Error<Tab>]s ]s 459214641f7SBram Moolenaar an 40.335.130 &Tools.&Spelling.To\ &Previous\ Error<Tab>[s [s 460362e1a30SBram Moolenaar an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z= z= 461214641f7SBram Moolenaar an 40.335.150 &Tools.&Spelling.&Repeat\ Correction<Tab>:spellrepall :spellrepall<CR> 46282cf9b68SBram Moolenaar an 40.335.200 &Tools.&Spelling.-SEP1- <Nop> 463214641f7SBram Moolenaar an 40.335.210 &Tools.&Spelling.Set\ Language\ to\ "en" :set spl=en spell<CR> 464214641f7SBram Moolenaar an 40.335.220 &Tools.&Spelling.Set\ Language\ to\ "en_au" :set spl=en_au spell<CR> 465214641f7SBram Moolenaar an 40.335.230 &Tools.&Spelling.Set\ Language\ to\ "en_ca" :set spl=en_ca spell<CR> 466214641f7SBram Moolenaar an 40.335.240 &Tools.&Spelling.Set\ Language\ to\ "en_gb" :set spl=en_gb spell<CR> 467214641f7SBram Moolenaar an 40.335.250 &Tools.&Spelling.Set\ Language\ to\ "en_nz" :set spl=en_nz spell<CR> 468214641f7SBram Moolenaar an 40.335.260 &Tools.&Spelling.Set\ Language\ to\ "en_us" :set spl=en_us spell<CR> 46982cf9b68SBram Moolenaar an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR> 47082cf9b68SBram Moolenaar 47165e0d77aSBram Moolenaar let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages'] 4725e94a29eSBram Moolenaar func s:SpellLang() 47365e0d77aSBram Moolenaar for cmd in s:undo_spelllang 4745a8684e7SBram Moolenaar exe "silent! " . cmd 4755a8684e7SBram Moolenaar endfor 47665e0d77aSBram Moolenaar let s:undo_spelllang = [] 4775a8684e7SBram Moolenaar 47882cf9b68SBram Moolenaar if &enc == "iso-8859-15" 47982cf9b68SBram Moolenaar let enc = "latin1" 48082cf9b68SBram Moolenaar else 48182cf9b68SBram Moolenaar let enc = &enc 48282cf9b68SBram Moolenaar endif 4835a8684e7SBram Moolenaar 484f3408e76SBram Moolenaar if !exists("g:menutrans_set_lang_to") 485214641f7SBram Moolenaar let g:menutrans_set_lang_to = 'Set Language to' 486f3408e76SBram Moolenaar endif 487f3408e76SBram Moolenaar 48882cf9b68SBram Moolenaar let found = 0 489040c1febSBram Moolenaar let s = globpath(&runtimepath, "spell/*." . enc . ".spl", 1, 1) 490040c1febSBram Moolenaar if !empty(s) 49182cf9b68SBram Moolenaar let n = 300 492040c1febSBram Moolenaar for f in s 49382cf9b68SBram Moolenaar let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "") 4945a8684e7SBram Moolenaar if nm != "en" && nm !~ '/' 495f3408e76SBram Moolenaar let _nm = nm 49682cf9b68SBram Moolenaar let found += 1 497f3408e76SBram Moolenaar let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"' 4985a8684e7SBram Moolenaar exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>' 49965e0d77aSBram Moolenaar let s:undo_spelllang += ['aun ' . menuname] 50082cf9b68SBram Moolenaar endif 50182cf9b68SBram Moolenaar let n += 10 50282cf9b68SBram Moolenaar endfor 50382cf9b68SBram Moolenaar endif 50482cf9b68SBram Moolenaar if found == 0 50582cf9b68SBram Moolenaar echomsg "Could not find other spell files" 50682cf9b68SBram Moolenaar elseif found == 1 507f3408e76SBram Moolenaar echomsg "Found spell file " . _nm 50882cf9b68SBram Moolenaar else 50982cf9b68SBram Moolenaar echomsg "Found " . found . " more spell files" 51082cf9b68SBram Moolenaar endif 5115a8684e7SBram Moolenaar " Need to redo this when 'encoding' is changed. 5125a8684e7SBram Moolenaar augroup spellmenu 5135a8684e7SBram Moolenaar au! EncodingChanged * call <SID>SpellLang() 5145a8684e7SBram Moolenaar augroup END 51582cf9b68SBram Moolenaar endfun 51682cf9b68SBram Moolenaar 51782cf9b68SBram Moolenaarendif 51882cf9b68SBram Moolenaar 519071d4279SBram Moolenaar" Tools.Fold Menu 520071d4279SBram Moolenaarif has("folding") 521071d4279SBram Moolenaar " open close folds 522214641f7SBram Moolenaar an 40.340.110 &Tools.&Folding.&Enable/Disable\ Folds<Tab>zi zi 523071d4279SBram Moolenaar an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv zv 524214641f7SBram Moolenaar an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx zMzx 525214641f7SBram Moolenaar inoremenu 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx <C-O>zM<C-O>zx 526214641f7SBram Moolenaar an 40.340.130 &Tools.&Folding.C&lose\ More\ Folds<Tab>zm zm 527214641f7SBram Moolenaar an 40.340.140 &Tools.&Folding.&Close\ All\ Folds<Tab>zM zM 528214641f7SBram Moolenaar an 40.340.150 &Tools.&Folding.O&pen\ More\ Folds<Tab>zr zr 5293df0173fSBram Moolenaar an 40.340.160 &Tools.&Folding.&Open\ All\ Folds<Tab>zR zR 530071d4279SBram Moolenaar " fold method 531071d4279SBram Moolenaar an 40.340.200 &Tools.&Folding.-SEP1- <Nop> 532071d4279SBram Moolenaar an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual :set fdm=manual<CR> 533071d4279SBram Moolenaar an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent :set fdm=indent<CR> 534071d4279SBram Moolenaar an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR> 535071d4279SBram Moolenaar an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax :set fdm=syntax<CR> 536071d4279SBram Moolenaar an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff :set fdm=diff<CR> 537071d4279SBram Moolenaar an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker :set fdm=marker<CR> 538071d4279SBram Moolenaar " create and delete folds 539071d4279SBram Moolenaar vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf zf 540071d4279SBram Moolenaar an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd zd 541071d4279SBram Moolenaar an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD zD 542071d4279SBram Moolenaar " moving around in folds 543071d4279SBram Moolenaar an 40.340.300 &Tools.&Folding.-SEP2- <Nop> 544214641f7SBram Moolenaar an 40.340.310.10 &Tools.&Folding.Fold\ Col&umn\ Width.\ &0\ :set fdc=0<CR> 545214641f7SBram Moolenaar an 40.340.310.20 &Tools.&Folding.Fold\ Col&umn\ Width.\ &2\ :set fdc=2<CR> 546214641f7SBram Moolenaar an 40.340.310.30 &Tools.&Folding.Fold\ Col&umn\ Width.\ &3\ :set fdc=3<CR> 547214641f7SBram Moolenaar an 40.340.310.40 &Tools.&Folding.Fold\ Col&umn\ Width.\ &4\ :set fdc=4<CR> 548214641f7SBram Moolenaar an 40.340.310.50 &Tools.&Folding.Fold\ Col&umn\ Width.\ &5\ :set fdc=5<CR> 549214641f7SBram Moolenaar an 40.340.310.60 &Tools.&Folding.Fold\ Col&umn\ Width.\ &6\ :set fdc=6<CR> 550214641f7SBram Moolenaar an 40.340.310.70 &Tools.&Folding.Fold\ Col&umn\ Width.\ &7\ :set fdc=7<CR> 551214641f7SBram Moolenaar an 40.340.310.80 &Tools.&Folding.Fold\ Col&umn\ Width.\ &8\ :set fdc=8<CR> 552071d4279SBram Moolenaarendif " has folding 553071d4279SBram Moolenaar 554071d4279SBram Moolenaarif has("diff") 555071d4279SBram Moolenaar an 40.350.100 &Tools.&Diff.&Update :diffupdate<CR> 556071d4279SBram Moolenaar an 40.350.110 &Tools.&Diff.&Get\ Block :diffget<CR> 557071d4279SBram Moolenaar vunmenu &Tools.&Diff.&Get\ Block 558071d4279SBram Moolenaar vnoremenu &Tools.&Diff.&Get\ Block :diffget<CR> 559071d4279SBram Moolenaar an 40.350.120 &Tools.&Diff.&Put\ Block :diffput<CR> 560071d4279SBram Moolenaar vunmenu &Tools.&Diff.&Put\ Block 561071d4279SBram Moolenaar vnoremenu &Tools.&Diff.&Put\ Block :diffput<CR> 562071d4279SBram Moolenaarendif 563071d4279SBram Moolenaar 564071d4279SBram Moolenaaran 40.358 &Tools.-SEP2- <Nop> 565071d4279SBram Moolenaaran 40.360 &Tools.&Make<Tab>:make :make<CR> 566071d4279SBram Moolenaaran 40.370 &Tools.&List\ Errors<Tab>:cl :cl<CR> 567071d4279SBram Moolenaaran 40.380 &Tools.L&ist\ Messages<Tab>:cl! :cl!<CR> 568071d4279SBram Moolenaaran 40.390 &Tools.&Next\ Error<Tab>:cn :cn<CR> 569071d4279SBram Moolenaaran 40.400 &Tools.&Previous\ Error<Tab>:cp :cp<CR> 570071d4279SBram Moolenaaran 40.410 &Tools.&Older\ List<Tab>:cold :colder<CR> 571071d4279SBram Moolenaaran 40.420 &Tools.N&ewer\ List<Tab>:cnew :cnewer<CR> 572071d4279SBram Moolenaaran 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin :cwin<CR> 573071d4279SBram Moolenaaran 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen :copen<CR> 574071d4279SBram Moolenaaran 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose :cclose<CR> 575071d4279SBram Moolenaar 576071d4279SBram Moolenaaran 40.520 &Tools.-SEP3- <Nop> 577071d4279SBram Moolenaaran <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd 578071d4279SBram Moolenaar \ :call <SID>XxdConv()<CR> 579214641f7SBram Moolenaaran <silent> 40.540 &Tools.Conve&rt\ Back<Tab>:%!xxd\ -r 580071d4279SBram Moolenaar \ :call <SID>XxdBack()<CR> 581071d4279SBram Moolenaar 582071d4279SBram Moolenaar" Use a function to do the conversion, so that it also works with 'insertmode' 583071d4279SBram Moolenaar" set. 5845e94a29eSBram Moolenaarfunc s:XxdConv() 585071d4279SBram Moolenaar let mod = &mod 586071d4279SBram Moolenaar if has("vms") 587071d4279SBram Moolenaar %!mc vim:xxd 588071d4279SBram Moolenaar else 589071d4279SBram Moolenaar call s:XxdFind() 5905ef1c6a4SBram Moolenaar exe '%!' . g:xxdprogram 591071d4279SBram Moolenaar endif 592071d4279SBram Moolenaar if getline(1) =~ "^0000000:" " only if it worked 593071d4279SBram Moolenaar set ft=xxd 594071d4279SBram Moolenaar endif 595071d4279SBram Moolenaar let &mod = mod 596071d4279SBram Moolenaarendfun 597071d4279SBram Moolenaar 5985e94a29eSBram Moolenaarfunc s:XxdBack() 599071d4279SBram Moolenaar let mod = &mod 600071d4279SBram Moolenaar if has("vms") 601071d4279SBram Moolenaar %!mc vim:xxd -r 602071d4279SBram Moolenaar else 603071d4279SBram Moolenaar call s:XxdFind() 6045ef1c6a4SBram Moolenaar exe '%!' . g:xxdprogram . ' -r' 605071d4279SBram Moolenaar endif 606071d4279SBram Moolenaar set ft= 607071d4279SBram Moolenaar doautocmd filetypedetect BufReadPost 608071d4279SBram Moolenaar let &mod = mod 609071d4279SBram Moolenaarendfun 610071d4279SBram Moolenaar 6115e94a29eSBram Moolenaarfunc s:XxdFind() 612071d4279SBram Moolenaar if !exists("g:xxdprogram") 613071d4279SBram Moolenaar " On the PC xxd may not be in the path but in the install directory 61442ebd066SBram Moolenaar if has("win32") && !executable("xxd") 615071d4279SBram Moolenaar let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe" 6165ef1c6a4SBram Moolenaar if g:xxdprogram =~ ' ' 6175ef1c6a4SBram Moolenaar let g:xxdprogram = '"' .. g:xxdprogram .. '"' 6185ef1c6a4SBram Moolenaar endif 619071d4279SBram Moolenaar else 620071d4279SBram Moolenaar let g:xxdprogram = "xxd" 621071d4279SBram Moolenaar endif 622071d4279SBram Moolenaar endif 623071d4279SBram Moolenaarendfun 624071d4279SBram Moolenaar 625040c1febSBram Moolenaarlet s:did_setup_compilers = 0 626040c1febSBram Moolenaar 627071d4279SBram Moolenaar" Setup the Tools.Compiler submenu 6285e94a29eSBram Moolenaarfunc s:SetupCompilers() abort 629040c1febSBram Moolenaar if s:did_setup_compilers 630040c1febSBram Moolenaar return 631071d4279SBram Moolenaar endif 632040c1febSBram Moolenaar let s:did_setup_compilers = 1 633040c1febSBram Moolenaar 634040c1febSBram Moolenaar let n = globpath(&runtimepath, "compiler/*.vim", 1, 1) 635040c1febSBram Moolenaar let idx = 100 636040c1febSBram Moolenaar for name in n 637071d4279SBram Moolenaar " Ignore case for VMS and windows 638040c1febSBram Moolenaar let name = substitute(name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '') 639040c1febSBram Moolenaar exe "an 30.440." . idx . ' &Tools.Se&t\ Compiler.' . name . " :compiler " . name . "<CR>" 640040c1febSBram Moolenaar let idx = idx + 10 641040c1febSBram Moolenaar endfor 642040c1febSBram Moolenaar silent! aunmenu &Tools.Show\ Compiler\ Se&ttings\ in\ Menu 643040c1febSBram Moolenaarendfun 644040c1febSBram Moolenaarif exists("do_no_lazyload_menus") 645040c1febSBram Moolenaar call s:SetupCompilers() 646040c1febSBram Moolenaarelse 647040c1febSBram Moolenaar an <silent> 30.440 &Tools.Show\ Compiler\ Se&ttings\ in\ Menu :call <SID>SetupCompilers()<CR> 648040c1febSBram Moolenaarendif 649040c1febSBram Moolenaar 650040c1febSBram Moolenaar" Load ColorScheme, Compiler Setting and Keymap menus when idle. 651040c1febSBram Moolenaarif !exists("do_no_lazyload_menus") 6525e94a29eSBram Moolenaar func s:SetupLazyloadMenus() 653040c1febSBram Moolenaar call s:SetupColorSchemes() 654040c1febSBram Moolenaar call s:SetupCompilers() 655040c1febSBram Moolenaar if has("keymap") 656040c1febSBram Moolenaar call s:SetupKeymaps() 657040c1febSBram Moolenaar endif 658040c1febSBram Moolenaar endfunc 659040c1febSBram Moolenaar augroup SetupLazyloadMenus 660040c1febSBram Moolenaar au! 661040c1febSBram Moolenaar au CursorHold,CursorHoldI * call <SID>SetupLazyloadMenus() | au! SetupLazyloadMenus 662040c1febSBram Moolenaar augroup END 663040c1febSBram Moolenaarendif 664040c1febSBram Moolenaar 665071d4279SBram Moolenaar 666071d4279SBram Moolenaarif !exists("no_buffers_menu") 667071d4279SBram Moolenaar 668071d4279SBram Moolenaar" Buffer list menu -- Setup functions & actions 669071d4279SBram Moolenaar 670071d4279SBram Moolenaar" wait with building the menu until after loading 'session' files. Makes 671071d4279SBram Moolenaar" startup faster. 672071d4279SBram Moolenaarlet s:bmenu_wait = 1 673071d4279SBram Moolenaar 6745e94a29eSBram Moolenaar" Dictionary of buffer number to name. This helps prevent problems where a 6755e94a29eSBram Moolenaar" buffer as renamed and we didn't keep track of that. 6765e94a29eSBram Moolenaarlet s:bmenu_items = {} 6775e94a29eSBram Moolenaar 678071d4279SBram Moolenaarif !exists("bmenu_priority") 679071d4279SBram Moolenaar let bmenu_priority = 60 680071d4279SBram Moolenaarendif 681071d4279SBram Moolenaar 6825e94a29eSBram Moolenaar" invoked from a BufCreate or BufFilePost autocommand 6835e94a29eSBram Moolenaarfunc s:BMAdd() 684071d4279SBram Moolenaar if s:bmenu_wait == 0 685071d4279SBram Moolenaar " when adding too many buffers, redraw in short format 686071d4279SBram Moolenaar if s:bmenu_count == &menuitems && s:bmenu_short == 0 687071d4279SBram Moolenaar call s:BMShow() 688071d4279SBram Moolenaar else 6895e94a29eSBram Moolenaar let name = expand("<afile>") 6905908fdf7SBram Moolenaar let num = expand("<abuf>") + 0 " add zero to convert to a number type 6915e94a29eSBram Moolenaar if s:BMCanAdd(name, num) 6925e94a29eSBram Moolenaar call <SID>BMFilename(name, num) 6935e94a29eSBram Moolenaar let s:bmenu_count += 1 6945e94a29eSBram Moolenaar endif 695071d4279SBram Moolenaar endif 696071d4279SBram Moolenaar endif 697071d4279SBram Moolenaarendfunc 698071d4279SBram Moolenaar 6995e94a29eSBram Moolenaar" invoked from a BufDelete or BufFilePre autocommand 7005e94a29eSBram Moolenaarfunc s:BMRemove() 701071d4279SBram Moolenaar if s:bmenu_wait == 0 7025e94a29eSBram Moolenaar let bufnum = expand("<abuf>") 7035e94a29eSBram Moolenaar if s:bmenu_items->has_key(bufnum) 7045e94a29eSBram Moolenaar let menu_name = s:bmenu_items[bufnum] 7055e94a29eSBram Moolenaar exe 'silent! aun &Buffers.' . menu_name 706071d4279SBram Moolenaar let s:bmenu_count = s:bmenu_count - 1 7075e94a29eSBram Moolenaar unlet s:bmenu_items[bufnum] 708071d4279SBram Moolenaar endif 7095e94a29eSBram Moolenaar endif 7105e94a29eSBram Moolenaarendfunc 7115e94a29eSBram Moolenaar 7125e94a29eSBram Moolenaar" Return non-zero if buffer with number "name" / "num" is useful to add in the 7135e94a29eSBram Moolenaar" buffer menu. 7145e94a29eSBram Moolenaarfunc s:BMCanAdd(name, num) 7155e94a29eSBram Moolenaar " no directory or unlisted buffer 7165e94a29eSBram Moolenaar if isdirectory(a:name) || !buflisted(a:num) 7175e94a29eSBram Moolenaar return 0 7185e94a29eSBram Moolenaar endif 7195e94a29eSBram Moolenaar 7205e94a29eSBram Moolenaar " no special buffer, such as terminal or popup 7215e94a29eSBram Moolenaar let buftype = getbufvar(a:num, '&buftype') 7225e94a29eSBram Moolenaar if buftype != '' && buftype != 'nofile' && buftype != 'nowrite' 7235e94a29eSBram Moolenaar return 0 7245e94a29eSBram Moolenaar endif 7255e94a29eSBram Moolenaar 7265e94a29eSBram Moolenaar " only existing buffers 7275e94a29eSBram Moolenaar return bufexists(a:num) 728071d4279SBram Moolenaarendfunc 729071d4279SBram Moolenaar 730071d4279SBram Moolenaar" Create the buffer menu (delete an existing one first). 7315e94a29eSBram Moolenaarfunc s:BMShow(...) 732071d4279SBram Moolenaar let s:bmenu_wait = 1 733071d4279SBram Moolenaar let s:bmenu_short = 1 734071d4279SBram Moolenaar let s:bmenu_count = 0 7355e94a29eSBram Moolenaar let s:bmenu_items = {} 736071d4279SBram Moolenaar " 737071d4279SBram Moolenaar " get new priority, if exists 738071d4279SBram Moolenaar if a:0 == 1 739071d4279SBram Moolenaar let g:bmenu_priority = a:1 740071d4279SBram Moolenaar endif 741071d4279SBram Moolenaar 7425e94a29eSBram Moolenaar " Remove old menu, if it exists; keep one entry to avoid a torn off menu to 743e24c5b33SBram Moolenaar " disappear. Use try/catch to avoid setting v:errmsg 744e24c5b33SBram Moolenaar try | unmenu &Buffers | catch | endtry 745071d4279SBram Moolenaar exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l" 746e24c5b33SBram Moolenaar try | unmenu! &Buffers | catch | endtry 747071d4279SBram Moolenaar 748071d4279SBram Moolenaar " create new menu; set 'cpo' to include the <CR> 749071d4279SBram Moolenaar let cpo_save = &cpo 750071d4279SBram Moolenaar set cpo&vim 751071d4279SBram Moolenaar exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>" 752071d4279SBram Moolenaar exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>" 753071d4279SBram Moolenaar exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>" 754071d4279SBram Moolenaar exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>" 755071d4279SBram Moolenaar exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>" 756071d4279SBram Moolenaar exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :" 757071d4279SBram Moolenaar let &cpo = cpo_save 758071d4279SBram Moolenaar unmenu &Buffers.Dummy 759071d4279SBram Moolenaar 760071d4279SBram Moolenaar " figure out how many buffers there are 761071d4279SBram Moolenaar let buf = 1 762071d4279SBram Moolenaar while buf <= bufnr('$') 7635e94a29eSBram Moolenaar if s:BMCanAdd(bufname(buf), buf) 764071d4279SBram Moolenaar let s:bmenu_count = s:bmenu_count + 1 765071d4279SBram Moolenaar endif 766071d4279SBram Moolenaar let buf = buf + 1 767071d4279SBram Moolenaar endwhile 768071d4279SBram Moolenaar if s:bmenu_count <= &menuitems 769071d4279SBram Moolenaar let s:bmenu_short = 0 770071d4279SBram Moolenaar endif 771071d4279SBram Moolenaar 772071d4279SBram Moolenaar " iterate through buffer list, adding each buffer to the menu: 773071d4279SBram Moolenaar let buf = 1 774071d4279SBram Moolenaar while buf <= bufnr('$') 7755e94a29eSBram Moolenaar let name = bufname(buf) 7765e94a29eSBram Moolenaar if s:BMCanAdd(name, buf) 7775e94a29eSBram Moolenaar call <SID>BMFilename(name, buf) 778071d4279SBram Moolenaar endif 779071d4279SBram Moolenaar let buf = buf + 1 780071d4279SBram Moolenaar endwhile 781071d4279SBram Moolenaar let s:bmenu_wait = 0 782071d4279SBram Moolenaar aug buffer_list 783071d4279SBram Moolenaar au! 784071d4279SBram Moolenaar au BufCreate,BufFilePost * call <SID>BMAdd() 785071d4279SBram Moolenaar au BufDelete,BufFilePre * call <SID>BMRemove() 786071d4279SBram Moolenaar aug END 787071d4279SBram Moolenaarendfunc 788071d4279SBram Moolenaar 7895e94a29eSBram Moolenaarfunc s:BMHash(name) 790071d4279SBram Moolenaar " Make name all upper case, so that chars are between 32 and 96 791071d4279SBram Moolenaar let nm = substitute(a:name, ".*", '\U\0', "") 792071d4279SBram Moolenaar if has("ebcdic") 793071d4279SBram Moolenaar " HACK: Replace all non alphabetics with 'Z' 794071d4279SBram Moolenaar " Just to make it work for now. 795071d4279SBram Moolenaar let nm = substitute(nm, "[^A-Z]", 'Z', "g") 796071d4279SBram Moolenaar let sp = char2nr('A') - 1 797071d4279SBram Moolenaar else 798071d4279SBram Moolenaar let sp = char2nr(' ') 799071d4279SBram Moolenaar endif 800071d4279SBram Moolenaar " convert first six chars into a number for sorting: 801071d4279SBram Moolenaar 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) 802071d4279SBram Moolenaarendfunc 803071d4279SBram Moolenaar 8045e94a29eSBram Moolenaarfunc s:BMHash2(name) 805071d4279SBram Moolenaar let nm = substitute(a:name, ".", '\L\0', "") 806071d4279SBram Moolenaar " Not exactly right for EBCDIC... 807071d4279SBram Moolenaar if nm[0] < 'a' || nm[0] > 'z' 808071d4279SBram Moolenaar return '&others.' 809071d4279SBram Moolenaar elseif nm[0] <= 'd' 810071d4279SBram Moolenaar return '&abcd.' 811071d4279SBram Moolenaar elseif nm[0] <= 'h' 812071d4279SBram Moolenaar return '&efgh.' 813071d4279SBram Moolenaar elseif nm[0] <= 'l' 814071d4279SBram Moolenaar return '&ijkl.' 815071d4279SBram Moolenaar elseif nm[0] <= 'p' 816071d4279SBram Moolenaar return '&mnop.' 817071d4279SBram Moolenaar elseif nm[0] <= 't' 818071d4279SBram Moolenaar return '&qrst.' 819071d4279SBram Moolenaar else 820071d4279SBram Moolenaar return '&u-z.' 821071d4279SBram Moolenaar endif 822071d4279SBram Moolenaarendfunc 823071d4279SBram Moolenaar 8245e94a29eSBram Moolenaar" Insert a buffer name into the buffer menu. 8255e94a29eSBram Moolenaarfunc s:BMFilename(name, num) 826071d4279SBram Moolenaar let munge = <SID>BMMunge(a:name, a:num) 827071d4279SBram Moolenaar let hash = <SID>BMHash(munge) 828071d4279SBram Moolenaar if s:bmenu_short == 0 8295e94a29eSBram Moolenaar let s:bmenu_items[a:num] = munge 8305e94a29eSBram Moolenaar let cmd = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge 831071d4279SBram Moolenaar else 8325e94a29eSBram Moolenaar let menu_name = <SID>BMHash2(munge) . munge 8335e94a29eSBram Moolenaar let s:bmenu_items[a:num] = menu_name 8345e94a29eSBram Moolenaar let cmd = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . menu_name 835071d4279SBram Moolenaar endif 836071d4279SBram Moolenaar " set 'cpo' to include the <CR> 837071d4279SBram Moolenaar let cpo_save = &cpo 838071d4279SBram Moolenaar set cpo&vim 8395e94a29eSBram Moolenaar exe cmd . ' :confirm b' . a:num . '<CR>' 840071d4279SBram Moolenaar let &cpo = cpo_save 841071d4279SBram Moolenaarendfunc 842071d4279SBram Moolenaar 843071d4279SBram Moolenaar" Truncate a long path to fit it in a menu item. 844071d4279SBram Moolenaarif !exists("g:bmenu_max_pathlen") 845071d4279SBram Moolenaar let g:bmenu_max_pathlen = 35 846071d4279SBram Moolenaarendif 8475e94a29eSBram Moolenaarfunc s:BMTruncName(fname) 848071d4279SBram Moolenaar let name = a:fname 849071d4279SBram Moolenaar if g:bmenu_max_pathlen < 5 850071d4279SBram Moolenaar let name = "" 851071d4279SBram Moolenaar else 852071d4279SBram Moolenaar let len = strlen(name) 853071d4279SBram Moolenaar if len > g:bmenu_max_pathlen 854071d4279SBram Moolenaar let amountl = (g:bmenu_max_pathlen / 2) - 2 855071d4279SBram Moolenaar let amountr = g:bmenu_max_pathlen - amountl - 3 856071d4279SBram Moolenaar let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$' 857071d4279SBram Moolenaar let left = substitute(name, pattern, '\1', '') 858071d4279SBram Moolenaar let right = substitute(name, pattern, '\2', '') 859071d4279SBram Moolenaar if strlen(left) + strlen(right) < len 860071d4279SBram Moolenaar let name = left . '...' . right 861071d4279SBram Moolenaar endif 862071d4279SBram Moolenaar endif 863071d4279SBram Moolenaar endif 864071d4279SBram Moolenaar return name 865071d4279SBram Moolenaarendfunc 866071d4279SBram Moolenaar 8675e94a29eSBram Moolenaarfunc s:BMMunge(fname, bnum) 868071d4279SBram Moolenaar let name = a:fname 869071d4279SBram Moolenaar if name == '' 870071d4279SBram Moolenaar if !exists("g:menutrans_no_file") 8716dc819b1SBram Moolenaar let g:menutrans_no_file = "[No Name]" 872071d4279SBram Moolenaar endif 873071d4279SBram Moolenaar let name = g:menutrans_no_file 874071d4279SBram Moolenaar else 875071d4279SBram Moolenaar let name = fnamemodify(name, ':p:~') 876071d4279SBram Moolenaar endif 877071d4279SBram Moolenaar " detach file name and separate it out: 878071d4279SBram Moolenaar let name2 = fnamemodify(name, ':t') 879071d4279SBram Moolenaar if a:bnum >= 0 880071d4279SBram Moolenaar let name2 = name2 . ' (' . a:bnum . ')' 881071d4279SBram Moolenaar endif 882071d4279SBram Moolenaar let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h')) 883071d4279SBram Moolenaar let name = escape(name, "\\. \t|") 884071d4279SBram Moolenaar let name = substitute(name, "&", "&&", "g") 885071d4279SBram Moolenaar let name = substitute(name, "\n", "^@", "g") 886071d4279SBram Moolenaar return name 887071d4279SBram Moolenaarendfunc 888071d4279SBram Moolenaar 889071d4279SBram Moolenaar" When just starting Vim, load the buffer menu later 890071d4279SBram Moolenaarif has("vim_starting") 891071d4279SBram Moolenaar augroup LoadBufferMenu 892071d4279SBram Moolenaar au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif 893071d4279SBram Moolenaar au VimEnter * au! LoadBufferMenu 894071d4279SBram Moolenaar augroup END 895071d4279SBram Moolenaarelse 896071d4279SBram Moolenaar call <SID>BMShow() 897071d4279SBram Moolenaarendif 898071d4279SBram Moolenaar 899071d4279SBram Moolenaarendif " !exists("no_buffers_menu") 900071d4279SBram Moolenaar 901071d4279SBram Moolenaar" Window menu 902071d4279SBram Moolenaaran 70.300 &Window.&New<Tab>^Wn <C-W>n 903071d4279SBram Moolenaaran 70.310 &Window.S&plit<Tab>^Ws <C-W>s 904071d4279SBram Moolenaaran 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^> 905071d4279SBram Moolenaaran 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v 906071d4279SBram Moolenaaran <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR> 907071d4279SBram Moolenaarif !exists("*MenuExplOpen") 908071d4279SBram Moolenaar fun MenuExplOpen() 909071d4279SBram Moolenaar if @% == "" 910071d4279SBram Moolenaar 20vsp . 911071d4279SBram Moolenaar else 912aba8857aSBram Moolenaar exe "20vsp " . s:FnameEscape(expand("%:p:h")) 913071d4279SBram Moolenaar endif 914071d4279SBram Moolenaar endfun 915071d4279SBram Moolenaarendif 916071d4279SBram Moolenaaran 70.335 &Window.-SEP1- <Nop> 917071d4279SBram Moolenaaran 70.340 &Window.&Close<Tab>^Wc :confirm close<CR> 918071d4279SBram Moolenaaran 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR> 919071d4279SBram Moolenaaran 70.350 &Window.-SEP2- <Nop> 920071d4279SBram Moolenaaran 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K 921071d4279SBram Moolenaaran 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J 922214641f7SBram Moolenaaran 70.355 &Window.Move\ &To.&Left\ Side<Tab>^WH <C-W>H 923214641f7SBram Moolenaaran 70.355 &Window.Move\ &To.&Right\ Side<Tab>^WL <C-W>L 924071d4279SBram Moolenaaran 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R 925071d4279SBram Moolenaaran 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r 926071d4279SBram Moolenaaran 70.365 &Window.-SEP3- <Nop> 927071d4279SBram Moolenaaran 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>= 928071d4279SBram Moolenaaran 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_ 929071d4279SBram Moolenaaran 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_ 930071d4279SBram Moolenaaran 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\| 931071d4279SBram Moolenaaran 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\| 932071d4279SBram Moolenaar 933071d4279SBram Moolenaar" The popup menu 934071d4279SBram Moolenaaran 1.10 PopUp.&Undo u 935071d4279SBram Moolenaaran 1.15 PopUp.-SEP1- <Nop> 936071d4279SBram Moolenaarvnoremenu 1.20 PopUp.Cu&t "+x 937071d4279SBram Moolenaarvnoremenu 1.30 PopUp.&Copy "+y 938071d4279SBram Moolenaarcnoremenu 1.30 PopUp.&Copy <C-Y> 939071d4279SBram Moolenaarnnoremenu 1.40 PopUp.&Paste "+gP 940071d4279SBram Moolenaarcnoremenu 1.40 PopUp.&Paste <C-R>+ 9414ea8fe1dSBram Moolenaarexe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v'] 9424ea8fe1dSBram Moolenaarexe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i'] 943071d4279SBram Moolenaarvnoremenu 1.50 PopUp.&Delete x 944071d4279SBram Moolenaaran 1.55 PopUp.-SEP2- <Nop> 945071d4279SBram Moolenaarvnoremenu 1.60 PopUp.Select\ Blockwise <C-V> 946293ee4d4SBram Moolenaar 947293ee4d4SBram Moolenaarnnoremenu 1.70 PopUp.Select\ &Word vaw 948293ee4d4SBram Moolenaaronoremenu 1.70 PopUp.Select\ &Word aw 949293ee4d4SBram Moolenaarvnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw 950293ee4d4SBram Moolenaarinoremenu 1.70 PopUp.Select\ &Word <C-O>vaw 951293ee4d4SBram Moolenaarcnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw 952293ee4d4SBram Moolenaar 953293ee4d4SBram Moolenaarnnoremenu 1.73 PopUp.Select\ &Sentence vas 954293ee4d4SBram Moolenaaronoremenu 1.73 PopUp.Select\ &Sentence as 955293ee4d4SBram Moolenaarvnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas 956293ee4d4SBram Moolenaarinoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas 957293ee4d4SBram Moolenaarcnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas 958293ee4d4SBram Moolenaar 959293ee4d4SBram Moolenaarnnoremenu 1.77 PopUp.Select\ Pa&ragraph vap 960293ee4d4SBram Moolenaaronoremenu 1.77 PopUp.Select\ Pa&ragraph ap 961293ee4d4SBram Moolenaarvnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap 962293ee4d4SBram Moolenaarinoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap 963293ee4d4SBram Moolenaarcnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap 964293ee4d4SBram Moolenaar 965293ee4d4SBram Moolenaarnnoremenu 1.80 PopUp.Select\ &Line V 966293ee4d4SBram Moolenaaronoremenu 1.80 PopUp.Select\ &Line <C-C>V 967293ee4d4SBram Moolenaarvnoremenu 1.80 PopUp.Select\ &Line <C-C>V 968293ee4d4SBram Moolenaarinoremenu 1.80 PopUp.Select\ &Line <C-O>V 969293ee4d4SBram Moolenaarcnoremenu 1.80 PopUp.Select\ &Line <C-C>V 970293ee4d4SBram Moolenaar 971293ee4d4SBram Moolenaarnnoremenu 1.90 PopUp.Select\ &Block <C-V> 972293ee4d4SBram Moolenaaronoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 973293ee4d4SBram Moolenaarvnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 974293ee4d4SBram Moolenaarinoremenu 1.90 PopUp.Select\ &Block <C-O><C-V> 975293ee4d4SBram Moolenaarcnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V> 976293ee4d4SBram Moolenaar 977071d4279SBram Moolenaarnoremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR> 978071d4279SBram Moolenaarinoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR> 979071d4279SBram Moolenaarcnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR> 980071d4279SBram Moolenaar 9814536002eSBram Moolenaarif has("spell") 9824536002eSBram Moolenaar " Spell suggestions in the popup menu. Note that this will slow down the 9834536002eSBram Moolenaar " appearance of the menu! 9845e94a29eSBram Moolenaar func s:SpellPopup() 9854536002eSBram Moolenaar if exists("s:changeitem") && s:changeitem != '' 9864536002eSBram Moolenaar call <SID>SpellDel() 9874536002eSBram Moolenaar endif 988b38dea21SBram Moolenaar 989b38dea21SBram Moolenaar " Return quickly if spell checking is not enabled. 990d8c0087cSBram Moolenaar if !&spell || &spelllang == '' 991d8c0087cSBram Moolenaar return 992d8c0087cSBram Moolenaar endif 9934536002eSBram Moolenaar 9944536002eSBram Moolenaar let curcol = col('.') 9951c7715dfSBram Moolenaar let [w, a] = spellbadword() 9964536002eSBram Moolenaar if col('.') > curcol " don't use word after the cursor 9974536002eSBram Moolenaar let w = '' 9984536002eSBram Moolenaar endif 9994536002eSBram Moolenaar if w != '' 1000a93fa7eeSBram Moolenaar if a == 'caps' 1001a93fa7eeSBram Moolenaar let s:suglist = [substitute(w, '.*', '\u&', '')] 1002a93fa7eeSBram Moolenaar else 10034536002eSBram Moolenaar let s:suglist = spellsuggest(w, 10) 1004a93fa7eeSBram Moolenaar endif 100562292587SBram Moolenaar if len(s:suglist) > 0 10067c63fbc4SBram Moolenaar if !exists("g:menutrans_spell_change_ARG_to") 10077c63fbc4SBram Moolenaar let g:menutrans_spell_change_ARG_to = 'Change\ "%s"\ to' 10087c63fbc4SBram Moolenaar endif 10097c63fbc4SBram Moolenaar let s:changeitem = printf(g:menutrans_spell_change_ARG_to, escape(w, ' .')) 10104536002eSBram Moolenaar let s:fromword = w 10114536002eSBram Moolenaar let pri = 1 101262292587SBram Moolenaar " set 'cpo' to include the <CR> 101362292587SBram Moolenaar let cpo_save = &cpo 101462292587SBram Moolenaar set cpo&vim 10154536002eSBram Moolenaar for sug in s:suglist 1016b38dea21SBram Moolenaar exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .') 10174536002eSBram Moolenaar \ . ' :call <SID>SpellReplace(' . pri . ')<CR>' 10184536002eSBram Moolenaar let pri += 1 10194536002eSBram Moolenaar endfor 10204536002eSBram Moolenaar 10217c63fbc4SBram Moolenaar if !exists("g:menutrans_spell_add_ARG_to_word_list") 10227c63fbc4SBram Moolenaar let g:menutrans_spell_add_ARG_to_word_list = 'Add\ "%s"\ to\ Word\ List' 10237c63fbc4SBram Moolenaar endif 10247c63fbc4SBram Moolenaar let s:additem = printf(g:menutrans_spell_add_ARG_to_word_list, escape(w, ' .')) 1025b38dea21SBram Moolenaar exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>' 10264536002eSBram Moolenaar 10277c63fbc4SBram Moolenaar if !exists("g:menutrans_spell_ignore_ARG") 10287c63fbc4SBram Moolenaar let g:menutrans_spell_ignore_ARG = 'Ignore\ "%s"' 10297c63fbc4SBram Moolenaar endif 10307c63fbc4SBram Moolenaar let s:ignoreitem = printf(g:menutrans_spell_ignore_ARG, escape(w, ' .')) 1031b38dea21SBram Moolenaar exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>' 10324536002eSBram Moolenaar 1033b38dea21SBram Moolenaar anoremenu 1.8 PopUp.-SpellSep- : 103462292587SBram Moolenaar let &cpo = cpo_save 10354536002eSBram Moolenaar endif 10364536002eSBram Moolenaar endif 103762292587SBram Moolenaar call cursor(0, curcol) " put the cursor back where it was 10384536002eSBram Moolenaar endfunc 10394536002eSBram Moolenaar 10405e94a29eSBram Moolenaar func s:SpellReplace(n) 10414536002eSBram Moolenaar let l = getline('.') 104262292587SBram Moolenaar " Move the cursor to the start of the word. 104362292587SBram Moolenaar call spellbadword() 10444536002eSBram Moolenaar call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1] 10454536002eSBram Moolenaar \ . strpart(l, col('.') + len(s:fromword) - 1)) 10464536002eSBram Moolenaar endfunc 10474536002eSBram Moolenaar 10485e94a29eSBram Moolenaar func s:SpellDel() 10494536002eSBram Moolenaar exe "aunmenu PopUp." . s:changeitem 10504536002eSBram Moolenaar exe "aunmenu PopUp." . s:additem 10514536002eSBram Moolenaar exe "aunmenu PopUp." . s:ignoreitem 10524536002eSBram Moolenaar aunmenu PopUp.-SpellSep- 10534536002eSBram Moolenaar let s:changeitem = '' 10544536002eSBram Moolenaar endfun 10554536002eSBram Moolenaar 1056b38dea21SBram Moolenaar augroup SpellPopupMenu 10574536002eSBram Moolenaar au! MenuPopup * call <SID>SpellPopup() 1058b38dea21SBram Moolenaar augroup END 10594536002eSBram Moolenaarendif 1060071d4279SBram Moolenaar 1061071d4279SBram Moolenaar" The GUI toolbar (for MS-Windows and GTK) 1062071d4279SBram Moolenaarif has("toolbar") 1063071d4279SBram Moolenaar an 1.10 ToolBar.Open :browse confirm e<CR> 1064071d4279SBram Moolenaar an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR> 1065071d4279SBram Moolenaar an 1.30 ToolBar.SaveAll :browse confirm wa<CR> 1066071d4279SBram Moolenaar 1067071d4279SBram Moolenaar if has("printer") 1068071d4279SBram Moolenaar an 1.40 ToolBar.Print :hardcopy<CR> 1069071d4279SBram Moolenaar vunmenu ToolBar.Print 1070071d4279SBram Moolenaar vnoremenu ToolBar.Print :hardcopy<CR> 1071071d4279SBram Moolenaar elseif has("unix") 1072071d4279SBram Moolenaar an 1.40 ToolBar.Print :w !lpr<CR> 1073071d4279SBram Moolenaar vunmenu ToolBar.Print 1074071d4279SBram Moolenaar vnoremenu ToolBar.Print :w !lpr<CR> 1075071d4279SBram Moolenaar endif 1076071d4279SBram Moolenaar 1077071d4279SBram Moolenaar an 1.45 ToolBar.-sep1- <Nop> 1078071d4279SBram Moolenaar an 1.50 ToolBar.Undo u 1079071d4279SBram Moolenaar an 1.60 ToolBar.Redo <C-R> 1080071d4279SBram Moolenaar 1081071d4279SBram Moolenaar an 1.65 ToolBar.-sep2- <Nop> 1082071d4279SBram Moolenaar vnoremenu 1.70 ToolBar.Cut "+x 1083071d4279SBram Moolenaar vnoremenu 1.80 ToolBar.Copy "+y 1084071d4279SBram Moolenaar cnoremenu 1.80 ToolBar.Copy <C-Y> 1085071d4279SBram Moolenaar nnoremenu 1.90 ToolBar.Paste "+gP 1086071d4279SBram Moolenaar cnoremenu ToolBar.Paste <C-R>+ 10874ea8fe1dSBram Moolenaar exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v'] 10884ea8fe1dSBram Moolenaar exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i'] 1089071d4279SBram Moolenaar 1090071d4279SBram Moolenaar if !has("gui_athena") 1091071d4279SBram Moolenaar an 1.95 ToolBar.-sep3- <Nop> 1092e2cc9702SBram Moolenaar an 1.100 ToolBar.Replace :promptrepl<CR> 1093071d4279SBram Moolenaar vunmenu ToolBar.Replace 10944ea8fe1dSBram Moolenaar vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR> 1095e2cc9702SBram Moolenaar an 1.110 ToolBar.FindNext n 1096e2cc9702SBram Moolenaar an 1.120 ToolBar.FindPrev N 1097071d4279SBram Moolenaar endif 1098071d4279SBram Moolenaar 1099071d4279SBram Moolenaar an 1.215 ToolBar.-sep5- <Nop> 1100071d4279SBram Moolenaar an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR> 1101071d4279SBram Moolenaar an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR> 1102071d4279SBram Moolenaar an 1.240 ToolBar.RunScript :browse so<CR> 1103071d4279SBram Moolenaar 1104071d4279SBram Moolenaar an 1.245 ToolBar.-sep6- <Nop> 1105071d4279SBram Moolenaar an 1.250 ToolBar.Make :make<CR> 1106071d4279SBram Moolenaar an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR> 1107071d4279SBram Moolenaar an 1.280 ToolBar.TagJump g<C-]> 1108071d4279SBram Moolenaar 1109071d4279SBram Moolenaar an 1.295 ToolBar.-sep7- <Nop> 1110071d4279SBram Moolenaar an 1.300 ToolBar.Help :help<CR> 1111071d4279SBram Moolenaar an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR> 1112071d4279SBram Moolenaar 1113071d4279SBram Moolenaar" Only set the tooltips here if not done in a language menu file 1114071d4279SBram Moolenaarif exists("*Do_toolbar_tmenu") 1115071d4279SBram Moolenaar call Do_toolbar_tmenu() 1116071d4279SBram Moolenaarelse 1117071d4279SBram Moolenaar let did_toolbar_tmenu = 1 1118071d4279SBram Moolenaar tmenu ToolBar.Open Open file 1119071d4279SBram Moolenaar tmenu ToolBar.Save Save current file 1120071d4279SBram Moolenaar tmenu ToolBar.SaveAll Save all files 1121071d4279SBram Moolenaar tmenu ToolBar.Print Print 1122071d4279SBram Moolenaar tmenu ToolBar.Undo Undo 1123071d4279SBram Moolenaar tmenu ToolBar.Redo Redo 1124071d4279SBram Moolenaar tmenu ToolBar.Cut Cut to clipboard 1125071d4279SBram Moolenaar tmenu ToolBar.Copy Copy to clipboard 1126071d4279SBram Moolenaar tmenu ToolBar.Paste Paste from Clipboard 1127071d4279SBram Moolenaar if !has("gui_athena") 11285c73622aSBram Moolenaar tmenu ToolBar.Replace Find / Replace... 1129071d4279SBram Moolenaar tmenu ToolBar.FindNext Find Next 1130071d4279SBram Moolenaar tmenu ToolBar.FindPrev Find Previous 1131071d4279SBram Moolenaar endif 1132b38dea21SBram Moolenaar tmenu ToolBar.LoadSesn Choose a session to load 1133071d4279SBram Moolenaar tmenu ToolBar.SaveSesn Save current session 1134b38dea21SBram Moolenaar tmenu ToolBar.RunScript Choose a Vim Script to run 1135e2cc9702SBram Moolenaar tmenu ToolBar.Make Make current project (:make) 1136e2cc9702SBram Moolenaar tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .) 1137071d4279SBram Moolenaar tmenu ToolBar.TagJump Jump to tag under cursor 1138071d4279SBram Moolenaar tmenu ToolBar.Help Vim Help 1139071d4279SBram Moolenaar tmenu ToolBar.FindHelp Search Vim Help 1140071d4279SBram Moolenaarendif 1141071d4279SBram Moolenaar 1142071d4279SBram Moolenaar" Select a session to load; default to current session name if present 1143071d4279SBram Moolenaarfun! s:LoadVimSesn() 1144071d4279SBram Moolenaar if strlen(v:this_session) > 0 1145aba8857aSBram Moolenaar let name = s:FnameEscape(v:this_session) 1146071d4279SBram Moolenaar else 1147071d4279SBram Moolenaar let name = "Session.vim" 1148071d4279SBram Moolenaar endif 1149071d4279SBram Moolenaar execute "browse so " . name 1150071d4279SBram Moolenaarendfun 1151071d4279SBram Moolenaar 1152071d4279SBram Moolenaar" Select a session to save; default to current session name if present 1153071d4279SBram Moolenaarfun! s:SaveVimSesn() 1154071d4279SBram Moolenaar if strlen(v:this_session) == 0 1155071d4279SBram Moolenaar let v:this_session = "Session.vim" 1156071d4279SBram Moolenaar endif 1157aba8857aSBram Moolenaar execute "browse mksession! " . s:FnameEscape(v:this_session) 1158071d4279SBram Moolenaarendfun 1159071d4279SBram Moolenaar 1160071d4279SBram Moolenaarendif 1161071d4279SBram Moolenaar 1162071d4279SBram Moolenaarendif " !exists("did_install_default_menus") 1163071d4279SBram Moolenaar 1164071d4279SBram Moolenaar" Define these items always, so that syntax can be switched on when it wasn't. 1165071d4279SBram Moolenaar" But skip them when the Syntax menu was disabled by the user. 1166071d4279SBram Moolenaarif !exists("did_install_syntax_menu") 1167071d4279SBram Moolenaar an 50.212 &Syntax.&Manual :syn manual<CR> 1168071d4279SBram Moolenaar an 50.214 &Syntax.A&utomatic :syn on<CR> 1169214641f7SBram Moolenaar an <silent> 50.216 &Syntax.On/Off\ for\ &This\ File :call <SID>SynOnOff()<CR> 1170071d4279SBram Moolenaar if !exists("*s:SynOnOff") 1171071d4279SBram Moolenaar fun s:SynOnOff() 1172071d4279SBram Moolenaar if has("syntax_items") 1173071d4279SBram Moolenaar syn clear 1174071d4279SBram Moolenaar else 1175071d4279SBram Moolenaar if !exists("g:syntax_on") 1176071d4279SBram Moolenaar syn manual 1177071d4279SBram Moolenaar endif 1178071d4279SBram Moolenaar set syn=ON 1179071d4279SBram Moolenaar endif 1180071d4279SBram Moolenaar endfun 1181071d4279SBram Moolenaar endif 1182071d4279SBram Moolenaarendif 1183071d4279SBram Moolenaar 1184071d4279SBram Moolenaar 1185071d4279SBram Moolenaar" Install the Syntax menu only when filetype.vim has been loaded or when 1186071d4279SBram Moolenaar" manual syntax highlighting is enabled. 1187071d4279SBram Moolenaar" Avoid installing the Syntax menu twice. 1188071d4279SBram Moolenaarif (exists("did_load_filetypes") || exists("syntax_on")) 1189071d4279SBram Moolenaar \ && !exists("did_install_syntax_menu") 1190071d4279SBram Moolenaar let did_install_syntax_menu = 1 1191071d4279SBram Moolenaar 1192071d4279SBram Moolenaar" Skip setting up the individual syntax selection menus unless 1193071d4279SBram Moolenaar" do_syntax_sel_menu is defined (it takes quite a bit of time). 1194071d4279SBram Moolenaarif exists("do_syntax_sel_menu") 1195071d4279SBram Moolenaar runtime! synmenu.vim 1196071d4279SBram Moolenaarelse 1197040c1febSBram Moolenaar 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> 1198071d4279SBram Moolenaar an 50.195 &Syntax.-SEP1- <Nop> 1199071d4279SBram Moolenaarendif 1200071d4279SBram Moolenaar 1201071d4279SBram Moolenaaran 50.210 &Syntax.&Off :syn off<CR> 1202071d4279SBram Moolenaaran 50.700 &Syntax.-SEP3- <Nop> 1203214641f7SBram Moolenaaran 50.710 &Syntax.Co&lor\ Test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR> 1204214641f7SBram Moolenaaran 50.720 &Syntax.&Highlight\ Test :runtime syntax/hitest.vim<CR> 1205071d4279SBram Moolenaaran 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR> 1206071d4279SBram Moolenaar 1207071d4279SBram Moolenaarendif " !exists("did_install_syntax_menu") 1208071d4279SBram Moolenaar 1209071d4279SBram Moolenaar" Restore the previous value of 'cpoptions'. 1210071d4279SBram Moolenaarlet &cpo = s:cpo_save 1211071d4279SBram Moolenaarunlet s:cpo_save 1212071d4279SBram Moolenaar 1213071d4279SBram Moolenaar" vim: set sw=2 : 1214