blob: 37bd11ac26015794165d5e1b1dbcdc9efb3d35d3 [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 Moolenaard8c00872005-07-22 21:52:15 +00005" Last Change: 2005 Jul 22
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"
32 if strlen(s:lang) > 1
33 " When the language does not include the charset add 'encoding'
34 if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
35 let s:lang = s:lang . '.' . &enc
36 endif
37
38 " We always use a lowercase name.
39 " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
40 " systems appear to use this.
41 " Change spaces to underscores.
42 let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
43 let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
44 let s:lang = substitute(s:lang, " ", "_", "g")
45 " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
46 let s:lang = substitute(s:lang, "@euro", "", "")
47 " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
48 " same menu file for them.
49 let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
50 menutrans clear
51 exe "runtime! lang/menu_" . s:lang . ".vim"
52
53 if !exists("did_menu_trans")
54 " There is no exact match, try matching with a wildcard added
55 " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
56 let s:lang = substitute(s:lang, '\.[^.]*', "", "")
Bram Moolenaar05159a02005-02-26 23:04:13 +000057 exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
Bram Moolenaar071d4272004-06-13 20:20:40 +000058
Bram Moolenaare2cc9702005-03-15 22:43:58 +000059 if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
Bram Moolenaar071d4272004-06-13 20:20:40 +000060 " On windows locale names are complicated, try using $LANG, it might
Bram Moolenaare2cc9702005-03-15 22:43:58 +000061 " have been set by set_init_1(). But don't do this for "en" or "en_us".
Bram Moolenaar2ce06f62005-01-31 19:19:04 +000062 " But don't match "slovak" when $LANG is "sl".
63 exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
Bram Moolenaar071d4272004-06-13 20:20:40 +000064 endif
65 endif
66 endif
67endif
68
69
70" Help menu
71an 9999.10 &Help.&Overview<Tab><F1> :help<CR>
72an 9999.20 &Help.&User\ Manual :help usr_toc<CR>
73an 9999.30 &Help.&How-to\ links :help how-to<CR>
74an <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR>
75an 9999.45 &Help.-sep1- <Nop>
76an 9999.50 &Help.&Credits :help credits<CR>
77an 9999.60 &Help.Co&pying :help copying<CR>
78an 9999.70 &Help.&Sponsor/Register :help sponsor<CR>
79an 9999.70 &Help.O&rphans :help kcc<CR>
80an 9999.75 &Help.-sep2- <Nop>
81an 9999.80 &Help.&Version :version<CR>
82an 9999.90 &Help.&About :intro<CR>
83
84fun! s:Helpfind()
85 if !exists("g:menutrans_help_dialog")
86 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')"
87 endif
88 let h = inputdialog(g:menutrans_help_dialog)
89 if h != ""
90 let v:errmsg = ""
91 silent! exe "help " . h
92 if v:errmsg != ""
93 echo v:errmsg
94 endif
95 endif
96endfun
97
98" File menu
99an 10.310 &File.&Open\.\.\.<Tab>:e :browse confirm e<CR>
100an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp :browse sp<CR>
101an 10.325 &File.&New<Tab>:enew :confirm enew<CR>
102an <silent> 10.330 &File.&Close<Tab>:close
103 \ :if winheight(2) < 0 <Bar>
104 \ confirm enew <Bar>
105 \ else <Bar>
106 \ confirm close <Bar>
107 \ endif<CR>
108an 10.335 &File.-SEP1- <Nop>
109an <silent> 10.340 &File.&Save<Tab>:w :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
110an 10.350 &File.Save\ &As\.\.\.<Tab>:sav :browse confirm saveas<CR>
111
112if has("diff")
113 an 10.400 &File.-SEP2- <Nop>
114 an 10.410 &File.Split\ &Diff\ with\.\.\. :browse vert diffsplit<CR>
115 an 10.420 &File.Split\ Patched\ &By\.\.\. :browse vert diffpatch<CR>
116endif
117
118if has("printer")
119 an 10.500 &File.-SEP3- <Nop>
120 an 10.510 &File.&Print :hardcopy<CR>
121 vunmenu &File.&Print
122 vnoremenu &File.&Print :hardcopy<CR>
123elseif has("unix")
124 an 10.500 &File.-SEP3- <Nop>
125 an 10.510 &File.&Print :w !lpr<CR>
126 vunmenu &File.&Print
127 vnoremenu &File.&Print :w !lpr<CR>
128endif
129an 10.600 &File.-SEP4- <Nop>
130an 10.610 &File.Sa&ve-Exit<Tab>:wqa :confirm wqa<CR>
131an 10.620 &File.E&xit<Tab>:qa :confirm qa<CR>
132
133" Pasting blockwise and linewise selections is not possible in Insert and
134" Visual mode without the +virtualedit feature. They are pasted as if they
135" were characterwise instead. Add to that some tricks to leave the cursor in
136" the right position, also for "gi".
137" Note: the same stuff appears in mswin.vim.
138if has("virtualedit")
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000139 let s:paste_cmd = ":call <SID>Paste()<CR>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000140 func! <SID>Paste()
141 let ove = &ve
142 set ve=all
143 normal `^
144 if @+ != ''
145 normal "+gP
146 endif
147 let c = col(".")
148 normal i
149 if col(".") < c " compensate for i<ESC> moving the cursor left
150 normal l
151 endif
152 let &ve = ove
153 endfunc
154else
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000155 let s:paste_cmd = "\"=@+.'xy'<CR>gPFx\"_2x"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000156endif
157
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000158" Define the string to use for items that are present both in Edit, Popup and
159" Toolbar menu.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160if has("virtualedit")
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000161 let s:paste_v_cmd = '"-c<Esc>' . s:paste_cmd
162 let s:paste_i_cmd = '<Esc>' . s:paste_cmd . 'gi'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000163else
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000164 let s:paste_v_cmd = '"-c<Esc>gix<Esc>' . s:paste_cmd . '"_x'
165 let s:paste_i_cmd = 'x<Esc>' . s:paste_cmd . '"_s'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000166endif
167
168func! <SID>SelectAll()
169 exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
170endfunc
171
172
173" Edit menu
174an 20.310 &Edit.&Undo<Tab>u u
175an 20.320 &Edit.&Redo<Tab>^R <C-R>
176an 20.330 &Edit.Rep&eat<Tab>\. .
177
178an 20.335 &Edit.-SEP1- <Nop>
179vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
180vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
181cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
182nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
183cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000184exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP ' . s:paste_v_cmd
185exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP ' . s:paste_i_cmd
Bram Moolenaar071d4272004-06-13 20:20:40 +0000186nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p [p
187inoremenu &Edit.Put\ &Before<Tab>[p <C-O>[p
188nnoremenu 20.380 &Edit.Put\ &After<Tab>]p ]p
189inoremenu &Edit.Put\ &After<Tab>]p <C-O>]p
190if has("win32") || has("win16")
191 vnoremenu 20.390 &Edit.&Delete<Tab>x x
192endif
193noremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG :<C-U>call <SID>SelectAll()<CR>
194inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-O>:call <SID>SelectAll()<CR>
195cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG <C-U>call <SID>SelectAll()<CR>
196
197an 20.405 &Edit.-SEP2- <Nop>
Bram Moolenaar843ee412004-06-30 16:16:41 +0000198if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199 an 20.410 &Edit.&Find\.\.\. :promptfind<CR>
200 vunmenu &Edit.&Find\.\.\.
201 vnoremenu &Edit.&Find\.\.\. y:promptfind <C-R>"<CR>
202 an 20.420 &Edit.Find\ and\ Rep&lace\.\.\. :promptrepl<CR>
203 vunmenu &Edit.Find\ and\ Rep&lace\.\.\.
204 vnoremenu &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>"<CR>
205else
206 an 20.410 &Edit.&Find<Tab>/ /
207 an 20.420 &Edit.Find\ and\ Rep&lace<Tab>:%s :%s/
208 vunmenu &Edit.Find\ and\ Rep&lace<Tab>:%s
209 vnoremenu &Edit.Find\ and\ Rep&lace<Tab>:s :s/
210endif
211
212an 20.425 &Edit.-SEP3- <Nop>
213an 20.430 &Edit.Settings\ &Window :options<CR>
214
215" Edit/Global Settings
216an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls! :set hls! hls?<CR>
217an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignore-case<Tab>:set\ ic! :set ic! ic?<CR>
218an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showmatch<Tab>:set\ sm! :set sm! sm?<CR>
219
220an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 1\ :set so=1<CR>
221an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 2\ :set so=2<CR>
222an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 3\ :set so=3<CR>
223an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 4\ :set so=4<CR>
224an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 5\ :set so=5<CR>
225an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 7\ :set so=7<CR>
226an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 10\ :set so=10<CR>
227an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 100\ :set so=100<CR>
228
229an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
230an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
231an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ mode :set ve=insert<CR>
232an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
233an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
234an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im! :set im!<CR>
235an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatible<Tab>:set\ cp! :set cp!<CR>
236an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\. :call <SID>SearchP()<CR>
237an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\. :call <SID>TagFiles()<CR>
238"
239" GUI options
240an 20.440.300 &Edit.&Global\ Settings.-SEP1- <Nop>
241an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar :call <SID>ToggleGuiOption("T")<CR>
242an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
243an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar :call <SID>ToggleGuiOption("l")<CR>
244an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
245
246fun! s:SearchP()
247 if !exists("g:menutrans_path_dialog")
248 let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
249 endif
250 let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
251 if n != ""
252 let &path = substitute(n, ' ', '\\ ', 'g')
253 endif
254endfun
255
256fun! s:TagFiles()
257 if !exists("g:menutrans_tags_dialog")
258 let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
259 endif
260 let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
261 if n != ""
262 let &tags = substitute(n, ' ', '\\ ', 'g')
263 endif
264endfun
265
266fun! s:ToggleGuiOption(option)
267 " If a:option is already set in guioptions, then we want to remove it
268 if match(&guioptions, "\\C" . a:option) > -1
269 exec "set go-=" . a:option
270 else
271 exec "set go+=" . a:option
272 endif
273endfun
274
275" Edit/File Settings
276
277" Boolean options
278an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu! :set nu! nu?<CR>
279an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list! :set list! list?<CR>
280an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap! :set wrap! wrap?<CR>
281an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr! :set lbr! lbr?<CR>
282an 20.440.160 &Edit.F&ile\ Settings.Toggle\ &expand-tab<Tab>:set\ et! :set et! et?<CR>
283an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &auto-indent<Tab>:set\ ai! :set ai! ai?<CR>
284an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-indenting<Tab>:set\ cin! :set cin! cin?<CR>
285
286" other options
287an 20.440.600 &Edit.F&ile\ Settings.-SEP2- <Nop>
288an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2 :set sw=2 sw?<CR>
289an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3 :set sw=3 sw?<CR>
290an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4 :set sw=4 sw?<CR>
291an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5 :set sw=5 sw?<CR>
292an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6 :set sw=6 sw?<CR>
293an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8 :set sw=8 sw?<CR>
294
295an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2 :set sts=2 sts?<CR>
296an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3 :set sts=3 sts?<CR>
297an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4 :set sts=4 sts?<CR>
298an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5 :set sts=5 sts?<CR>
299an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6 :set sts=6 sts?<CR>
300an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8 :set sts=8 sts?<CR>
301
302an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\. :call <SID>TextWidth()<CR>
303an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\. :call <SID>FileFormat()<CR>
304fun! s:TextWidth()
305 if !exists("g:menutrans_textwidth_dialog")
306 let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
307 endif
308 let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
309 if n != ""
310 " remove leading zeros to avoid it being used as an octal number
311 let &tw = substitute(n, "^0*", "", "")
312 endif
313endfun
314
315fun! s:FileFormat()
316 if !exists("g:menutrans_fileformat_dialog")
317 let g:menutrans_fileformat_dialog = "Select format for writing the file"
318 endif
319 if !exists("g:menutrans_fileformat_choices")
320 let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
321 endif
322 if &ff == "dos"
323 let def = 2
324 elseif &ff == "mac"
325 let def = 3
326 else
327 let def = 1
328 endif
329 let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
330 if n == 1
331 set ff=unix
332 elseif n == 2
333 set ff=dos
334 elseif n == 3
335 set ff=mac
336 endif
337endfun
338
339" Setup the Edit.Color Scheme submenu
340let s:n = globpath(&runtimepath, "colors/*.vim")
341let s:idx = 100
342while strlen(s:n) > 0
343 let s:i = stridx(s:n, "\n")
344 if s:i < 0
345 let s:name = s:n
346 let s:n = ""
347 else
348 let s:name = strpart(s:n, 0, s:i)
349 let s:n = strpart(s:n, s:i + 1, 19999)
350 endif
351 " Ignore case for VMS and windows
352 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
353 exe "an 20.450." . s:idx . ' &Edit.C&olor\ Scheme.' . s:name . " :colors " . s:name . "<CR>"
354 unlet s:name
355 unlet s:i
356 let s:idx = s:idx + 10
357endwhile
358unlet s:n
359unlet s:idx
360
361" Setup the Edit.Keymap submenu
362if has("keymap")
363 let s:n = globpath(&runtimepath, "keymap/*.vim")
364 if s:n != ""
365 let s:idx = 100
366 an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
367 while strlen(s:n) > 0
368 let s:i = stridx(s:n, "\n")
369 if s:i < 0
370 let s:name = s:n
371 let s:n = ""
372 else
373 let s:name = strpart(s:n, 0, s:i)
374 let s:n = strpart(s:n, s:i + 1, 19999)
375 endif
376 " Ignore case for VMS and windows
377 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
378 exe "an 20.460." . s:idx . ' &Edit.&Keymap.' . s:name . " :set keymap=" . s:name . "<CR>"
379 unlet s:name
380 unlet s:i
381 let s:idx = s:idx + 10
382 endwhile
383 unlet s:idx
384 endif
385 unlet s:n
386endif
Bram Moolenaardfccaf02004-12-31 20:56:11 +0000387if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000388 an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
389endif
390
391" Programming menu
392if !exists("g:ctags_command")
393 if has("vms")
394 let g:ctags_command = "mc vim:ctags ."
395 else
396 let g:ctags_command = "ctags -R ."
397 endif
398endif
399
400an 40.300 &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
401vunmenu &Tools.&Jump\ to\ this\ tag<Tab>g^]
402vnoremenu &Tools.&Jump\ to\ this\ tag<Tab>g^] g<C-]>
403an 40.310 &Tools.Jump\ &back<Tab>^T <C-T>
404an 40.320 &Tools.Build\ &Tags\ File :exe "!" . g:ctags_command<CR>
405
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000406if has("folding") || has("spell")
407 an 40.330 &Tools.-SEP1- <Nop>
408endif
409
Bram Moolenaarf3681cc2005-06-08 22:03:13 +0000410" Tools.Spelling Menu
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000411if has("spell")
412 an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On :set spell<CR>
413 an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off :set nospell<CR>
414 an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s ]s
Bram Moolenaardc27ac12005-07-06 22:35:45 +0000415 an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s [s
Bram Moolenaar24bbcfe2005-06-28 23:32:02 +0000416 an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z? z?
417 an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall :spellrepall<CR>
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000418 an 40.335.200 &Tools.&Spelling.-SEP1- <Nop>
419 an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en" :set spl=en spell<CR>
420 an 40.335.220 &Tools.&Spelling.Set\ language\ to\ "en_au" :set spl=en_au spell<CR>
421 an 40.335.230 &Tools.&Spelling.Set\ language\ to\ "en_ca" :set spl=en_ca spell<CR>
422 an 40.335.240 &Tools.&Spelling.Set\ language\ to\ "en_gb" :set spl=en_gb spell<CR>
423 an 40.335.250 &Tools.&Spelling.Set\ language\ to\ "en_nz" :set spl=en_nz spell<CR>
424 an 40.335.260 &Tools.&Spelling.Set\ language\ to\ "en_us" :set spl=en_us spell<CR>
425 an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages :call <SID>SpellLang()<CR>
426
427 func! s:SpellLang()
428 silent! aun &Tools.&Spelling.&Find\ More\ Languages
429 if &enc == "iso-8859-15"
430 let enc = "latin1"
431 else
432 let enc = &enc
433 endif
434 let found = 0
435 let s = globpath(&rtp, "spell/*." . enc . ".spl")
436 if s != ""
437 let n = 300
438 for f in split(s, "\n")
439 let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
440 if nm != "en"
441 exe 'an 40.335.' . n . ' &Tools.&Spelling.Set\ language\ to\ "' . nm . '" :set spl=' . nm . ' spell<CR>'
442 let found += 1
443 endif
444 let n += 10
445 endfor
446 endif
447 if found == 0
448 echomsg "Could not find other spell files"
449 elseif found == 1
450 echomsg "Found spell file " . nm
451 else
452 echomsg "Found " . found . " more spell files"
453 endif
454 endfun
455
456endif
457
Bram Moolenaar071d4272004-06-13 20:20:40 +0000458" Tools.Fold Menu
459if has("folding")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000460 " open close folds
461 an 40.340.110 &Tools.&Folding.&Enable/Disable\ folds<Tab>zi zi
462 an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv zv
463 an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ only<Tab>zMzx zMzx
464 an 40.340.130 &Tools.&Folding.C&lose\ more\ folds<Tab>zm zm
465 an 40.340.140 &Tools.&Folding.&Close\ all\ folds<Tab>zM zM
466 an 40.340.150 &Tools.&Folding.O&pen\ more\ folds<Tab>zr zr
467 an 40.340.160 &Tools.&Folding.&Open\ all\ folds<Tab>zR zR
468 " fold method
469 an 40.340.200 &Tools.&Folding.-SEP1- <Nop>
470 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual :set fdm=manual<CR>
471 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent :set fdm=indent<CR>
472 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
473 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax :set fdm=syntax<CR>
474 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff :set fdm=diff<CR>
475 an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker :set fdm=marker<CR>
476 " create and delete folds
477 vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf zf
478 an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd zd
479 an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD zD
480 " moving around in folds
481 an 40.340.300 &Tools.&Folding.-SEP2- <Nop>
482 an 40.340.310.10 &Tools.&Folding.Fold\ col&umn\ width.\ &0\ :set fdc=0<CR>
483 an 40.340.310.20 &Tools.&Folding.Fold\ col&umn\ width.\ &2\ :set fdc=2<CR>
484 an 40.340.310.30 &Tools.&Folding.Fold\ col&umn\ width.\ &3\ :set fdc=3<CR>
485 an 40.340.310.40 &Tools.&Folding.Fold\ col&umn\ width.\ &4\ :set fdc=4<CR>
486 an 40.340.310.50 &Tools.&Folding.Fold\ col&umn\ width.\ &5\ :set fdc=5<CR>
487 an 40.340.310.60 &Tools.&Folding.Fold\ col&umn\ width.\ &6\ :set fdc=6<CR>
488 an 40.340.310.70 &Tools.&Folding.Fold\ col&umn\ width.\ &7\ :set fdc=7<CR>
489 an 40.340.310.80 &Tools.&Folding.Fold\ col&umn\ width.\ &8\ :set fdc=8<CR>
490endif " has folding
491
492if has("diff")
493 an 40.350.100 &Tools.&Diff.&Update :diffupdate<CR>
494 an 40.350.110 &Tools.&Diff.&Get\ Block :diffget<CR>
495 vunmenu &Tools.&Diff.&Get\ Block
496 vnoremenu &Tools.&Diff.&Get\ Block :diffget<CR>
497 an 40.350.120 &Tools.&Diff.&Put\ Block :diffput<CR>
498 vunmenu &Tools.&Diff.&Put\ Block
499 vnoremenu &Tools.&Diff.&Put\ Block :diffput<CR>
500endif
501
502an 40.358 &Tools.-SEP2- <Nop>
503an 40.360 &Tools.&Make<Tab>:make :make<CR>
504an 40.370 &Tools.&List\ Errors<Tab>:cl :cl<CR>
505an 40.380 &Tools.L&ist\ Messages<Tab>:cl! :cl!<CR>
506an 40.390 &Tools.&Next\ Error<Tab>:cn :cn<CR>
507an 40.400 &Tools.&Previous\ Error<Tab>:cp :cp<CR>
508an 40.410 &Tools.&Older\ List<Tab>:cold :colder<CR>
509an 40.420 &Tools.N&ewer\ List<Tab>:cnew :cnewer<CR>
510an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin :cwin<CR>
511an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen :copen<CR>
512an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose :cclose<CR>
513
514an 40.520 &Tools.-SEP3- <Nop>
515an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
516 \ :call <SID>XxdConv()<CR>
517an <silent> 40.540 &Tools.Conve&rt\ back<Tab>:%!xxd\ -r
518 \ :call <SID>XxdBack()<CR>
519
520" Use a function to do the conversion, so that it also works with 'insertmode'
521" set.
522func! s:XxdConv()
523 let mod = &mod
524 if has("vms")
525 %!mc vim:xxd
526 else
527 call s:XxdFind()
528 exe '%!"' . g:xxdprogram . '"'
529 endif
530 if getline(1) =~ "^0000000:" " only if it worked
531 set ft=xxd
532 endif
533 let &mod = mod
534endfun
535
536func! s:XxdBack()
537 let mod = &mod
538 if has("vms")
539 %!mc vim:xxd -r
540 else
541 call s:XxdFind()
542 exe '%!"' . g:xxdprogram . '" -r'
543 endif
544 set ft=
545 doautocmd filetypedetect BufReadPost
546 let &mod = mod
547endfun
548
549func! s:XxdFind()
550 if !exists("g:xxdprogram")
551 " On the PC xxd may not be in the path but in the install directory
552 if (has("win32") || has("dos32")) && !executable("xxd")
553 let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
554 else
555 let g:xxdprogram = "xxd"
556 endif
557 endif
558endfun
559
560" Setup the Tools.Compiler submenu
561let s:n = globpath(&runtimepath, "compiler/*.vim")
562let s:idx = 100
563while strlen(s:n) > 0
564 let s:i = stridx(s:n, "\n")
565 if s:i < 0
566 let s:name = s:n
567 let s:n = ""
568 else
569 let s:name = strpart(s:n, 0, s:i)
570 let s:n = strpart(s:n, s:i + 1, 19999)
571 endif
572 " Ignore case for VMS and windows
573 let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
Bram Moolenaar045e82d2005-07-08 22:25:33 +0000574 exe "an 30.440." . s:idx . ' &Tools.Se&T\ Compiler.' . s:name . " :compiler " . s:name . "<CR>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000575 unlet s:name
576 unlet s:i
577 let s:idx = s:idx + 10
578endwhile
579unlet s:n
580unlet s:idx
581
582if !exists("no_buffers_menu")
583
584" Buffer list menu -- Setup functions & actions
585
586" wait with building the menu until after loading 'session' files. Makes
587" startup faster.
588let s:bmenu_wait = 1
589
590if !exists("bmenu_priority")
591 let bmenu_priority = 60
592endif
593
594func! s:BMAdd()
595 if s:bmenu_wait == 0
596 " when adding too many buffers, redraw in short format
597 if s:bmenu_count == &menuitems && s:bmenu_short == 0
598 call s:BMShow()
599 else
600 call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
601 let s:bmenu_count = s:bmenu_count + 1
602 endif
603 endif
604endfunc
605
606func! s:BMRemove()
607 if s:bmenu_wait == 0
608 let name = expand("<afile>")
609 if isdirectory(name)
610 return
611 endif
612 let munge = <SID>BMMunge(name, expand("<abuf>"))
613
614 if s:bmenu_short == 0
615 exe 'silent! aun &Buffers.' . munge
616 else
617 exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
618 endif
619 let s:bmenu_count = s:bmenu_count - 1
620 endif
621endfunc
622
623" Create the buffer menu (delete an existing one first).
624func! s:BMShow(...)
625 let s:bmenu_wait = 1
626 let s:bmenu_short = 1
627 let s:bmenu_count = 0
628 "
629 " get new priority, if exists
630 if a:0 == 1
631 let g:bmenu_priority = a:1
632 endif
633
634 " remove old menu, if exists; keep one entry to avoid a torn off menu to
635 " disappear.
636 silent! unmenu &Buffers
637 exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
638 silent! unmenu! &Buffers
639
640 " create new menu; set 'cpo' to include the <CR>
641 let cpo_save = &cpo
642 set cpo&vim
643 exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
644 exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
645 exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
646 exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
647 exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
648 exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
649 let &cpo = cpo_save
650 unmenu &Buffers.Dummy
651
652 " figure out how many buffers there are
653 let buf = 1
654 while buf <= bufnr('$')
655 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
656 \ && !getbufvar(buf, "&bufsecret")
657 let s:bmenu_count = s:bmenu_count + 1
658 endif
659 let buf = buf + 1
660 endwhile
661 if s:bmenu_count <= &menuitems
662 let s:bmenu_short = 0
663 endif
664
665 " iterate through buffer list, adding each buffer to the menu:
666 let buf = 1
667 while buf <= bufnr('$')
668 if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
669 \ && !getbufvar(buf, "&bufsecret")
670 call <SID>BMFilename(bufname(buf), buf)
671 endif
672 let buf = buf + 1
673 endwhile
674 let s:bmenu_wait = 0
675 aug buffer_list
676 au!
677 au BufCreate,BufFilePost * call <SID>BMAdd()
678 au BufDelete,BufFilePre * call <SID>BMRemove()
679 aug END
680endfunc
681
682func! s:BMHash(name)
683 " Make name all upper case, so that chars are between 32 and 96
684 let nm = substitute(a:name, ".*", '\U\0', "")
685 if has("ebcdic")
686 " HACK: Replace all non alphabetics with 'Z'
687 " Just to make it work for now.
688 let nm = substitute(nm, "[^A-Z]", 'Z', "g")
689 let sp = char2nr('A') - 1
690 else
691 let sp = char2nr(' ')
692 endif
693 " convert first six chars into a number for sorting:
694 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)
695endfunc
696
697func! s:BMHash2(name)
698 let nm = substitute(a:name, ".", '\L\0', "")
699 " Not exactly right for EBCDIC...
700 if nm[0] < 'a' || nm[0] > 'z'
701 return '&others.'
702 elseif nm[0] <= 'd'
703 return '&abcd.'
704 elseif nm[0] <= 'h'
705 return '&efgh.'
706 elseif nm[0] <= 'l'
707 return '&ijkl.'
708 elseif nm[0] <= 'p'
709 return '&mnop.'
710 elseif nm[0] <= 't'
711 return '&qrst.'
712 else
713 return '&u-z.'
714 endif
715endfunc
716
717" insert a buffer name into the buffer menu:
718func! s:BMFilename(name, num)
719 if isdirectory(a:name)
720 return
721 endif
722 let munge = <SID>BMMunge(a:name, a:num)
723 let hash = <SID>BMHash(munge)
724 if s:bmenu_short == 0
725 let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
726 else
727 let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
728 endif
729 " set 'cpo' to include the <CR>
730 let cpo_save = &cpo
731 set cpo&vim
732 exe name . ' :confirm b' . a:num . '<CR>'
733 let &cpo = cpo_save
734endfunc
735
736" Truncate a long path to fit it in a menu item.
737if !exists("g:bmenu_max_pathlen")
738 let g:bmenu_max_pathlen = 35
739endif
740func! s:BMTruncName(fname)
741 let name = a:fname
742 if g:bmenu_max_pathlen < 5
743 let name = ""
744 else
745 let len = strlen(name)
746 if len > g:bmenu_max_pathlen
747 let amountl = (g:bmenu_max_pathlen / 2) - 2
748 let amountr = g:bmenu_max_pathlen - amountl - 3
749 let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
750 let left = substitute(name, pattern, '\1', '')
751 let right = substitute(name, pattern, '\2', '')
752 if strlen(left) + strlen(right) < len
753 let name = left . '...' . right
754 endif
755 endif
756 endif
757 return name
758endfunc
759
760func! s:BMMunge(fname, bnum)
761 let name = a:fname
762 if name == ''
763 if !exists("g:menutrans_no_file")
764 let g:menutrans_no_file = "[No file]"
765 endif
766 let name = g:menutrans_no_file
767 else
768 let name = fnamemodify(name, ':p:~')
769 endif
770 " detach file name and separate it out:
771 let name2 = fnamemodify(name, ':t')
772 if a:bnum >= 0
773 let name2 = name2 . ' (' . a:bnum . ')'
774 endif
775 let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
776 let name = escape(name, "\\. \t|")
777 let name = substitute(name, "&", "&&", "g")
778 let name = substitute(name, "\n", "^@", "g")
779 return name
780endfunc
781
782" When just starting Vim, load the buffer menu later
783if has("vim_starting")
784 augroup LoadBufferMenu
785 au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
786 au VimEnter * au! LoadBufferMenu
787 augroup END
788else
789 call <SID>BMShow()
790endif
791
792endif " !exists("no_buffers_menu")
793
794" Window menu
795an 70.300 &Window.&New<Tab>^Wn <C-W>n
796an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
797an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
798an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
799if has("vertsplit")
800 an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
801 if !exists("*MenuExplOpen")
802 fun MenuExplOpen()
803 if @% == ""
804 20vsp .
805 else
806 exe "20vsp " . expand("%:p:h")
807 endif
808 endfun
809 endif
810endif
811an 70.335 &Window.-SEP1- <Nop>
812an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>
813an 70.345 &Window.Close\ &Other(s)<Tab>^Wo :confirm only<CR>
814an 70.350 &Window.-SEP2- <Nop>
815an 70.355 &Window.Move\ &To.&Top<Tab>^WK <C-W>K
816an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ <C-W>J
817an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH <C-W>H
818an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL <C-W>L
819an 70.360 &Window.Rotate\ &Up<Tab>^WR <C-W>R
820an 70.362 &Window.Rotate\ &Down<Tab>^Wr <C-W>r
821an 70.365 &Window.-SEP3- <Nop>
822an 70.370 &Window.&Equal\ Size<Tab>^W= <C-W>=
823an 70.380 &Window.&Max\ Height<Tab>^W_ <C-W>_
824an 70.390 &Window.M&in\ Height<Tab>^W1_ <C-W>1_
825an 70.400 &Window.Max\ &Width<Tab>^W\| <C-W>\|
826an 70.410 &Window.Min\ Widt&h<Tab>^W1\| <C-W>1\|
827
828" The popup menu
829an 1.10 PopUp.&Undo u
830an 1.15 PopUp.-SEP1- <Nop>
831vnoremenu 1.20 PopUp.Cu&t "+x
832vnoremenu 1.30 PopUp.&Copy "+y
833cnoremenu 1.30 PopUp.&Copy <C-Y>
834nnoremenu 1.40 PopUp.&Paste "+gP
835cnoremenu 1.40 PopUp.&Paste <C-R>+
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000836exe 'vnoremenu <script> 1.40 PopUp.&Paste ' . s:paste_v_cmd
837exe 'inoremenu <script> 1.40 PopUp.&Paste ' . s:paste_i_cmd
Bram Moolenaar071d4272004-06-13 20:20:40 +0000838vnoremenu 1.50 PopUp.&Delete x
839an 1.55 PopUp.-SEP2- <Nop>
840vnoremenu 1.60 PopUp.Select\ Blockwise <C-V>
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000841
842nnoremenu 1.70 PopUp.Select\ &Word vaw
843onoremenu 1.70 PopUp.Select\ &Word aw
844vnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
845inoremenu 1.70 PopUp.Select\ &Word <C-O>vaw
846cnoremenu 1.70 PopUp.Select\ &Word <C-C>vaw
847
848nnoremenu 1.73 PopUp.Select\ &Sentence vas
849onoremenu 1.73 PopUp.Select\ &Sentence as
850vnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
851inoremenu 1.73 PopUp.Select\ &Sentence <C-O>vas
852cnoremenu 1.73 PopUp.Select\ &Sentence <C-C>vas
853
854nnoremenu 1.77 PopUp.Select\ Pa&ragraph vap
855onoremenu 1.77 PopUp.Select\ Pa&ragraph ap
856vnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
857inoremenu 1.77 PopUp.Select\ Pa&ragraph <C-O>vap
858cnoremenu 1.77 PopUp.Select\ Pa&ragraph <C-C>vap
859
860nnoremenu 1.80 PopUp.Select\ &Line V
861onoremenu 1.80 PopUp.Select\ &Line <C-C>V
862vnoremenu 1.80 PopUp.Select\ &Line <C-C>V
863inoremenu 1.80 PopUp.Select\ &Line <C-O>V
864cnoremenu 1.80 PopUp.Select\ &Line <C-C>V
865
866nnoremenu 1.90 PopUp.Select\ &Block <C-V>
867onoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
868vnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
869inoremenu 1.90 PopUp.Select\ &Block <C-O><C-V>
870cnoremenu 1.90 PopUp.Select\ &Block <C-C><C-V>
871
Bram Moolenaar071d4272004-06-13 20:20:40 +0000872noremenu <script> <silent> 1.100 PopUp.Select\ &All :<C-U>call <SID>SelectAll()<CR>
873inoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-O>:call <SID>SelectAll()<CR>
874cnoremenu <script> <silent> 1.100 PopUp.Select\ &All <C-U>call <SID>SelectAll()<CR>
875
Bram Moolenaar45360022005-07-21 21:08:21 +0000876if has("spell")
877 " Spell suggestions in the popup menu. Note that this will slow down the
878 " appearance of the menu!
879 func! <SID>SpellPopup()
880 if exists("s:changeitem") && s:changeitem != ''
881 call <SID>SpellDel()
882 endif
Bram Moolenaard8c00872005-07-22 21:52:15 +0000883 if !&spell || &spelllang == ''
884 return
885 endif
Bram Moolenaar45360022005-07-21 21:08:21 +0000886
887 let curcol = col('.')
888 let w = spellbadword()
889 if col('.') > curcol " don't use word after the cursor
890 let w = ''
891 call cursor(0, curcol) " put the cursor back where it was
892 endif
893 if w != ''
894 let s:suglist = spellsuggest(w, 10)
895 if len(s:suglist) <= 0
896 call cursor(0, curcol) " put the cursor back where it was
897 else
898 let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
899 let s:fromword = w
900 let pri = 1
901 for sug in s:suglist
902 exe 'amenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
903 \ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
904 let pri += 1
905 endfor
906
907 let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
908 exe 'amenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
909
910 let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
911 exe 'amenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
912
913 amenu 1.8 PopUp.-SpellSep- :
914 endif
915 endif
916 endfunc
917
918 func! <SID>SpellReplace(n)
919 let l = getline('.')
920 call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
921 \ . strpart(l, col('.') + len(s:fromword) - 1))
922 endfunc
923
924 func! <SID>SpellDel()
925 exe "aunmenu PopUp." . s:changeitem
926 exe "aunmenu PopUp." . s:additem
927 exe "aunmenu PopUp." . s:ignoreitem
928 aunmenu PopUp.-SpellSep-
929 let s:changeitem = ''
930 endfun
931
932 au! MenuPopup * call <SID>SpellPopup()
933endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000934
935" The GUI toolbar (for MS-Windows and GTK)
936if has("toolbar")
937 an 1.10 ToolBar.Open :browse confirm e<CR>
938 an <silent> 1.20 ToolBar.Save :if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
939 an 1.30 ToolBar.SaveAll :browse confirm wa<CR>
940
941 if has("printer")
942 an 1.40 ToolBar.Print :hardcopy<CR>
943 vunmenu ToolBar.Print
944 vnoremenu ToolBar.Print :hardcopy<CR>
945 elseif has("unix")
946 an 1.40 ToolBar.Print :w !lpr<CR>
947 vunmenu ToolBar.Print
948 vnoremenu ToolBar.Print :w !lpr<CR>
949 endif
950
951 an 1.45 ToolBar.-sep1- <Nop>
952 an 1.50 ToolBar.Undo u
953 an 1.60 ToolBar.Redo <C-R>
954
955 an 1.65 ToolBar.-sep2- <Nop>
956 vnoremenu 1.70 ToolBar.Cut "+x
957 vnoremenu 1.80 ToolBar.Copy "+y
958 cnoremenu 1.80 ToolBar.Copy <C-Y>
959 nnoremenu 1.90 ToolBar.Paste "+gP
960 cnoremenu ToolBar.Paste <C-R>+
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +0000961 exe 'vnoremenu <script> ToolBar.Paste ' . s:paste_v_cmd
962 exe 'inoremenu <script> ToolBar.Paste ' . s:paste_i_cmd
Bram Moolenaar071d4272004-06-13 20:20:40 +0000963
964 if !has("gui_athena")
965 an 1.95 ToolBar.-sep3- <Nop>
Bram Moolenaare2cc9702005-03-15 22:43:58 +0000966 an 1.100 ToolBar.Replace :promptrepl<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 vunmenu ToolBar.Replace
968 vnoremenu ToolBar.Replace y:promptrepl <C-R>"<CR>
Bram Moolenaare2cc9702005-03-15 22:43:58 +0000969 an 1.110 ToolBar.FindNext n
970 an 1.120 ToolBar.FindPrev N
Bram Moolenaar071d4272004-06-13 20:20:40 +0000971 endif
972
Bram Moolenaar071d4272004-06-13 20:20:40 +0000973 an 1.215 ToolBar.-sep5- <Nop>
974 an <silent> 1.220 ToolBar.LoadSesn :call <SID>LoadVimSesn()<CR>
975 an <silent> 1.230 ToolBar.SaveSesn :call <SID>SaveVimSesn()<CR>
976 an 1.240 ToolBar.RunScript :browse so<CR>
977
978 an 1.245 ToolBar.-sep6- <Nop>
979 an 1.250 ToolBar.Make :make<CR>
980 an 1.270 ToolBar.RunCtags :exe "!" . g:ctags_command<CR>
981 an 1.280 ToolBar.TagJump g<C-]>
982
983 an 1.295 ToolBar.-sep7- <Nop>
984 an 1.300 ToolBar.Help :help<CR>
985 an <silent> 1.310 ToolBar.FindHelp :call <SID>Helpfind()<CR>
986
987" Only set the tooltips here if not done in a language menu file
988if exists("*Do_toolbar_tmenu")
989 call Do_toolbar_tmenu()
990else
991 let did_toolbar_tmenu = 1
992 tmenu ToolBar.Open Open file
993 tmenu ToolBar.Save Save current file
994 tmenu ToolBar.SaveAll Save all files
995 tmenu ToolBar.Print Print
996 tmenu ToolBar.Undo Undo
997 tmenu ToolBar.Redo Redo
998 tmenu ToolBar.Cut Cut to clipboard
999 tmenu ToolBar.Copy Copy to clipboard
1000 tmenu ToolBar.Paste Paste from Clipboard
1001 if !has("gui_athena")
1002 tmenu ToolBar.Find Find...
1003 tmenu ToolBar.FindNext Find Next
1004 tmenu ToolBar.FindPrev Find Previous
1005 tmenu ToolBar.Replace Find / Replace...
1006 endif
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001007 tmenu ToolBar.LoadSesn Chose a session to load
Bram Moolenaar071d4272004-06-13 20:20:40 +00001008 tmenu ToolBar.SaveSesn Save current session
Bram Moolenaare2cc9702005-03-15 22:43:58 +00001009 tmenu ToolBar.RunScript Chose a Vim Script to run
1010 tmenu ToolBar.Make Make current project (:make)
1011 tmenu ToolBar.RunCtags Build tags in current directory tree (!ctags -R .)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001012 tmenu ToolBar.TagJump Jump to tag under cursor
1013 tmenu ToolBar.Help Vim Help
1014 tmenu ToolBar.FindHelp Search Vim Help
1015endif
1016
1017" Select a session to load; default to current session name if present
1018fun! s:LoadVimSesn()
1019 if strlen(v:this_session) > 0
1020 let name = v:this_session
1021 else
1022 let name = "Session.vim"
1023 endif
1024 execute "browse so " . name
1025endfun
1026
1027" Select a session to save; default to current session name if present
1028fun! s:SaveVimSesn()
1029 if strlen(v:this_session) == 0
1030 let v:this_session = "Session.vim"
1031 endif
1032 execute "browse mksession! " . v:this_session
1033endfun
1034
1035endif
1036
1037endif " !exists("did_install_default_menus")
1038
1039" Define these items always, so that syntax can be switched on when it wasn't.
1040" But skip them when the Syntax menu was disabled by the user.
1041if !exists("did_install_syntax_menu")
1042 an 50.212 &Syntax.&Manual :syn manual<CR>
1043 an 50.214 &Syntax.A&utomatic :syn on<CR>
1044 an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
1045 if !exists("*s:SynOnOff")
1046 fun s:SynOnOff()
1047 if has("syntax_items")
1048 syn clear
1049 else
1050 if !exists("g:syntax_on")
1051 syn manual
1052 endif
1053 set syn=ON
1054 endif
1055 endfun
1056 endif
1057endif
1058
1059
1060" Install the Syntax menu only when filetype.vim has been loaded or when
1061" manual syntax highlighting is enabled.
1062" Avoid installing the Syntax menu twice.
1063if (exists("did_load_filetypes") || exists("syntax_on"))
1064 \ && !exists("did_install_syntax_menu")
1065 let did_install_syntax_menu = 1
1066
1067" Skip setting up the individual syntax selection menus unless
1068" do_syntax_sel_menu is defined (it takes quite a bit of time).
1069if exists("do_syntax_sel_menu")
1070 runtime! synmenu.vim
1071else
1072 an 50.10 &Syntax.&Show\ filetypes\ in\ menu :let do_syntax_sel_menu = 1<Bar>runtime! synmenu.vim<Bar>aunmenu &Syntax.&Show\ filetypes\ in\ menu<CR>
1073 an 50.195 &Syntax.-SEP1- <Nop>
1074endif
1075
1076an 50.210 &Syntax.&Off :syn off<CR>
1077an 50.700 &Syntax.-SEP3- <Nop>
1078an 50.710 &Syntax.Co&lor\ test :sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
1079an 50.720 &Syntax.&Highlight\ test :runtime syntax/hitest.vim<CR>
1080an 50.730 &Syntax.&Convert\ to\ HTML :runtime syntax/2html.vim<CR>
1081
1082endif " !exists("did_install_syntax_menu")
1083
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +00001084unlet! s:paste_i_cmd s:paste_v_cmd s:paste_cmd
1085
Bram Moolenaar071d4272004-06-13 20:20:40 +00001086" Restore the previous value of 'cpoptions'.
1087let &cpo = s:cpo_save
1088unlet s:cpo_save
1089
1090" vim: set sw=2 :