xref: /vim-8.2.3635/runtime/optwin.vim (revision 94688b8a)
1" These commands create the option window.
2"
3" Maintainer:	Bram Moolenaar <[email protected]>
4" Last Change:	2019 Jan 27
5
6" If there already is an option window, jump to that one.
7let buf = bufnr('option-window')
8if buf >= 0
9  let winids = win_findbuf(buf)
10  if len(winids) > 0
11    if win_gotoid(winids[0]) == 1
12      finish
13    endif
14  endif
15endif
16
17" Make sure the '<' flag is not included in 'cpoptions', otherwise <CR> would
18" not be recognized.  See ":help 'cpoptions'".
19let s:cpo_save = &cpo
20set cpo&vim
21
22" function to be called when <CR> is hit in the option-window
23fun! <SID>CR()
24
25  " If on a continued comment line, go back to the first comment line
26  let lnum = search("^[^\t]", 'bWcn')
27  let line = getline(lnum)
28
29  " <CR> on a "set" line executes the option line
30  if match(line, "^ \tset ") >= 0
31
32    " For a local option: go to the previous window
33    " If this is a help window, go to the window below it
34    let thiswin = winnr()
35    let local = <SID>Find(lnum)
36    if local >= 0
37      exe line
38      call <SID>Update(lnum, line, local, thiswin)
39    endif
40
41  " <CR> on a "option" line shows help for that option
42  elseif match(line, "^[a-z]") >= 0
43    let name = substitute(line, '\([^\t]*\).*', '\1', "")
44    exe "help '" . name . "'"
45
46  " <CR> on an index line jumps to the group
47  elseif match(line, '^ \=[0-9]') >= 0
48    exe "norm! /" . line . "\<CR>zt"
49  endif
50endfun
51
52" function to be called when <Space> is hit in the option-window
53fun! <SID>Space()
54
55  let lnum = line(".")
56  let line = getline(lnum)
57
58  " <Space> on a "set" line refreshes the option line
59  if match(line, "^ \tset ") >= 0
60
61    " For a local option: go to the previous window
62    " If this is a help window, go to the window below it
63    let thiswin = winnr()
64    let local = <SID>Find(lnum)
65    if local >= 0
66      call <SID>Update(lnum, line, local, thiswin)
67    endif
68
69  endif
70endfun
71
72" find the window in which the option applies
73" returns 0 for global option, 1 for local option, -1 for error
74fun! <SID>Find(lnum)
75    if getline(a:lnum - 1) =~ "(local to"
76      let local = 1
77      let thiswin = winnr()
78      wincmd p
79      if exists("b:current_syntax") && b:current_syntax == "help"
80	wincmd j
81	if winnr() == thiswin
82	  wincmd j
83	endif
84      endif
85    else
86      let local = 0
87    endif
88    if local && (winnr() == thiswin || (exists("b:current_syntax")
89	\ && b:current_syntax == "help"))
90      echo "Don't know in which window"
91      let local = -1
92    endif
93    return local
94endfun
95
96" Update a "set" line in the option window
97fun! <SID>Update(lnum, line, local, thiswin)
98  " get the new value of the option and update the option window line
99  if match(a:line, "=") >= 0
100    let name = substitute(a:line, '^ \tset \([^=]*\)=.*', '\1', "")
101  else
102    let name = substitute(a:line, '^ \tset \(no\)\=\([a-z]*\).*', '\2', "")
103  endif
104  if name == "pt" && &pt =~ "\x80"
105    let val = <SID>PTvalue()
106  else
107    let val = escape(eval('&' . name), " \t\\\"|")
108  endif
109  if a:local
110    exe a:thiswin . "wincmd w"
111  endif
112  if match(a:line, "=") >= 0 || (val != "0" && val != "1")
113    call setline(a:lnum, " \tset " . name . "=" . val)
114  else
115    if val
116      call setline(a:lnum, " \tset " . name . "\tno" . name)
117    else
118      call setline(a:lnum, " \tset no" . name . "\t" . name)
119    endif
120  endif
121  set nomodified
122endfun
123
124" Reset 'title' and 'icon' to make it work faster.
125" Reset 'undolevels' to avoid undo'ing until the buffer is empty.
126let s:old_title = &title
127let s:old_icon = &icon
128let s:old_sc = &sc
129let s:old_ru = &ru
130let s:old_ul = &ul
131set notitle noicon nosc noru ul=-1
132
133" If the current window is a help window, try finding a non-help window.
134" Relies on syntax highlighting to be switched on.
135let s:thiswin = winnr()
136while exists("b:current_syntax") && b:current_syntax == "help"
137  wincmd w
138  if s:thiswin == winnr()
139    break
140  endif
141endwhile
142
143" Open the window.  $OPTWIN_CMD is set to "tab" for ":tab options".
144exe $OPTWIN_CMD . ' new option-window'
145setlocal ts=15 tw=0 noro buftype=nofile
146
147" Insert help and a "set" command for each option.
148call append(0, '" Each "set" line shows the current value of an option (on the left).')
149call append(1, '" Hit <CR> on a "set" line to execute it.')
150call append(2, '"            A boolean option will be toggled.')
151call append(3, '"            For other options you can edit the value before hitting <CR>.')
152call append(4, '" Hit <CR> on a help line to open a help window on this option.')
153call append(5, '" Hit <CR> on an index line to jump there.')
154call append(6, '" Hit <Space> on a "set" line to refresh it.')
155
156" These functions are called often below.  Keep them fast!
157
158" Init a local binary option
159fun! <SID>BinOptionL(name)
160  let val = getwinvar(winnr('#'), '&' . a:name)
161  call append("$", substitute(substitute(" \tset " . val . a:name . "\t" .
162	\!val . a:name, "0", "no", ""), "1", "", ""))
163endfun
164
165" Init a global binary option
166fun! <SID>BinOptionG(name, val)
167  call append("$", substitute(substitute(" \tset " . a:val . a:name . "\t" .
168	\!a:val . a:name, "0", "no", ""), "1", "", ""))
169endfun
170
171" Init a local string option
172fun! <SID>OptionL(name)
173  let val = escape(getwinvar(winnr('#'), '&' . a:name), " \t\\\"|")
174  call append("$", " \tset " . a:name . "=" . val)
175endfun
176
177" Init a global string option
178fun! <SID>OptionG(name, val)
179  call append("$", " \tset " . a:name . "=" . escape(a:val, " \t\\\"|"))
180endfun
181
182let s:idx = 1
183let s:lnum = line("$")
184call append("$", "")
185
186fun! <SID>Header(text)
187  let line = s:idx . " " . a:text
188  if s:idx < 10
189    let line = " " . line
190  endif
191  call append("$", "")
192  call append("$", line)
193  call append("$", "")
194  call append(s:lnum, line)
195  let s:idx = s:idx + 1
196  let s:lnum = s:lnum + 1
197endfun
198
199" Get the value of 'pastetoggle'.  It could be a special key.
200fun! <SID>PTvalue()
201  redir @a
202  silent set pt
203  redir END
204  return substitute(@a, '[^=]*=\(.*\)', '\1', "")
205endfun
206
207" Restore the previous value of 'cpoptions' here, it's used below.
208let &cpo = s:cpo_save
209
210" List of all options, organized by function.
211" The text should be sufficient to know what the option is used for.
212
213call <SID>Header("important")
214call append("$", "compatible\tbehave very Vi compatible (not advisable)")
215call <SID>BinOptionG("cp", &cp)
216call append("$", "cpoptions\tlist of flags to specify Vi compatibility")
217call <SID>OptionG("cpo", &cpo)
218call append("$", "insertmode\tuse Insert mode as the default mode")
219call <SID>BinOptionG("im", &im)
220call append("$", "paste\tpaste mode, insert typed text literally")
221call <SID>BinOptionG("paste", &paste)
222call append("$", "pastetoggle\tkey sequence to toggle paste mode")
223if &pt =~ "\x80"
224  call append("$", " \tset pt=" . <SID>PTvalue())
225else
226  call <SID>OptionG("pt", &pt)
227endif
228call append("$", "runtimepath\tlist of directories used for runtime files and plugins")
229call <SID>OptionG("rtp", &rtp)
230call append("$", "packpath\tlist of directories used for plugin packages")
231call <SID>OptionG("pp", &pp)
232call append("$", "helpfile\tname of the main help file")
233call <SID>OptionG("hf", &hf)
234
235
236call <SID>Header("moving around, searching and patterns")
237call append("$", "whichwrap\tlist of flags specifying which commands wrap to another line")
238call append("$", "\t(local to window)")
239call <SID>OptionL("ww")
240call append("$", "startofline\tmany jump commands move the cursor to the first non-blank")
241call append("$", "\tcharacter of a line")
242call <SID>BinOptionG("sol", &sol)
243call append("$", "paragraphs\tnroff macro names that separate paragraphs")
244call <SID>OptionG("para", &para)
245call append("$", "sections\tnroff macro names that separate sections")
246call <SID>OptionG("sect", &sect)
247call append("$", "path\tlist of directory names used for file searching")
248call append("$", "\t(global or local to buffer)")
249call <SID>OptionG("pa", &pa)
250call append("$", "cdpath\tlist of directory names used for :cd")
251call <SID>OptionG("cd", &cd)
252if exists("+autochdir")
253  call append("$", "autochdir\tchange to directory of file in buffer")
254  call <SID>BinOptionG("acd", &acd)
255endif
256call append("$", "wrapscan\tsearch commands wrap around the end of the buffer")
257call <SID>BinOptionG("ws", &ws)
258call append("$", "incsearch\tshow match for partly typed search command")
259call <SID>BinOptionG("is", &is)
260call append("$", "magic\tchange the way backslashes are used in search patterns")
261call <SID>BinOptionG("magic", &magic)
262call append("$", "regexpengine\tselect the default regexp engine used")
263call <SID>OptionG("re", &re)
264call append("$", "ignorecase\tignore case when using a search pattern")
265call <SID>BinOptionG("ic", &ic)
266call append("$", "smartcase\toverride 'ignorecase' when pattern has upper case characters")
267call <SID>BinOptionG("scs", &scs)
268call append("$", "casemap\twhat method to use for changing case of letters")
269call <SID>OptionG("cmp", &cmp)
270call append("$", "maxmempattern\tmaximum amount of memory in Kbyte used for pattern matching")
271call append("$", " \tset mmp=" . &mmp)
272call append("$", "define\tpattern for a macro definition line")
273call append("$", "\t(global or local to buffer)")
274call <SID>OptionG("def", &def)
275if has("find_in_path")
276  call append("$", "include\tpattern for an include-file line")
277  call append("$", "\t(local to buffer)")
278  call <SID>OptionL("inc")
279  call append("$", "includeexpr\texpression used to transform an include line to a file name")
280  call append("$", "\t(local to buffer)")
281  call <SID>OptionL("inex")
282endif
283
284
285call <SID>Header("tags")
286call append("$", "tagbsearch\tuse binary searching in tags files")
287call <SID>BinOptionG("tbs", &tbs)
288call append("$", "taglength\tnumber of significant characters in a tag name or zero")
289call append("$", " \tset tl=" . &tl)
290call append("$", "tags\tlist of file names to search for tags")
291call append("$", "\t(global or local to buffer)")
292call <SID>OptionG("tag", &tag)
293call append("$", "tagcase\thow to handle case when searching in tags files:")
294call append("$", "\t\"followic\" to follow 'ignorecase', \"ignore\" or \"match\"")
295call append("$", "\t(global or local to buffer)")
296call <SID>OptionG("tc", &tc)
297call append("$", "tagrelative\tfile names in a tags file are relative to the tags file")
298call <SID>BinOptionG("tr", &tr)
299call append("$", "tagstack\ta :tag command will use the tagstack")
300call <SID>BinOptionG("tgst", &tgst)
301call append("$", "showfulltag\twhen completing tags in Insert mode show more info")
302call <SID>BinOptionG("sft", &sft)
303if has("cscope")
304  call append("$", "cscopeprg\tcommand for executing cscope")
305  call <SID>OptionG("csprg", &csprg)
306  call append("$", "cscopetag\tuse cscope for tag commands")
307  call <SID>BinOptionG("cst", &cst)
308  call append("$", "cscopetagorder\t0 or 1; the order in which \":cstag\" performs a search")
309  call append("$", " \tset csto=" . &csto)
310  call append("$", "cscopeverbose\tgive messages when adding a cscope database")
311  call <SID>BinOptionG("csverb", &csverb)
312  call append("$", "cscopepathcomp\thow many components of the path to show")
313  call append("$", " \tset cspc=" . &cspc)
314  call append("$", "cscopequickfix\twhen to open a quickfix window for cscope")
315  call <SID>OptionG("csqf", &csqf)
316  call append("$", "cscoperelative\tfile names in a cscope file are relative to that file")
317  call <SID>BinOptionG("csre", &csre)
318endif
319
320
321call <SID>Header("displaying text")
322call append("$", "scroll\tnumber of lines to scroll for CTRL-U and CTRL-D")
323call append("$", "\t(local to window)")
324call <SID>OptionL("scr")
325call append("$", "scrolloff\tnumber of screen lines to show around the cursor")
326call append("$", " \tset so=" . &so)
327call append("$", "wrap\tlong lines wrap")
328call append("$", "\t(local to window)")
329call <SID>BinOptionL("wrap")
330call append("$", "linebreak\twrap long lines at a character in 'breakat'")
331call append("$", "\t(local to window)")
332call <SID>BinOptionL("lbr")
333call append("$", "breakindent\tpreserve indentation in wrapped text")
334call append("$", "\t(local to window)")
335call <SID>BinOptionL("bri")
336call append("$", "breakindentopt\tadjust breakindent behaviour")
337call append("$", "\t(local to window)")
338call <SID>OptionL("briopt")
339call append("$", "breakat\twhich characters might cause a line break")
340call <SID>OptionG("brk", &brk)
341call append("$", "showbreak\tstring to put before wrapped screen lines")
342call <SID>OptionG("sbr", &sbr)
343call append("$", "sidescroll\tminimal number of columns to scroll horizontally")
344call append("$", " \tset ss=" . &ss)
345call append("$", "sidescrolloff\tminimal number of columns to keep left and right of the cursor")
346call append("$", " \tset siso=" . &siso)
347call append("$", "display\tinclude \"lastline\" to show the last line even if it doesn't fit")
348call append("$", "\tinclude \"uhex\" to show unprintable characters as a hex number")
349call <SID>OptionG("dy", &dy)
350call append("$", "fillchars\tcharacters to use for the status line, folds and filler lines")
351call <SID>OptionG("fcs", &fcs)
352call append("$", "cmdheight\tnumber of lines used for the command-line")
353call append("$", " \tset ch=" . &ch)
354call append("$", "columns\twidth of the display")
355call append("$", " \tset co=" . &co)
356call append("$", "lines\tnumber of lines in the display")
357call append("$", " \tset lines=" . &lines)
358call append("$", "window\tnumber of lines to scroll for CTRL-F and CTRL-B")
359call append("$", " \tset window=" . &window)
360call append("$", "lazyredraw\tdon't redraw while executing macros")
361call <SID>BinOptionG("lz", &lz)
362if has("reltime")
363  call append("$", "redrawtime\ttimeout for 'hlsearch' and :match highlighting in msec")
364  call append("$", " \tset rdt=" . &rdt)
365endif
366call append("$", "writedelay\tdelay in msec for each char written to the display")
367call append("$", "\t(for debugging)")
368call append("$", " \tset wd=" . &wd)
369call append("$", "list\tshow <Tab> as ^I and end-of-line as $")
370call append("$", "\t(local to window)")
371call <SID>BinOptionL("list")
372call append("$", "listchars\tlist of strings used for list mode")
373call <SID>OptionG("lcs", &lcs)
374call append("$", "number\tshow the line number for each line")
375call append("$", "\t(local to window)")
376call <SID>BinOptionL("nu")
377call append("$", "relativenumber\tshow the relative line number for each line")
378call append("$", "\t(local to window)")
379call <SID>BinOptionL("rnu")
380if has("linebreak")
381  call append("$", "numberwidth\tnumber of columns to use for the line number")
382  call append("$", "\t(local to window)")
383  call <SID>OptionL("nuw")
384endif
385if has("conceal")
386  call append("$", "conceallevel\tcontrols whether concealable text is hidden")
387  call append("$", "\t(local to window)")
388  call <SID>OptionL("cole")
389  call append("$", "concealcursor\tmodes in which text in the cursor line can be concealed")
390  call append("$", "\t(local to window)")
391  call <SID>OptionL("cocu")
392endif
393
394
395call <SID>Header("syntax, highlighting and spelling")
396call append("$", "background\t\"dark\" or \"light\"; the background color brightness")
397call <SID>OptionG("bg", &bg)
398call append("$", "filetype\ttype of file; triggers the FileType event when set")
399call append("$", "\t(local to buffer)")
400call <SID>OptionL("ft")
401if has("syntax")
402  call append("$", "syntax\tname of syntax highlighting used")
403  call append("$", "\t(local to buffer)")
404  call <SID>OptionL("syn")
405  call append("$", "synmaxcol\tmaximum column to look for syntax items")
406  call append("$", "\t(local to buffer)")
407  call <SID>OptionL("smc")
408endif
409call append("$", "highlight\twhich highlighting to use for various occasions")
410call <SID>OptionG("hl", &hl)
411call append("$", "hlsearch\thighlight all matches for the last used search pattern")
412call <SID>BinOptionG("hls", &hls)
413if has("termguicolors")
414  call append("$", "termguicolors\tuse GUI colors for the terminal")
415  call <SID>BinOptionG("tgc", &tgc)
416endif
417if has("syntax")
418  call append("$", "cursorcolumn\thighlight the screen column of the cursor")
419  call append("$", "\t(local to window)")
420  call <SID>BinOptionL("cuc")
421  call append("$", "cursorline\thighlight the screen line of the cursor")
422  call append("$", "\t(local to window)")
423  call <SID>BinOptionL("cul")
424  call append("$", "colorcolumn\tcolumns to highlight")
425  call append("$", "\t(local to window)")
426  call <SID>OptionL("cc")
427  call append("$", "spell\thighlight spelling mistakes")
428  call append("$", "\t(local to window)")
429  call <SID>BinOptionL("spell")
430  call append("$", "spelllang\tlist of accepted languages")
431  call append("$", "\t(local to buffer)")
432  call <SID>OptionL("spl")
433  call append("$", "spellfile\tfile that \"zg\" adds good words to")
434  call append("$", "\t(local to buffer)")
435  call <SID>OptionL("spf")
436  call append("$", "spellcapcheck\tpattern to locate the end of a sentence")
437  call append("$", "\t(local to buffer)")
438  call <SID>OptionL("spc")
439  call append("$", "spellsuggest\tmethods used to suggest corrections")
440  call <SID>OptionG("sps", &sps)
441  call append("$", "mkspellmem\tamount of memory used by :mkspell before compressing")
442  call <SID>OptionG("msm", &msm)
443endif
444
445
446call <SID>Header("multiple windows")
447call append("$", "laststatus\t0, 1 or 2; when to use a status line for the last window")
448call append("$", " \tset ls=" . &ls)
449if has("statusline")
450  call append("$", "statusline\talternate format to be used for a status line")
451  call <SID>OptionG("stl", &stl)
452endif
453call append("$", "equalalways\tmake all windows the same size when adding/removing windows")
454call <SID>BinOptionG("ea", &ea)
455call append("$", "eadirection\tin which direction 'equalalways' works: \"ver\", \"hor\" or \"both\"")
456call <SID>OptionG("ead", &ead)
457call append("$", "winheight\tminimal number of lines used for the current window")
458call append("$", " \tset wh=" . &wh)
459call append("$", "winminheight\tminimal number of lines used for any window")
460call append("$", " \tset wmh=" . &wmh)
461call append("$", "winfixheight\tkeep the height of the window")
462call append("$", "\t(local to window)")
463call <SID>BinOptionL("wfh")
464call append("$", "winfixwidth\tkeep the width of the window")
465call append("$", "\t(local to window)")
466call <SID>BinOptionL("wfw")
467call append("$", "winwidth\tminimal number of columns used for the current window")
468call append("$", " \tset wiw=" . &wiw)
469call append("$", "winminwidth\tminimal number of columns used for any window")
470call append("$", " \tset wmw=" . &wmw)
471call append("$", "helpheight\tinitial height of the help window")
472call append("$", " \tset hh=" . &hh)
473if has("quickfix")
474  call append("$", "previewheight\tdefault height for the preview window")
475  call append("$", " \tset pvh=" . &pvh)
476  call append("$", "previewwindow\tidentifies the preview window")
477  call append("$", "\t(local to window)")
478  call <SID>BinOptionL("pvw")
479endif
480call append("$", "hidden\tdon't unload a buffer when no longer shown in a window")
481call <SID>BinOptionG("hid", &hid)
482call append("$", "switchbuf\t\"useopen\" and/or \"split\"; which window to use when jumping")
483call append("$", "\tto a buffer")
484call <SID>OptionG("swb", &swb)
485call append("$", "splitbelow\ta new window is put below the current one")
486call <SID>BinOptionG("sb", &sb)
487call append("$", "splitright\ta new window is put right of the current one")
488call <SID>BinOptionG("spr", &spr)
489call append("$", "scrollbind\tthis window scrolls together with other bound windows")
490call append("$", "\t(local to window)")
491call <SID>BinOptionL("scb")
492call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'")
493call <SID>OptionG("sbo", &sbo)
494call append("$", "cursorbind\tthis window's cursor moves together with other bound windows")
495call append("$", "\t(local to window)")
496call <SID>BinOptionL("crb")
497if has("terminal")
498  call append("$", "termwinsize\tsize of a terminal window")
499  call append("$", "\t(local to window)")
500  call <SID>OptionL("tws")
501  call append("$", "termwinkey\tkey that precedes Vim commands in a terminal window")
502  call append("$", "\t(local to window)")
503  call <SID>OptionL("twk")
504  call append("$", "termwinscroll\tmax number of lines to keep for scrollback in a terminal window")
505  call append("$", "\t(local to window)")
506  call <SID>OptionL("twsl")
507  if exists("&winptydll")
508    call append("$", "winptydll\tname of the winpty dynamic library")
509    call <SID>OptionG("winptydll", &winptydll)
510  endif
511endif
512
513
514call <SID>Header("multiple tab pages")
515call append("$", "showtabline\t0, 1 or 2; when to use a tab pages line")
516call append("$", " \tset stal=" . &stal)
517call append("$", "tabpagemax\tmaximum number of tab pages to open for -p and \"tab all\"")
518call append("$", " \tset tpm=" . &tpm)
519call append("$", "tabline\tcustom tab pages line")
520call <SID>OptionG("tal", &tal)
521if has("gui")
522  call append("$", "guitablabel\tcustom tab page label for the GUI")
523  call <SID>OptionG("gtl", &gtl)
524  call append("$", "guitabtooltip\tcustom tab page tooltip for the GUI")
525  call <SID>OptionG("gtt", &gtt)
526endif
527
528
529call <SID>Header("terminal")
530call append("$", "term\tname of the used terminal")
531call <SID>OptionG("term", &term)
532call append("$", "ttytype\talias for 'term'")
533call <SID>OptionG("tty", &tty)
534call append("$", "ttybuiltin\tcheck built-in termcaps first")
535call <SID>BinOptionG("tbi", &tbi)
536call append("$", "ttyfast\tterminal connection is fast")
537call <SID>BinOptionG("tf", &tf)
538call append("$", "weirdinvert\tterminal that requires extra redrawing")
539call <SID>BinOptionG("wiv", &wiv)
540call append("$", "esckeys\trecognize keys that start with <Esc> in Insert mode")
541call <SID>BinOptionG("ek", &ek)
542call append("$", "scrolljump\tminimal number of lines to scroll at a time")
543call append("$", " \tset sj=" . &sj)
544call append("$", "ttyscroll\tmaximum number of lines to use scrolling instead of redrawing")
545call append("$", " \tset tsl=" . &tsl)
546if has("gui") || has("win32")
547  call append("$", "guicursor\tspecifies what the cursor looks like in different modes")
548  call <SID>OptionG("gcr", &gcr)
549endif
550if has("title")
551  let &title = s:old_title
552  call append("$", "title\tshow info in the window title")
553  call <SID>BinOptionG("title", &title)
554  set notitle
555  call append("$", "titlelen\tpercentage of 'columns' used for the window title")
556  call append("$", " \tset titlelen=" . &titlelen)
557  call append("$", "titlestring\twhen not empty, string to be used for the window title")
558  call <SID>OptionG("titlestring", &titlestring)
559  call append("$", "titleold\tstring to restore the title to when exiting Vim")
560  call <SID>OptionG("titleold", &titleold)
561  let &icon = s:old_icon
562  call append("$", "icon\tset the text of the icon for this window")
563  call <SID>BinOptionG("icon", &icon)
564  set noicon
565  call append("$", "iconstring\twhen not empty, text for the icon of this window")
566  call <SID>OptionG("iconstring", &iconstring)
567endif
568if has("win32")
569  call append("$", "restorescreen\trestore the screen contents when exiting Vim")
570  call <SID>BinOptionG("rs", &rs)
571endif
572
573
574call <SID>Header("using the mouse")
575call append("$", "mouse\tlist of flags for using the mouse")
576call <SID>OptionG("mouse", &mouse)
577if has("gui")
578  call append("$", "mousefocus\tthe window with the mouse pointer becomes the current one")
579  call <SID>BinOptionG("mousef", &mousef)
580  call append("$", "mousehide\thide the mouse pointer while typing")
581  call <SID>BinOptionG("mh", &mh)
582endif
583call append("$", "mousemodel\t\"extend\", \"popup\" or \"popup_setpos\"; what the right")
584call append("$", "\tmouse button is used for")
585call <SID>OptionG("mousem", &mousem)
586call append("$", "mousetime\tmaximum time in msec to recognize a double-click")
587call append("$", " \tset mouset=" . &mouset)
588call append("$", "ttymouse\t\"xterm\", \"xterm2\", \"dec\" or \"netterm\"; type of mouse")
589call <SID>OptionG("ttym", &ttym)
590if has("mouseshape")
591  call append("$", "mouseshape\twhat the mouse pointer looks like in different modes")
592  call <SID>OptionG("mouses", &mouses)
593endif
594
595
596if has("gui")
597  call <SID>Header("GUI")
598  call append("$", "guifont\tlist of font names to be used in the GUI")
599  call <SID>OptionG("gfn", &gfn)
600  if has("xfontset")
601    call append("$", "guifontset\tpair of fonts to be used, for multibyte editing")
602    call <SID>OptionG("gfs", &gfs)
603  endif
604  call append("$", "guifontwide\tlist of font names to be used for double-wide characters")
605  call <SID>OptionG("gfw", &gfw)
606  if has("mac")
607    call append("$", "antialias\tuse smooth, antialiased fonts")
608    call <SID>BinOptionG("anti", &anti)
609  endif
610  call append("$", "guioptions\tlist of flags that specify how the GUI works")
611  call <SID>OptionG("go", &go)
612  if has("gui_gtk")
613    call append("$", "toolbar\t\"icons\", \"text\" and/or \"tooltips\"; how to show the toolbar")
614    call <SID>OptionG("tb", &tb)
615    if has("gui_gtk2")
616      call append("$", "toolbariconsize\tsize of toolbar icons")
617      call <SID>OptionG("tbis", &tbis)
618    endif
619    call append("$", "guiheadroom\troom (in pixels) left above/below the window")
620    call append("$", " \tset ghr=" . &ghr)
621  endif
622  if has("directx")
623    call append("$", "renderoptions\toptions for text rendering")
624    call <SID>OptionG("rop", &rop)
625  endif
626  call append("$", "guipty\tuse a pseudo-tty for I/O to external commands")
627  call <SID>BinOptionG("guipty", &guipty)
628  if has("browse")
629    call append("$", "browsedir\t\"last\", \"buffer\" or \"current\": which directory used for the file browser")
630    call <SID>OptionG("bsdir", &bsdir)
631  endif
632  if has("multi_lang")
633    call append("$", "langmenu\tlanguage to be used for the menus")
634    call <SID>OptionG("langmenu", &lm)
635  endif
636  call append("$", "menuitems\tmaximum number of items in one menu")
637  call append("$", " \tset mis=" . &mis)
638  if has("winaltkeys")
639    call append("$", "winaltkeys\t\"no\", \"yes\" or \"menu\"; how to use the ALT key")
640    call <SID>OptionG("wak", &wak)
641  endif
642  call append("$", "linespace\tnumber of pixel lines to use between characters")
643  call append("$", " \tset lsp=" . &lsp)
644  if has("balloon_eval") || has("balloon_eval_term")
645    call append("$", "balloondelay\tdelay in milliseconds before a balloon may pop up")
646    call append("$", " \tset bdlay=" . &bdlay)
647    if has("balloon_eval")
648      call append("$", "ballooneval\tuse balloon evaluation in the GUI")
649      call <SID>BinOptionG("beval", &beval)
650    endif
651    if has("balloon_eval_term")
652      call append("$", "balloonevalterm\tuse balloon evaluation in the terminal")
653      call <SID>BinOptionG("bevalterm", &beval)
654    endif
655    if has("eval")
656      call append("$", "balloonexpr\texpression to show in balloon eval")
657      call append("$", " \tset bexpr=" . &bexpr)
658    endif
659  endif
660  if exists("+macatsui")
661    call append("$", "macatsui\tuse ATSUI text drawing; disable to avoid display problems")
662    call <SID>OptionG("macatsui", &macatsui)
663  endif
664endif
665
666if has("printer")
667  call <SID>Header("printing")
668  call append("$", "printoptions\tlist of items that control the format of :hardcopy output")
669  call <SID>OptionG("popt", &popt)
670  call append("$", "printdevice\tname of the printer to be used for :hardcopy")
671  call <SID>OptionG("pdev", &pdev)
672  if has("postscript")
673    call append("$", "printexpr\texpression used to print the PostScript file for :hardcopy")
674    call <SID>OptionG("pexpr", &pexpr)
675  endif
676  call append("$", "printfont\tname of the font to be used for :hardcopy")
677  call <SID>OptionG("pfn", &pfn)
678  call append("$", "printheader\tformat of the header used for :hardcopy")
679  call <SID>OptionG("pheader", &pheader)
680  if has("postscript")
681    call append("$", "printencoding\tencoding used to print the PostScript file for :hardcopy")
682    call <SID>OptionG("penc", &penc)
683  endif
684  if has("multi_byte")
685    call append("$", "printmbcharset\tthe CJK character set to be used for CJK output from :hardcopy")
686    call <SID>OptionG("pmbcs", &pmbcs)
687    call append("$", "printmbfont\tlist of font names to be used for CJK output from :hardcopy")
688    call <SID>OptionG("pmbfn", &pmbfn)
689  endif
690endif
691
692call <SID>Header("messages and info")
693call append("$", "terse\tadd 's' flag in 'shortmess' (don't show search message)")
694call <SID>BinOptionG("terse", &terse)
695call append("$", "shortmess\tlist of flags to make messages shorter")
696call <SID>OptionG("shm", &shm)
697call append("$", "showcmd\tshow (partial) command keys in the status line")
698let &sc = s:old_sc
699call <SID>BinOptionG("sc", &sc)
700set nosc
701call append("$", "showmode\tdisplay the current mode in the status line")
702call <SID>BinOptionG("smd", &smd)
703call append("$", "ruler\tshow cursor position below each window")
704let &ru = s:old_ru
705call <SID>BinOptionG("ru", &ru)
706set noru
707if has("statusline")
708  call append("$", "rulerformat\talternate format to be used for the ruler")
709  call <SID>OptionG("ruf", &ruf)
710endif
711call append("$", "report\tthreshold for reporting number of changed lines")
712call append("$", " \tset report=" . &report)
713call append("$", "verbose\tthe higher the more messages are given")
714call append("$", " \tset vbs=" . &vbs)
715call append("$", "verbosefile\tfile to write messages in")
716call <SID>OptionG("vfile", &vfile)
717call append("$", "more\tpause listings when the screen is full")
718call <SID>BinOptionG("more", &more)
719if has("dialog_con") || has("dialog_gui")
720  call append("$", "confirm\tstart a dialog when a command fails")
721  call <SID>BinOptionG("cf", &cf)
722endif
723call append("$", "errorbells\tring the bell for error messages")
724call <SID>BinOptionG("eb", &eb)
725call append("$", "visualbell\tuse a visual bell instead of beeping")
726call <SID>BinOptionG("vb", &vb)
727call append("$", "belloff\tdo not ring the bell for these reasons")
728call <SID>OptionG("belloff", &belloff)
729if has("multi_lang")
730  call append("$", "helplang\tlist of preferred languages for finding help")
731  call <SID>OptionG("hlg", &hlg)
732endif
733
734
735call <SID>Header("selecting text")
736call append("$", "selection\t\"old\", \"inclusive\" or \"exclusive\"; how selecting text behaves")
737call <SID>OptionG("sel", &sel)
738call append("$", "selectmode\t\"mouse\", \"key\" and/or \"cmd\"; when to start Select mode")
739call append("$", "\tinstead of Visual mode")
740call <SID>OptionG("slm", &slm)
741if has("clipboard")
742  call append("$", "clipboard\t\"unnamed\" to use the * register like unnamed register")
743  call append("$", "\t\"autoselect\" to always put selected text on the clipboard")
744  call <SID>OptionG("cb", &cb)
745endif
746call append("$", "keymodel\t\"startsel\" and/or \"stopsel\"; what special keys can do")
747call <SID>OptionG("km", &km)
748
749
750call <SID>Header("editing text")
751call append("$", "undolevels\tmaximum number of changes that can be undone")
752call append("$", "\t(global or local to buffer)")
753call append("$", " \tset ul=" . s:old_ul)
754call append("$", "undofile\tautomatically save and restore undo history")
755call <SID>BinOptionG("udf", &udf)
756call append("$", "undodir\tlist of directories for undo files")
757call <SID>OptionG("udir", &udir)
758call append("$", "undoreload\tmaximum number lines to save for undo on a buffer reload")
759call append("$", " \tset ur=" . &ur)
760call append("$", "modified\tchanges have been made and not written to a file")
761call append("$", "\t(local to buffer)")
762call <SID>BinOptionL("mod")
763call append("$", "readonly\tbuffer is not to be written")
764call append("$", "\t(local to buffer)")
765call <SID>BinOptionL("ro")
766call append("$", "modifiable\tchanges to the text are not possible")
767call append("$", "\t(local to buffer)")
768call <SID>BinOptionL("ma")
769call append("$", "textwidth\tline length above which to break a line")
770call append("$", "\t(local to buffer)")
771call <SID>OptionL("tw")
772call append("$", "wrapmargin\tmargin from the right in which to break a line")
773call append("$", "\t(local to buffer)")
774call <SID>OptionL("wm")
775call append("$", "backspace\tspecifies what <BS>, CTRL-W, etc. can do in Insert mode")
776call append("$", " \tset bs=" . &bs)
777call append("$", "comments\tdefinition of what comment lines look like")
778call append("$", "\t(local to buffer)")
779call <SID>OptionL("com")
780call append("$", "formatoptions\tlist of flags that tell how automatic formatting works")
781call append("$", "\t(local to buffer)")
782call <SID>OptionL("fo")
783call append("$", "formatlistpat\tpattern to recognize a numbered list")
784call append("$", "\t(local to buffer)")
785call <SID>OptionL("flp")
786if has("eval")
787  call append("$", "formatexpr\texpression used for \"gq\" to format lines")
788  call append("$", "\t(local to buffer)")
789  call <SID>OptionL("fex")
790endif
791if has("insert_expand")
792  call append("$", "complete\tspecifies how Insert mode completion works for CTRL-N and CTRL-P")
793  call append("$", "\t(local to buffer)")
794  call <SID>OptionL("cpt")
795  call append("$", "completeopt\twhether to use a popup menu for Insert mode completion")
796  call <SID>OptionG("cot", &cot)
797  call append("$", "pumheight\tmaximum height of the popup menu")
798  call <SID>OptionG("ph", &ph)
799  call append("$", "pumwidth\tminimum width of the popup menu")
800  call <SID>OptionG("pw", &pw)
801  call append("$", "completefunc\tuser defined function for Insert mode completion")
802  call append("$", "\t(local to buffer)")
803  call <SID>OptionL("cfu")
804  call append("$", "omnifunc\tfunction for filetype-specific Insert mode completion")
805  call append("$", "\t(local to buffer)")
806  call <SID>OptionL("ofu")
807  call append("$", "dictionary\tlist of dictionary files for keyword completion")
808  call append("$", "\t(global or local to buffer)")
809  call <SID>OptionG("dict", &dict)
810  call append("$", "thesaurus\tlist of thesaurus files for keyword completion")
811  call append("$", "\t(global or local to buffer)")
812  call <SID>OptionG("tsr", &tsr)
813endif
814call append("$", "infercase\tadjust case of a keyword completion match")
815call append("$", "\t(local to buffer)")
816call <SID>BinOptionL("inf")
817if has("digraphs")
818  call append("$", "digraph\tenable entering digraphs with c1 <BS> c2")
819  call <SID>BinOptionG("dg", &dg)
820endif
821call append("$", "tildeop\tthe \"~\" command behaves like an operator")
822call <SID>BinOptionG("top", &top)
823call append("$", "operatorfunc\tfunction called for the\"g@\"  operator")
824call <SID>OptionG("opfunc", &opfunc)
825call append("$", "showmatch\twhen inserting a bracket, briefly jump to its match")
826call <SID>BinOptionG("sm", &sm)
827call append("$", "matchtime\ttenth of a second to show a match for 'showmatch'")
828call append("$", " \tset mat=" . &mat)
829call append("$", "matchpairs\tlist of pairs that match for the \"%\" command")
830call append("$", "\t(local to buffer)")
831call <SID>OptionL("mps")
832call append("$", "joinspaces\tuse two spaces after '.' when joining a line")
833call <SID>BinOptionG("js", &js)
834call append("$", "nrformats\t\"alpha\", \"octal\" and/or \"hex\"; number formats recognized for")
835call append("$", "\tCTRL-A and CTRL-X commands")
836call append("$", "\t(local to buffer)")
837call <SID>OptionL("nf")
838
839
840call <SID>Header("tabs and indenting")
841call append("$", "tabstop\tnumber of spaces a <Tab> in the text stands for")
842call append("$", "\t(local to buffer)")
843call <SID>OptionL("ts")
844call append("$", "shiftwidth\tnumber of spaces used for each step of (auto)indent")
845call append("$", "\t(local to buffer)")
846call <SID>OptionL("sw")
847if has("vartabs")
848  call append("$", "vartabstop\tlist of number of spaces a tab counts for")
849  call append("$", "\t(local to buffer)")
850  call <SID>OptionL("vts")
851  call append("$", "varsofttabstop\tlist of number of spaces a soft tabsstop counts for")
852  call append("$", "\t(local to buffer)")
853  call <SID>OptionL("vsts")
854endif
855call append("$", "smarttab\ta <Tab> in an indent inserts 'shiftwidth' spaces")
856call <SID>BinOptionG("sta", &sta)
857call append("$", "softtabstop\tif non-zero, number of spaces to insert for a <Tab>")
858call append("$", "\t(local to buffer)")
859call <SID>OptionL("sts")
860call append("$", "shiftround\tround to 'shiftwidth' for \"<<\" and \">>\"")
861call <SID>BinOptionG("sr", &sr)
862call append("$", "expandtab\texpand <Tab> to spaces in Insert mode")
863call append("$", "\t(local to buffer)")
864call <SID>BinOptionL("et")
865call append("$", "autoindent\tautomatically set the indent of a new line")
866call append("$", "\t(local to buffer)")
867call <SID>BinOptionL("ai")
868if has("smartindent")
869  call append("$", "smartindent\tdo clever autoindenting")
870  call append("$", "\t(local to buffer)")
871  call <SID>BinOptionL("si")
872endif
873if has("cindent")
874  call append("$", "cindent\tenable specific indenting for C code")
875  call append("$", "\t(local to buffer)")
876  call <SID>BinOptionL("cin")
877  call append("$", "cinoptions\toptions for C-indenting")
878  call append("$", "\t(local to buffer)")
879  call <SID>OptionL("cino")
880  call append("$", "cinkeys\tkeys that trigger C-indenting in Insert mode")
881  call append("$", "\t(local to buffer)")
882  call <SID>OptionL("cink")
883  call append("$", "cinwords\tlist of words that cause more C-indent")
884  call append("$", "\t(local to buffer)")
885  call <SID>OptionL("cinw")
886  call append("$", "indentexpr\texpression used to obtain the indent of a line")
887  call append("$", "\t(local to buffer)")
888  call <SID>OptionL("inde")
889  call append("$", "indentkeys\tkeys that trigger indenting with 'indentexpr' in Insert mode")
890  call append("$", "\t(local to buffer)")
891  call <SID>OptionL("indk")
892endif
893call append("$", "copyindent\tcopy whitespace for indenting from previous line")
894call append("$", "\t(local to buffer)")
895call <SID>BinOptionL("ci")
896call append("$", "preserveindent\tpreserve kind of whitespace when changing indent")
897call append("$", "\t(local to buffer)")
898call <SID>BinOptionL("pi")
899if has("lispindent")
900  call append("$", "lisp\tenable lisp mode")
901  call append("$", "\t(local to buffer)")
902  call <SID>BinOptionL("lisp")
903  call append("$", "lispwords\twords that change how lisp indenting works")
904  call <SID>OptionL("lw")
905endif
906
907
908if has("folding")
909  call <SID>Header("folding")
910  call append("$", "foldenable\tset to display all folds open")
911  call append("$", "\t(local to window)")
912  call <SID>BinOptionL("fen")
913  call append("$", "foldlevel\tfolds with a level higher than this number will be closed")
914  call append("$", "\t(local to window)")
915  call <SID>OptionL("fdl")
916  call append("$", "foldlevelstart\tvalue for 'foldlevel' when starting to edit a file")
917  call append("$", " \tset fdls=" . &fdls)
918  call append("$", "foldcolumn\twidth of the column used to indicate folds")
919  call append("$", "\t(local to window)")
920  call <SID>OptionL("fdc")
921  call append("$", "foldtext\texpression used to display the text of a closed fold")
922  call append("$", "\t(local to window)")
923  call <SID>OptionL("fdt")
924  call append("$", "foldclose\tset to \"all\" to close a fold when the cursor leaves it")
925  call <SID>OptionG("fcl", &fcl)
926  call append("$", "foldopen\tspecifies for which commands a fold will be opened")
927  call <SID>OptionG("fdo", &fdo)
928  call append("$", "foldminlines\tminimum number of screen lines for a fold to be closed")
929  call append("$", "\t(local to window)")
930  call <SID>OptionL("fml")
931  call append("$", "commentstring\ttemplate for comments; used to put the marker in")
932  call <SID>OptionL("cms")
933  call append("$", "foldmethod\tfolding type: \"manual\", \"indent\", \"expr\", \"marker\" or \"syntax\"")
934  call append("$", "\t(local to window)")
935  call <SID>OptionL("fdm")
936  call append("$", "foldexpr\texpression used when 'foldmethod' is \"expr\"")
937  call append("$", "\t(local to window)")
938  call <SID>OptionL("fde")
939  call append("$", "foldignore\tused to ignore lines when 'foldmethod' is \"indent\"")
940  call append("$", "\t(local to window)")
941  call <SID>OptionL("fdi")
942  call append("$", "foldmarker\tmarkers used when 'foldmethod' is \"marker\"")
943  call append("$", "\t(local to window)")
944  call <SID>OptionL("fmr")
945  call append("$", "foldnestmax\tmaximum fold depth for when 'foldmethod' is \"indent\" or \"syntax\"")
946  call append("$", "\t(local to window)")
947  call <SID>OptionL("fdn")
948endif
949
950
951if has("diff")
952  call <SID>Header("diff mode")
953  call append("$", "diff\tuse diff mode for the current window")
954  call append("$", "\t(local to window)")
955  call <SID>BinOptionL("diff")
956  call append("$", "diffopt\toptions for using diff mode")
957  call <SID>OptionG("dip", &dip)
958  call append("$", "diffexpr\texpression used to obtain a diff file")
959  call <SID>OptionG("dex", &dex)
960  call append("$", "patchexpr\texpression used to patch a file")
961  call <SID>OptionG("pex", &pex)
962endif
963
964
965call <SID>Header("mapping")
966call append("$", "maxmapdepth\tmaximum depth of mapping")
967call append("$", " \tset mmd=" . &mmd)
968call append("$", "remap\trecognize mappings in mapped keys")
969call <SID>BinOptionG("remap", &remap)
970call append("$", "timeout\tallow timing out halfway into a mapping")
971call <SID>BinOptionG("to", &to)
972call append("$", "ttimeout\tallow timing out halfway into a key code")
973call <SID>BinOptionG("ttimeout", &ttimeout)
974call append("$", "timeoutlen\ttime in msec for 'timeout'")
975call append("$", " \tset tm=" . &tm)
976call append("$", "ttimeoutlen\ttime in msec for 'ttimeout'")
977call append("$", " \tset ttm=" . &ttm)
978
979
980call <SID>Header("reading and writing files")
981call append("$", "modeline\tenable using settings from modelines when reading a file")
982call append("$", "\t(local to buffer)")
983call <SID>BinOptionL("ml")
984call append("$", "modelines\tnumber of lines to check for modelines")
985call append("$", " \tset mls=" . &mls)
986call append("$", "binary\tbinary file editing")
987call append("$", "\t(local to buffer)")
988call <SID>BinOptionL("bin")
989call append("$", "endofline\tlast line in the file has an end-of-line")
990call append("$", "\t(local to buffer)")
991call <SID>BinOptionL("eol")
992call append("$", "fixendofline\tfixes missing end-of-line at end of text file")
993call append("$", "\t(local to buffer)")
994call <SID>BinOptionL("fixeol")
995if has("multi_byte")
996  call append("$", "bomb\tprepend a Byte Order Mark to the file")
997  call append("$", "\t(local to buffer)")
998  call <SID>BinOptionL("bomb")
999endif
1000call append("$", "fileformat\tend-of-line format: \"dos\", \"unix\" or \"mac\"")
1001call append("$", "\t(local to buffer)")
1002call <SID>OptionL("ff")
1003call append("$", "fileformats\tlist of file formats to look for when editing a file")
1004call <SID>OptionG("ffs", &ffs)
1005call append("$", "textmode\tobsolete, use 'fileformat'")
1006call append("$", "\t(local to buffer)")
1007call <SID>BinOptionL("tx")
1008call append("$", "textauto\tobsolete, use 'fileformats'")
1009call <SID>BinOptionG("ta", &ta)
1010call append("$", "write\twriting files is allowed")
1011call <SID>BinOptionG("write", &write)
1012call append("$", "writebackup\twrite a backup file before overwriting a file")
1013call <SID>BinOptionG("wb", &wb)
1014call append("$", "backup\tkeep a backup after overwriting a file")
1015call <SID>BinOptionG("bk", &bk)
1016call append("$", "backupskip\tpatterns that specify for which files a backup is not made")
1017call append("$", " \tset bsk=" . &bsk)
1018call append("$", "backupcopy\twhether to make the backup as a copy or rename the existing file")
1019call append("$", "\t(global or local to buffer)")
1020call append("$", " \tset bkc=" . &bkc)
1021call append("$", "backupdir\tlist of directories to put backup files in")
1022call <SID>OptionG("bdir", &bdir)
1023call append("$", "backupext\tfile name extension for the backup file")
1024call <SID>OptionG("bex", &bex)
1025call append("$", "autowrite\tautomatically write a file when leaving a modified buffer")
1026call <SID>BinOptionG("aw", &aw)
1027call append("$", "autowriteall\tas 'autowrite', but works with more commands")
1028call <SID>BinOptionG("awa", &awa)
1029call append("$", "writeany\talways write without asking for confirmation")
1030call <SID>BinOptionG("wa", &wa)
1031call append("$", "autoread\tautomatically read a file when it was modified outside of Vim")
1032call append("$", "\t(global or local to buffer)")
1033call <SID>BinOptionG("ar", &ar)
1034call append("$", "patchmode\tkeep oldest version of a file; specifies file name extension")
1035call <SID>OptionG("pm", &pm)
1036call append("$", "fsync\tforcibly sync the file to disk after writing it")
1037call <SID>BinOptionG("fs", &fs)
1038call append("$", "shortname\tuse 8.3 file names")
1039call append("$", "\t(local to buffer)")
1040call <SID>BinOptionL("sn")
1041call append("$", "cryptmethod\tencryption method for file writing: zip or blowfish")
1042call append("$", "\t(local to buffer)")
1043call <SID>OptionL("cm")
1044
1045
1046call <SID>Header("the swap file")
1047call append("$", "directory\tlist of directories for the swap file")
1048call <SID>OptionG("dir", &dir)
1049call append("$", "swapfile\tuse a swap file for this buffer")
1050call append("$", "\t(local to buffer)")
1051call <SID>BinOptionL("swf")
1052call append("$", "swapsync\t\"sync\", \"fsync\" or empty; how to flush a swap file to disk")
1053call <SID>OptionG("sws", &sws)
1054call append("$", "updatecount\tnumber of characters typed to cause a swap file update")
1055call append("$", " \tset uc=" . &uc)
1056call append("$", "updatetime\ttime in msec after which the swap file will be updated")
1057call append("$", " \tset ut=" . &ut)
1058call append("$", "maxmem\tmaximum amount of memory in Kbyte used for one buffer")
1059call append("$", " \tset mm=" . &mm)
1060call append("$", "maxmemtot\tmaximum amount of memory in Kbyte used for all buffers")
1061call append("$", " \tset mmt=" . &mmt)
1062
1063
1064call <SID>Header("command line editing")
1065call append("$", "history\thow many command lines are remembered ")
1066call append("$", " \tset hi=" . &hi)
1067call append("$", "wildchar\tkey that triggers command-line expansion")
1068call append("$", " \tset wc=" . &wc)
1069call append("$", "wildcharm\tlike 'wildchar' but can also be used in a mapping")
1070call append("$", " \tset wcm=" . &wcm)
1071call append("$", "wildmode\tspecifies how command line completion works")
1072call <SID>OptionG("wim", &wim)
1073if has("wildoptions")
1074  call append("$", "wildoptions\tempty or \"tagfile\" to list file name of matching tags")
1075  call <SID>OptionG("wop", &wop)
1076endif
1077call append("$", "suffixes\tlist of file name extensions that have a lower priority")
1078call <SID>OptionG("su", &su)
1079if has("file_in_path")
1080  call append("$", "suffixesadd\tlist of file name extensions added when searching for a file")
1081  call append("$", "\t(local to buffer)")
1082  call <SID>OptionL("sua")
1083endif
1084if has("wildignore")
1085  call append("$", "wildignore\tlist of patterns to ignore files for file name completion")
1086  call <SID>OptionG("wig", &wig)
1087endif
1088call append("$", "fileignorecase\tignore case when using file names")
1089call <SID>BinOptionG("fic", &fic)
1090call append("$", "wildignorecase\tignore case when completing file names")
1091call <SID>BinOptionG("wic", &wic)
1092if has("wildmenu")
1093  call append("$", "wildmenu\tcommand-line completion shows a list of matches")
1094  call <SID>BinOptionG("wmnu", &wmnu)
1095endif
1096call append("$", "cedit\tkey used to open the command-line window")
1097call <SID>OptionG("cedit", &cedit)
1098call append("$", "cmdwinheight\theight of the command-line window")
1099call <SID>OptionG("cwh", &cwh)
1100
1101
1102call <SID>Header("executing external commands")
1103call append("$", "shell\tname of the shell program used for external commands")
1104call <SID>OptionG("sh", &sh)
1105if has("amiga")
1106  call append("$", "shelltype\twhen to use the shell or directly execute a command")
1107  call append("$", " \tset st=" . &st)
1108endif
1109call append("$", "shellquote\tcharacter(s) to enclose a shell command in")
1110call <SID>OptionG("shq", &shq)
1111call append("$", "shellxquote\tlike 'shellquote' but include the redirection")
1112call <SID>OptionG("sxq", &sxq)
1113call append("$", "shellxescape\tcharacters to escape when 'shellxquote' is (")
1114call <SID>OptionG("sxe", &sxe)
1115call append("$", "shellcmdflag\targument for 'shell' to execute a command")
1116call <SID>OptionG("shcf", &shcf)
1117call append("$", "shellredir\tused to redirect command output to a file")
1118call <SID>OptionG("srr", &srr)
1119call append("$", "shelltemp\tuse a temp file for shell commands instead of using a pipe")
1120call <SID>BinOptionG("stmp", &stmp)
1121call append("$", "equalprg\tprogram used for \"=\" command")
1122call append("$", "\t(global or local to buffer)")
1123call <SID>OptionG("ep", &ep)
1124call append("$", "formatprg\tprogram used to format lines with \"gq\" command")
1125call <SID>OptionG("fp", &fp)
1126call append("$", "keywordprg\tprogram used for the \"K\" command")
1127call <SID>OptionG("kp", &kp)
1128call append("$", "warn\twarn when using a shell command and a buffer has changes")
1129call <SID>BinOptionG("warn", &warn)
1130
1131
1132if has("quickfix")
1133  call <SID>Header("running make and jumping to errors")
1134  call append("$", "errorfile\tname of the file that contains error messages")
1135  call <SID>OptionG("ef", &ef)
1136  call append("$", "errorformat\tlist of formats for error messages")
1137  call append("$", "\t(global or local to buffer)")
1138  call <SID>OptionG("efm", &efm)
1139  call append("$", "makeprg\tprogram used for the \":make\" command")
1140  call append("$", "\t(global or local to buffer)")
1141  call <SID>OptionG("mp", &mp)
1142  call append("$", "shellpipe\tstring used to put the output of \":make\" in the error file")
1143  call <SID>OptionG("sp", &sp)
1144  call append("$", "makeef\tname of the errorfile for the 'makeprg' command")
1145  call <SID>OptionG("mef", &mef)
1146  call append("$", "grepprg\tprogram used for the \":grep\" command")
1147  call append("$", "\t(global or local to buffer)")
1148  call <SID>OptionG("gp", &gp)
1149  call append("$", "grepformat\tlist of formats for output of 'grepprg'")
1150  call <SID>OptionG("gfm", &gfm)
1151  call append("$", "makeencoding\tencoding of the \":make\" and \":grep\" output")
1152  call append("$", "\t(global or local to buffer)")
1153  call <SID>OptionG("menc", &menc)
1154endif
1155
1156
1157if has("win32") || has("osfiletype")
1158  call <SID>Header("system specific")
1159  if has("osfiletype")
1160    call append("$", "osfiletype\tOS-specific information about the type of file")
1161    call append("$", "\t(local to buffer)")
1162    call <SID>OptionL("oft")
1163  endif
1164  if has("win32")
1165    call append("$", "shellslash\tuse forward slashes in file names; for Unix-like shells")
1166    call <SID>BinOptionG("ssl", &ssl)
1167  endif
1168endif
1169
1170
1171call <SID>Header("language specific")
1172call append("$", "isfname\tspecifies the characters in a file name")
1173call <SID>OptionG("isf", &isf)
1174call append("$", "isident\tspecifies the characters in an identifier")
1175call <SID>OptionG("isi", &isi)
1176call append("$", "iskeyword\tspecifies the characters in a keyword")
1177call append("$", "\t(local to buffer)")
1178call <SID>OptionL("isk")
1179call append("$", "isprint\tspecifies printable characters")
1180call <SID>OptionG("isp", &isp)
1181if has("textobjects")
1182  call append("$", "quoteescape\tspecifies escape characters in a string")
1183  call append("$", "\t(local to buffer)")
1184  call <SID>OptionL("qe")
1185endif
1186if has("rightleft")
1187  call append("$", "rightleft\tdisplay the buffer right-to-left")
1188  call append("$", "\t(local to window)")
1189  call <SID>BinOptionL("rl")
1190  call append("$", "rightleftcmd\twhen to edit the command-line right-to-left")
1191  call append("$", "\t(local to window)")
1192  call <SID>OptionL("rlc")
1193  call append("$", "revins\tinsert characters backwards")
1194  call <SID>BinOptionG("ri", &ri)
1195  call append("$", "allowrevins\tallow CTRL-_ in Insert and Command-line mode to toggle 'revins'")
1196  call <SID>BinOptionG("ari", &ari)
1197  call append("$", "aleph\tthe ASCII code for the first letter of the Hebrew alphabet")
1198  call append("$", " \tset al=" . &al)
1199  call append("$", "hkmap\tuse Hebrew keyboard mapping")
1200  call <SID>BinOptionG("hk", &hk)
1201  call append("$", "hkmapp\tuse phonetic Hebrew keyboard mapping")
1202  call <SID>BinOptionG("hkp", &hkp)
1203endif
1204if has("farsi")
1205  call append("$", "altkeymap\tuse Farsi as the second language when 'revins' is set")
1206  call <SID>BinOptionG("akm", &akm)
1207  call append("$", "fkmap\tuse Farsi keyboard mapping")
1208  call <SID>BinOptionG("fk", &fk)
1209endif
1210if has("arabic")
1211  call append("$", "arabic\tprepare for editing Arabic text")
1212  call append("$", "\t(local to window)")
1213  call <SID>BinOptionL("arab")
1214  call append("$", "arabicshape\tperform shaping of Arabic characters")
1215  call <SID>BinOptionG("arshape", &arshape)
1216  call append("$", "termbidi\tterminal will perform bidi handling")
1217  call <SID>BinOptionG("tbidi", &tbidi)
1218endif
1219if has("keymap")
1220  call append("$", "keymap\tname of a keyboard mapping")
1221  call <SID>OptionL("kmp")
1222endif
1223if has("langmap")
1224  call append("$", "langmap\tlist of characters that are translated in Normal mode")
1225  call <SID>OptionG("lmap", &lmap)
1226  call append("$", "langremap\tapply 'langmap' to mapped characters")
1227  call <SID>BinOptionG("lrm", &lrm)
1228endif
1229if has("xim")
1230  call append("$", "imdisable\twhen set never use IM; overrules following IM options")
1231  call <SID>BinOptionG("imd", &imd)
1232endif
1233call append("$", "iminsert\tin Insert mode: 1: use :lmap; 2: use IM; 0: neither")
1234call append("$", "\t(local to window)")
1235call <SID>OptionL("imi")
1236call append("$", "imstyle\tinput method style, 0: on-the-spot, 1: over-the-spot")
1237call <SID>OptionG("imst", &imst)
1238call append("$", "imsearch\tentering a search pattern: 1: use :lmap; 2: use IM; 0: neither")
1239call append("$", "\t(local to window)")
1240call <SID>OptionL("ims")
1241if has("xim")
1242  call append("$", "imcmdline\twhen set always use IM when starting to edit a command line")
1243  call <SID>BinOptionG("imc", &imc)
1244  call append("$", "imstatusfunc\tfunction to obtain IME status")
1245  call <SID>OptionG("imsf", &imsf)
1246  call append("$", "imactivatefunc\tfunction to enable/disable IME")
1247  call <SID>OptionG("imaf", &imaf)
1248endif
1249
1250
1251if has("multi_byte")
1252  call <SID>Header("multi-byte characters")
1253  call append("$", "encoding\tcharacter encoding used in Vim: \"latin1\", \"utf-8\"")
1254  call append("$", "\t\"euc-jp\", \"big5\", etc.")
1255  call <SID>OptionG("enc", &enc)
1256  call append("$", "fileencoding\tcharacter encoding for the current file")
1257  call append("$", "\t(local to buffer)")
1258  call <SID>OptionL("fenc")
1259  call append("$", "fileencodings\tautomatically detected character encodings")
1260  call <SID>OptionG("fencs", &fencs)
1261  call append("$", "termencoding\tcharacter encoding used by the terminal")
1262  call <SID>OptionG("tenc", &tenc)
1263  call append("$", "charconvert\texpression used for character encoding conversion")
1264  call <SID>OptionG("ccv", &ccv)
1265  call append("$", "delcombine\tdelete combining (composing) characters on their own")
1266  call <SID>BinOptionG("deco", &deco)
1267  call append("$", "maxcombine\tmaximum number of combining (composing) characters displayed")
1268  call <SID>OptionG("mco", &mco)
1269  if has("xim") && has("gui_gtk")
1270    call append("$", "imactivatekey\tkey that activates the X input method")
1271    call <SID>OptionG("imak", &imak)
1272  endif
1273  call append("$", "ambiwidth\twidth of ambiguous width characters")
1274  call <SID>OptionG("ambw", &ambw)
1275  call append("$", "emoji\temoji characters are full width")
1276  call <SID>BinOptionG("emo", &emo)
1277endif
1278
1279
1280call <SID>Header("various")
1281call append("$", "virtualedit\twhen to use virtual editing: \"block\", \"insert\" and/or \"all\"")
1282call <SID>OptionG("ve", &ve)
1283call append("$", "eventignore\tlist of autocommand events which are to be ignored")
1284call <SID>OptionG("ei", &ei)
1285call append("$", "loadplugins\tload plugin scripts when starting up")
1286call <SID>BinOptionG("lpl", &lpl)
1287call append("$", "exrc\tenable reading .vimrc/.exrc/.gvimrc in the current directory")
1288call <SID>BinOptionG("ex", &ex)
1289call append("$", "secure\tsafer working with script files in the current directory")
1290call <SID>BinOptionG("secure", &secure)
1291call append("$", "gdefault\tuse the 'g' flag for \":substitute\"")
1292call <SID>BinOptionG("gd", &gd)
1293call append("$", "edcompatible\t'g' and 'c' flags of \":substitute\" toggle")
1294call <SID>BinOptionG("ed", &ed)
1295if exists("+opendevice")
1296  call append("$", "opendevice\tallow reading/writing devices")
1297  call <SID>BinOptionG("odev", &odev)
1298endif
1299if exists("+maxfuncdepth")
1300  call append("$", "maxfuncdepth\tmaximum depth of function calls")
1301  call append("$", " \tset mfd=" . &mfd)
1302endif
1303if has("mksession")
1304  call append("$", "sessionoptions\tlist of words that specifies what to put in a session file")
1305  call <SID>OptionG("ssop", &ssop)
1306  call append("$", "viewoptions\tlist of words that specifies what to save for :mkview")
1307  call <SID>OptionG("vop", &vop)
1308  call append("$", "viewdir\tdirectory where to store files with :mkview")
1309  call <SID>OptionG("vdir", &vdir)
1310endif
1311if has("viminfo")
1312  call append("$", "viminfo\tlist that specifies what to write in the viminfo file")
1313  call <SID>OptionG("vi", &vi)
1314  call append("$", "viminfofile\tfile name used for the viminfo file")
1315  call <SID>OptionG("vif", &vif)
1316endif
1317if has("quickfix")
1318  call append("$", "bufhidden\twhat happens with a buffer when it's no longer in a window")
1319  call append("$", "\t(local to buffer)")
1320  call <SID>OptionL("bh")
1321  call append("$", "buftype\t\"\", \"nofile\", \"nowrite\" or \"quickfix\": type of buffer")
1322  call append("$", "\t(local to buffer)")
1323  call <SID>OptionL("bt")
1324endif
1325call append("$", "buflisted\twhether the buffer shows up in the buffer list")
1326call append("$", "\t(local to buffer)")
1327call <SID>BinOptionL("bl")
1328call append("$", "debug\tset to \"msg\" to see all error messages")
1329call append("$", " \tset debug=" . &debug)
1330if has("signs")
1331  call append("$", "signcolumn\twhether to show the signcolumn")
1332  call append("$", "\t(local to window)")
1333  call <SID>OptionL("scl")
1334endif
1335if has("mzscheme")
1336  call append("$", "mzquantum\tinterval in milliseconds between polls for MzScheme threads")
1337  call append("$", " \tset mzq=" . &mzq)
1338endif
1339if exists("&luadll")
1340  call append("$", "luadll\tname of the Lua dynamic library")
1341  call <SID>OptionG("luadll", &luadll)
1342endif
1343if exists("&perldll")
1344  call append("$", "perldll\tname of the Perl dynamic library")
1345  call <SID>OptionG("perldll", &perldll)
1346endif
1347if has('pythonx')
1348  call append("$", "pyxversion\twhether to use Python 2 or 3")
1349  call append("$", " \tset pyx=" . &wd)
1350endif
1351if exists("&pythondll")
1352  call append("$", "pythondll\tname of the Python 2 dynamic library")
1353  call <SID>OptionG("pythondll", &pythondll)
1354endif
1355if exists("&pythonhome")
1356  call append("$", "pythonhome\tname of the Python 2 home directory")
1357  call <SID>OptionG("pythonhome", &pythonhome)
1358endif
1359if exists("&pythonthreedll")
1360  call append("$", "pythonthreedll\tname of the Python 3 dynamic library")
1361  call <SID>OptionG("pythonthreedll", &pythonthreedll)
1362endif
1363if exists("&pythonthreehome")
1364  call append("$", "pythonthreehome\tname of the Python 3 home directory")
1365  call <SID>OptionG("pythonthreehome", &pythonthreehome)
1366endif
1367if exists("&rubydll")
1368  call append("$", "rubydll\tname of the Ruby dynamic library")
1369  call <SID>OptionG("rubydll", &rubydll)
1370endif
1371if exists("&tcldll")
1372  call append("$", "tcldll\tname of the Tcl dynamic library")
1373  call <SID>OptionG("tcldll", &tcldll)
1374endif
1375if exists("&mzschemedll")
1376  call append("$", "mzschemedll\tname of the Tcl dynamic library")
1377  call <SID>OptionG("mzschemedll", &mzschemedll)
1378  call append("$", "mzschemegcdll\tname of the Tcl GC dynamic library")
1379  call <SID>OptionG("mzschemegcdll", &mzschemegcdll)
1380endif
1381
1382set cpo&vim
1383
1384" go to first line
13851
1386
1387" reset 'modified', so that ":q" can be used to close the window
1388setlocal nomodified
1389
1390if has("syntax")
1391  " Use Vim highlighting, with some additional stuff
1392  setlocal ft=vim
1393  syn match optwinHeader "^ \=[0-9].*"
1394  syn match optwinName "^[a-z]*\t" nextgroup=optwinComment
1395  syn match optwinComment ".*" contained
1396  syn match optwinComment "^\t.*"
1397  if !exists("did_optwin_syntax_inits")
1398    let did_optwin_syntax_inits = 1
1399    hi link optwinHeader Title
1400    hi link optwinName Identifier
1401    hi link optwinComment Comment
1402  endif
1403endif
1404
1405" Install autocommands to enable mappings in option-window
1406noremap <silent> <buffer> <CR> <C-\><C-N>:call <SID>CR()<CR>
1407inoremap <silent> <buffer> <CR> <Esc>:call <SID>CR()<CR>
1408noremap <silent> <buffer> <Space> :call <SID>Space()<CR>
1409
1410" Make the buffer be deleted when the window is closed.
1411setlocal buftype=nofile bufhidden=delete noswapfile
1412
1413augroup optwin
1414  au! BufUnload,BufHidden option-window nested
1415	\ call <SID>unload() | delfun <SID>unload
1416augroup END
1417
1418fun! <SID>unload()
1419  delfun <SID>CR
1420  delfun <SID>Space
1421  delfun <SID>Find
1422  delfun <SID>Update
1423  delfun <SID>OptionL
1424  delfun <SID>OptionG
1425  delfun <SID>BinOptionL
1426  delfun <SID>BinOptionG
1427  delfun <SID>Header
1428  au! optwin
1429endfun
1430
1431" Restore the previous value of 'title' and 'icon'.
1432let &title = s:old_title
1433let &icon = s:old_icon
1434let &ru = s:old_ru
1435let &sc = s:old_sc
1436let &cpo = s:cpo_save
1437let &ul = s:old_ul
1438unlet s:old_title s:old_icon s:old_ru s:old_sc s:cpo_save s:idx s:lnum s:old_ul
1439
1440" vim: ts=8 sw=2 sts=2
1441