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