blob: e17652432deaec4a4e3a02a553990479ec63a2dd [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" 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 <Bram@vim.org>
Bram Moolenaarb45cd362020-09-28 21:41:49 +02005" Last Change: 2020 Sep 28
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
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"
Bram Moolenaar5be4cee2019-09-27 19:34:08 +020032 " Also skip "en_US" to avoid picking up "en_gb" translations.
33 if strlen(s:lang) > 1 && s:lang !~? '^en_us'
Bram Moolenaar071d4272004-06-13 20:20:40 +000034 " When the language does not include the charset add 'encoding'
35 if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
36 let s:lang = s:lang . '.' . &enc
37 endif
38
39 " We always use a lowercase name.
40 " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
41 " systems appear to use this.
42 " Change spaces to underscores.
43 let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
44 let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
45 let s:lang = substitute(s:lang, " ", "_", "g")
46 " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
47 let s:lang = substitute(s:lang, "@euro", "", "")
48 " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
49 " same menu file for them.
50 let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
51 menutrans clear
52 exe "runtime! lang/menu_" . s:lang . ".vim"
53
54 if !exists("did_menu_trans")
55 " There is no exact match, try matching with a wildcard added
56 " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
57 let s:lang = substitute(s:lang, '\.[^.]*', "", "")
Bram Moolenaar05159a02005-02-26 23:04:13 +000058 exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
Bram Moolenaar68f1b1b2018-07-23 05:10:14 +020060 if !exists("did_menu_trans") && s:lang =~ '_'
61 " If the language includes a region try matching without that region.
62 " (e.g. find menu_de.vim if s:lang == de_DE).
63 let langonly = substitute(s:lang, '_.*', "", "")
64 exe "runtime! lang/menu_" . langonly . "[^a-z]*vim"
65 endif
66
Bram Moolenaare2cc9702005-03-15 22:43:58 +000067 if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
Bram Moolenaar071d4272004-06-13 20:20:40 +000068 " On windows locale names are complicated, try using $LANG, it might
Bram Moolenaare2cc9702005-03-15 22:43:58 +000069 " have been set by set_init_1(). But don't do this for "en" or "en_us".
Bram Moolenaar2ce06f62005-01-31 19:19:04 +000070 " But don't match "slovak" when $LANG is "sl".
71 exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
Bram Moolenaar071d4272004-06-13 20:20:40 +000072 endif
73 endif
74 endif
75endif
76
77
78" Help menu
79an 9999.10 &Help.&Overview<Tab><F1> :help<CR>
80an 9999.20 &Help.&User\ Manual :help usr_toc<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +010081an 9999.30 &Help.&How-To\ Links :help how-to<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +000082an <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR>
83an 9999.45 &Help.-sep1- <Nop>
84an 9999.50 &Help.&Credits :help credits<CR>
85an 9999.60 &Help.Co&pying :help copying<CR>
86an 9999.70 &Help.&Sponsor/Register :help sponsor<CR>
87an 9999.70 &Help.O&rphans :help kcc<CR>
88an 9999.75 &Help.-sep2- <Nop>
89an 9999.80 &Help.&Version :version<CR>
90an 9999.90 &Help.&About :intro<CR>
91
Bram Moolenaarb45cd362020-09-28 21:41:49 +020092if exists(':tlmenu')
93 tlnoremenu 9999.10 &Help.&Overview<Tab><F1> <C-W>:help<CR>
94 tlnoremenu 9999.20 &Help.&User\ Manual <C-W>:help usr_toc<CR>
95 tlnoremenu 9999.30 &Help.&How-To\ Links <C-W>:help how-to<CR>
96 tlnoremenu <silent> 9999.40 &Help.&Find\.\.\. <C-W>:call <SID>Helpfind()<CR>
97 tlnoremenu 9999.45 &Help.-sep1- <Nop>
98 tlnoremenu 9999.50 &Help.&Credits <C-W>:help credits<CR>
99 tlnoremenu 9999.60 &Help.Co&pying <C-W>:help copying<CR>
100 tlnoremenu 9999.70 &Help.&Sponsor/Register <C-W>:help sponsor<CR>
101 tlnoremenu 9999.70 &Help.O&rphans <C-W>:help kcc<CR>
102 tlnoremenu 9999.75 &Help.-sep2- <Nop>
103 tlnoremenu 9999.80 &Help.&Version <C-W>:version<CR>
104 tlnoremenu 9999.90 &Help.&About <C-W>:intro<CR>
105endif
106
Bram Moolenaar071d4272004-06-13 20:20:40 +0000107fun! s:Helpfind()
108 if !exists("g:menutrans_help_dialog")
109 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')"
110 endif
111 let h = inputdialog(g:menutrans_help_dialog)
112 if h != ""
113 let v:errmsg = ""
114 silent! exe "help " . h
115 if v:errmsg != ""
116 echo v:errmsg
117 endif
118 endif
119endfun
120
121" File menu
122an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR>
123an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR>
Bram Moolenaar5c8837f2006-02-25 21:52:33 +0000124an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew :browse tabnew<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125an 10.325 &File.&New<Tab>:enew :confirm enew<CR>
126an <silent> 10.330 &File.&Close<Tab>:close
Bram Moolenaarcab49df2011-03-22 17:40:10 +0100127 \ :if winheight(2) < 0 && tabpagewinnr(2) == 0 <Bar>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000128 \ confirm enew <Bar>
129 \ else <Bar>
130 \ confirm close <Bar>
131 \ endif<CR>
132an 10.335 &File.-SEP1- <Nop>
133an <silent> 10.340 &File.&Save<Tab>:w :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
134an 10.350 &File.Save\ &As\.\.\.<Tab>:sav :browse confirm saveas<CR>
135
136if has("diff")
137 an 10.400 &File.-SEP2- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100138 an 10.410 &File.Split\ &Diff\ With\.\.\. :browse vert diffsplit<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139 an 10.420 &File.Split\ Patched\ &By\.\.\. :browse vert diffpatch<CR>
140endif
141
142if has("printer")
143 an 10.500 &File.-SEP3- <Nop>
144 an 10.510 &File.&Print :hardcopy<CR>
145 vunmenu &File.&Print
146 vnoremenu &File.&Print :hardcopy<CR>
147elseif has("unix")
148 an 10.500 &File.-SEP3- <Nop>
149 an 10.510 &File.&Print :w !lpr<CR>
150 vunmenu &File.&Print
151 vnoremenu &File.&Print :w !lpr<CR>
152endif
153an 10.600 &File.-SEP4- <Nop>
154an 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR>
155an 10.620 &File.E&xit<Tab>:qa :confirm qa<CR>
156
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100157func s:SelectAll()
Bram Moolenaara3e6bc92013-01-30 14:18:00 +0100158 exe "norm! gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000159endfunc
160
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100161func s:FnameEscape(fname)
Bram Moolenaaraba88572008-06-25 20:13:35 +0000162 if exists('*fnameescape')
163 return fnameescape(a:fname)
Bram Moolenaar5c736222010-01-06 20:54:52 +0100164 endif
Bram Moolenaaraba88572008-06-25 20:13:35 +0000165 return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
166endfunc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167
168" Edit menu
169an 20.310 &Edit.&Undo<Tab>u u
170an 20.320 &Edit.&Redo<Tab>^R <C-R>
171an 20.330 &Edit.Rep&eat<Tab>\. .
172
173an 20.335 &Edit.-SEP1- <Nop>
174vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
175vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
176cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100177if exists(':tlmenu')
178 tlnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-W>:<C-Y><CR>
179endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000180nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
181cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
Bram Moolenaar4c5d8152018-10-19 22:36:53 +0200182if exists(':tlmenu')
183 tlnoremenu &Edit.&Paste<Tab>"+gP <C-W>"+
184endif
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000185exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['v']
186exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . paste#paste_cmd['i']
Bram Moolenaar071d4272004-06-13 20:20:40 +0000187nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p
188inoremenu &Edit.Put\ &Before<Tab>[p <C-O>[p
189nnoremenu 20.380 &Edit.Put\ &After<Tab>]p ]p
190inoremenu &Edit.Put\ &After<Tab>]p <C-O>]p
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100191if has("win32")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192 vnoremenu 20.390 &Edit.&Delete<Tab>x x
193endif
194noremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG :<C-U>call <SID>SelectAll()<CR>
195inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-O>:call <SID>SelectAll()<CR>
196cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-U>call <SID>SelectAll()<CR>
197
198an 20.405 &Edit.-SEP2- <Nop>
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100199if has("win32") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000200 an 20.410 &Edit.&Find\.\.\. :promptfind<CR>
201 vunmenu &Edit.&Find\.\.\.
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000202 vnoremenu <silent> &Edit.&Find\.\.\. y:promptfind <C-R>=<SID>FixFText()<CR><CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000203 an 20.420 &Edit.Find\ and\ Rep&lace\.\.\. :promptrepl<CR>
204 vunmenu &Edit.Find\ and\ Rep&lace\.\.\.
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000205 vnoremenu <silent> &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000206else
207 an 20.410 &Edit.&Find<Tab>/ /
208 an 20.420 &Edit.Find\ and\ Rep&lace<Tab>:%s :%s/
209 vunmenu &Edit.Find\ and\ Rep&lace<Tab>:%s
210 vnoremenu &Edit.Find\ and\ Rep&lace<Tab>:s :s/
211endif
212
213an 20.425 &Edit.-SEP3- <Nop>
214an 20.430 &Edit.Settings\ &Window :options<CR>
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000215an 20.435 &Edit.Startup\ &Settings :call <SID>EditVimrc()<CR>
216
217fun! s:EditVimrc()
218 if $MYVIMRC != ''
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000219 let fname = $MYVIMRC
Bram Moolenaar42ebd062016-07-17 13:35:14 +0200220 elseif has("win32")
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000221 if $HOME != ''
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000222 let fname = $HOME . "/_vimrc"
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000223 else
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000224 let fname = $VIM . "/_vimrc"
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000225 endif
226 elseif has("amiga")
227 let fname = "s:.vimrc"
228 else
Bram Moolenaare30de2d2008-07-01 19:56:57 +0000229 let fname = $HOME . "/.vimrc"
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000230 endif
Bram Moolenaaraba88572008-06-25 20:13:35 +0000231 let fname = s:FnameEscape(fname)
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000232 if &mod
233 exe "split " . fname
234 else
235 exe "edit " . fname
236 endif
237endfun
Bram Moolenaar071d4272004-06-13 20:20:40 +0000238
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000239fun! s:FixFText()
240 " Fix text in nameless register to be used with :promptfind.
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000241 return substitute(@", "[\r\n]", '\\n', 'g')
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000242endfun
243
Bram Moolenaar071d4272004-06-13 20:20:40 +0000244" Edit/Global Settings
245an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100246an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignoring\ Case<Tab>:set\ ic! :set ic! ic?<CR>
247an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! :set sm! sm?<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000248
Bram Moolenaar214641f2017-03-05 17:04:09 +0100249an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 1\ :set so=1<CR>
250an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 2\ :set so=2<CR>
251an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 3\ :set so=3<CR>
252an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 4\ :set so=4<CR>
253an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 5\ :set so=5<CR>
254an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 7\ :set so=7<CR>
255an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 10\ :set so=10<CR>
256an 20.440.120 &Edit.&Global\ Settings.&Context\ Lines.\ 100\ :set so=100<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000257
258an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
259an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100260an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ Mode :set ve=insert<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
262an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
263an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im! :set im!<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100264an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! :set cp!<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000265an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\. :call <SID>SearchP()<CR>
266an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\. :call <SID>TagFiles()<CR>
267"
268" GUI options
269an 20.440.300 &Edit.&Global\ Settings.-SEP1- <Nop>
270an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar :call <SID>ToggleGuiOption("T")<CR>
271an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
272an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR>
273an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
274
275fun! s:SearchP()
276 if !exists("g:menutrans_path_dialog")
277 let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
278 endif
279 let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
280 if n != ""
281 let &path = substitute(n, ' ', '\\ ', 'g')
282 endif
283endfun
284
285fun! s:TagFiles()
286 if !exists("g:menutrans_tags_dialog")
287 let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
288 endif
289 let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
290 if n != ""
291 let &tags = substitute(n, ' ', '\\ ', 'g')
292 endif
293endfun
294
295fun! s:ToggleGuiOption(option)
296 " If a:option is already set in guioptions, then we want to remove it
297 if match(&guioptions, "\\C" . a:option) > -1
298 exec "set go-=" . a:option
299 else
300 exec "set go+=" . a:option
301 endif
302endfun
303
304" Edit/File Settings
305
306" Boolean options
307an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu! :set nu! nu?<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100308an 20.440.105 &Edit.F&ile\ Settings.Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! :set rnu! rnu?<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000309an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list! :set list! list?<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100310an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrapping<Tab>:set\ wrap! :set wrap! wrap?<CR>
311an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! :set lbr! lbr?<CR>
312an 20.440.160 &Edit.F&ile\ Settings.Toggle\ Tab\ &Expanding<Tab>:set\ et! :set et! et?<CR>
313an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &Auto\ Indenting<Tab>:set\ ai! :set ai! ai?<CR>
314an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-Style\ Indenting<Tab>:set\ cin! :set cin! cin?<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000315
316" other options
317an 20.440.600 &Edit.F&ile\ Settings.-SEP2- <Nop>
318an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2 :set sw=2 sw?<CR>
319an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3 :set sw=3 sw?<CR>
320an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4 :set sw=4 sw?<CR>
321an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5 :set sw=5 sw?<CR>
322an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6 :set sw=6 sw?<CR>
323an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8 :set sw=8 sw?<CR>
324
325an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2 :set sts=2 sts?<CR>
326an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3 :set sts=3 sts?<CR>
327an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4 :set sts=4 sts?<CR>
328an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5 :set sts=5 sts?<CR>
329an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6 :set sts=6 sts?<CR>
330an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR>
331
332an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR>
333an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR>
334fun! s:TextWidth()
335 if !exists("g:menutrans_textwidth_dialog")
336 let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
337 endif
338 let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
339 if n != ""
Bram Moolenaarad3b3662013-05-17 18:14:19 +0200340 " Remove leading zeros to avoid it being used as an octal number.
341 " But keep a zero by itself.
342 let tw = substitute(n, "^0*", "", "")
Bram Moolenaar214641f2017-03-05 17:04:09 +0100343 let &tw = tw == '' ? 0 : tw
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 endif
345endfun
346
347fun! s:FileFormat()
348 if !exists("g:menutrans_fileformat_dialog")
349 let g:menutrans_fileformat_dialog = "Select format for writing the file"
350 endif
351 if !exists("g:menutrans_fileformat_choices")
352 let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
353 endif
354 if &ff == "dos"
355 let def = 2
356 elseif &ff == "mac"
357 let def = 3
358 else
359 let def = 1
360 endif
361 let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
362 if n == 1
363 set ff=unix
364 elseif n == 2
365 set ff=dos
366 elseif n == 3
367 set ff=mac
368 endif
369endfun
370
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100371let s:did_setup_color_schemes = 0
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200372
Bram Moolenaar071d4272004-06-13 20:20:40 +0000373" Setup the Edit.Color Scheme submenu
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100374func s:SetupColorSchemes() abort
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100375 if s:did_setup_color_schemes
376 return
377 endif
378 let s:did_setup_color_schemes = 1
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200379
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100380 let n = globpath(&runtimepath, "colors/*.vim", 1, 1)
Bram Moolenaar30e9b3c2019-09-07 16:24:12 +0200381 let n += globpath(&packpath, "pack/*/start/*/colors/*.vim", 1, 1)
382 let n += globpath(&packpath, "pack/*/opt/*/colors/*.vim", 1, 1)
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200383
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100384 " Ignore case for VMS and windows, sort on name
385 let names = sort(map(n, 'substitute(v:val, "\\c.*[/\\\\:\\]]\\([^/\\\\:]*\\)\\.vim", "\\1", "")'), 1)
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200386
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100387 " define all the submenu entries
388 let idx = 100
389 for name in names
390 exe "an 20.450." . idx . ' &Edit.C&olor\ Scheme.' . name . " :colors " . name . "<CR>"
391 let idx = idx + 10
392 endfor
393 silent! aunmenu &Edit.Show\ C&olor\ Schemes\ in\ Menu
394endfun
395if exists("do_no_lazyload_menus")
396 call s:SetupColorSchemes()
397else
398 an <silent> 20.450 &Edit.Show\ C&olor\ Schemes\ in\ Menu :call <SID>SetupColorSchemes()<CR>
399endif
Bram Moolenaarc5604bc2010-07-17 15:20:30 +0200400
Bram Moolenaar071d4272004-06-13 20:20:40 +0000401
402" Setup the Edit.Keymap submenu
403if has("keymap")
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100404 let s:did_setup_keymaps = 0
405
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100406 func s:SetupKeymaps() abort
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100407 if s:did_setup_keymaps
408 return
409 endif
410 let s:did_setup_keymaps = 1
411
412 let n = globpath(&runtimepath, "keymap/*.vim", 1, 1)
413 if !empty(n)
414 let idx = 100
415 an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
416 for name in n
417 " Ignore case for VMS and windows
418 let name = substitute(name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
419 exe "an 20.460." . idx . ' &Edit.&Keymap.' . name . " :set keymap=" . name . "<CR>"
420 let idx = idx + 10
421 endfor
422 endif
423 silent! aunmenu &Edit.Show\ &Keymaps\ in\ Menu
424 endfun
425 if exists("do_no_lazyload_menus")
426 call s:SetupKeymaps()
427 else
428 an <silent> 20.460 &Edit.Show\ &Keymaps\ in\ Menu :call <SID>SetupKeymaps()<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000429 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000430endif
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100431if has("win32") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000432 an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
433endif
434
435" Programming menu
436if !exists("g:ctags_command")
437 if has("vms")
Bram Moolenaard675e2c2007-01-09 14:09:25 +0000438 let g:ctags_command = "mc vim:ctags *.*"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000439 else
440 let g:ctags_command = "ctags -R ."
441 endif
442endif
443
Bram Moolenaar214641f2017-03-05 17:04:09 +0100444an 40.300 &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]>
445vunmenu &Tools.&Jump\ to\ This\ Tag<Tab>g^]
446vnoremenu &Tools.&Jump\ to\ This\ Tag<Tab>g^] g<C-]>
447an 40.310 &Tools.Jump\ &Back<Tab>^T <C-T>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000448an 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR>
449
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000450if has("folding") || has("spell")
451 an 40.330 &Tools.-SEP1- <Nop>
452endif
453
Bram Moolenaarf3681cc2005-06-08 22:03:13 +0000454" Tools.Spelling Menu
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000455if has("spell")
456 an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On :set spell<CR>
457 an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off :set nospell<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100458 an 40.335.130 &Tools.&Spelling.To\ &Next\ Error<Tab>]s ]s
459 an 40.335.130 &Tools.&Spelling.To\ &Previous\ Error<Tab>[s [s
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000460 an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z= z=
Bram Moolenaar214641f2017-03-05 17:04:09 +0100461 an 40.335.150 &Tools.&Spelling.&Repeat\ Correction<Tab>:spellrepall :spellrepall<CR>
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000462 an 40.335.200 &Tools.&Spelling.-SEP1- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100463 an 40.335.210 &Tools.&Spelling.Set\ Language\ to\ "en" :set spl=en spell<CR>
464 an 40.335.220 &Tools.&Spelling.Set\ Language\ to\ "en_au" :set spl=en_au spell<CR>
465 an 40.335.230 &Tools.&Spelling.Set\ Language\ to\ "en_ca" :set spl=en_ca spell<CR>
466 an 40.335.240 &Tools.&Spelling.Set\ Language\ to\ "en_gb" :set spl=en_gb spell<CR>
467 an 40.335.250 &Tools.&Spelling.Set\ Language\ to\ "en_nz" :set spl=en_nz spell<CR>
468 an 40.335.260 &Tools.&Spelling.Set\ Language\ to\ "en_us" :set spl=en_us spell<CR>
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000469 an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
470
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200471 let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100472 func s:SpellLang()
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200473 for cmd in s:undo_spelllang
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000474 exe "silent! " . cmd
475 endfor
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200476 let s:undo_spelllang = []
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000477
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000478 if &enc == "iso-8859-15"
479 let enc = "latin1"
480 else
481 let enc = &enc
482 endif
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000483
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200484 if !exists("g:menutrans_set_lang_to")
Bram Moolenaar214641f2017-03-05 17:04:09 +0100485 let g:menutrans_set_lang_to = 'Set Language to'
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200486 endif
487
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000488 let found = 0
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100489 let s = globpath(&runtimepath, "spell/*." . enc . ".spl", 1, 1)
490 if !empty(s)
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000491 let n = 300
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100492 for f in s
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000493 let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000494 if nm != "en" && nm !~ '/'
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200495 let _nm = nm
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000496 let found += 1
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200497 let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"'
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000498 exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200499 let s:undo_spelllang += ['aun ' . menuname]
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000500 endif
501 let n += 10
502 endfor
503 endif
504 if found == 0
505 echomsg "Could not find other spell files"
506 elseif found == 1
Bram Moolenaarf3408e72012-10-21 01:21:59 +0200507 echomsg "Found spell file " . _nm
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000508 else
509 echomsg "Found " . found . " more spell files"
510 endif
Bram Moolenaar5a8684e2005-07-30 22:43:24 +0000511 " Need to redo this when 'encoding' is changed.
512 augroup spellmenu
513 au! EncodingChanged * call <SID>SpellLang()
514 augroup END
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000515 endfun
516
517endif
518
Bram Moolenaar071d4272004-06-13 20:20:40 +0000519" Tools.Fold Menu
520if has("folding")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000521 " open close folds
Bram Moolenaar214641f2017-03-05 17:04:09 +0100522 an 40.340.110 &Tools.&Folding.&Enable/Disable\ Folds<Tab>zi zi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000523 an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv zv
Bram Moolenaar214641f2017-03-05 17:04:09 +0100524 an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx zMzx
525 inoremenu 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ Only<Tab>zMzx <C-O>zM<C-O>zx
526 an 40.340.130 &Tools.&Folding.C&lose\ More\ Folds<Tab>zm zm
527 an 40.340.140 &Tools.&Folding.&Close\ All\ Folds<Tab>zM zM
528 an 40.340.150 &Tools.&Folding.O&pen\ More\ Folds<Tab>zr zr
Bram Moolenaar3df01732017-02-17 22:47:16 +0100529 an 40.340.160 &Tools.&Folding.&Open\ All\ Folds<Tab>zR zR
Bram Moolenaar071d4272004-06-13 20:20:40 +0000530 " fold method
531 an 40.340.200 &Tools.&Folding.-SEP1- <Nop>
532 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual :set fdm=manual<CR>
533 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent :set fdm=indent<CR>
534 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
535 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax :set fdm=syntax<CR>
536 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff :set fdm=diff<CR>
537 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker :set fdm=marker<CR>
538 " create and delete folds
539 vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf zf
540 an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd zd
541 an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD zD
542 " moving around in folds
543 an 40.340.300 &Tools.&Folding.-SEP2- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100544 an 40.340.310.10 &Tools.&Folding.Fold\ Col&umn\ Width.\ &0\ :set fdc=0<CR>
545 an 40.340.310.20 &Tools.&Folding.Fold\ Col&umn\ Width.\ &2\ :set fdc=2<CR>
546 an 40.340.310.30 &Tools.&Folding.Fold\ Col&umn\ Width.\ &3\ :set fdc=3<CR>
547 an 40.340.310.40 &Tools.&Folding.Fold\ Col&umn\ Width.\ &4\ :set fdc=4<CR>
548 an 40.340.310.50 &Tools.&Folding.Fold\ Col&umn\ Width.\ &5\ :set fdc=5<CR>
549 an 40.340.310.60 &Tools.&Folding.Fold\ Col&umn\ Width.\ &6\ :set fdc=6<CR>
550 an 40.340.310.70 &Tools.&Folding.Fold\ Col&umn\ Width.\ &7\ :set fdc=7<CR>
551 an 40.340.310.80 &Tools.&Folding.Fold\ Col&umn\ Width.\ &8\ :set fdc=8<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000552endif " has folding
553
554if has("diff")
555 an 40.350.100 &Tools.&Diff.&Update :diffupdate<CR>
556 an 40.350.110 &Tools.&Diff.&Get\ Block :diffget<CR>
557 vunmenu &Tools.&Diff.&Get\ Block
558 vnoremenu &Tools.&Diff.&Get\ Block :diffget<CR>
559 an 40.350.120 &Tools.&Diff.&Put\ Block :diffput<CR>
560 vunmenu &Tools.&Diff.&Put\ Block
561 vnoremenu &Tools.&Diff.&Put\ Block :diffput<CR>
562endif
563
564an 40.358 &Tools.-SEP2- <Nop>
565an 40.360 &Tools.&Make<Tab>:make :make<CR>
566an 40.370 &Tools.&List\ Errors<Tab>:cl :cl<CR>
567an 40.380 &Tools.L&ist\ Messages<Tab>:cl! :cl!<CR>
568an 40.390 &Tools.&Next\ Error<Tab>:cn :cn<CR>
569an 40.400 &Tools.&Previous\ Error<Tab>:cp :cp<CR>
570an 40.410 &Tools.&Older\ List<Tab>:cold :colder<CR>
571an 40.420 &Tools.N&ewer\ List<Tab>:cnew :cnewer<CR>
572an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin :cwin<CR>
573an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen :copen<CR>
574an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose :cclose<CR>
575
576an 40.520 &Tools.-SEP3- <Nop>
577an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
578 \ :call <SID>XxdConv()<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +0100579an <silent> 40.540 &Tools.Conve&rt\ Back<Tab>:%!xxd\ -r
Bram Moolenaar071d4272004-06-13 20:20:40 +0000580 \ :call <SID>XxdBack()<CR>
581
582" Use a function to do the conversion, so that it also works with 'insertmode'
583" set.
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100584func s:XxdConv()
Bram Moolenaar071d4272004-06-13 20:20:40 +0000585 let mod = &mod
586 if has("vms")
587 %!mc vim:xxd
588 else
589 call s:XxdFind()
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100590 exe '%!' . g:xxdprogram
Bram Moolenaar071d4272004-06-13 20:20:40 +0000591 endif
592 if getline(1) =~ "^0000000:" " only if it worked
593 set ft=xxd
594 endif
595 let &mod = mod
596endfun
597
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100598func s:XxdBack()
Bram Moolenaar071d4272004-06-13 20:20:40 +0000599 let mod = &mod
600 if has("vms")
601 %!mc vim:xxd -r
602 else
603 call s:XxdFind()
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100604 exe '%!' . g:xxdprogram . ' -r'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000605 endif
606 set ft=
607 doautocmd filetypedetect BufReadPost
608 let &mod = mod
609endfun
610
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100611func s:XxdFind()
Bram Moolenaar071d4272004-06-13 20:20:40 +0000612 if !exists("g:xxdprogram")
613 " On the PC xxd may not be in the path but in the install directory
Bram Moolenaar42ebd062016-07-17 13:35:14 +0200614 if has("win32") && !executable("xxd")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000615 let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
Bram Moolenaar5ef1c6a2019-11-10 22:09:11 +0100616 if g:xxdprogram =~ ' '
617 let g:xxdprogram = '"' .. g:xxdprogram .. '"'
618 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000619 else
620 let g:xxdprogram = "xxd"
621 endif
622 endif
623endfun
624
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100625let s:did_setup_compilers = 0
626
Bram Moolenaar071d4272004-06-13 20:20:40 +0000627" Setup the Tools.Compiler submenu
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100628func s:SetupCompilers() abort
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100629 if s:did_setup_compilers
630 return
Bram Moolenaar071d4272004-06-13 20:20:40 +0000631 endif
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100632 let s:did_setup_compilers = 1
633
634 let n = globpath(&runtimepath, "compiler/*.vim", 1, 1)
635 let idx = 100
636 for name in n
637 " Ignore case for VMS and windows
638 let name = substitute(name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
639 exe "an 30.440." . idx . ' &Tools.Se&t\ Compiler.' . name . " :compiler " . name . "<CR>"
640 let idx = idx + 10
641 endfor
642 silent! aunmenu &Tools.Show\ Compiler\ Se&ttings\ in\ Menu
643endfun
644if exists("do_no_lazyload_menus")
645 call s:SetupCompilers()
646else
647 an <silent> 30.440 &Tools.Show\ Compiler\ Se&ttings\ in\ Menu :call <SID>SetupCompilers()<CR>
648endif
649
650" Load ColorScheme, Compiler Setting and Keymap menus when idle.
651if !exists("do_no_lazyload_menus")
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100652 func s:SetupLazyloadMenus()
Bram Moolenaar040c1fe2017-11-09 19:45:48 +0100653 call s:SetupColorSchemes()
654 call s:SetupCompilers()
655 if has("keymap")
656 call s:SetupKeymaps()
657 endif
658 endfunc
659 augroup SetupLazyloadMenus
660 au!
661 au CursorHold,CursorHoldI * call <SID>SetupLazyloadMenus() | au! SetupLazyloadMenus
662 augroup END
663endif
664
Bram Moolenaar071d4272004-06-13 20:20:40 +0000665
666if !exists("no_buffers_menu")
667
668" Buffer list menu -- Setup functions & actions
669
670" wait with building the menu until after loading 'session' files. Makes
671" startup faster.
672let s:bmenu_wait = 1
673
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100674" Dictionary of buffer number to name. This helps prevent problems where a
675" buffer as renamed and we didn't keep track of that.
676let s:bmenu_items = {}
677
Bram Moolenaar071d4272004-06-13 20:20:40 +0000678if !exists("bmenu_priority")
679 let bmenu_priority = 60
680endif
681
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100682" invoked from a BufCreate or BufFilePost autocommand
683func s:BMAdd()
Bram Moolenaar071d4272004-06-13 20:20:40 +0000684 if s:bmenu_wait == 0
685 " when adding too many buffers, redraw in short format
686 if s:bmenu_count == &menuitems && s:bmenu_short == 0
687 call s:BMShow()
688 else
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100689 let name = expand("<afile>")
Bram Moolenaar5908fdf2020-03-29 20:08:45 +0200690 let num = expand("<abuf>") + 0 " add zero to convert to a number type
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100691 if s:BMCanAdd(name, num)
692 call <SID>BMFilename(name, num)
693 let s:bmenu_count += 1
694 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000695 endif
696 endif
697endfunc
698
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100699" invoked from a BufDelete or BufFilePre autocommand
700func s:BMRemove()
Bram Moolenaar071d4272004-06-13 20:20:40 +0000701 if s:bmenu_wait == 0
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100702 let bufnum = expand("<abuf>")
703 if s:bmenu_items->has_key(bufnum)
704 let menu_name = s:bmenu_items[bufnum]
705 exe 'silent! aun &Buffers.' . menu_name
706 let s:bmenu_count = s:bmenu_count - 1
707 unlet s:bmenu_items[bufnum]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000708 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000709 endif
710endfunc
711
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100712" Return non-zero if buffer with number "name" / "num" is useful to add in the
713" buffer menu.
714func s:BMCanAdd(name, num)
715 " no directory or unlisted buffer
716 if isdirectory(a:name) || !buflisted(a:num)
717 return 0
718 endif
719
720 " no special buffer, such as terminal or popup
721 let buftype = getbufvar(a:num, '&buftype')
722 if buftype != '' && buftype != 'nofile' && buftype != 'nowrite'
723 return 0
724 endif
725
726 " only existing buffers
727 return bufexists(a:num)
728endfunc
729
Bram Moolenaar071d4272004-06-13 20:20:40 +0000730" Create the buffer menu (delete an existing one first).
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100731func s:BMShow(...)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000732 let s:bmenu_wait = 1
733 let s:bmenu_short = 1
734 let s:bmenu_count = 0
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100735 let s:bmenu_items = {}
Bram Moolenaar071d4272004-06-13 20:20:40 +0000736 "
737 " get new priority, if exists
738 if a:0 == 1
739 let g:bmenu_priority = a:1
740 endif
741
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100742 " Remove old menu, if it exists; keep one entry to avoid a torn off menu to
Bram Moolenaare24c5b32019-12-10 22:11:53 +0100743 " disappear. Use try/catch to avoid setting v:errmsg
744 try | unmenu &Buffers | catch | endtry
Bram Moolenaar071d4272004-06-13 20:20:40 +0000745 exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
Bram Moolenaare24c5b32019-12-10 22:11:53 +0100746 try | unmenu! &Buffers | catch | endtry
Bram Moolenaar071d4272004-06-13 20:20:40 +0000747
748 " create new menu; set 'cpo' to include the <CR>
749 let cpo_save = &cpo
750 set cpo&vim
751 exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
752 exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
753 exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
754 exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
755 exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
756 exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
757 let &cpo = cpo_save
758 unmenu &Buffers.Dummy
759
760 " figure out how many buffers there are
761 let buf = 1
762 while buf <= bufnr('$')
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100763 if s:BMCanAdd(bufname(buf), buf)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000764 let s:bmenu_count = s:bmenu_count + 1
765 endif
766 let buf = buf + 1
767 endwhile
768 if s:bmenu_count <= &menuitems
769 let s:bmenu_short = 0
770 endif
771
772 " iterate through buffer list, adding each buffer to the menu:
773 let buf = 1
774 while buf <= bufnr('$')
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100775 let name = bufname(buf)
776 if s:BMCanAdd(name, buf)
777 call <SID>BMFilename(name, buf)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000778 endif
779 let buf = buf + 1
780 endwhile
781 let s:bmenu_wait = 0
782 aug buffer_list
783 au!
784 au BufCreate,BufFilePost * call <SID>BMAdd()
785 au BufDelete,BufFilePre * call <SID>BMRemove()
786 aug END
787endfunc
788
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100789func s:BMHash(name)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000790 " Make name all upper case, so that chars are between 32 and 96
791 let nm = substitute(a:name, ".*", '\U\0', "")
792 if has("ebcdic")
793 " HACK: Replace all non alphabetics with 'Z'
794 " Just to make it work for now.
795 let nm = substitute(nm, "[^A-Z]", 'Z', "g")
796 let sp = char2nr('A') - 1
797 else
798 let sp = char2nr(' ')
799 endif
800 " convert first six chars into a number for sorting:
801 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)
802endfunc
803
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100804func s:BMHash2(name)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000805 let nm = substitute(a:name, ".", '\L\0', "")
806 " Not exactly right for EBCDIC...
807 if nm[0] < 'a' || nm[0] > 'z'
808 return '&others.'
809 elseif nm[0] <= 'd'
810 return '&abcd.'
811 elseif nm[0] <= 'h'
812 return '&efgh.'
813 elseif nm[0] <= 'l'
814 return '&ijkl.'
815 elseif nm[0] <= 'p'
816 return '&mnop.'
817 elseif nm[0] <= 't'
818 return '&qrst.'
819 else
820 return '&u-z.'
821 endif
822endfunc
823
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100824" Insert a buffer name into the buffer menu.
825func s:BMFilename(name, num)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000826 let munge = <SID>BMMunge(a:name, a:num)
827 let hash = <SID>BMHash(munge)
828 if s:bmenu_short == 0
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100829 let s:bmenu_items[a:num] = munge
830 let cmd = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
Bram Moolenaar071d4272004-06-13 20:20:40 +0000831 else
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100832 let menu_name = <SID>BMHash2(munge) . munge
833 let s:bmenu_items[a:num] = menu_name
834 let cmd = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . menu_name
Bram Moolenaar071d4272004-06-13 20:20:40 +0000835 endif
836 " set 'cpo' to include the <CR>
837 let cpo_save = &cpo
838 set cpo&vim
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100839 exe cmd . ' :confirm b' . a:num . '<CR>'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000840 let &cpo = cpo_save
841endfunc
842
843" Truncate a long path to fit it in a menu item.
844if !exists("g:bmenu_max_pathlen")
845 let g:bmenu_max_pathlen = 35
846endif
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100847func s:BMTruncName(fname)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000848 let name = a:fname
849 if g:bmenu_max_pathlen < 5
850 let name = ""
851 else
852 let len = strlen(name)
853 if len > g:bmenu_max_pathlen
854 let amountl = (g:bmenu_max_pathlen / 2) - 2
855 let amountr = g:bmenu_max_pathlen - amountl - 3
856 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
857 let left = substitute(name, pattern, '\1', '')
858 let right = substitute(name, pattern, '\2', '')
859 if strlen(left) + strlen(right) < len
860 let name = left . '...' . right
861 endif
862 endif
863 endif
864 return name
865endfunc
866
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100867func s:BMMunge(fname, bnum)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000868 let name = a:fname
869 if name == ''
870 if !exists("g:menutrans_no_file")
Bram Moolenaar6dc819b2018-07-03 16:42:19 +0200871 let g:menutrans_no_file = "[No Name]"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000872 endif
873 let name = g:menutrans_no_file
874 else
875 let name = fnamemodify(name, ':p:~')
876 endif
877 " detach file name and separate it out:
878 let name2 = fnamemodify(name, ':t')
879 if a:bnum >= 0
880 let name2 = name2 . ' (' . a:bnum . ')'
881 endif
882 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
883 let name = escape(name, "\\. \t|")
884 let name = substitute(name, "&", "&&", "g")
885 let name = substitute(name, "\n", "^@", "g")
886 return name
887endfunc
888
889" When just starting Vim, load the buffer menu later
890if has("vim_starting")
891 augroup LoadBufferMenu
892 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
893 au VimEnter * au! LoadBufferMenu
894 augroup END
895else
896 call <SID>BMShow()
897endif
898
899endif " !exists("no_buffers_menu")
900
901" Window menu
902an 70.300 &Window.&New<Tab>^Wn <C-W>n
903an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
904an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
905an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
Bram Moolenaar314dd792019-02-03 15:27:20 +0100906an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
907if !exists("*MenuExplOpen")
908 fun MenuExplOpen()
909 if @% == ""
910 20vsp .
911 else
912 exe "20vsp " . s:FnameEscape(expand("%:p:h"))
913 endif
914 endfun
Bram Moolenaar071d4272004-06-13 20:20:40 +0000915endif
916an 70.335 &Window.-SEP1- <Nop>
917an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
918an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR>
919an 70.350 &Window.-SEP2- <Nop>
920an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K
921an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J
Bram Moolenaar214641f2017-03-05 17:04:09 +0100922an 70.355 &Window.Move\ &To.&Left\ Side<Tab>^WH <C-W>H
923an 70.355 &Window.Move\ &To.&Right\ Side<Tab>^WL <C-W>L
Bram Moolenaar071d4272004-06-13 20:20:40 +0000924an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R
925an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r
926an 70.365 &Window.-SEP3- <Nop>
927an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>=
928an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_
929an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_
930an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\|
931an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\|
932
933" The popup menu
934an 1.10 PopUp.&Undo u
935an 1.15 PopUp.-SEP1- <Nop>
936vnoremenu 1.20 PopUp.Cu&t "+x
937vnoremenu 1.30 PopUp.&Copy "+y
938cnoremenu 1.30 PopUp.&Copy <C-Y>
939nnoremenu 1.40 PopUp.&Paste "+gP
940cnoremenu 1.40 PopUp.&Paste <C-R>+
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +0000941exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['v']
942exe 'inoremenu <script> 1.40 PopUp.&Paste ' . paste#paste_cmd['i']
Bram Moolenaar071d4272004-06-13 20:20:40 +0000943vnoremenu 1.50 PopUp.&Delete x
944an 1.55 PopUp.-SEP2- <Nop>
945vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000946
947nnoremenu 1.70 PopUp.Select\ &Word vaw
948onoremenu 1.70 PopUp.Select\ &Word aw
949vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
950inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw
951cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
952
953nnoremenu 1.73 PopUp.Select\ &Sentence vas
954onoremenu 1.73 PopUp.Select\ &Sentence as
955vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
956inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas
957cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
958
959nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap
960onoremenu 1.77 PopUp.Select\ Pa&ragraph ap
961vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
962inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap
963cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
964
965nnoremenu 1.80 PopUp.Select\ &Line V
966onoremenu 1.80 PopUp.Select\ &Line <C-C>V
967vnoremenu 1.80 PopUp.Select\ &Line <C-C>V
968inoremenu 1.80 PopUp.Select\ &Line <C-O>V
969cnoremenu 1.80 PopUp.Select\ &Line <C-C>V
970
971nnoremenu 1.90 PopUp.Select\ &Block <C-V>
972onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
973vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
974inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V>
975cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
976
Bram Moolenaar071d4272004-06-13 20:20:40 +0000977noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR>
978inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR>
979cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR>
980
Bram Moolenaar45360022005-07-21 21:08:21 +0000981if has("spell")
982 " Spell suggestions in the popup menu. Note that this will slow down the
983 " appearance of the menu!
Bram Moolenaar5e94a292020-03-19 18:46:57 +0100984 func s:SpellPopup()
Bram Moolenaar45360022005-07-21 21:08:21 +0000985 if exists("s:changeitem") && s:changeitem != ''
986 call <SID>SpellDel()
987 endif
Bram Moolenaarb38dea22006-09-14 11:35:25 +0000988
989 " Return quickly if spell checking is not enabled.
Bram Moolenaard8c00872005-07-22 21:52:15 +0000990 if !&spell || &spelllang == ''
991 return
992 endif
Bram Moolenaar45360022005-07-21 21:08:21 +0000993
994 let curcol = col('.')
Bram Moolenaar1c7715d2005-10-03 22:02:18 +0000995 let [w, a] = spellbadword()
Bram Moolenaar45360022005-07-21 21:08:21 +0000996 if col('.') > curcol " don't use word after the cursor
997 let w = ''
Bram Moolenaar45360022005-07-21 21:08:21 +0000998 endif
999 if w != ''
Bram Moolenaara93fa7e2006-04-17 22:14:47 +00001000 if a == 'caps'
1001 let s:suglist = [substitute(w, '.*', '\u&', '')]
1002 else
1003 let s:suglist = spellsuggest(w, 10)
1004 endif
Bram Moolenaar62292582010-07-10 16:36:59 +02001005 if len(s:suglist) > 0
Bram Moolenaar7c63fbc2018-05-17 13:15:23 +02001006 if !exists("g:menutrans_spell_change_ARG_to")
1007 let g:menutrans_spell_change_ARG_to = 'Change\ "%s"\ to'
1008 endif
1009 let s:changeitem = printf(g:menutrans_spell_change_ARG_to, escape(w, ' .'))
Bram Moolenaar45360022005-07-21 21:08:21 +00001010 let s:fromword = w
1011 let pri = 1
Bram Moolenaar62292582010-07-10 16:36:59 +02001012 " set 'cpo' to include the <CR>
1013 let cpo_save = &cpo
1014 set cpo&vim
Bram Moolenaar45360022005-07-21 21:08:21 +00001015 for sug in s:suglist
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001016 exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
Bram Moolenaar45360022005-07-21 21:08:21 +00001017 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
1018 let pri += 1
1019 endfor
1020
Bram Moolenaar7c63fbc2018-05-17 13:15:23 +02001021 if !exists("g:menutrans_spell_add_ARG_to_word_list")
1022 let g:menutrans_spell_add_ARG_to_word_list = 'Add\ "%s"\ to\ Word\ List'
1023 endif
1024 let s:additem = printf(g:menutrans_spell_add_ARG_to_word_list, escape(w, ' .'))
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001025 exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
Bram Moolenaar45360022005-07-21 21:08:21 +00001026
Bram Moolenaar7c63fbc2018-05-17 13:15:23 +02001027 if !exists("g:menutrans_spell_ignore_ARG")
1028 let g:menutrans_spell_ignore_ARG = 'Ignore\ "%s"'
1029 endif
1030 let s:ignoreitem = printf(g:menutrans_spell_ignore_ARG, escape(w, ' .'))
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001031 exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
Bram Moolenaar45360022005-07-21 21:08:21 +00001032
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001033 anoremenu 1.8 PopUp.-SpellSep- :
Bram Moolenaar62292582010-07-10 16:36:59 +02001034 let &cpo = cpo_save
Bram Moolenaar45360022005-07-21 21:08:21 +00001035 endif
1036 endif
Bram Moolenaar62292582010-07-10 16:36:59 +02001037 call cursor(0, curcol) " put the cursor back where it was
Bram Moolenaar45360022005-07-21 21:08:21 +00001038 endfunc
1039
Bram Moolenaar5e94a292020-03-19 18:46:57 +01001040 func s:SpellReplace(n)
Bram Moolenaar45360022005-07-21 21:08:21 +00001041 let l = getline('.')
Bram Moolenaar62292582010-07-10 16:36:59 +02001042 " Move the cursor to the start of the word.
1043 call spellbadword()
Bram Moolenaar45360022005-07-21 21:08:21 +00001044 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
1045 \ . strpart(l, col('.') + len(s:fromword) - 1))
1046 endfunc
1047
Bram Moolenaar5e94a292020-03-19 18:46:57 +01001048 func s:SpellDel()
Bram Moolenaar45360022005-07-21 21:08:21 +00001049 exe "aunmenu PopUp." . s:changeitem
1050 exe "aunmenu PopUp." . s:additem
1051 exe "aunmenu PopUp." . s:ignoreitem
1052 aunmenu PopUp.-SpellSep-
1053 let s:changeitem = ''
1054 endfun
1055
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001056 augroup SpellPopupMenu
1057 au! MenuPopup * call <SID>SpellPopup()
1058 augroup END
Bram Moolenaar45360022005-07-21 21:08:21 +00001059endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001060
1061" The GUI toolbar (for MS-Windows and GTK)
1062if has("toolbar")
1063 an 1.10 ToolBar.Open :browse confirm e<CR>
1064 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
1065 an 1.30 ToolBar.SaveAll :browse confirm wa<CR>
1066
1067 if has("printer")
1068 an 1.40 ToolBar.Print :hardcopy<CR>
1069 vunmenu ToolBar.Print
1070 vnoremenu ToolBar.Print :hardcopy<CR>
1071 elseif has("unix")
1072 an 1.40 ToolBar.Print :w !lpr<CR>
1073 vunmenu ToolBar.Print
1074 vnoremenu ToolBar.Print :w !lpr<CR>
1075 endif
1076
1077 an 1.45 ToolBar.-sep1- <Nop>
1078 an 1.50 ToolBar.Undo u
1079 an 1.60 ToolBar.Redo <C-R>
1080
1081 an 1.65 ToolBar.-sep2- <Nop>
1082 vnoremenu 1.70 ToolBar.Cut "+x
1083 vnoremenu 1.80 ToolBar.Copy "+y
1084 cnoremenu 1.80 ToolBar.Copy <C-Y>
1085 nnoremenu 1.90 ToolBar.Paste "+gP
1086 cnoremenu ToolBar.Paste <C-R>+
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +00001087 exe 'vnoremenu <script> ToolBar.Paste ' . paste#paste_cmd['v']
1088 exe 'inoremenu <script> ToolBar.Paste ' . paste#paste_cmd['i']
Bram Moolenaar071d4272004-06-13 20:20:40 +00001089
1090 if !has("gui_athena")
1091 an 1.95 ToolBar.-sep3- <Nop>
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001092 an 1.100 ToolBar.Replace :promptrepl<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001093 vunmenu ToolBar.Replace
Bram Moolenaar4ea8fe12006-03-09 22:32:39 +00001094 vnoremenu ToolBar.Replace y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001095 an 1.110 ToolBar.FindNext n
1096 an 1.120 ToolBar.FindPrev N
Bram Moolenaar071d4272004-06-13 20:20:40 +00001097 endif
1098
Bram Moolenaar071d4272004-06-13 20:20:40 +00001099 an 1.215 ToolBar.-sep5- <Nop>
1100 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR>
1101 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR>
1102 an 1.240 ToolBar.RunScript :browse so<CR>
1103
1104 an 1.245 ToolBar.-sep6- <Nop>
1105 an 1.250 ToolBar.Make :make<CR>
1106 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
1107 an 1.280 ToolBar.TagJump g<C-]>
1108
1109 an 1.295 ToolBar.-sep7- <Nop>
1110 an 1.300 ToolBar.Help :help<CR>
1111 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR>
1112
1113" Only set the tooltips here if not done in a language menu file
1114if exists("*Do_toolbar_tmenu")
1115 call Do_toolbar_tmenu()
1116else
1117 let did_toolbar_tmenu = 1
1118 tmenu ToolBar.Open Open file
1119 tmenu ToolBar.Save Save current file
1120 tmenu ToolBar.SaveAll Save all files
1121 tmenu ToolBar.Print Print
1122 tmenu ToolBar.Undo Undo
1123 tmenu ToolBar.Redo Redo
1124 tmenu ToolBar.Cut Cut to clipboard
1125 tmenu ToolBar.Copy Copy to clipboard
1126 tmenu ToolBar.Paste Paste from Clipboard
1127 if !has("gui_athena")
Bram Moolenaar5c736222010-01-06 20:54:52 +01001128 tmenu ToolBar.Replace Find / Replace...
Bram Moolenaar071d4272004-06-13 20:20:40 +00001129 tmenu ToolBar.FindNext Find Next
1130 tmenu ToolBar.FindPrev Find Previous
Bram Moolenaar071d4272004-06-13 20:20:40 +00001131 endif
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001132 tmenu ToolBar.LoadSesn Choose a session to load
Bram Moolenaar071d4272004-06-13 20:20:40 +00001133 tmenu ToolBar.SaveSesn Save current session
Bram Moolenaarb38dea22006-09-14 11:35:25 +00001134 tmenu ToolBar.RunScript Choose a Vim Script to run
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001135 tmenu ToolBar.Make Make current project (:make)
1136 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001137 tmenu ToolBar.TagJump Jump to tag under cursor
1138 tmenu ToolBar.Help Vim Help
1139 tmenu ToolBar.FindHelp Search Vim Help
1140endif
1141
1142" Select a session to load; default to current session name if present
1143fun! s:LoadVimSesn()
1144 if strlen(v:this_session) > 0
Bram Moolenaaraba88572008-06-25 20:13:35 +00001145 let name = s:FnameEscape(v:this_session)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001146 else
1147 let name = "Session.vim"
1148 endif
1149 execute "browse so " . name
1150endfun
1151
1152" Select a session to save; default to current session name if present
1153fun! s:SaveVimSesn()
1154 if strlen(v:this_session) == 0
1155 let v:this_session = "Session.vim"
1156 endif
Bram Moolenaaraba88572008-06-25 20:13:35 +00001157 execute "browse mksession! " . s:FnameEscape(v:this_session)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001158endfun
1159
1160endif
1161
1162endif " !exists("did_install_default_menus")
1163
1164" Define these items always, so that syntax can be switched on when it wasn't.
1165" But skip them when the Syntax menu was disabled by the user.
1166if !exists("did_install_syntax_menu")
1167 an 50.212 &Syntax.&Manual :syn manual<CR>
1168 an 50.214 &Syntax.A&utomatic :syn on<CR>
Bram Moolenaar214641f2017-03-05 17:04:09 +01001169 an <silent> 50.216 &Syntax.On/Off\ for\ &This\ File :call <SID>SynOnOff()<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001170 if !exists("*s:SynOnOff")
1171 fun s:SynOnOff()
1172 if has("syntax_items")
1173 syn clear
1174 else
1175 if !exists("g:syntax_on")
1176 syn manual
1177 endif
1178 set syn=ON
1179 endif
1180 endfun
1181 endif
1182endif
1183
1184
1185" Install the Syntax menu only when filetype.vim has been loaded or when
1186" manual syntax highlighting is enabled.
1187" Avoid installing the Syntax menu twice.
1188if (exists("did_load_filetypes") || exists("syntax_on"))
1189 \ && !exists("did_install_syntax_menu")
1190 let did_install_syntax_menu = 1
1191
1192" Skip setting up the individual syntax selection menus unless
1193" do_syntax_sel_menu is defined (it takes quite a bit of time).
1194if exists("do_syntax_sel_menu")
1195 runtime! synmenu.vim
1196else
Bram Moolenaar040c1fe2017-11-09 19:45:48 +01001197 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>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001198 an 50.195 &Syntax.-SEP1- <Nop>
1199endif
1200
1201an 50.210 &Syntax.&Off :syn off<CR>
1202an 50.700 &Syntax.-SEP3- <Nop>
Bram Moolenaar214641f2017-03-05 17:04:09 +01001203an 50.710 &Syntax.Co&lor\ Test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
1204an 50.720 &Syntax.&Highlight\ Test :runtime syntax/hitest.vim<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +00001205an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
1206
1207endif " !exists("did_install_syntax_menu")
1208
Bram Moolenaar071d4272004-06-13 20:20:40 +00001209" Restore the previous value of 'cpoptions'.
1210let &cpo = s:cpo_save
1211unlet s:cpo_save
1212
1213" vim: set sw=2 :