xref: /vim-8.2.3635/runtime/optwin.vim (revision 4c05fa08)
1" These commands create the option window.
2"
3" Maintainer:	Bram Moolenaar <[email protected]>
4" Last Change:	2018 May 15
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)
398if has("autocmd")
399  call append("$", "filetype\ttype of file; triggers the FileType event when set")
400  call append("$", "\t(local to buffer)")
401  call <SID>OptionL("ft")
402endif
403if has("syntax")
404  call append("$", "syntax\tname of syntax highlighting used")
405  call append("$", "\t(local to buffer)")
406  call <SID>OptionL("syn")
407  call append("$", "synmaxcol\tmaximum column to look for syntax items")
408  call append("$", "\t(local to buffer)")
409  call <SID>OptionL("smc")
410endif
411call append("$", "highlight\twhich highlighting to use for various occasions")
412call <SID>OptionG("hl", &hl)
413call append("$", "hlsearch\thighlight all matches for the last used search pattern")
414call <SID>BinOptionG("hls", &hls)
415if has("termguicolors")
416  call append("$", "termguicolors\tuse GUI colors for the terminal")
417  call <SID>BinOptionG("tgc", &tgc)
418endif
419if has("syntax")
420  call append("$", "cursorcolumn\thighlight the screen column of the cursor")
421  call append("$", "\t(local to window)")
422  call <SID>BinOptionL("cuc")
423  call append("$", "cursorline\thighlight the screen line of the cursor")
424  call append("$", "\t(local to window)")
425  call <SID>BinOptionL("cul")
426  call append("$", "colorcolumn\tcolumns to highlight")
427  call append("$", "\t(local to window)")
428  call <SID>OptionL("cc")
429  call append("$", "spell\thighlight spelling mistakes")
430  call append("$", "\t(local to window)")
431  call <SID>BinOptionL("spell")
432  call append("$", "spelllang\tlist of accepted languages")
433  call append("$", "\t(local to buffer)")
434  call <SID>OptionL("spl")
435  call append("$", "spellfile\tfile that \"zg\" adds good words to")
436  call append("$", "\t(local to buffer)")
437  call <SID>OptionL("spf")
438  call append("$", "spellcapcheck\tpattern to locate the end of a sentence")
439  call append("$", "\t(local to buffer)")
440  call <SID>OptionL("spc")
441  call append("$", "spellsuggest\tmethods used to suggest corrections")
442  call <SID>OptionG("sps", &sps)
443  call append("$", "mkspellmem\tamount of memory used by :mkspell before compressing")
444  call <SID>OptionG("msm", &msm)
445endif
446
447
448call <SID>Header("multiple windows")
449call append("$", "laststatus\t0, 1 or 2; when to use a status line for the last window")
450call append("$", " \tset ls=" . &ls)
451if has("statusline")
452  call append("$", "statusline\talternate format to be used for a status line")
453  call <SID>OptionG("stl", &stl)
454endif
455call append("$", "equalalways\tmake all windows the same size when adding/removing windows")
456call <SID>BinOptionG("ea", &ea)
457if has("vertsplit")
458  call append("$", "eadirection\tin which direction 'equalalways' works: \"ver\", \"hor\" or \"both\"")
459  call <SID>OptionG("ead", &ead)
460endif
461call append("$", "winheight\tminimal number of lines used for the current window")
462call append("$", " \tset wh=" . &wh)
463call append("$", "winminheight\tminimal number of lines used for any window")
464call append("$", " \tset wmh=" . &wmh)
465call append("$", "winfixheight\tkeep the height of the window")
466call append("$", "\t(local to window)")
467call <SID>BinOptionL("wfh")
468if has("vertsplit")
469call append("$", "winfixwidth\tkeep the width of the window")
470call append("$", "\t(local to window)")
471call <SID>BinOptionL("wfw")
472  call append("$", "winwidth\tminimal number of columns used for the current window")
473  call append("$", " \tset wiw=" . &wiw)
474  call append("$", "winminwidth\tminimal number of columns used for any window")
475  call append("$", " \tset wmw=" . &wmw)
476endif
477call append("$", "helpheight\tinitial height of the help window")
478call append("$", " \tset hh=" . &hh)
479if has("quickfix")
480  call append("$", "previewheight\tdefault height for the preview window")
481  call append("$", " \tset pvh=" . &pvh)
482  call append("$", "previewwindow\tidentifies the preview window")
483  call append("$", "\t(local to window)")
484  call <SID>BinOptionL("pvw")
485endif
486call append("$", "hidden\tdon't unload a buffer when no longer shown in a window")
487call <SID>BinOptionG("hid", &hid)
488call append("$", "switchbuf\t\"useopen\" and/or \"split\"; which window to use when jumping")
489call append("$", "\tto a buffer")
490call <SID>OptionG("swb", &swb)
491call append("$", "splitbelow\ta new window is put below the current one")
492call <SID>BinOptionG("sb", &sb)
493if has("vertsplit")
494  call append("$", "splitright\ta new window is put right of the current one")
495  call <SID>BinOptionG("spr", &spr)
496endif
497if has("scrollbind")
498  call append("$", "scrollbind\tthis window scrolls together with other bound windows")
499  call append("$", "\t(local to window)")
500  call <SID>BinOptionL("scb")
501  call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'")
502  call <SID>OptionG("sbo", &sbo)
503endif
504if has("cursorbind")
505  call append("$", "cursorbind\tthis window's cursor moves together with other bound windows")
506  call append("$", "\t(local to window)")
507  call <SID>BinOptionL("crb")
508endif
509if has("terminal")
510  call append("$", "termwinsize\tsize of a terminal window")
511  call append("$", "\t(local to window)")
512  call <SID>OptionL("tws")
513  call append("$", "termwinkey\tkey that precedes Vim commands in a terminal window")
514  call append("$", "\t(local to window)")
515  call <SID>OptionL("twk")
516  call append("$", "termwinscroll\tmax number of lines to keep for scrollback in a terminal window")
517  call append("$", "\t(local to window)")
518  call <SID>OptionL("twsl")
519  if exists("&winptydll")
520    call append("$", "winptydll\tname of the winpty dynamic library")
521    call <SID>OptionG("winptydll", &winptydll)
522  endif
523endif
524
525
526call <SID>Header("multiple tab pages")
527call append("$", "showtabline\t0, 1 or 2; when to use a tab pages line")
528call append("$", " \tset stal=" . &stal)
529call append("$", "tabpagemax\tmaximum number of tab pages to open for -p and \"tab all\"")
530call append("$", " \tset tpm=" . &tpm)
531call append("$", "tabline\tcustom tab pages line")
532call <SID>OptionG("tal", &tal)
533if has("gui")
534  call append("$", "guitablabel\tcustom tab page label for the GUI")
535  call <SID>OptionG("gtl", &gtl)
536  call append("$", "guitabtooltip\tcustom tab page tooltip for the GUI")
537  call <SID>OptionG("gtt", &gtt)
538endif
539
540
541call <SID>Header("terminal")
542call append("$", "term\tname of the used terminal")
543call <SID>OptionG("term", &term)
544call append("$", "ttytype\talias for 'term'")
545call <SID>OptionG("tty", &tty)
546call append("$", "ttybuiltin\tcheck built-in termcaps first")
547call <SID>BinOptionG("tbi", &tbi)
548call append("$", "ttyfast\tterminal connection is fast")
549call <SID>BinOptionG("tf", &tf)
550call append("$", "weirdinvert\tterminal that requires extra redrawing")
551call <SID>BinOptionG("wiv", &wiv)
552call append("$", "esckeys\trecognize keys that start with <Esc> in Insert mode")
553call <SID>BinOptionG("ek", &ek)
554call append("$", "scrolljump\tminimal number of lines to scroll at a time")
555call append("$", " \tset sj=" . &sj)
556call append("$", "ttyscroll\tmaximum number of lines to use scrolling instead of redrawing")
557call append("$", " \tset tsl=" . &tsl)
558if has("gui") || has("win32")
559  call append("$", "guicursor\tspecifies what the cursor looks like in different modes")
560  call <SID>OptionG("gcr", &gcr)
561endif
562if has("title")
563  let &title = s:old_title
564  call append("$", "title\tshow info in the window title")
565  call <SID>BinOptionG("title", &title)
566  set notitle
567  call append("$", "titlelen\tpercentage of 'columns' used for the window title")
568  call append("$", " \tset titlelen=" . &titlelen)
569  call append("$", "titlestring\twhen not empty, string to be used for the window title")
570  call <SID>OptionG("titlestring", &titlestring)
571  call append("$", "titleold\tstring to restore the title to when exiting Vim")
572  call <SID>OptionG("titleold", &titleold)
573  let &icon = s:old_icon
574  call append("$", "icon\tset the text of the icon for this window")
575  call <SID>BinOptionG("icon", &icon)
576  set noicon
577  call append("$", "iconstring\twhen not empty, text for the icon of this window")
578  call <SID>OptionG("iconstring", &iconstring)
579endif
580if has("win32")
581  call append("$", "restorescreen\trestore the screen contents when exiting Vim")
582  call <SID>BinOptionG("rs", &rs)
583endif
584
585
586call <SID>Header("using the mouse")
587call append("$", "mouse\tlist of flags for using the mouse")
588call <SID>OptionG("mouse", &mouse)
589if has("gui")
590  call append("$", "mousefocus\tthe window with the mouse pointer becomes the current one")
591  call <SID>BinOptionG("mousef", &mousef)
592  call append("$", "mousehide\thide the mouse pointer while typing")
593  call <SID>BinOptionG("mh", &mh)
594endif
595call append("$", "mousemodel\t\"extend\", \"popup\" or \"popup_setpos\"; what the right")
596call append("$", "\tmouse button is used for")
597call <SID>OptionG("mousem", &mousem)
598call append("$", "mousetime\tmaximum time in msec to recognize a double-click")
599call append("$", " \tset mouset=" . &mouset)
600call append("$", "ttymouse\t\"xterm\", \"xterm2\", \"dec\" or \"netterm\"; type of mouse")
601call <SID>OptionG("ttym", &ttym)
602if has("mouseshape")
603  call append("$", "mouseshape\twhat the mouse pointer looks like in different modes")
604  call <SID>OptionG("mouses", &mouses)
605endif
606
607
608if has("gui")
609  call <SID>Header("GUI")
610  call append("$", "guifont\tlist of font names to be used in the GUI")
611  call <SID>OptionG("gfn", &gfn)
612  if has("xfontset")
613    call append("$", "guifontset\tpair of fonts to be used, for multibyte editing")
614    call <SID>OptionG("gfs", &gfs)
615  endif
616  call append("$", "guifontwide\tlist of font names to be used for double-wide characters")
617  call <SID>OptionG("gfw", &gfw)
618  if has("mac")
619    call append("$", "antialias\tuse smooth, antialiased fonts")
620    call <SID>BinOptionG("anti", &anti)
621  endif
622  call append("$", "guioptions\tlist of flags that specify how the GUI works")
623  call <SID>OptionG("go", &go)
624  if has("gui_gtk")
625    call append("$", "toolbar\t\"icons\", \"text\" and/or \"tooltips\"; how to show the toolbar")
626    call <SID>OptionG("tb", &tb)
627    if has("gui_gtk2")
628      call append("$", "toolbariconsize\tsize of toolbar icons")
629      call <SID>OptionG("tbis", &tbis)
630    endif
631    call append("$", "guiheadroom\troom (in pixels) left above/below the window")
632    call append("$", " \tset ghr=" . &ghr)
633  endif
634  if has("directx")
635    call append("$", "renderoptions\toptions for text rendering")
636    call <SID>OptionG("rop", &rop)
637  endif
638  call append("$", "guipty\tuse a pseudo-tty for I/O to external commands")
639  call <SID>BinOptionG("guipty", &guipty)
640  if has("browse")
641    call append("$", "browsedir\t\"last\", \"buffer\" or \"current\": which directory used for the file browser")
642    call <SID>OptionG("bsdir", &bsdir)
643  endif
644  if has("multi_lang")
645    call append("$", "langmenu\tlanguage to be used for the menus")
646    call <SID>OptionG("langmenu", &lm)
647  endif
648  call append("$", "menuitems\tmaximum number of items in one menu")
649  call append("$", " \tset mis=" . &mis)
650  if has("winaltkeys")
651    call append("$", "winaltkeys\t\"no\", \"yes\" or \"menu\"; how to use the ALT key")
652    call <SID>OptionG("wak", &wak)
653  endif
654  call append("$", "linespace\tnumber of pixel lines to use between characters")
655  call append("$", " \tset lsp=" . &lsp)
656  if has("balloon_eval") || has("balloon_eval_term")
657    call append("$", "balloondelay\tdelay in milliseconds before a balloon may pop up")
658    call append("$", " \tset bdlay=" . &bdlay)
659    if has("balloon_eval")
660      call append("$", "ballooneval\tuse balloon evaluation in the GUI")
661      call <SID>BinOptionG("beval", &beval)
662    endif
663    if has("balloon_eval_term")
664      call append("$", "balloonevalterm\tuse balloon evaluation in the terminal")
665      call <SID>BinOptionG("bevalterm", &beval)
666    endif
667    if has("eval")
668      call append("$", "balloonexpr\texpression to show in balloon eval")
669      call append("$", " \tset bexpr=" . &bexpr)
670    endif
671  endif
672  if exists("+macatsui")
673    call append("$", "macatsui\tuse ATSUI text drawing; disable to avoid display problems")
674    call <SID>OptionG("macatsui", &macatsui)
675  endif
676endif
677
678if has("printer")
679  call <SID>Header("printing")
680  call append("$", "printoptions\tlist of items that control the format of :hardcopy output")
681  call <SID>OptionG("popt", &popt)
682  call append("$", "printdevice\tname of the printer to be used for :hardcopy")
683  call <SID>OptionG("pdev", &pdev)
684  if has("postscript")
685    call append("$", "printexpr\texpression used to print the PostScript file for :hardcopy")
686    call <SID>OptionG("pexpr", &pexpr)
687  endif
688  call append("$", "printfont\tname of the font to be used for :hardcopy")
689  call <SID>OptionG("pfn", &pfn)
690  call append("$", "printheader\tformat of the header used for :hardcopy")
691  call <SID>OptionG("pheader", &pheader)
692  if has("postscript")
693    call append("$", "printencoding\tencoding used to print the PostScript file for :hardcopy")
694    call <SID>OptionG("penc", &penc)
695  endif
696  if has("multi_byte")
697    call append("$", "printmbcharset\tthe CJK character set to be used for CJK output from :hardcopy")
698    call <SID>OptionG("pmbcs", &pmbcs)
699    call append("$", "printmbfont\tlist of font names to be used for CJK output from :hardcopy")
700    call <SID>OptionG("pmbfn", &pmbfn)
701  endif
702endif
703
704call <SID>Header("messages and info")
705call append("$", "terse\tadd 's' flag in 'shortmess' (don't show search message)")
706call <SID>BinOptionG("terse", &terse)
707call append("$", "shortmess\tlist of flags to make messages shorter")
708call <SID>OptionG("shm", &shm)
709call append("$", "showcmd\tshow (partial) command keys in the status line")
710let &sc = s:old_sc
711call <SID>BinOptionG("sc", &sc)
712set nosc
713call append("$", "showmode\tdisplay the current mode in the status line")
714call <SID>BinOptionG("smd", &smd)
715call append("$", "ruler\tshow cursor position below each window")
716let &ru = s:old_ru
717call <SID>BinOptionG("ru", &ru)
718set noru
719if has("statusline")
720  call append("$", "rulerformat\talternate format to be used for the ruler")
721  call <SID>OptionG("ruf", &ruf)
722endif
723call append("$", "report\tthreshold for reporting number of changed lines")
724call append("$", " \tset report=" . &report)
725call append("$", "verbose\tthe higher the more messages are given")
726call append("$", " \tset vbs=" . &vbs)
727call append("$", "verbosefile\tfile to write messages in")
728call <SID>OptionG("vfile", &vfile)
729call append("$", "more\tpause listings when the screen is full")
730call <SID>BinOptionG("more", &more)
731if has("dialog_con") || has("dialog_gui")
732  call append("$", "confirm\tstart a dialog when a command fails")
733  call <SID>BinOptionG("cf", &cf)
734endif
735call append("$", "errorbells\tring the bell for error messages")
736call <SID>BinOptionG("eb", &eb)
737call append("$", "visualbell\tuse a visual bell instead of beeping")
738call <SID>BinOptionG("vb", &vb)
739call append("$", "belloff\tdo not ring the bell for these reasons")
740call <SID>OptionG("belloff", &belloff)
741if has("multi_lang")
742  call append("$", "helplang\tlist of preferred languages for finding help")
743  call <SID>OptionG("hlg", &hlg)
744endif
745
746
747call <SID>Header("selecting text")
748call append("$", "selection\t\"old\", \"inclusive\" or \"exclusive\"; how selecting text behaves")
749call <SID>OptionG("sel", &sel)
750call append("$", "selectmode\t\"mouse\", \"key\" and/or \"cmd\"; when to start Select mode")
751call append("$", "\tinstead of Visual mode")
752call <SID>OptionG("slm", &slm)
753if has("clipboard")
754  call append("$", "clipboard\t\"unnamed\" to use the * register like unnamed register")
755  call append("$", "\t\"autoselect\" to always put selected text on the clipboard")
756  call <SID>OptionG("cb", &cb)
757endif
758call append("$", "keymodel\t\"startsel\" and/or \"stopsel\"; what special keys can do")
759call <SID>OptionG("km", &km)
760
761
762call <SID>Header("editing text")
763call append("$", "undolevels\tmaximum number of changes that can be undone")
764call append("$", "\t(global or local to buffer)")
765call append("$", " \tset ul=" . s:old_ul)
766call append("$", "undofile\tautomatically save and restore undo history")
767call <SID>BinOptionG("udf", &udf)
768call append("$", "undodir\tlist of directories for undo files")
769call <SID>OptionG("udir", &udir)
770call append("$", "undoreload\tmaximum number lines to save for undo on a buffer reload")
771call append("$", " \tset ur=" . &ur)
772call append("$", "modified\tchanges have been made and not written to a file")
773call append("$", "\t(local to buffer)")
774call <SID>BinOptionL("mod")
775call append("$", "readonly\tbuffer is not to be written")
776call append("$", "\t(local to buffer)")
777call <SID>BinOptionL("ro")
778call append("$", "modifiable\tchanges to the text are not possible")
779call append("$", "\t(local to buffer)")
780call <SID>BinOptionL("ma")
781call append("$", "textwidth\tline length above which to break a line")
782call append("$", "\t(local to buffer)")
783call <SID>OptionL("tw")
784call append("$", "wrapmargin\tmargin from the right in which to break a line")
785call append("$", "\t(local to buffer)")
786call <SID>OptionL("wm")
787call append("$", "backspace\tspecifies what <BS>, CTRL-W, etc. can do in Insert mode")
788call append("$", " \tset bs=" . &bs)
789call append("$", "comments\tdefinition of what comment lines look like")
790call append("$", "\t(local to buffer)")
791call <SID>OptionL("com")
792call append("$", "formatoptions\tlist of flags that tell how automatic formatting works")
793call append("$", "\t(local to buffer)")
794call <SID>OptionL("fo")
795call append("$", "formatlistpat\tpattern to recognize a numbered list")
796call append("$", "\t(local to buffer)")
797call <SID>OptionL("flp")
798if has("eval")
799  call append("$", "formatexpr\texpression used for \"gq\" to format lines")
800  call append("$", "\t(local to buffer)")
801  call <SID>OptionL("fex")
802endif
803if has("insert_expand")
804  call append("$", "complete\tspecifies how Insert mode completion works for CTRL-N and CTRL-P")
805  call append("$", "\t(local to buffer)")
806  call <SID>OptionL("cpt")
807  call append("$", "completeopt\twhether to use a popup menu for Insert mode completion")
808  call <SID>OptionG("cot", &cot)
809  call append("$", "pumheight\tmaximum height of the popup menu")
810  call <SID>OptionG("ph", &ph)
811  call append("$", "pumwidth\tminimum width of the popup menu")
812  call <SID>OptionG("pw", &pw)
813  call append("$", "completefunc\tuser defined function for Insert mode completion")
814  call append("$", "\t(local to buffer)")
815  call <SID>OptionL("cfu")
816  call append("$", "omnifunc\tfunction for filetype-specific Insert mode completion")
817  call append("$", "\t(local to buffer)")
818  call <SID>OptionL("ofu")
819  call append("$", "dictionary\tlist of dictionary files for keyword completion")
820  call append("$", "\t(global or local to buffer)")
821  call <SID>OptionG("dict", &dict)
822  call append("$", "thesaurus\tlist of thesaurus files for keyword completion")
823  call append("$", "\t(global or local to buffer)")
824  call <SID>OptionG("tsr", &tsr)
825endif
826call append("$", "infercase\tadjust case of a keyword completion match")
827call append("$", "\t(local to buffer)")
828call <SID>BinOptionL("inf")
829if has("digraphs")
830  call append("$", "digraph\tenable entering digraphs with c1 <BS> c2")
831  call <SID>BinOptionG("dg", &dg)
832endif
833call append("$", "tildeop\tthe \"~\" command behaves like an operator")
834call <SID>BinOptionG("top", &top)
835call append("$", "operatorfunc\tfunction called for the\"g@\"  operator")
836call <SID>OptionG("opfunc", &opfunc)
837call append("$", "showmatch\twhen inserting a bracket, briefly jump to its match")
838call <SID>BinOptionG("sm", &sm)
839call append("$", "matchtime\ttenth of a second to show a match for 'showmatch'")
840call append("$", " \tset mat=" . &mat)
841call append("$", "matchpairs\tlist of pairs that match for the \"%\" command")
842call append("$", "\t(local to buffer)")
843call <SID>OptionL("mps")
844call append("$", "joinspaces\tuse two spaces after '.' when joining a line")
845call <SID>BinOptionG("js", &js)
846call append("$", "nrformats\t\"alpha\", \"octal\" and/or \"hex\"; number formats recognized for")
847call append("$", "\tCTRL-A and CTRL-X commands")
848call append("$", "\t(local to buffer)")
849call <SID>OptionL("nf")
850
851
852call <SID>Header("tabs and indenting")
853call append("$", "tabstop\tnumber of spaces a <Tab> in the text stands for")
854call append("$", "\t(local to buffer)")
855call <SID>OptionL("ts")
856call append("$", "shiftwidth\tnumber of spaces used for each step of (auto)indent")
857call append("$", "\t(local to buffer)")
858call <SID>OptionL("sw")
859if has("vartabs")
860  call append("$", "vartabstop\tlist of number of spaces a tab counts for")
861  call append("$", "\t(local to buffer)")
862  call <SID>OptionL("vts")
863  call append("$", "varsofttabstop\tlist of number of spaces a soft tabsstop counts for")
864  call append("$", "\t(local to buffer)")
865  call <SID>OptionL("vsts")
866endif
867call append("$", "smarttab\ta <Tab> in an indent inserts 'shiftwidth' spaces")
868call <SID>BinOptionG("sta", &sta)
869call append("$", "softtabstop\tif non-zero, number of spaces to insert for a <Tab>")
870call append("$", "\t(local to buffer)")
871call <SID>OptionL("sts")
872call append("$", "shiftround\tround to 'shiftwidth' for \"<<\" and \">>\"")
873call <SID>BinOptionG("sr", &sr)
874call append("$", "expandtab\texpand <Tab> to spaces in Insert mode")
875call append("$", "\t(local to buffer)")
876call <SID>BinOptionL("et")
877call append("$", "autoindent\tautomatically set the indent of a new line")
878call append("$", "\t(local to buffer)")
879call <SID>BinOptionL("ai")
880if has("smartindent")
881  call append("$", "smartindent\tdo clever autoindenting")
882  call append("$", "\t(local to buffer)")
883  call <SID>BinOptionL("si")
884endif
885if has("cindent")
886  call append("$", "cindent\tenable specific indenting for C code")
887  call append("$", "\t(local to buffer)")
888  call <SID>BinOptionL("cin")
889  call append("$", "cinoptions\toptions for C-indenting")
890  call append("$", "\t(local to buffer)")
891  call <SID>OptionL("cino")
892  call append("$", "cinkeys\tkeys that trigger C-indenting in Insert mode")
893  call append("$", "\t(local to buffer)")
894  call <SID>OptionL("cink")
895  call append("$", "cinwords\tlist of words that cause more C-indent")
896  call append("$", "\t(local to buffer)")
897  call <SID>OptionL("cinw")
898  call append("$", "indentexpr\texpression used to obtain the indent of a line")
899  call append("$", "\t(local to buffer)")
900  call <SID>OptionL("inde")
901  call append("$", "indentkeys\tkeys that trigger indenting with 'indentexpr' in Insert mode")
902  call append("$", "\t(local to buffer)")
903  call <SID>OptionL("indk")
904endif
905call append("$", "copyindent\tcopy whitespace for indenting from previous line")
906call append("$", "\t(local to buffer)")
907call <SID>BinOptionL("ci")
908call append("$", "preserveindent\tpreserve kind of whitespace when changing indent")
909call append("$", "\t(local to buffer)")
910call <SID>BinOptionL("pi")
911if has("lispindent")
912  call append("$", "lisp\tenable lisp mode")
913  call append("$", "\t(local to buffer)")
914  call <SID>BinOptionL("lisp")
915  call append("$", "lispwords\twords that change how lisp indenting works")
916  call <SID>OptionL("lw")
917endif
918
919
920if has("folding")
921  call <SID>Header("folding")
922  call append("$", "foldenable\tset to display all folds open")
923  call append("$", "\t(local to window)")
924  call <SID>BinOptionL("fen")
925  call append("$", "foldlevel\tfolds with a level higher than this number will be closed")
926  call append("$", "\t(local to window)")
927  call <SID>OptionL("fdl")
928  call append("$", "foldlevelstart\tvalue for 'foldlevel' when starting to edit a file")
929  call append("$", " \tset fdls=" . &fdls)
930  call append("$", "foldcolumn\twidth of the column used to indicate folds")
931  call append("$", "\t(local to window)")
932  call <SID>OptionL("fdc")
933  call append("$", "foldtext\texpression used to display the text of a closed fold")
934  call append("$", "\t(local to window)")
935  call <SID>OptionL("fdt")
936  call append("$", "foldclose\tset to \"all\" to close a fold when the cursor leaves it")
937  call <SID>OptionG("fcl", &fcl)
938  call append("$", "foldopen\tspecifies for which commands a fold will be opened")
939  call <SID>OptionG("fdo", &fdo)
940  call append("$", "foldminlines\tminimum number of screen lines for a fold to be closed")
941  call append("$", "\t(local to window)")
942  call <SID>OptionL("fml")
943  call append("$", "commentstring\ttemplate for comments; used to put the marker in")
944  call <SID>OptionL("cms")
945  call append("$", "foldmethod\tfolding type: \"manual\", \"indent\", \"expr\", \"marker\" or \"syntax\"")
946  call append("$", "\t(local to window)")
947  call <SID>OptionL("fdm")
948  call append("$", "foldexpr\texpression used when 'foldmethod' is \"expr\"")
949  call append("$", "\t(local to window)")
950  call <SID>OptionL("fde")
951  call append("$", "foldignore\tused to ignore lines when 'foldmethod' is \"indent\"")
952  call append("$", "\t(local to window)")
953  call <SID>OptionL("fdi")
954  call append("$", "foldmarker\tmarkers used when 'foldmethod' is \"marker\"")
955  call append("$", "\t(local to window)")
956  call <SID>OptionL("fmr")
957  call append("$", "foldnestmax\tmaximum fold depth for when 'foldmethod' is \"indent\" or \"syntax\"")
958  call append("$", "\t(local to window)")
959  call <SID>OptionL("fdn")
960endif
961
962
963if has("diff")
964  call <SID>Header("diff mode")
965  call append("$", "diff\tuse diff mode for the current window")
966  call append("$", "\t(local to window)")
967  call <SID>BinOptionL("diff")
968  call append("$", "diffopt\toptions for using diff mode")
969  call <SID>OptionG("dip", &dip)
970  call append("$", "diffexpr\texpression used to obtain a diff file")
971  call <SID>OptionG("dex", &dex)
972  call append("$", "patchexpr\texpression used to patch a file")
973  call <SID>OptionG("pex", &pex)
974endif
975
976
977call <SID>Header("mapping")
978call append("$", "maxmapdepth\tmaximum depth of mapping")
979call append("$", " \tset mmd=" . &mmd)
980call append("$", "remap\trecognize mappings in mapped keys")
981call <SID>BinOptionG("remap", &remap)
982call append("$", "timeout\tallow timing out halfway into a mapping")
983call <SID>BinOptionG("to", &to)
984call append("$", "ttimeout\tallow timing out halfway into a key code")
985call <SID>BinOptionG("ttimeout", &ttimeout)
986call append("$", "timeoutlen\ttime in msec for 'timeout'")
987call append("$", " \tset tm=" . &tm)
988call append("$", "ttimeoutlen\ttime in msec for 'ttimeout'")
989call append("$", " \tset ttm=" . &ttm)
990
991
992call <SID>Header("reading and writing files")
993call append("$", "modeline\tenable using settings from modelines when reading a file")
994call append("$", "\t(local to buffer)")
995call <SID>BinOptionL("ml")
996call append("$", "modelines\tnumber of lines to check for modelines")
997call append("$", " \tset mls=" . &mls)
998call append("$", "binary\tbinary file editing")
999call append("$", "\t(local to buffer)")
1000call <SID>BinOptionL("bin")
1001call append("$", "endofline\tlast line in the file has an end-of-line")
1002call append("$", "\t(local to buffer)")
1003call <SID>BinOptionL("eol")
1004call append("$", "fixendofline\tfixes missing end-of-line at end of text file")
1005call append("$", "\t(local to buffer)")
1006call <SID>BinOptionL("fixeol")
1007if has("multi_byte")
1008  call append("$", "bomb\tprepend a Byte Order Mark to the file")
1009  call append("$", "\t(local to buffer)")
1010  call <SID>BinOptionL("bomb")
1011endif
1012call append("$", "fileformat\tend-of-line format: \"dos\", \"unix\" or \"mac\"")
1013call append("$", "\t(local to buffer)")
1014call <SID>OptionL("ff")
1015call append("$", "fileformats\tlist of file formats to look for when editing a file")
1016call <SID>OptionG("ffs", &ffs)
1017call append("$", "textmode\tobsolete, use 'fileformat'")
1018call append("$", "\t(local to buffer)")
1019call <SID>BinOptionL("tx")
1020call append("$", "textauto\tobsolete, use 'fileformats'")
1021call <SID>BinOptionG("ta", &ta)
1022call append("$", "write\twriting files is allowed")
1023call <SID>BinOptionG("write", &write)
1024call append("$", "writebackup\twrite a backup file before overwriting a file")
1025call <SID>BinOptionG("wb", &wb)
1026call append("$", "backup\tkeep a backup after overwriting a file")
1027call <SID>BinOptionG("bk", &bk)
1028call append("$", "backupskip\tpatterns that specify for which files a backup is not made")
1029call append("$", " \tset bsk=" . &bsk)
1030call append("$", "backupcopy\twhether to make the backup as a copy or rename the existing file")
1031call append("$", "\t(global or local to buffer)")
1032call append("$", " \tset bkc=" . &bkc)
1033call append("$", "backupdir\tlist of directories to put backup files in")
1034call <SID>OptionG("bdir", &bdir)
1035call append("$", "backupext\tfile name extension for the backup file")
1036call <SID>OptionG("bex", &bex)
1037call append("$", "autowrite\tautomatically write a file when leaving a modified buffer")
1038call <SID>BinOptionG("aw", &aw)
1039call append("$", "autowriteall\tas 'autowrite', but works with more commands")
1040call <SID>BinOptionG("awa", &awa)
1041call append("$", "writeany\talways write without asking for confirmation")
1042call <SID>BinOptionG("wa", &wa)
1043call append("$", "autoread\tautomatically read a file when it was modified outside of Vim")
1044call append("$", "\t(global or local to buffer)")
1045call <SID>BinOptionG("ar", &ar)
1046call append("$", "patchmode\tkeep oldest version of a file; specifies file name extension")
1047call <SID>OptionG("pm", &pm)
1048call append("$", "fsync\tforcibly sync the file to disk after writing it")
1049call <SID>BinOptionG("fs", &fs)
1050call append("$", "shortname\tuse 8.3 file names")
1051call append("$", "\t(local to buffer)")
1052call <SID>BinOptionL("sn")
1053call append("$", "cryptmethod\tencryption method for file writing: zip or blowfish")
1054call append("$", "\t(local to buffer)")
1055call <SID>OptionL("cm")
1056
1057
1058call <SID>Header("the swap file")
1059call append("$", "directory\tlist of directories for the swap file")
1060call <SID>OptionG("dir", &dir)
1061call append("$", "swapfile\tuse a swap file for this buffer")
1062call append("$", "\t(local to buffer)")
1063call <SID>BinOptionL("swf")
1064call append("$", "swapsync\t\"sync\", \"fsync\" or empty; how to flush a swap file to disk")
1065call <SID>OptionG("sws", &sws)
1066call append("$", "updatecount\tnumber of characters typed to cause a swap file update")
1067call append("$", " \tset uc=" . &uc)
1068call append("$", "updatetime\ttime in msec after which the swap file will be updated")
1069call append("$", " \tset ut=" . &ut)
1070call append("$", "maxmem\tmaximum amount of memory in Kbyte used for one buffer")
1071call append("$", " \tset mm=" . &mm)
1072call append("$", "maxmemtot\tmaximum amount of memory in Kbyte used for all buffers")
1073call append("$", " \tset mmt=" . &mmt)
1074
1075
1076call <SID>Header("command line editing")
1077call append("$", "history\thow many command lines are remembered ")
1078call append("$", " \tset hi=" . &hi)
1079call append("$", "wildchar\tkey that triggers command-line expansion")
1080call append("$", " \tset wc=" . &wc)
1081call append("$", "wildcharm\tlike 'wildchar' but can also be used in a mapping")
1082call append("$", " \tset wcm=" . &wcm)
1083call append("$", "wildmode\tspecifies how command line completion works")
1084call <SID>OptionG("wim", &wim)
1085if has("wildoptions")
1086  call append("$", "wildoptions\tempty or \"tagfile\" to list file name of matching tags")
1087  call <SID>OptionG("wop", &wop)
1088endif
1089call append("$", "suffixes\tlist of file name extensions that have a lower priority")
1090call <SID>OptionG("su", &su)
1091if has("file_in_path")
1092  call append("$", "suffixesadd\tlist of file name extensions added when searching for a file")
1093  call append("$", "\t(local to buffer)")
1094  call <SID>OptionL("sua")
1095endif
1096if has("wildignore")
1097  call append("$", "wildignore\tlist of patterns to ignore files for file name completion")
1098  call <SID>OptionG("wig", &wig)
1099endif
1100call append("$", "fileignorecase\tignore case when using file names")
1101call <SID>BinOptionG("fic", &fic)
1102call append("$", "wildignorecase\tignore case when completing file names")
1103call <SID>BinOptionG("wic", &wic)
1104if has("wildmenu")
1105  call append("$", "wildmenu\tcommand-line completion shows a list of matches")
1106  call <SID>BinOptionG("wmnu", &wmnu)
1107endif
1108if has("vertsplit")
1109  call append("$", "cedit\tkey used to open the command-line window")
1110  call <SID>OptionG("cedit", &cedit)
1111  call append("$", "cmdwinheight\theight of the command-line window")
1112  call <SID>OptionG("cwh", &cwh)
1113endif
1114
1115
1116call <SID>Header("executing external commands")
1117call append("$", "shell\tname of the shell program used for external commands")
1118call <SID>OptionG("sh", &sh)
1119if has("amiga")
1120  call append("$", "shelltype\twhen to use the shell or directly execute a command")
1121  call append("$", " \tset st=" . &st)
1122endif
1123call append("$", "shellquote\tcharacter(s) to enclose a shell command in")
1124call <SID>OptionG("shq", &shq)
1125call append("$", "shellxquote\tlike 'shellquote' but include the redirection")
1126call <SID>OptionG("sxq", &sxq)
1127call append("$", "shellxescape\tcharacters to escape when 'shellxquote' is (")
1128call <SID>OptionG("sxe", &sxe)
1129call append("$", "shellcmdflag\targument for 'shell' to execute a command")
1130call <SID>OptionG("shcf", &shcf)
1131call append("$", "shellredir\tused to redirect command output to a file")
1132call <SID>OptionG("srr", &srr)
1133call append("$", "shelltemp\tuse a temp file for shell commands instead of using a pipe")
1134call <SID>BinOptionG("stmp", &stmp)
1135call append("$", "equalprg\tprogram used for \"=\" command")
1136call append("$", "\t(global or local to buffer)")
1137call <SID>OptionG("ep", &ep)
1138call append("$", "formatprg\tprogram used to format lines with \"gq\" command")
1139call <SID>OptionG("fp", &fp)
1140call append("$", "keywordprg\tprogram used for the \"K\" command")
1141call <SID>OptionG("kp", &kp)
1142call append("$", "warn\twarn when using a shell command and a buffer has changes")
1143call <SID>BinOptionG("warn", &warn)
1144
1145
1146if has("quickfix")
1147  call <SID>Header("running make and jumping to errors")
1148  call append("$", "errorfile\tname of the file that contains error messages")
1149  call <SID>OptionG("ef", &ef)
1150  call append("$", "errorformat\tlist of formats for error messages")
1151  call append("$", "\t(global or local to buffer)")
1152  call <SID>OptionG("efm", &efm)
1153  call append("$", "makeprg\tprogram used for the \":make\" command")
1154  call append("$", "\t(global or local to buffer)")
1155  call <SID>OptionG("mp", &mp)
1156  call append("$", "shellpipe\tstring used to put the output of \":make\" in the error file")
1157  call <SID>OptionG("sp", &sp)
1158  call append("$", "makeef\tname of the errorfile for the 'makeprg' command")
1159  call <SID>OptionG("mef", &mef)
1160  call append("$", "grepprg\tprogram used for the \":grep\" command")
1161  call append("$", "\t(global or local to buffer)")
1162  call <SID>OptionG("gp", &gp)
1163  call append("$", "grepformat\tlist of formats for output of 'grepprg'")
1164  call <SID>OptionG("gfm", &gfm)
1165  call append("$", "makeencoding\tencoding of the \":make\" and \":grep\" output")
1166  call append("$", "\t(global or local to buffer)")
1167  call <SID>OptionG("menc", &menc)
1168endif
1169
1170
1171if has("win32") || has("osfiletype")
1172  call <SID>Header("system specific")
1173  if has("osfiletype")
1174    call append("$", "osfiletype\tOS-specific information about the type of file")
1175    call append("$", "\t(local to buffer)")
1176    call <SID>OptionL("oft")
1177  endif
1178  if has("win32")
1179    call append("$", "shellslash\tuse forward slashes in file names; for Unix-like shells")
1180    call <SID>BinOptionG("ssl", &ssl)
1181  endif
1182endif
1183
1184
1185call <SID>Header("language specific")
1186call append("$", "isfname\tspecifies the characters in a file name")
1187call <SID>OptionG("isf", &isf)
1188call append("$", "isident\tspecifies the characters in an identifier")
1189call <SID>OptionG("isi", &isi)
1190call append("$", "iskeyword\tspecifies the characters in a keyword")
1191call append("$", "\t(local to buffer)")
1192call <SID>OptionL("isk")
1193call append("$", "isprint\tspecifies printable characters")
1194call <SID>OptionG("isp", &isp)
1195if has("textobjects")
1196  call append("$", "quoteescape\tspecifies escape characters in a string")
1197  call append("$", "\t(local to buffer)")
1198  call <SID>OptionL("qe")
1199endif
1200if has("rightleft")
1201  call append("$", "rightleft\tdisplay the buffer right-to-left")
1202  call append("$", "\t(local to window)")
1203  call <SID>BinOptionL("rl")
1204  call append("$", "rightleftcmd\twhen to edit the command-line right-to-left")
1205  call append("$", "\t(local to window)")
1206  call <SID>OptionL("rlc")
1207  call append("$", "revins\tinsert characters backwards")
1208  call <SID>BinOptionG("ri", &ri)
1209  call append("$", "allowrevins\tallow CTRL-_ in Insert and Command-line mode to toggle 'revins'")
1210  call <SID>BinOptionG("ari", &ari)
1211  call append("$", "aleph\tthe ASCII code for the first letter of the Hebrew alphabet")
1212  call append("$", " \tset al=" . &al)
1213  call append("$", "hkmap\tuse Hebrew keyboard mapping")
1214  call <SID>BinOptionG("hk", &hk)
1215  call append("$", "hkmapp\tuse phonetic Hebrew keyboard mapping")
1216  call <SID>BinOptionG("hkp", &hkp)
1217endif
1218if has("farsi")
1219  call append("$", "altkeymap\tuse Farsi as the second language when 'revins' is set")
1220  call <SID>BinOptionG("akm", &akm)
1221  call append("$", "fkmap\tuse Farsi keyboard mapping")
1222  call <SID>BinOptionG("fk", &fk)
1223endif
1224if has("arabic")
1225  call append("$", "arabic\tprepare for editing Arabic text")
1226  call append("$", "\t(local to window)")
1227  call <SID>BinOptionL("arab")
1228  call append("$", "arabicshape\tperform shaping of Arabic characters")
1229  call <SID>BinOptionG("arshape", &arshape)
1230  call append("$", "termbidi\tterminal will perform bidi handling")
1231  call <SID>BinOptionG("tbidi", &tbidi)
1232endif
1233if has("keymap")
1234  call append("$", "keymap\tname of a keyboard mapping")
1235  call <SID>OptionL("kmp")
1236endif
1237if has("langmap")
1238  call append("$", "langmap\tlist of characters that are translated in Normal mode")
1239  call <SID>OptionG("lmap", &lmap)
1240  call append("$", "langremap\tapply 'langmap' to mapped characters")
1241  call <SID>BinOptionG("lrm", &lrm)
1242endif
1243if has("xim")
1244  call append("$", "imdisable\twhen set never use IM; overrules following IM options")
1245  call <SID>BinOptionG("imd", &imd)
1246endif
1247call append("$", "iminsert\tin Insert mode: 1: use :lmap; 2: use IM; 0: neither")
1248call append("$", "\t(local to window)")
1249call <SID>OptionL("imi")
1250call append("$", "imstyle\tinput method style, 0: on-the-spot, 1: over-the-spot")
1251call <SID>OptionG("imst", &imst)
1252call append("$", "imsearch\tentering a search pattern: 1: use :lmap; 2: use IM; 0: neither")
1253call append("$", "\t(local to window)")
1254call <SID>OptionL("ims")
1255if has("xim")
1256  call append("$", "imcmdline\twhen set always use IM when starting to edit a command line")
1257  call <SID>BinOptionG("imc", &imc)
1258  call append("$", "imstatusfunc\tfunction to obtain IME status")
1259  call <SID>OptionG("imsf", &imsf)
1260  call append("$", "imactivatefunc\tfunction to enable/disable IME")
1261  call <SID>OptionG("imaf", &imaf)
1262endif
1263
1264
1265if has("multi_byte")
1266  call <SID>Header("multi-byte characters")
1267  call append("$", "encoding\tcharacter encoding used in Vim: \"latin1\", \"utf-8\"")
1268  call append("$", "\t\"euc-jp\", \"big5\", etc.")
1269  call <SID>OptionG("enc", &enc)
1270  call append("$", "fileencoding\tcharacter encoding for the current file")
1271  call append("$", "\t(local to buffer)")
1272  call <SID>OptionL("fenc")
1273  call append("$", "fileencodings\tautomatically detected character encodings")
1274  call <SID>OptionG("fencs", &fencs)
1275  call append("$", "termencoding\tcharacter encoding used by the terminal")
1276  call <SID>OptionG("tenc", &tenc)
1277  call append("$", "charconvert\texpression used for character encoding conversion")
1278  call <SID>OptionG("ccv", &ccv)
1279  call append("$", "delcombine\tdelete combining (composing) characters on their own")
1280  call <SID>BinOptionG("deco", &deco)
1281  call append("$", "maxcombine\tmaximum number of combining (composing) characters displayed")
1282  call <SID>OptionG("mco", &mco)
1283  if has("xim") && has("gui_gtk")
1284    call append("$", "imactivatekey\tkey that activates the X input method")
1285    call <SID>OptionG("imak", &imak)
1286  endif
1287  call append("$", "ambiwidth\twidth of ambiguous width characters")
1288  call <SID>OptionG("ambw", &ambw)
1289  call append("$", "emoji\temoji characters are full width")
1290  call <SID>BinOptionG("emo", &emo)
1291endif
1292
1293
1294call <SID>Header("various")
1295if has("virtualedit")
1296  call append("$", "virtualedit\twhen to use virtual editing: \"block\", \"insert\" and/or \"all\"")
1297  call <SID>OptionG("ve", &ve)
1298endif
1299if has("autocmd")
1300  call append("$", "eventignore\tlist of autocommand events which are to be ignored")
1301  call <SID>OptionG("ei", &ei)
1302endif
1303call append("$", "loadplugins\tload plugin scripts when starting up")
1304call <SID>BinOptionG("lpl", &lpl)
1305call append("$", "exrc\tenable reading .vimrc/.exrc/.gvimrc in the current directory")
1306call <SID>BinOptionG("ex", &ex)
1307call append("$", "secure\tsafer working with script files in the current directory")
1308call <SID>BinOptionG("secure", &secure)
1309call append("$", "gdefault\tuse the 'g' flag for \":substitute\"")
1310call <SID>BinOptionG("gd", &gd)
1311call append("$", "edcompatible\t'g' and 'c' flags of \":substitute\" toggle")
1312call <SID>BinOptionG("ed", &ed)
1313if exists("+opendevice")
1314  call append("$", "opendevice\tallow reading/writing devices")
1315  call <SID>BinOptionG("odev", &odev)
1316endif
1317if exists("+maxfuncdepth")
1318  call append("$", "maxfuncdepth\tmaximum depth of function calls")
1319  call append("$", " \tset mfd=" . &mfd)
1320endif
1321if has("mksession")
1322  call append("$", "sessionoptions\tlist of words that specifies what to put in a session file")
1323  call <SID>OptionG("ssop", &ssop)
1324  call append("$", "viewoptions\tlist of words that specifies what to save for :mkview")
1325  call <SID>OptionG("vop", &vop)
1326  call append("$", "viewdir\tdirectory where to store files with :mkview")
1327  call <SID>OptionG("vdir", &vdir)
1328endif
1329if has("viminfo")
1330  call append("$", "viminfo\tlist that specifies what to write in the viminfo file")
1331  call <SID>OptionG("vi", &vi)
1332  call append("$", "viminfofile\tfile name used for the viminfo file")
1333  call <SID>OptionG("vif", &vif)
1334endif
1335if has("quickfix")
1336  call append("$", "bufhidden\twhat happens with a buffer when it's no longer in a window")
1337  call append("$", "\t(local to buffer)")
1338  call <SID>OptionL("bh")
1339  call append("$", "buftype\t\"\", \"nofile\", \"nowrite\" or \"quickfix\": type of buffer")
1340  call append("$", "\t(local to buffer)")
1341  call <SID>OptionL("bt")
1342endif
1343call append("$", "buflisted\twhether the buffer shows up in the buffer list")
1344call append("$", "\t(local to buffer)")
1345call <SID>BinOptionL("bl")
1346call append("$", "debug\tset to \"msg\" to see all error messages")
1347call append("$", " \tset debug=" . &debug)
1348if has("signs")
1349  call append("$", "signcolumn\twhether to show the signcolumn")
1350  call append("$", "\t(local to window)")
1351  call <SID>OptionL("scl")
1352endif
1353if has("mzscheme")
1354  call append("$", "mzquantum\tinterval in milliseconds between polls for MzScheme threads")
1355  call append("$", " \tset mzq=" . &mzq)
1356endif
1357if exists("&luadll")
1358  call append("$", "luadll\tname of the Lua dynamic library")
1359  call <SID>OptionG("luadll", &luadll)
1360endif
1361if exists("&perldll")
1362  call append("$", "perldll\tname of the Perl dynamic library")
1363  call <SID>OptionG("perldll", &perldll)
1364endif
1365if has('pythonx')
1366  call append("$", "pyxversion\twhether to use Python 2 or 3")
1367  call append("$", " \tset pyx=" . &wd)
1368endif
1369if exists("&pythondll")
1370  call append("$", "pythondll\tname of the Python 2 dynamic library")
1371  call <SID>OptionG("pythondll", &pythondll)
1372endif
1373if exists("&pythonhome")
1374  call append("$", "pythonhome\tname of the Python 2 home directory")
1375  call <SID>OptionG("pythonhome", &pythonhome)
1376endif
1377if exists("&pythonthreedll")
1378  call append("$", "pythonthreedll\tname of the Python 3 dynamic library")
1379  call <SID>OptionG("pythonthreedll", &pythonthreedll)
1380endif
1381if exists("&pythonthreehome")
1382  call append("$", "pythonthreehome\tname of the Python 3 home directory")
1383  call <SID>OptionG("pythonthreehome", &pythonthreehome)
1384endif
1385if exists("&rubydll")
1386  call append("$", "rubydll\tname of the Ruby dynamic library")
1387  call <SID>OptionG("rubydll", &rubydll)
1388endif
1389if exists("&tcldll")
1390  call append("$", "tcldll\tname of the Tcl dynamic library")
1391  call <SID>OptionG("tcldll", &tcldll)
1392endif
1393if exists("&mzschemedll")
1394  call append("$", "mzschemedll\tname of the Tcl dynamic library")
1395  call <SID>OptionG("mzschemedll", &mzschemedll)
1396  call append("$", "mzschemegcdll\tname of the Tcl GC dynamic library")
1397  call <SID>OptionG("mzschemegcdll", &mzschemegcdll)
1398endif
1399
1400set cpo&vim
1401
1402" go to first line
14031
1404
1405" reset 'modified', so that ":q" can be used to close the window
1406setlocal nomodified
1407
1408if has("syntax")
1409  " Use Vim highlighting, with some additional stuff
1410  setlocal ft=vim
1411  syn match optwinHeader "^ \=[0-9].*"
1412  syn match optwinName "^[a-z]*\t" nextgroup=optwinComment
1413  syn match optwinComment ".*" contained
1414  syn match optwinComment "^\t.*"
1415  if !exists("did_optwin_syntax_inits")
1416    let did_optwin_syntax_inits = 1
1417    hi link optwinHeader Title
1418    hi link optwinName Identifier
1419    hi link optwinComment Comment
1420  endif
1421endif
1422
1423" Install autocommands to enable mappings in option-window
1424noremap <silent> <buffer> <CR> <C-\><C-N>:call <SID>CR()<CR>
1425inoremap <silent> <buffer> <CR> <Esc>:call <SID>CR()<CR>
1426noremap <silent> <buffer> <Space> :call <SID>Space()<CR>
1427
1428" Make the buffer be deleted when the window is closed.
1429setlocal buftype=nofile bufhidden=delete noswapfile
1430
1431augroup optwin
1432  au! BufUnload,BufHidden option-window nested
1433	\ call <SID>unload() | delfun <SID>unload
1434augroup END
1435
1436fun! <SID>unload()
1437  delfun <SID>CR
1438  delfun <SID>Space
1439  delfun <SID>Find
1440  delfun <SID>Update
1441  delfun <SID>OptionL
1442  delfun <SID>OptionG
1443  delfun <SID>BinOptionL
1444  delfun <SID>BinOptionG
1445  delfun <SID>Header
1446  au! optwin
1447endfun
1448
1449" Restore the previous value of 'title' and 'icon'.
1450let &title = s:old_title
1451let &icon = s:old_icon
1452let &ru = s:old_ru
1453let &sc = s:old_sc
1454let &cpo = s:cpo_save
1455let &ul = s:old_ul
1456unlet s:old_title s:old_icon s:old_ru s:old_sc s:cpo_save s:idx s:lnum s:old_ul
1457
1458" vim: ts=8 sw=2 sts=2
1459