feat: generate types and docs for v variables

This commit is contained in:
Lewis Russell 2023-12-20 16:34:17 +00:00 committed by Lewis Russell
parent a8935d97ac
commit e8d3c4cccb
6 changed files with 2171 additions and 335 deletions

1
.gitattributes vendored
View File

@ -6,6 +6,7 @@ runtime/doc/* linguist-documentation
runtime/doc/builtin.txt linguist-generated runtime/doc/builtin.txt linguist-generated
runtime/lua/vim/_meta/vimfn.lua linguist-generated runtime/lua/vim/_meta/vimfn.lua linguist-generated
runtime/lua/vim/_meta/vvars.lua linguist-generated
runtime/lua/vim/_meta/api.lua linguist-generated runtime/lua/vim/_meta/api.lua linguist-generated
runtime/lua/vim/_meta/api_keysets.lua linguist-generated runtime/lua/vim/_meta/api_keysets.lua linguist-generated
runtime/lua/vim/_meta/options.lua linguist-generated runtime/lua/vim/_meta/options.lua linguist-generated

View File

@ -224,6 +224,7 @@ The following new APIs and features were added.
• `vim.*` • `vim.*`
• `vim.fn.*` • `vim.fn.*`
• `vim.api.*` • `vim.api.*`
• `vim.v.*`
• Improved messages for type errors in `vim.api.*` calls (including `opts` params) • Improved messages for type errors in `vim.api.*` calls (including `opts` params)

View File

@ -11,12 +11,14 @@ Some variables can be set by the user, but the type cannot be changed.
Type |gO| to see the table of contents. Type |gO| to see the table of contents.
*v:argv* *argv-variable* *v:argv* *argv-variable*
v:argv The command line arguments Vim was invoked with. This is a v:argv
The command line arguments Vim was invoked with. This is a
list of strings. The first item is the Vim command. list of strings. The first item is the Vim command.
See |v:progpath| for the command with full path. See |v:progpath| for the command with full path.
*v:char* *char-variable* *v:char* *char-variable*
v:char Argument for evaluating 'formatexpr' and used for the typed v:char
Argument for evaluating 'formatexpr' and used for the typed
character when using <expr> in an abbreviation |:map-<expr>|. character when using <expr> in an abbreviation |:map-<expr>|.
It is also used by the |InsertCharPre| and |InsertEnter| events. It is also used by the |InsertCharPre| and |InsertEnter| events.
@ -39,8 +41,16 @@ v:cmdarg
directly after the read/write command. Note: "+cmd" isn't directly after the read/write command. Note: "+cmd" isn't
included here, because it will be executed anyway. included here, because it will be executed anyway.
*v:cmdbang* *cmdbang-variable*
v:cmdbang
Set like v:cmdarg for a file read/write command. When a "!"
was used the value is 1, otherwise it is 0. Note that this
can only be used in autocommands. For user commands |<bang>|
can be used.
*v:collate* *collate-variable* *v:collate* *collate-variable*
v:collate The current locale setting for collation order of the runtime v:collate
The current locale setting for collation order of the runtime
environment. This allows Vim scripts to be aware of the environment. This allows Vim scripts to be aware of the
current locale encoding. Technical: it's the value of current locale encoding. Technical: it's the value of
LC_COLLATE. When not using a locale the value is "C". LC_COLLATE. When not using a locale the value is "C".
@ -48,12 +58,6 @@ v:collate The current locale setting for collation order of the runtime
command. command.
See |multi-lang|. See |multi-lang|.
*v:cmdbang* *cmdbang-variable*
v:cmdbang Set like v:cmdarg for a file read/write command. When a "!"
was used the value is 1, otherwise it is 0. Note that this
can only be used in autocommands. For user commands |<bang>|
can be used.
*v:completed_item* *completed_item-variable* *v:completed_item* *completed_item-variable*
v:completed_item v:completed_item
Dictionary containing the most recent |complete-items| after Dictionary containing the most recent |complete-items| after
@ -63,21 +67,25 @@ v:completed_item
|CompleteDone| event behavior. |CompleteDone| event behavior.
*v:count* *count-variable* *v:count* *count-variable*
v:count The count given for the last Normal mode command. Can be used v:count
to get the count before a mapping. Read-only. Example: > The count given for the last Normal mode command. Can be used
to get the count before a mapping. Read-only. Example: >vim
:map _x :<C-U>echo "the count is " .. v:count<CR> :map _x :<C-U>echo "the count is " .. v:count<CR>
< Note: The <C-U> is required to remove the line range that you <
Note: The <C-U> is required to remove the line range that you
get when typing ':' after a count. get when typing ':' after a count.
When there are two counts, as in "3d2w", they are multiplied, When there are two counts, as in "3d2w", they are multiplied,
just like what happens in the command, "d6w" for the example. just like what happens in the command, "d6w" for the example.
Also used for evaluating the 'formatexpr' option. Also used for evaluating the 'formatexpr' option.
*v:count1* *count1-variable* *v:count1* *count1-variable*
v:count1 Just like "v:count", but defaults to one when no count is v:count1
Just like "v:count", but defaults to one when no count is
used. used.
*v:ctype* *ctype-variable* *v:ctype* *ctype-variable*
v:ctype The current locale setting for characters of the runtime v:ctype
The current locale setting for characters of the runtime
environment. This allows Vim scripts to be aware of the environment. This allows Vim scripts to be aware of the
current locale encoding. Technical: it's the value of current locale encoding. Technical: it's the value of
LC_CTYPE. When not using a locale the value is "C". LC_CTYPE. When not using a locale the value is "C".
@ -86,54 +94,57 @@ v:ctype The current locale setting for characters of the runtime
See |multi-lang|. See |multi-lang|.
*v:dying* *dying-variable* *v:dying* *dying-variable*
v:dying Normally zero. When a deadly signal is caught it's set to v:dying
Normally zero. When a deadly signal is caught it's set to
one. When multiple signals are caught the number increases. one. When multiple signals are caught the number increases.
Can be used in an autocommand to check if Vim didn't Can be used in an autocommand to check if Vim didn't
terminate normally. terminate normally.
Example: > Example: >vim
:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif :au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
< Note: if another deadly signal is caught when v:dying is one, <
Note: if another deadly signal is caught when v:dying is one,
VimLeave autocommands will not be executed. VimLeave autocommands will not be executed.
*v:exiting* *exiting-variable*
v:exiting Exit code, or |v:null| before invoking the |VimLeavePre|
and |VimLeave| autocmds. See |:q|, |:x| and |:cquit|.
Example: >
:au VimLeave * echo "Exit value is " .. v:exiting
<
*v:echospace* *echospace-variable* *v:echospace* *echospace-variable*
v:echospace Number of screen cells that can be used for an `:echo` message v:echospace
Number of screen cells that can be used for an `:echo` message
in the last screen line before causing the |hit-enter-prompt|. in the last screen line before causing the |hit-enter-prompt|.
Depends on 'showcmd', 'ruler' and 'columns'. You need to Depends on 'showcmd', 'ruler' and 'columns'. You need to
check 'cmdheight' for whether there are full-width lines check 'cmdheight' for whether there are full-width lines
available above the last line. available above the last line.
*v:errmsg* *errmsg-variable* *v:errmsg* *errmsg-variable*
v:errmsg Last given error message. v:errmsg
Last given error message.
Modifiable (can be set). Modifiable (can be set).
Example: > Example: >vim
:let v:errmsg = "" let v:errmsg = ""
:silent! next silent! next
:if v:errmsg != "" if v:errmsg != ""
: ... handle error " ... handle error
< <
*v:errors* *errors-variable* *assert-return* *v:errors* *errors-variable* *assert-return*
v:errors Errors found by assert functions, such as |assert_true()|. v:errors
Errors found by assert functions, such as |assert_true()|.
This is a list of strings. This is a list of strings.
The assert functions append an item when an assert fails. The assert functions append an item when an assert fails.
The return value indicates this: a one is returned if an item The return value indicates this: a one is returned if an item
was added to v:errors, otherwise zero is returned. was added to v:errors, otherwise zero is returned.
To remove old results make it empty: > To remove old results make it empty: >vim
:let v:errors = [] let v:errors = []
< If v:errors is set to anything but a list it is made an empty <
If v:errors is set to anything but a list it is made an empty
list by the assert function. list by the assert function.
*v:event* *event-variable* *v:event* *event-variable*
v:event Dictionary of event data for the current |autocommand|. Valid v:event
Dictionary of event data for the current |autocommand|. Valid
only during the event lifetime; storing or passing v:event is only during the event lifetime; storing or passing v:event is
invalid! Copy it instead: > invalid! Copy it instead: >vim
au TextYankPost * let g:foo = deepcopy(v:event) au TextYankPost * let g:foo = deepcopy(v:event)
< Keys vary by event; see the documentation for the specific <
Keys vary by event; see the documentation for the specific
event, e.g. |DirChanged| or |TextYankPost|. event, e.g. |DirChanged| or |TextYankPost|.
KEY DESCRIPTION ~ KEY DESCRIPTION ~
abort Whether the event triggered during abort Whether the event triggered during
@ -163,7 +174,7 @@ v:event Dictionary of event data for the current |autocommand|. Valid
|CompleteChanged|, Is `{}` when no complete |CompleteChanged|, Is `{}` when no complete
item selected. item selected.
height Height of popup menu on |CompleteChanged| height Height of popup menu on |CompleteChanged|
width width of popup menu on |CompleteChanged| width Width of popup menu on |CompleteChanged|
row Row count of popup menu on |CompleteChanged|, row Row count of popup menu on |CompleteChanged|,
relative to screen. relative to screen.
col Col count of popup menu on |CompleteChanged|, col Col count of popup menu on |CompleteChanged|,
@ -177,36 +188,37 @@ v:event Dictionary of event data for the current |autocommand|. Valid
status Job status or exit code, -1 means "unknown". |TermClose| status Job status or exit code, -1 means "unknown". |TermClose|
*v:exception* *exception-variable* *v:exception* *exception-variable*
v:exception The value of the exception most recently caught and not v:exception
The value of the exception most recently caught and not
finished. See also |v:throwpoint| and |throw-variables|. finished. See also |v:throwpoint| and |throw-variables|.
Example: > Example: >vim
:try try
: throw "oops" throw "oops"
:catch /.*/ catch /.*/
: echo "caught " .. v:exception echo "caught " .. v:exception
:endtry endtry
< Output: "caught oops". <
Output: "caught oops".
*v:exiting* *exiting-variable*
v:exiting
Exit code, or |v:null| before invoking the |VimLeavePre|
and |VimLeave| autocmds. See |:q|, |:x| and |:cquit|.
Example: >vim
:au VimLeave * echo "Exit value is " .. v:exiting
<
*v:false* *false-variable* *v:false* *false-variable*
v:false Special value used to put "false" in JSON and msgpack. See v:false
Special value used to put "false" in JSON and msgpack. See
|json_encode()|. This value is converted to "v:false" when used |json_encode()|. This value is converted to "v:false" when used
as a String (e.g. in |expr5| with string concatenation as a String (e.g. in |expr5| with string concatenation
operator) and to zero when used as a Number (e.g. in |expr5| operator) and to zero when used as a Number (e.g. in |expr5|
or |expr7| when used with numeric operators). Read-only. or |expr7| when used with numeric operators). Read-only.
*v:fcs_reason* *fcs_reason-variable*
v:fcs_reason The reason why the |FileChangedShell| event was triggered.
Can be used in an autocommand to decide what to do and/or what
to set v:fcs_choice to. Possible values:
deleted file no longer exists
conflict file contents, mode or timestamp was
changed and buffer is modified
changed file contents has changed
mode mode of file changed
time only file timestamp changed
*v:fcs_choice* *fcs_choice-variable* *v:fcs_choice* *fcs_choice-variable*
v:fcs_choice What should happen after a |FileChangedShell| event was v:fcs_choice
What should happen after a |FileChangedShell| event was
triggered. Can be used in an autocommand to tell Vim what to triggered. Can be used in an autocommand to tell Vim what to
do with the affected buffer: do with the affected buffer:
reload Reload the buffer (does not work if reload Reload the buffer (does not work if
@ -225,20 +237,45 @@ v:fcs_choice What should happen after a |FileChangedShell| event was
The default is empty. If another (invalid) value is used then The default is empty. If another (invalid) value is used then
Vim behaves like it is empty, there is no warning message. Vim behaves like it is empty, there is no warning message.
*v:fcs_reason* *fcs_reason-variable*
v:fcs_reason
The reason why the |FileChangedShell| event was triggered.
Can be used in an autocommand to decide what to do and/or what
to set v:fcs_choice to. Possible values:
deleted file no longer exists
conflict file contents, mode or timestamp was
changed and buffer is modified
changed file contents has changed
mode mode of file changed
time only file timestamp changed
*v:fname* *fname-variable* *v:fname* *fname-variable*
v:fname When evaluating 'includeexpr': the file name that was v:fname
When evaluating 'includeexpr': the file name that was
detected. Empty otherwise. detected. Empty otherwise.
*v:fname_diff* *fname_diff-variable*
v:fname_diff
The name of the diff (patch) file. Only valid while
evaluating 'patchexpr'.
*v:fname_in* *fname_in-variable* *v:fname_in* *fname_in-variable*
v:fname_in The name of the input file. Valid while evaluating: v:fname_in
The name of the input file. Valid while evaluating:
option used for ~ option used for ~
'charconvert' file to be converted 'charconvert' file to be converted
'diffexpr' original file 'diffexpr' original file
'patchexpr' original file 'patchexpr' original file
And set to the swap file name for |SwapExists|. And set to the swap file name for |SwapExists|.
*v:fname_new* *fname_new-variable*
v:fname_new
The name of the new version of the file. Only valid while
evaluating 'diffexpr'.
*v:fname_out* *fname_out-variable* *v:fname_out* *fname_out-variable*
v:fname_out The name of the output file. Only valid while v:fname_out
The name of the output file. Only valid while
evaluating: evaluating:
option used for ~ option used for ~
'charconvert' resulting converted file [1] 'charconvert' resulting converted file [1]
@ -249,54 +286,55 @@ v:fname_out The name of the output file. Only valid while
for a read command (e.g., ":e file") it will be a temporary for a read command (e.g., ":e file") it will be a temporary
file and different from v:fname_in. file and different from v:fname_in.
*v:fname_new* *fname_new-variable*
v:fname_new The name of the new version of the file. Only valid while
evaluating 'diffexpr'.
*v:fname_diff* *fname_diff-variable*
v:fname_diff The name of the diff (patch) file. Only valid while
evaluating 'patchexpr'.
*v:folddashes* *folddashes-variable* *v:folddashes* *folddashes-variable*
v:folddashes Used for 'foldtext': dashes representing foldlevel of a closed v:folddashes
Used for 'foldtext': dashes representing foldlevel of a closed
fold. fold.
Read-only in the |sandbox|. |fold-foldtext| Read-only in the |sandbox|. |fold-foldtext|
*v:foldlevel* *foldlevel-variable* *v:foldend* *foldend-variable*
v:foldlevel Used for 'foldtext': foldlevel of closed fold. v:foldend
Used for 'foldtext': last line of closed fold.
Read-only in the |sandbox|. |fold-foldtext| Read-only in the |sandbox|. |fold-foldtext|
*v:foldend* *foldend-variable* *v:foldlevel* *foldlevel-variable*
v:foldend Used for 'foldtext': last line of closed fold. v:foldlevel
Used for 'foldtext': foldlevel of closed fold.
Read-only in the |sandbox|. |fold-foldtext| Read-only in the |sandbox|. |fold-foldtext|
*v:foldstart* *foldstart-variable* *v:foldstart* *foldstart-variable*
v:foldstart Used for 'foldtext': first line of closed fold. v:foldstart
Used for 'foldtext': first line of closed fold.
Read-only in the |sandbox|. |fold-foldtext| Read-only in the |sandbox|. |fold-foldtext|
*v:hlsearch* *hlsearch-variable* *v:hlsearch* *hlsearch-variable*
v:hlsearch Variable that indicates whether search highlighting is on. v:hlsearch
Variable that indicates whether search highlighting is on.
Setting it makes sense only if 'hlsearch' is enabled. Setting Setting it makes sense only if 'hlsearch' is enabled. Setting
this variable to zero acts like the |:nohlsearch| command, this variable to zero acts like the |:nohlsearch| command,
setting it to one acts like > setting it to one acts like >vim
let &hlsearch = &hlsearch let &hlsearch = &hlsearch
< Note that the value is restored when returning from a <
Note that the value is restored when returning from a
function. |function-search-undo|. function. |function-search-undo|.
*v:insertmode* *insertmode-variable* *v:insertmode* *insertmode-variable*
v:insertmode Used for the |InsertEnter| and |InsertChange| autocommand v:insertmode
Used for the |InsertEnter| and |InsertChange| autocommand
events. Values: events. Values:
i Insert mode i Insert mode
r Replace mode r Replace mode
v Virtual Replace mode v Virtual Replace mode
*v:key* *key-variable* *v:key* *key-variable*
v:key Key of the current item of a |Dictionary|. Only valid while v:key
Key of the current item of a |Dictionary|. Only valid while
evaluating the expression used with |map()| and |filter()|. evaluating the expression used with |map()| and |filter()|.
Read-only. Read-only.
*v:lang* *lang-variable* *v:lang* *lang-variable*
v:lang The current locale setting for messages of the runtime v:lang
The current locale setting for messages of the runtime
environment. This allows Vim scripts to be aware of the environment. This allows Vim scripts to be aware of the
current language. Technical: it's the value of LC_MESSAGES. current language. Technical: it's the value of LC_MESSAGES.
The value is system dependent. The value is system dependent.
@ -307,55 +345,65 @@ v:lang The current locale setting for messages of the runtime
encoding. See |multi-lang|. encoding. See |multi-lang|.
*v:lc_time* *lc_time-variable* *v:lc_time* *lc_time-variable*
v:lc_time The current locale setting for time messages of the runtime v:lc_time
The current locale setting for time messages of the runtime
environment. This allows Vim scripts to be aware of the environment. This allows Vim scripts to be aware of the
current language. Technical: it's the value of LC_TIME. current language. Technical: it's the value of LC_TIME.
This variable can not be set directly, use the |:language| This variable can not be set directly, use the |:language|
command. See |multi-lang|. command. See |multi-lang|.
*v:lnum* *lnum-variable* *v:lnum* *lnum-variable*
v:lnum Line number for the 'foldexpr' |fold-expr|, 'formatexpr', v:lnum
Line number for the 'foldexpr' |fold-expr|, 'formatexpr',
'indentexpr' and 'statuscolumn' expressions, tab page number 'indentexpr' and 'statuscolumn' expressions, tab page number
for 'guitablabel' and 'guitabtooltip'. Only valid while one of for 'guitablabel' and 'guitabtooltip'. Only valid while one of
these expressions is being evaluated. Read-only when in the these expressions is being evaluated. Read-only when in the
|sandbox|. |sandbox|.
*v:lua* *lua-variable* *v:lua* *lua-variable*
v:lua Prefix for calling Lua functions from expressions. v:lua
Prefix for calling Lua functions from expressions.
See |v:lua-call| for more information. See |v:lua-call| for more information.
*v:maxcol* *maxcol-variable* *v:maxcol* *maxcol-variable*
v:maxcol Maximum line length. Depending on where it is used it can be v:maxcol
Maximum line length. Depending on where it is used it can be
screen columns, characters or bytes. The value currently is screen columns, characters or bytes. The value currently is
2147483647 on all systems. 2147483647 on all systems.
*v:mouse_col* *mouse_col-variable*
v:mouse_col
Column number for a mouse click obtained with |getchar()|.
This is the screen column number, like with |virtcol()|. The
value is zero when there was no mouse button click.
*v:mouse_lnum* *mouse_lnum-variable*
v:mouse_lnum
Line number for a mouse click obtained with |getchar()|.
This is the text line number, not the screen line number. The
value is zero when there was no mouse button click.
*v:mouse_win* *mouse_win-variable* *v:mouse_win* *mouse_win-variable*
v:mouse_win Window number for a mouse click obtained with |getchar()|. v:mouse_win
Window number for a mouse click obtained with |getchar()|.
First window has number 1, like with |winnr()|. The value is First window has number 1, like with |winnr()|. The value is
zero when there was no mouse button click. zero when there was no mouse button click.
*v:mouse_winid* *mouse_winid-variable* *v:mouse_winid* *mouse_winid-variable*
v:mouse_winid |window-ID| for a mouse click obtained with |getchar()|. v:mouse_winid
|window-ID| for a mouse click obtained with |getchar()|.
The value is zero when there was no mouse button click. The value is zero when there was no mouse button click.
*v:mouse_lnum* *mouse_lnum-variable*
v:mouse_lnum Line number for a mouse click obtained with |getchar()|.
This is the text line number, not the screen line number. The
value is zero when there was no mouse button click.
*v:mouse_col* *mouse_col-variable*
v:mouse_col Column number for a mouse click obtained with |getchar()|.
This is the screen column number, like with |virtcol()|. The
value is zero when there was no mouse button click.
*v:msgpack_types* *msgpack_types-variable* *v:msgpack_types* *msgpack_types-variable*
v:msgpack_types Dictionary containing msgpack types used by |msgpackparse()| v:msgpack_types
Dictionary containing msgpack types used by |msgpackparse()|
and |msgpackdump()|. All types inside dictionary are fixed and |msgpackdump()|. All types inside dictionary are fixed
(not editable) empty lists. To check whether some list is one (not editable) empty lists. To check whether some list is one
of msgpack types, use |is| operator. of msgpack types, use |is| operator.
*v:null* *null-variable* *v:null* *null-variable*
v:null Special value used to put "null" in JSON and NIL in msgpack. v:null
Special value used to put "null" in JSON and NIL in msgpack.
See |json_encode()|. This value is converted to "v:null" when See |json_encode()|. This value is converted to "v:null" when
used as a String (e.g. in |expr5| with string concatenation used as a String (e.g. in |expr5| with string concatenation
operator) and to zero when used as a Number (e.g. in |expr5| operator) and to zero when used as a Number (e.g. in |expr5|
@ -371,11 +419,13 @@ v:numbermax Maximum value of a number.
v:numbermin Minimum value of a number (negative). v:numbermin Minimum value of a number (negative).
*v:numbersize* *numbersize-variable* *v:numbersize* *numbersize-variable*
v:numbersize Number of bits in a Number. This is normally 64, but on some v:numbersize
Number of bits in a Number. This is normally 64, but on some
systems it may be 32. systems it may be 32.
*v:oldfiles* *oldfiles-variable* *v:oldfiles* *oldfiles-variable*
v:oldfiles List of file names that is loaded from the |shada| file on v:oldfiles
List of file names that is loaded from the |shada| file on
startup. These are the files that Vim remembers marks for. startup. These are the files that Vim remembers marks for.
The length of the List is limited by the ' argument of the The length of the List is limited by the ' argument of the
'shada' option (default is 100). 'shada' option (default is 100).
@ -385,69 +435,86 @@ v:oldfiles List of file names that is loaded from the |shada| file on
stored in the |shada| file later. If you use values other stored in the |shada| file later. If you use values other
than String this will cause trouble. than String this will cause trouble.
*v:option_new*
v:option_new New value of the option. Valid while executing an |OptionSet|
autocommand.
*v:option_old*
v:option_old Old value of the option. Valid while executing an |OptionSet|
autocommand. Depending on the command used for setting and the
kind of option this is either the local old value or the
global old value.
*v:option_oldlocal*
v:option_oldlocal
Old local value of the option. Valid while executing an
|OptionSet| autocommand.
*v:option_oldglobal*
v:option_oldglobal
Old global value of the option. Valid while executing an
|OptionSet| autocommand.
*v:option_type*
v:option_type Scope of the set command. Valid while executing an
|OptionSet| autocommand. Can be either "global" or "local"
*v:option_command*
v:option_command
Command used to set the option. Valid while executing an
|OptionSet| autocommand.
value option was set via ~
"setlocal" |:setlocal| or ":let l:xxx"
"setglobal" |:setglobal| or ":let g:xxx"
"set" |:set| or |:let|
"modeline" |modeline|
*v:operator* *operator-variable* *v:operator* *operator-variable*
v:operator The last operator given in Normal mode. This is a single v:operator
The last operator given in Normal mode. This is a single
character except for commands starting with <g> or <z>, character except for commands starting with <g> or <z>,
in which case it is two characters. Best used alongside in which case it is two characters. Best used alongside
|v:prevcount| and |v:register|. Useful if you want to cancel |v:prevcount| and |v:register|. Useful if you want to cancel
Operator-pending mode and then use the operator, e.g.: > Operator-pending mode and then use the operator, e.g.: >vim
:omap O <Esc>:call MyMotion(v:operator)<CR> :omap O <Esc>:call MyMotion(v:operator)<CR>
< The value remains set until another operator is entered, thus <
The value remains set until another operator is entered, thus
don't expect it to be empty. don't expect it to be empty.
v:operator is not set for |:delete|, |:yank| or other Ex v:operator is not set for |:delete|, |:yank| or other Ex
commands. commands.
Read-only. Read-only.
*v:option_command* *option_command-variable*
v:option_command
Command used to set the option. Valid while executing an
|OptionSet| autocommand.
value option was set via ~
"setlocal" |:setlocal| or `:let l:xxx`
"setglobal" |:setglobal| or `:let g:xxx`
"set" |:set| or |:let|
"modeline" |modeline|
*v:option_new* *option_new-variable*
v:option_new
New value of the option. Valid while executing an |OptionSet|
autocommand.
*v:option_old* *option_old-variable*
v:option_old
Old value of the option. Valid while executing an |OptionSet|
autocommand. Depending on the command used for setting and the
kind of option this is either the local old value or the
global old value.
*v:option_oldglobal* *option_oldglobal-variable*
v:option_oldglobal
Old global value of the option. Valid while executing an
|OptionSet| autocommand.
*v:option_oldlocal* *option_oldlocal-variable*
v:option_oldlocal
Old local value of the option. Valid while executing an
|OptionSet| autocommand.
*v:option_type* *option_type-variable*
v:option_type
Scope of the set command. Valid while executing an
|OptionSet| autocommand. Can be either "global" or "local"
*v:prevcount* *prevcount-variable* *v:prevcount* *prevcount-variable*
v:prevcount The count given for the last but one Normal mode command. v:prevcount
The count given for the last but one Normal mode command.
This is the v:count value of the previous command. Useful if This is the v:count value of the previous command. Useful if
you want to cancel Visual or Operator-pending mode and then you want to cancel Visual or Operator-pending mode and then
use the count, e.g.: > use the count, e.g.: >vim
:vmap % <Esc>:call MyFilter(v:prevcount)<CR> :vmap % <Esc>:call MyFilter(v:prevcount)<CR>
< Read-only. <
Read-only.
*v:profiling* *profiling-variable* *v:profiling* *profiling-variable*
v:profiling Normally zero. Set to one after using ":profile start". v:profiling
Normally zero. Set to one after using ":profile start".
See |profiling|. See |profiling|.
*v:progname* *progname-variable* *v:progname* *progname-variable*
v:progname The name by which Nvim was invoked (with path removed). v:progname
The name by which Nvim was invoked (with path removed).
Read-only. Read-only.
*v:progpath* *progpath-variable* *v:progpath* *progpath-variable*
v:progpath Absolute path to the current running Nvim. v:progpath
Absolute path to the current running Nvim.
Read-only. Read-only.
*v:register* *register-variable* *v:register* *register-variable*
v:register The name of the register in effect for the current normal mode v:register
The name of the register in effect for the current normal mode
command (regardless of whether that command actually used a command (regardless of whether that command actually used a
register). Or for the currently executing normal mode mapping register). Or for the currently executing normal mode mapping
(use this in custom commands that take a register). (use this in custom commands that take a register).
@ -457,19 +524,31 @@ v:register The name of the register in effect for the current normal mode
Also see |getreg()| and |setreg()| Also see |getreg()| and |setreg()|
*v:relnum* *relnum-variable* *v:relnum* *relnum-variable*
v:relnum Relative line number for the 'statuscolumn' expression. v:relnum
Relative line number for the 'statuscolumn' expression.
Read-only. Read-only.
*v:scrollstart* *scrollstart-variable* *v:scrollstart* *scrollstart-variable*
v:scrollstart String describing the script or function that caused the v:scrollstart
String describing the script or function that caused the
screen to scroll up. It's only set when it is empty, thus the screen to scroll up. It's only set when it is empty, thus the
first reason is remembered. It is set to "Unknown" for a first reason is remembered. It is set to "Unknown" for a
typed command. typed command.
This can be used to find out why your script causes the This can be used to find out why your script causes the
hit-enter prompt. hit-enter prompt.
*v:searchforward* *searchforward-variable*
v:searchforward
Search direction: 1 after a forward search, 0 after a
backward search. It is reset to forward when directly setting
the last search pattern, see |quote/|.
Note that the value is restored when returning from a
function. |function-search-undo|.
Read-write.
*v:servername* *servername-variable* *v:servername* *servername-variable*
v:servername Primary listen-address of Nvim, the first item returned by v:servername
Primary listen-address of Nvim, the first item returned by
|serverlist()|. Usually this is the named pipe created by Nvim |serverlist()|. Usually this is the named pipe created by Nvim
at |startup| or given by |--listen| (or the deprecated at |startup| or given by |--listen| (or the deprecated
|$NVIM_LISTEN_ADDRESS| env var). |$NVIM_LISTEN_ADDRESS| env var).
@ -480,51 +559,45 @@ v:servername Primary listen-address of Nvim, the first item returned by
*$NVIM* *$NVIM*
$NVIM is set by |terminal| and |jobstart()|, and is thus $NVIM is set by |terminal| and |jobstart()|, and is thus
a hint that the current environment is a subprocess of Nvim. a hint that the current environment is a subprocess of Nvim.
Example: > Example: >vim
if $NVIM if $NVIM
echo nvim_get_chan_info(v:parent) echo nvim_get_chan_info(v:parent)
endif endif
<
< Note the contents of $NVIM may change in the future. Note the contents of $NVIM may change in the future.
v:searchforward *v:searchforward* *searchforward-variable*
Search direction: 1 after a forward search, 0 after a
backward search. It is reset to forward when directly setting
the last search pattern, see |quote/|.
Note that the value is restored when returning from a
function. |function-search-undo|.
Read-write.
*v:shell_error* *shell_error-variable* *v:shell_error* *shell_error-variable*
v:shell_error Result of the last shell command. When non-zero, the last v:shell_error
Result of the last shell command. When non-zero, the last
shell command had an error. When zero, there was no problem. shell command had an error. When zero, there was no problem.
This only works when the shell returns the error code to Vim. This only works when the shell returns the error code to Vim.
The value -1 is often used when the command could not be The value -1 is often used when the command could not be
executed. Read-only. executed. Read-only.
Example: > Example: >vim
:!mv foo bar !mv foo bar
:if v:shell_error if v:shell_error
: echo 'could not rename "foo" to "bar"!' echo 'could not rename "foo" to "bar"!'
:endif endif
< <
*v:statusmsg* *statusmsg-variable* *v:statusmsg* *statusmsg-variable*
v:statusmsg Last given status message. v:statusmsg
Last given status message.
Modifiable (can be set). Modifiable (can be set).
*v:stderr* *stderr-variable* *v:stderr* *stderr-variable*
v:stderr |channel-id| corresponding to stderr. The value is always 2; v:stderr
|channel-id| corresponding to stderr. The value is always 2;
use this variable to make your code more descriptive. use this variable to make your code more descriptive.
Unlike stdin and stdout (see |stdioopen()|), stderr is always Unlike stdin and stdout (see |stdioopen()|), stderr is always
open for writing. Example: > open for writing. Example: >vim
:call chansend(v:stderr, "error: toaster empty\n") :call chansend(v:stderr, "error: toaster empty\n")
< <
*v:swapname* *swapname-variable*
v:swapname Name of the swapfile found.
Only valid during |SwapExists| event.
Read-only.
*v:swapchoice* *swapchoice-variable* *v:swapchoice* *swapchoice-variable*
v:swapchoice |SwapExists| autocommands can set this to the selected choice v:swapchoice
|SwapExists| autocommands can set this to the selected choice
for handling an existing swapfile: for handling an existing swapfile:
'o' Open read-only 'o' Open read-only
'e' Edit anyway 'e' Edit anyway
@ -537,31 +610,46 @@ v:swapchoice |SwapExists| autocommands can set this to the selected choice
no SwapExists autocommand. The default is empty. no SwapExists autocommand. The default is empty.
*v:swapcommand* *swapcommand-variable* *v:swapcommand* *swapcommand-variable*
v:swapcommand Normal mode command to be executed after a file has been v:swapcommand
Normal mode command to be executed after a file has been
opened. Can be used for a |SwapExists| autocommand to have opened. Can be used for a |SwapExists| autocommand to have
another Vim open the file and jump to the right place. For another Vim open the file and jump to the right place. For
example, when jumping to a tag the value is ":tag tagname\r". example, when jumping to a tag the value is ":tag tagname\r".
For ":edit +cmd file" the value is ":cmd\r". For ":edit +cmd file" the value is ":cmd\r".
*v:t_TYPE* *v:t_bool* *t_bool-variable* *v:swapname* *swapname-variable*
v:t_bool Value of |Boolean| type. Read-only. See: |type()| v:swapname
*v:t_dict* *t_dict-variable* Name of the swapfile found.
v:t_dict Value of |Dictionary| type. Read-only. See: |type()| Only valid during |SwapExists| event.
*v:t_float* *t_float-variable* Read-only.
v:t_float Value of |Float| type. Read-only. See: |type()|
*v:t_func* *t_func-variable* *v:t_blob* *t_blob-variable* *v:t_TYPE*
v:t_func Value of |Funcref| type. Read-only. See: |type()|
*v:t_list* *t_list-variable*
v:t_list Value of |List| type. Read-only. See: |type()|
*v:t_number* *t_number-variable*
v:t_number Value of |Number| type. Read-only. See: |type()|
*v:t_string* *t_string-variable*
v:t_string Value of |String| type. Read-only. See: |type()|
*v:t_blob* *t_blob-variable*
v:t_blob Value of |Blob| type. Read-only. See: |type()| v:t_blob Value of |Blob| type. Read-only. See: |type()|
*v:t_bool* *t_bool-variable*
v:t_bool Value of |Boolean| type. Read-only. See: |type()|
*v:t_dict* *t_dict-variable*
v:t_dict Value of |Dictionary| type. Read-only. See: |type()|
*v:t_float* *t_float-variable*
v:t_float Value of |Float| type. Read-only. See: |type()|
*v:t_func* *t_func-variable*
v:t_func Value of |Funcref| type. Read-only. See: |type()|
*v:t_list* *t_list-variable*
v:t_list Value of |List| type. Read-only. See: |type()|
*v:t_number* *t_number-variable*
v:t_number Value of |Number| type. Read-only. See: |type()|
*v:t_string* *t_string-variable*
v:t_string Value of |String| type. Read-only. See: |type()|
*v:termresponse* *termresponse-variable* *v:termresponse* *termresponse-variable*
v:termresponse The value of the most recent OSC or DCS escape sequence v:termresponse
The value of the most recent OSC or DCS escape sequence
received by Nvim from the terminal. This can be read in a received by Nvim from the terminal. This can be read in a
|TermResponse| event handler after querying the terminal using |TermResponse| event handler after querying the terminal using
another escape sequence. another escape sequence.
@ -570,59 +658,69 @@ v:termresponse The value of the most recent OSC or DCS escape sequence
v:testing Must be set before using `test_garbagecollect_now()`. v:testing Must be set before using `test_garbagecollect_now()`.
*v:this_session* *this_session-variable* *v:this_session* *this_session-variable*
v:this_session Full filename of the last loaded or saved session file. v:this_session
Full filename of the last loaded or saved session file.
Empty when no session file has been saved. See |:mksession|. Empty when no session file has been saved. See |:mksession|.
Modifiable (can be set). Modifiable (can be set).
*v:throwpoint* *throwpoint-variable* *v:throwpoint* *throwpoint-variable*
v:throwpoint The point where the exception most recently caught and not v:throwpoint
The point where the exception most recently caught and not
finished was thrown. Not set when commands are typed. See finished was thrown. Not set when commands are typed. See
also |v:exception| and |throw-variables|. also |v:exception| and |throw-variables|.
Example: > Example: >vim
:try try
: throw "oops" throw "oops"
:catch /.*/ catch /.*/
: echo "Exception from" v:throwpoint echo "Exception from" v:throwpoint
:endtry endtry
< Output: "Exception from test.vim, line 2" <
Output: "Exception from test.vim, line 2"
*v:true* *true-variable* *v:true* *true-variable*
v:true Special value used to put "true" in JSON and msgpack. See v:true
Special value used to put "true" in JSON and msgpack. See
|json_encode()|. This value is converted to "v:true" when used |json_encode()|. This value is converted to "v:true" when used
as a String (e.g. in |expr5| with string concatenation as a String (e.g. in |expr5| with string concatenation
operator) and to one when used as a Number (e.g. in |expr5| or operator) and to one when used as a Number (e.g. in |expr5| or
|expr7| when used with numeric operators). Read-only. |expr7| when used with numeric operators). Read-only.
*v:val* *val-variable* *v:val* *val-variable*
v:val Value of the current item of a |List| or |Dictionary|. Only v:val
Value of the current item of a |List| or |Dictionary|. Only
valid while evaluating the expression used with |map()| and valid while evaluating the expression used with |map()| and
|filter()|. Read-only. |filter()|. Read-only.
*v:version* *version-variable* *v:version* *version-variable*
v:version Vim version number: major version times 100 plus minor v:version
Vim version number: major version times 100 plus minor
version. Vim 5.0 is 500, Vim 5.1 is 501. version. Vim 5.0 is 500, Vim 5.1 is 501.
Read-only. Read-only.
Use |has()| to check the Nvim (not Vim) version: > Use |has()| to check the Nvim (not Vim) version: >vim
:if has("nvim-0.2.1") :if has("nvim-0.2.1")
< <
*v:vim_did_enter* *vim_did_enter-variable*
v:vim_did_enter
0 during startup, 1 just before |VimEnter|.
Read-only.
*v:virtnum* *virtnum-variable* *v:virtnum* *virtnum-variable*
v:virtnum Virtual line number for the 'statuscolumn' expression. v:virtnum
Virtual line number for the 'statuscolumn' expression.
Negative when drawing the status column for virtual lines, zero Negative when drawing the status column for virtual lines, zero
when drawing an actual buffer line, and positive when drawing when drawing an actual buffer line, and positive when drawing
the wrapped part of a buffer line. the wrapped part of a buffer line.
Read-only.
*v:vim_did_enter* *vim_did_enter-variable*
v:vim_did_enter 0 during startup, 1 just before |VimEnter|.
Read-only. Read-only.
*v:warningmsg* *warningmsg-variable* *v:warningmsg* *warningmsg-variable*
v:warningmsg Last given warning message. v:warningmsg
Last given warning message.
Modifiable (can be set). Modifiable (can be set).
*v:windowid* *windowid-variable* *v:windowid* *windowid-variable*
v:windowid Application-specific window "handle" which may be set by any v:windowid
Application-specific window "handle" which may be set by any
attached UI. Defaults to zero. attached UI. Defaults to zero.
Note: For Nvim |windows| use |winnr()| or |win_getid()|, see Note: For Nvim |windows| use |winnr()| or |win_getid()|, see
|window-ID|. |window-ID|.

View File

@ -1,23 +1,772 @@
--- @meta _ --- @meta _
-- THIS FILE IS GENERATED
-- TODO(lewis6991): generate this and `:help vim-variable` -- DO NOT EDIT
error('Cannot require a meta file')
--- @class vim.v --- @class vim.v
vim.v = ...
--- The command line arguments Vim was invoked with. This is a
--- list of strings. The first item is the Vim command.
--- See `v:progpath` for the command with full path.
--- @type string[]
vim.v.argv = ...
--- Argument for evaluating 'formatexpr' and used for the typed
--- character when using <expr> in an abbreviation `:map-<expr>`.
--- It is also used by the `InsertCharPre` and `InsertEnter` events.
--- @type any
vim.v.char = ...
--- The name of the character encoding of a file to be converted.
--- Only valid while evaluating the 'charconvert' option.
--- @type string
vim.v.charconvert_from = ...
--- The name of the character encoding of a file after conversion.
--- Only valid while evaluating the 'charconvert' option.
--- @type string
vim.v.charconvert_to = ...
--- The extra arguments ("++p", "++enc=", "++ff=") given to a file
--- read/write command. This is set before an autocommand event
--- for a file read/write command is triggered. There is a
--- leading space to make it possible to append this variable
--- directly after the read/write command. Note: "+cmd" isn't
--- included here, because it will be executed anyway.
--- @type string[]
vim.v.cmdarg = ...
--- Set like v:cmdarg for a file read/write command. When a "!"
--- was used the value is 1, otherwise it is 0. Note that this
--- can only be used in autocommands. For user commands `<bang>`
--- can be used.
--- @type any
vim.v.cmdbang = ...
--- The current locale setting for collation order of the runtime
--- environment. This allows Vim scripts to be aware of the
--- current locale encoding. Technical: it's the value of
--- LC_COLLATE. When not using a locale the value is "C".
--- This variable can not be set directly, use the `:language`
--- command.
--- See `multi-lang`.
--- @type string
vim.v.collate = ...
--- Dictionary containing the most recent `complete-items` after
--- `CompleteDone`. Empty if the completion failed, or after
--- leaving and re-entering insert mode.
--- Note: Plugins can modify the value to emulate the builtin
--- `CompleteDone` event behavior.
--- @type any
vim.v.completed_item = ...
--- The count given for the last Normal mode command. Can be used --- The count given for the last Normal mode command. Can be used
--- to get the count before a mapping. Read-only. Example: --- to get the count before a mapping. Read-only. Example:
---
--- ```vim --- ```vim
--- :map _x :<C-U>echo "the count is " .. v:count<CR> --- :map _x :<C-U>echo "the count is " .. v:count<CR>
--- ``` --- ```
---
--- Note: The <C-U> is required to remove the line range that you --- Note: The <C-U> is required to remove the line range that you
--- get when typing ':' after a count. --- get when typing ':' after a count.
--- When there are two counts, as in "3d2w", they are multiplied, --- When there are two counts, as in "3d2w", they are multiplied,
--- just like what happens in the command, "d6w" for the example. --- just like what happens in the command, "d6w" for the example.
--- Also used for evaluating the 'formatexpr' option. --- Also used for evaluating the 'formatexpr' option.
--- @field count integer --- @type integer
vim.v.count = ...
--- Just like "v:count", but defaults to one when no count is
--- used.
--- @type integer
vim.v.count1 = ...
--- The current locale setting for characters of the runtime
--- environment. This allows Vim scripts to be aware of the
--- current locale encoding. Technical: it's the value of
--- LC_CTYPE. When not using a locale the value is "C".
--- This variable can not be set directly, use the `:language`
--- command.
--- See `multi-lang`.
--- @type any
vim.v.ctype = ...
--- Normally zero. When a deadly signal is caught it's set to
--- one. When multiple signals are caught the number increases.
--- Can be used in an autocommand to check if Vim didn't
--- terminate normally.
--- Example:
--- ---
--- Line number for the 'foldexpr' |fold-expr|, 'formatexpr', --- ```vim
--- :au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
--- ```
---
--- Note: if another deadly signal is caught when v:dying is one,
--- VimLeave autocommands will not be executed.
--- @type integer
vim.v.dying = ...
--- Number of screen cells that can be used for an `:echo` message
--- in the last screen line before causing the `hit-enter-prompt`.
--- Depends on 'showcmd', 'ruler' and 'columns'. You need to
--- check 'cmdheight' for whether there are full-width lines
--- available above the last line.
--- @type integer
vim.v.echospace = ...
--- Last given error message.
--- Modifiable (can be set).
--- Example:
---
--- ```vim
--- let v:errmsg = ""
--- silent! next
--- if v:errmsg != ""
--- " ... handle error
--- ```
--- @type string
vim.v.errmsg = ...
--- Errors found by assert functions, such as `assert_true()`.
--- This is a list of strings.
--- The assert functions append an item when an assert fails.
--- The return value indicates this: a one is returned if an item
--- was added to v:errors, otherwise zero is returned.
--- To remove old results make it empty:
---
--- ```vim
--- let v:errors = []
--- ```
---
--- If v:errors is set to anything but a list it is made an empty
--- list by the assert function.
--- @type any
vim.v.errors = ...
--- Dictionary of event data for the current `autocommand`. Valid
--- only during the event lifetime; storing or passing v:event is
--- invalid! Copy it instead:
---
--- ```vim
--- au TextYankPost * let g:foo = deepcopy(v:event)
--- ```
---
--- Keys vary by event; see the documentation for the specific
--- event, e.g. `DirChanged` or `TextYankPost`.
--- KEY DESCRIPTION ~
--- abort Whether the event triggered during
--- an aborting condition (e.g. `c_Esc` or
--- `c_CTRL-C` for `CmdlineLeave`).
--- chan `channel-id`
--- cmdlevel Level of cmdline.
--- cmdtype Type of cmdline, `cmdline-char`.
--- cwd Current working directory.
--- inclusive Motion is `inclusive`, else exclusive.
--- scope Event-specific scope name.
--- operator Current `operator`. Also set for Ex
--- commands (unlike `v:operator`). For
--- example if `TextYankPost` is triggered
--- by the `:yank` Ex command then
--- `v:event.operator` is "y".
--- regcontents Text stored in the register as a
--- `readfile()`-style list of lines.
--- regname Requested register (e.g "x" for "xyy)
--- or the empty string for an unnamed
--- operation.
--- regtype Type of register as returned by
--- `getregtype()`.
--- visual Selection is visual (as opposed to,
--- e.g., via motion).
--- completed_item Current selected complete item on
--- `CompleteChanged`, Is `{}` when no complete
--- item selected.
--- height Height of popup menu on `CompleteChanged`
--- width Width of popup menu on `CompleteChanged`
--- row Row count of popup menu on `CompleteChanged`,
--- relative to screen.
--- col Col count of popup menu on `CompleteChanged`,
--- relative to screen.
--- size Total number of completion items on
--- `CompleteChanged`.
--- scrollbar Is `v:true` if popup menu have scrollbar, or
--- `v:false` if not.
--- changed_window Is `v:true` if the event fired while
--- changing window (or tab) on `DirChanged`.
--- status Job status or exit code, -1 means "unknown". `TermClose`
--- @type any
vim.v.event = ...
--- The value of the exception most recently caught and not
--- finished. See also `v:throwpoint` and `throw-variables`.
--- Example:
---
--- ```vim
--- try
--- throw "oops"
--- catch /.*/
--- echo "caught " .. v:exception
--- endtry
--- ```
---
--- Output: "caught oops".
--- @type any
vim.v.exception = ...
--- Exit code, or `v:null` before invoking the `VimLeavePre`
--- and `VimLeave` autocmds. See `:q`, `:x` and `:cquit`.
--- Example:
---
--- ```vim
--- :au VimLeave * echo "Exit value is " .. v:exiting
--- ```
--- @type any
vim.v.exiting = ...
--- Special value used to put "false" in JSON and msgpack. See
--- `json_encode()`. This value is converted to "v:false" when used
--- as a String (e.g. in `expr5` with string concatenation
--- operator) and to zero when used as a Number (e.g. in `expr5`
--- or `expr7` when used with numeric operators). Read-only.
--- @type any
vim.v['false'] = ...
--- What should happen after a `FileChangedShell` event was
--- triggered. Can be used in an autocommand to tell Vim what to
--- do with the affected buffer:
--- reload Reload the buffer (does not work if
--- the file was deleted).
--- edit Reload the buffer and detect the
--- values for options such as
--- 'fileformat', 'fileencoding', 'binary'
--- (does not work if the file was
--- deleted).
--- ask Ask the user what to do, as if there
--- was no autocommand. Except that when
--- only the timestamp changed nothing
--- will happen.
--- <empty> Nothing, the autocommand should do
--- everything that needs to be done.
--- The default is empty. If another (invalid) value is used then
--- Vim behaves like it is empty, there is no warning message.
--- @type string
vim.v.fcs_choice = ...
--- The reason why the `FileChangedShell` event was triggered.
--- Can be used in an autocommand to decide what to do and/or what
--- to set v:fcs_choice to. Possible values:
--- deleted file no longer exists
--- conflict file contents, mode or timestamp was
--- changed and buffer is modified
--- changed file contents has changed
--- mode mode of file changed
--- time only file timestamp changed
--- @type string
vim.v.fcs_reason = ...
--- When evaluating 'includeexpr': the file name that was
--- detected. Empty otherwise.
--- @type string
vim.v.fname = ...
--- The name of the diff (patch) file. Only valid while
--- evaluating 'patchexpr'.
--- @type string
vim.v.fname_diff = ...
--- The name of the input file. Valid while evaluating:
--- option used for ~
--- 'charconvert' file to be converted
--- 'diffexpr' original file
--- 'patchexpr' original file
--- And set to the swap file name for `SwapExists`.
--- @type string
vim.v.fname_in = ...
--- The name of the new version of the file. Only valid while
--- evaluating 'diffexpr'.
--- @type string
vim.v.fname_new = ...
--- The name of the output file. Only valid while
--- evaluating:
--- option used for ~
--- 'charconvert' resulting converted file [1]
--- 'diffexpr' output of diff
--- 'patchexpr' resulting patched file
--- [1] When doing conversion for a write command (e.g., ":w
--- file") it will be equal to v:fname_in. When doing conversion
--- for a read command (e.g., ":e file") it will be a temporary
--- file and different from v:fname_in.
--- @type string
vim.v.fname_out = ...
--- Used for 'foldtext': dashes representing foldlevel of a closed
--- fold.
--- Read-only in the `sandbox`. `fold-foldtext`
--- @type string
vim.v.folddashes = ...
--- Used for 'foldtext': last line of closed fold.
--- Read-only in the `sandbox`. `fold-foldtext`
--- @type integer
vim.v.foldend = ...
--- Used for 'foldtext': foldlevel of closed fold.
--- Read-only in the `sandbox`. `fold-foldtext`
--- @type integer
vim.v.foldlevel = ...
--- Used for 'foldtext': first line of closed fold.
--- Read-only in the `sandbox`. `fold-foldtext`
--- @type integer
vim.v.foldstart = ...
--- Variable that indicates whether search highlighting is on.
--- Setting it makes sense only if 'hlsearch' is enabled. Setting
--- this variable to zero acts like the `:nohlsearch` command,
--- setting it to one acts like
---
--- ```vim
--- let &hlsearch = &hlsearch
--- ```
---
--- Note that the value is restored when returning from a
--- function. `function-search-undo`.
--- @type integer
vim.v.hlsearch = ...
--- Used for the `InsertEnter` and `InsertChange` autocommand
--- events. Values:
--- i Insert mode
--- r Replace mode
--- v Virtual Replace mode
--- @type string
vim.v.insertmode = ...
--- Key of the current item of a `Dictionary`. Only valid while
--- evaluating the expression used with `map()` and `filter()`.
--- Read-only.
--- @type string
vim.v.key = ...
--- The current locale setting for messages of the runtime
--- environment. This allows Vim scripts to be aware of the
--- current language. Technical: it's the value of LC_MESSAGES.
--- The value is system dependent.
--- This variable can not be set directly, use the `:language`
--- command.
--- It can be different from `v:ctype` when messages are desired
--- in a different language than what is used for character
--- encoding. See `multi-lang`.
--- @type string
vim.v.lang = ...
--- The current locale setting for time messages of the runtime
--- environment. This allows Vim scripts to be aware of the
--- current language. Technical: it's the value of LC_TIME.
--- This variable can not be set directly, use the `:language`
--- command. See `multi-lang`.
--- @type string
vim.v.lc_time = ...
--- Line number for the 'foldexpr' `fold-expr`, 'formatexpr',
--- 'indentexpr' and 'statuscolumn' expressions, tab page number --- 'indentexpr' and 'statuscolumn' expressions, tab page number
--- for 'guitablabel' and 'guitabtooltip'. Only valid while one of --- for 'guitablabel' and 'guitabtooltip'. Only valid while one of
--- these expressions is being evaluated. Read-only when in the |sandbox|. --- these expressions is being evaluated. Read-only when in the
--- @field lnum integer --- `sandbox`.
vim.v = ... --- @type integer
vim.v.lnum = ...
--- Prefix for calling Lua functions from expressions.
--- See `v:lua-call` for more information.
--- @type any
vim.v.lua = ...
--- Maximum line length. Depending on where it is used it can be
--- screen columns, characters or bytes. The value currently is
--- 2147483647 on all systems.
--- @type integer
vim.v.maxcol = ...
--- Column number for a mouse click obtained with `getchar()`.
--- This is the screen column number, like with `virtcol()`. The
--- value is zero when there was no mouse button click.
--- @type integer
vim.v.mouse_col = ...
--- Line number for a mouse click obtained with `getchar()`.
--- This is the text line number, not the screen line number. The
--- value is zero when there was no mouse button click.
--- @type integer
vim.v.mouse_lnum = ...
--- Window number for a mouse click obtained with `getchar()`.
--- First window has number 1, like with `winnr()`. The value is
--- zero when there was no mouse button click.
--- @type integer
vim.v.mouse_win = ...
--- `window-ID` for a mouse click obtained with `getchar()`.
--- The value is zero when there was no mouse button click.
--- @type integer
vim.v.mouse_winid = ...
--- Dictionary containing msgpack types used by `msgpackparse()`
--- and `msgpackdump()`. All types inside dictionary are fixed
--- (not editable) empty lists. To check whether some list is one
--- of msgpack types, use `is` operator.
--- @type any
vim.v.msgpack_types = ...
--- Special value used to put "null" in JSON and NIL in msgpack.
--- See `json_encode()`. This value is converted to "v:null" when
--- used as a String (e.g. in `expr5` with string concatenation
--- operator) and to zero when used as a Number (e.g. in `expr5`
--- or `expr7` when used with numeric operators). Read-only.
--- In some places `v:null` can be used for a List, Dict, etc.
--- that is not set. That is slightly different than an empty
--- List, Dict, etc.
--- @type any
vim.v.null = ...
--- Maximum value of a number.
--- @type integer
vim.v.numbermax = ...
--- Minimum value of a number (negative).
--- @type integer
vim.v.numbermin = ...
--- Number of bits in a Number. This is normally 64, but on some
--- systems it may be 32.
--- @type integer
vim.v.numbersize = ...
--- List of file names that is loaded from the `shada` file on
--- startup. These are the files that Vim remembers marks for.
--- The length of the List is limited by the ' argument of the
--- 'shada' option (default is 100).
--- When the `shada` file is not used the List is empty.
--- Also see `:oldfiles` and `c_#<`.
--- The List can be modified, but this has no effect on what is
--- stored in the `shada` file later. If you use values other
--- than String this will cause trouble.
--- @type string[]
vim.v.oldfiles = ...
--- The last operator given in Normal mode. This is a single
--- character except for commands starting with <g> or <z>,
--- in which case it is two characters. Best used alongside
--- `v:prevcount` and `v:register`. Useful if you want to cancel
--- Operator-pending mode and then use the operator, e.g.:
---
--- ```vim
--- :omap O <Esc>:call MyMotion(v:operator)<CR>
--- ```
---
--- The value remains set until another operator is entered, thus
--- don't expect it to be empty.
--- v:operator is not set for `:delete`, `:yank` or other Ex
--- commands.
--- Read-only.
--- @type string
vim.v.operator = ...
--- Command used to set the option. Valid while executing an
--- `OptionSet` autocommand.
--- value option was set via ~
--- "setlocal" `:setlocal` or `:let l:xxx`
--- "setglobal" `:setglobal` or `:let g:xxx`
--- "set" `:set` or `:let`
--- "modeline" `modeline`
--- @type string
vim.v.option_command = ...
--- New value of the option. Valid while executing an `OptionSet`
--- autocommand.
--- @type any
vim.v.option_new = ...
--- Old value of the option. Valid while executing an `OptionSet`
--- autocommand. Depending on the command used for setting and the
--- kind of option this is either the local old value or the
--- global old value.
--- @type any
vim.v.option_old = ...
--- Old global value of the option. Valid while executing an
--- `OptionSet` autocommand.
--- @type any
vim.v.option_oldglobal = ...
--- Old local value of the option. Valid while executing an
--- `OptionSet` autocommand.
--- @type any
vim.v.option_oldlocal = ...
--- Scope of the set command. Valid while executing an
--- `OptionSet` autocommand. Can be either "global" or "local"
--- @type string
vim.v.option_type = ...
--- The count given for the last but one Normal mode command.
--- This is the v:count value of the previous command. Useful if
--- you want to cancel Visual or Operator-pending mode and then
--- use the count, e.g.:
---
--- ```vim
--- :vmap % <Esc>:call MyFilter(v:prevcount)<CR>
--- ```
---
--- Read-only.
--- @type integer
vim.v.prevcount = ...
--- Normally zero. Set to one after using ":profile start".
--- See `profiling`.
--- @type integer
vim.v.profiling = ...
--- The name by which Nvim was invoked (with path removed).
--- Read-only.
--- @type string
vim.v.progname = ...
--- Absolute path to the current running Nvim.
--- Read-only.
--- @type string
vim.v.progpath = ...
--- The name of the register in effect for the current normal mode
--- command (regardless of whether that command actually used a
--- register). Or for the currently executing normal mode mapping
--- (use this in custom commands that take a register).
--- If none is supplied it is the default register '"', unless
--- 'clipboard' contains "unnamed" or "unnamedplus", then it is
--- "*" or '+'.
--- Also see `getreg()` and `setreg()`
--- @type string
vim.v.register = ...
--- Relative line number for the 'statuscolumn' expression.
--- Read-only.
--- @type integer
vim.v.relnum = ...
--- String describing the script or function that caused the
--- screen to scroll up. It's only set when it is empty, thus the
--- first reason is remembered. It is set to "Unknown" for a
--- typed command.
--- This can be used to find out why your script causes the
--- hit-enter prompt.
--- @type any
vim.v.scrollstart = ...
--- Search direction: 1 after a forward search, 0 after a
--- backward search. It is reset to forward when directly setting
--- the last search pattern, see `quote/`.
--- Note that the value is restored when returning from a
--- function. `function-search-undo`.
--- Read-write.
--- @type integer
vim.v.searchforward = ...
--- Primary listen-address of Nvim, the first item returned by
--- `serverlist()`. Usually this is the named pipe created by Nvim
--- at `startup` or given by `--listen` (or the deprecated
--- `$NVIM_LISTEN_ADDRESS` env var).
---
--- See also `serverstart()` `serverstop()`.
--- Read-only.
---
--- *$NVIM*
--- $NVIM is set by `terminal` and `jobstart()`, and is thus
--- a hint that the current environment is a subprocess of Nvim.
--- Example:
---
--- ```vim
--- if $NVIM
--- echo nvim_get_chan_info(v:parent)
--- endif
--- ```
---
--- Note the contents of $NVIM may change in the future.
--- @type string
vim.v.servername = ...
--- Result of the last shell command. When non-zero, the last
--- shell command had an error. When zero, there was no problem.
--- This only works when the shell returns the error code to Vim.
--- The value -1 is often used when the command could not be
--- executed. Read-only.
--- Example:
---
--- ```vim
--- !mv foo bar
--- if v:shell_error
--- echo 'could not rename "foo" to "bar"!'
--- endif
--- ```
--- @type string
vim.v.shell_error = ...
--- Last given status message.
--- Modifiable (can be set).
--- @type string
vim.v.statusmsg = ...
--- `channel-id` corresponding to stderr. The value is always 2;
--- use this variable to make your code more descriptive.
--- Unlike stdin and stdout (see `stdioopen()`), stderr is always
--- open for writing. Example:
---
--- ```vim
--- :call chansend(v:stderr, "error: toaster empty\n")
--- ```
--- @type string
vim.v.stderr = ...
--- `SwapExists` autocommands can set this to the selected choice
--- for handling an existing swapfile:
--- 'o' Open read-only
--- 'e' Edit anyway
--- 'r' Recover
--- 'd' Delete swapfile
--- 'q' Quit
--- 'a' Abort
--- The value should be a single-character string. An empty value
--- results in the user being asked, as would happen when there is
--- no SwapExists autocommand. The default is empty.
--- @type string
vim.v.swapchoice = ...
--- Normal mode command to be executed after a file has been
--- opened. Can be used for a `SwapExists` autocommand to have
--- another Vim open the file and jump to the right place. For
--- example, when jumping to a tag the value is ":tag tagname\r".
--- For ":edit +cmd file" the value is ":cmd\r".
--- @type string
vim.v.swapcommand = ...
--- Name of the swapfile found.
--- Only valid during `SwapExists` event.
--- Read-only.
--- @type string
vim.v.swapname = ...
--- Value of `Blob` type. Read-only. See: `type()`
--- @type integer
vim.v.t_blob = ...
--- Value of `Boolean` type. Read-only. See: `type()`
--- @type integer
vim.v.t_bool = ...
--- Value of `Dictionary` type. Read-only. See: `type()`
--- @type integer
vim.v.t_dict = ...
--- Value of `Float` type. Read-only. See: `type()`
--- @type integer
vim.v.t_float = ...
--- Value of `Funcref` type. Read-only. See: `type()`
--- @type integer
vim.v.t_func = ...
--- Value of `List` type. Read-only. See: `type()`
--- @type integer
vim.v.t_list = ...
--- Value of `Number` type. Read-only. See: `type()`
--- @type integer
vim.v.t_number = ...
--- Value of `String` type. Read-only. See: `type()`
--- @type integer
vim.v.t_string = ...
--- The value of the most recent OSC or DCS escape sequence
--- received by Nvim from the terminal. This can be read in a
--- `TermResponse` event handler after querying the terminal using
--- another escape sequence.
--- @type any
vim.v.termresponse = ...
--- Must be set before using `test_garbagecollect_now()`.
--- @type any
vim.v.testing = ...
--- Full filename of the last loaded or saved session file.
--- Empty when no session file has been saved. See `:mksession`.
--- Modifiable (can be set).
--- @type any
vim.v.this_session = ...
--- The point where the exception most recently caught and not
--- finished was thrown. Not set when commands are typed. See
--- also `v:exception` and `throw-variables`.
--- Example:
---
--- ```vim
--- try
--- throw "oops"
--- catch /.*/
--- echo "Exception from" v:throwpoint
--- endtry
--- ```
---
--- Output: "Exception from test.vim, line 2"
--- @type any
vim.v.throwpoint = ...
--- Special value used to put "true" in JSON and msgpack. See
--- `json_encode()`. This value is converted to "v:true" when used
--- as a String (e.g. in `expr5` with string concatenation
--- operator) and to one when used as a Number (e.g. in `expr5` or
--- `expr7` when used with numeric operators). Read-only.
--- @type any
vim.v['true'] = ...
--- Value of the current item of a `List` or `Dictionary`. Only
--- valid while evaluating the expression used with `map()` and
--- `filter()`. Read-only.
--- @type any
vim.v.val = ...
--- Vim version number: major version times 100 plus minor
--- version. Vim 5.0 is 500, Vim 5.1 is 501.
--- Read-only.
--- Use `has()` to check the Nvim (not Vim) version:
---
--- ```vim
--- :if has("nvim-0.2.1")
--- ```
--- @type integer
vim.v.version = ...
--- 0 during startup, 1 just before `VimEnter`.
--- Read-only.
--- @type integer
vim.v.vim_did_enter = ...
--- Virtual line number for the 'statuscolumn' expression.
--- Negative when drawing the status column for virtual lines, zero
--- when drawing an actual buffer line, and positive when drawing
--- the wrapped part of a buffer line.
--- Read-only.
--- @type integer
vim.v.virtnum = ...
--- Last given warning message.
--- Modifiable (can be set).
--- @type string
vim.v.warningmsg = ...
--- Application-specific window "handle" which may be set by any
--- attached UI. Defaults to zero.
--- Note: For Nvim `windows` use `winnr()` or `win_getid()`, see
--- `window-ID`.
--- @type integer
vim.v.windowid = ...

View File

@ -48,6 +48,16 @@ local LUA_OPTION_META_HEADER = {
'vim.wo = vim.wo', 'vim.wo = vim.wo',
} }
local LUA_VVAR_META_HEADER = {
'--- @meta _',
'-- THIS FILE IS GENERATED',
'-- DO NOT EDIT',
"error('Cannot require a meta file')",
'',
'--- @class vim.v',
'vim.v = ...',
}
local LUA_KEYWORDS = { local LUA_KEYWORDS = {
['and'] = true, ['and'] = true,
['end'] = true, ['end'] = true,
@ -56,6 +66,8 @@ local LUA_KEYWORDS = {
['if'] = true, ['if'] = true,
['while'] = true, ['while'] = true,
['repeat'] = true, ['repeat'] = true,
['true'] = true,
['false'] = true,
} }
local OPTION_TYPES = { local OPTION_TYPES = {
@ -534,6 +546,30 @@ local function render_option_meta(_f, opt, write)
end end
end end
--- @param _f string
--- @param opt vim.option_meta
--- @param write fun(line: string)
local function render_vvar_meta(_f, opt, write)
write('')
local desc = split(norm_text(opt.desc))
while desc[#desc]:match('^%s*$') do
desc[#desc] = nil
end
for _, l in ipairs(desc) do
write('--- ' .. l)
end
write('--- @type ' .. (opt.type or 'any'))
if LUA_KEYWORDS[opt.full_name] then
write("vim.v['" .. opt.full_name .. "'] = ...")
else
write('vim.v.' .. opt.full_name .. ' = ...')
end
end
--- @param s string[] --- @param s string[]
--- @return string --- @return string
local function scope_to_doc(s) local function scope_to_doc(s)
@ -574,6 +610,21 @@ local function scope_more_doc(o)
return '' return ''
end end
--- @param x string
--- @return string
local function dedent(x)
local xs = split(x)
local leading_ws = xs[1]:match('^%s*') --[[@as string]]
local leading_ws_pat = '^' .. leading_ws
for i in ipairs(xs) do
local strip_pat = xs[i]:match(leading_ws_pat) and leading_ws_pat or '^%s*'
xs[i] = xs[i]:gsub(strip_pat, '')
end
return table.concat(xs, '\n')
end
--- @return table<string,vim.option_meta> --- @return table<string,vim.option_meta>
local function get_option_meta() local function get_option_meta()
local opts = require('src/nvim/options').options local opts = require('src/nvim/options').options
@ -596,6 +647,18 @@ local function get_option_meta()
return ret return ret
end end
--- @return table<string,vim.option_meta>
local function get_vvar_meta()
local info = require('src/nvim/vvars').vars
local ret = {} --- @type table<string,vim.option_meta>
for name, o in pairs(info) do
o.desc = dedent(o.desc)
o.full_name = name
ret[name] = o
end
return ret
end
--- @param opt vim.option_meta --- @param opt vim.option_meta
--- @return string[] --- @return string[]
local function build_option_tags(opt) local function build_option_tags(opt)
@ -666,6 +729,45 @@ local function render_option_doc(_f, opt, write)
end end
end end
--- @param _f string
--- @param vvar vim.option_meta
--- @param write fun(line: string)
local function render_vvar_doc(_f, vvar, write)
local name = vvar.full_name
local tags = { 'v:' .. name, name .. '-variable' }
if vvar.tags then
vim.list_extend(tags, vvar.tags)
end
for i, t in ipairs(tags) do
tags[i] = '*' .. t .. '*'
end
local tag_str = table.concat(tags, ' ')
local conceal_offset = 2 * (#tags - 1)
local tag_pad = string.rep('\t', math.ceil((64 - #tag_str + conceal_offset) / 8))
write(tag_pad .. tag_str)
local desc = split(vvar.desc)
if (#desc == 1 or #desc == 2 and desc[2]:match('^%s*$')) and #name < 10 then
-- single line
write('v:' .. name .. '\t' .. desc[1]:gsub('^%s*', ''))
write('')
else
write('v:' .. name)
for _, l in ipairs(desc) do
if l == '<' or l:match('^<%s') then
write(l)
else
write('\t\t' .. l:gsub('\\<', '<'))
end
end
end
end
--- @class nvim.gen_eval_files.elem --- @class nvim.gen_eval_files.elem
--- @field path string --- @field path string
--- @field from? string Skip lines in path until this pattern is reached. --- @field from? string Skip lines in path until this pattern is reached.
@ -756,6 +858,22 @@ local CONFIG = {
funcs = get_option_meta, funcs = get_option_meta,
render = render_option_doc, render = render_option_doc,
}, },
{
path = 'runtime/lua/vim/_meta/vvars.lua',
header = LUA_VVAR_META_HEADER,
funcs = get_vvar_meta,
render = render_vvar_meta,
},
{
path = 'runtime/doc/vvars.txt',
header = { '' },
from = 'Type |gO| to see the table of contents.',
footer = {
' vim:tw=78:ts=8:noet:ft=help:norl:',
},
funcs = get_vvar_meta,
render = render_vvar_doc,
},
} }
--- @param elem nvim.gen_eval_files.elem --- @param elem nvim.gen_eval_files.elem

869
src/nvim/vvars.lua Normal file
View File

@ -0,0 +1,869 @@
local M = {}
M.vars = {
argv = {
type = 'string[]',
desc = [=[
The command line arguments Vim was invoked with. This is a
list of strings. The first item is the Vim command.
See |v:progpath| for the command with full path.
]=],
},
char = {
desc = [=[
Argument for evaluating 'formatexpr' and used for the typed
character when using <expr> in an abbreviation |:map-<expr>|.
It is also used by the |InsertCharPre| and |InsertEnter| events.
]=],
},
charconvert_from = {
type = 'string',
desc = [=[
The name of the character encoding of a file to be converted.
Only valid while evaluating the 'charconvert' option.
]=],
},
charconvert_to = {
type = 'string',
desc = [=[
The name of the character encoding of a file after conversion.
Only valid while evaluating the 'charconvert' option.
]=],
},
cmdarg = {
type = 'string[]',
desc = [=[
The extra arguments ("++p", "++enc=", "++ff=") given to a file
read/write command. This is set before an autocommand event
for a file read/write command is triggered. There is a
leading space to make it possible to append this variable
directly after the read/write command. Note: "+cmd" isn't
included here, because it will be executed anyway.
]=],
},
collate = {
type = 'string',
desc = [=[
The current locale setting for collation order of the runtime
environment. This allows Vim scripts to be aware of the
current locale encoding. Technical: it's the value of
LC_COLLATE. When not using a locale the value is "C".
This variable can not be set directly, use the |:language|
command.
See |multi-lang|.
]=],
},
cmdbang = {
desc = [=[
Set like v:cmdarg for a file read/write command. When a "!"
was used the value is 1, otherwise it is 0. Note that this
can only be used in autocommands. For user commands |<bang>|
can be used.
]=],
},
completed_item = {
desc = [=[
Dictionary containing the most recent |complete-items| after
|CompleteDone|. Empty if the completion failed, or after
leaving and re-entering insert mode.
Note: Plugins can modify the value to emulate the builtin
|CompleteDone| event behavior.
]=],
},
count = {
type = 'integer',
desc = [=[
The count given for the last Normal mode command. Can be used
to get the count before a mapping. Read-only. Example: >vim
:map _x :<C-U>echo "the count is " .. v:count<CR>
<
Note: The <C-U> is required to remove the line range that you
get when typing ':' after a count.
When there are two counts, as in "3d2w", they are multiplied,
just like what happens in the command, "d6w" for the example.
Also used for evaluating the 'formatexpr' option.
]=],
},
count1 = {
type = 'integer',
desc = [=[
Just like "v:count", but defaults to one when no count is
used.
]=],
},
ctype = {
desc = [=[
The current locale setting for characters of the runtime
environment. This allows Vim scripts to be aware of the
current locale encoding. Technical: it's the value of
LC_CTYPE. When not using a locale the value is "C".
This variable can not be set directly, use the |:language|
command.
See |multi-lang|.
]=],
},
dying = {
type = 'integer',
desc = [=[
Normally zero. When a deadly signal is caught it's set to
one. When multiple signals are caught the number increases.
Can be used in an autocommand to check if Vim didn't
terminate normally.
Example: >vim
:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
<
Note: if another deadly signal is caught when v:dying is one,
VimLeave autocommands will not be executed.
]=],
},
exiting = {
desc = [=[
Exit code, or |v:null| before invoking the |VimLeavePre|
and |VimLeave| autocmds. See |:q|, |:x| and |:cquit|.
Example: >vim
:au VimLeave * echo "Exit value is " .. v:exiting
<
]=],
},
echospace = {
type = 'integer',
desc = [=[
Number of screen cells that can be used for an `:echo` message
in the last screen line before causing the |hit-enter-prompt|.
Depends on 'showcmd', 'ruler' and 'columns'. You need to
check 'cmdheight' for whether there are full-width lines
available above the last line.
]=],
},
errmsg = {
type = 'string',
desc = [=[
Last given error message.
Modifiable (can be set).
Example: >vim
let v:errmsg = ""
silent! next
if v:errmsg != ""
" ... handle error
<
]=],
},
errors = {
tags = { 'assert-return' },
desc = [=[
Errors found by assert functions, such as |assert_true()|.
This is a list of strings.
The assert functions append an item when an assert fails.
The return value indicates this: a one is returned if an item
was added to v:errors, otherwise zero is returned.
To remove old results make it empty: >vim
let v:errors = []
<
If v:errors is set to anything but a list it is made an empty
list by the assert function.
]=],
},
event = {
desc = [=[
Dictionary of event data for the current |autocommand|. Valid
only during the event lifetime; storing or passing v:event is
invalid! Copy it instead: >vim
au TextYankPost * let g:foo = deepcopy(v:event)
<
Keys vary by event; see the documentation for the specific
event, e.g. |DirChanged| or |TextYankPost|.
KEY DESCRIPTION ~
abort Whether the event triggered during
an aborting condition (e.g. |c_Esc| or
|c_CTRL-C| for |CmdlineLeave|).
chan |channel-id|
cmdlevel Level of cmdline.
cmdtype Type of cmdline, |cmdline-char|.
cwd Current working directory.
inclusive Motion is |inclusive|, else exclusive.
scope Event-specific scope name.
operator Current |operator|. Also set for Ex
commands (unlike |v:operator|). For
example if |TextYankPost| is triggered
by the |:yank| Ex command then
`v:event.operator` is "y".
regcontents Text stored in the register as a
|readfile()|-style list of lines.
regname Requested register (e.g "x" for "xyy)
or the empty string for an unnamed
operation.
regtype Type of register as returned by
|getregtype()|.
visual Selection is visual (as opposed to,
e.g., via motion).
completed_item Current selected complete item on
|CompleteChanged|, Is `{}` when no complete
item selected.
height Height of popup menu on |CompleteChanged|
width Width of popup menu on |CompleteChanged|
row Row count of popup menu on |CompleteChanged|,
relative to screen.
col Col count of popup menu on |CompleteChanged|,
relative to screen.
size Total number of completion items on
|CompleteChanged|.
scrollbar Is |v:true| if popup menu have scrollbar, or
|v:false| if not.
changed_window Is |v:true| if the event fired while
changing window (or tab) on |DirChanged|.
status Job status or exit code, -1 means "unknown". |TermClose|
]=],
},
exception = {
desc = [=[
The value of the exception most recently caught and not
finished. See also |v:throwpoint| and |throw-variables|.
Example: >vim
try
throw "oops"
catch /.*/
echo "caught " .. v:exception
endtry
<
Output: "caught oops".
]=],
},
['false'] = {
desc = [=[
Special value used to put "false" in JSON and msgpack. See
|json_encode()|. This value is converted to "v:false" when used
as a String (e.g. in |expr5| with string concatenation
operator) and to zero when used as a Number (e.g. in |expr5|
or |expr7| when used with numeric operators). Read-only.
]=],
},
fcs_reason = {
type = 'string',
desc = [=[
The reason why the |FileChangedShell| event was triggered.
Can be used in an autocommand to decide what to do and/or what
to set v:fcs_choice to. Possible values:
deleted file no longer exists
conflict file contents, mode or timestamp was
changed and buffer is modified
changed file contents has changed
mode mode of file changed
time only file timestamp changed
]=],
},
fcs_choice = {
type = 'string',
desc = [=[
What should happen after a |FileChangedShell| event was
triggered. Can be used in an autocommand to tell Vim what to
do with the affected buffer:
reload Reload the buffer (does not work if
the file was deleted).
edit Reload the buffer and detect the
values for options such as
'fileformat', 'fileencoding', 'binary'
(does not work if the file was
deleted).
ask Ask the user what to do, as if there
was no autocommand. Except that when
only the timestamp changed nothing
will happen.
<empty> Nothing, the autocommand should do
everything that needs to be done.
The default is empty. If another (invalid) value is used then
Vim behaves like it is empty, there is no warning message.
]=],
},
fname = {
type = 'string',
desc = [=[
When evaluating 'includeexpr': the file name that was
detected. Empty otherwise.
]=],
},
fname_in = {
type = 'string',
desc = [=[
The name of the input file. Valid while evaluating:
option used for ~
'charconvert' file to be converted
'diffexpr' original file
'patchexpr' original file
And set to the swap file name for |SwapExists|.
]=],
},
fname_out = {
type = 'string',
desc = [=[
The name of the output file. Only valid while
evaluating:
option used for ~
'charconvert' resulting converted file [1]
'diffexpr' output of diff
'patchexpr' resulting patched file
[1] When doing conversion for a write command (e.g., ":w
file") it will be equal to v:fname_in. When doing conversion
for a read command (e.g., ":e file") it will be a temporary
file and different from v:fname_in.
]=],
},
fname_new = {
type = 'string',
desc = [=[
The name of the new version of the file. Only valid while
evaluating 'diffexpr'.
]=],
},
fname_diff = {
type = 'string',
desc = [=[
The name of the diff (patch) file. Only valid while
evaluating 'patchexpr'.
]=],
},
folddashes = {
type = 'string',
desc = [=[
Used for 'foldtext': dashes representing foldlevel of a closed
fold.
Read-only in the |sandbox|. |fold-foldtext|
]=],
},
foldlevel = {
type = 'integer',
desc = [=[
Used for 'foldtext': foldlevel of closed fold.
Read-only in the |sandbox|. |fold-foldtext|
]=],
},
foldend = {
type = 'integer',
desc = [=[
Used for 'foldtext': last line of closed fold.
Read-only in the |sandbox|. |fold-foldtext|
]=],
},
foldstart = {
type = 'integer',
desc = [=[
Used for 'foldtext': first line of closed fold.
Read-only in the |sandbox|. |fold-foldtext|
]=],
},
hlsearch = {
type = 'integer',
desc = [=[
Variable that indicates whether search highlighting is on.
Setting it makes sense only if 'hlsearch' is enabled. Setting
this variable to zero acts like the |:nohlsearch| command,
setting it to one acts like >vim
let &hlsearch = &hlsearch
<
Note that the value is restored when returning from a
function. |function-search-undo|.
]=],
},
insertmode = {
type = 'string',
desc = [=[
Used for the |InsertEnter| and |InsertChange| autocommand
events. Values:
i Insert mode
r Replace mode
v Virtual Replace mode
]=],
},
key = {
type = 'string',
desc = [=[
Key of the current item of a |Dictionary|. Only valid while
evaluating the expression used with |map()| and |filter()|.
Read-only.
]=],
},
lang = {
type = 'string',
desc = [=[
The current locale setting for messages of the runtime
environment. This allows Vim scripts to be aware of the
current language. Technical: it's the value of LC_MESSAGES.
The value is system dependent.
This variable can not be set directly, use the |:language|
command.
It can be different from |v:ctype| when messages are desired
in a different language than what is used for character
encoding. See |multi-lang|.
]=],
},
lc_time = {
type = 'string',
desc = [=[
The current locale setting for time messages of the runtime
environment. This allows Vim scripts to be aware of the
current language. Technical: it's the value of LC_TIME.
This variable can not be set directly, use the |:language|
command. See |multi-lang|.
]=],
},
lnum = {
type = 'integer',
desc = [=[
Line number for the 'foldexpr' |fold-expr|, 'formatexpr',
'indentexpr' and 'statuscolumn' expressions, tab page number
for 'guitablabel' and 'guitabtooltip'. Only valid while one of
these expressions is being evaluated. Read-only when in the
|sandbox|.
]=],
},
lua = {
desc = [=[
Prefix for calling Lua functions from expressions.
See |v:lua-call| for more information.
]=],
},
maxcol = {
type = 'integer',
desc = [=[
Maximum line length. Depending on where it is used it can be
screen columns, characters or bytes. The value currently is
2147483647 on all systems.
]=],
},
mouse_win = {
type = 'integer',
desc = [=[
Window number for a mouse click obtained with |getchar()|.
First window has number 1, like with |winnr()|. The value is
zero when there was no mouse button click.
]=],
},
mouse_winid = {
type = 'integer',
desc = [=[
|window-ID| for a mouse click obtained with |getchar()|.
The value is zero when there was no mouse button click.
]=],
},
mouse_lnum = {
type = 'integer',
desc = [=[
Line number for a mouse click obtained with |getchar()|.
This is the text line number, not the screen line number. The
value is zero when there was no mouse button click.
]=],
},
mouse_col = {
type = 'integer',
desc = [=[
Column number for a mouse click obtained with |getchar()|.
This is the screen column number, like with |virtcol()|. The
value is zero when there was no mouse button click.
]=],
},
msgpack_types = {
desc = [=[
Dictionary containing msgpack types used by |msgpackparse()|
and |msgpackdump()|. All types inside dictionary are fixed
(not editable) empty lists. To check whether some list is one
of msgpack types, use |is| operator.
]=],
},
null = {
desc = [=[
Special value used to put "null" in JSON and NIL in msgpack.
See |json_encode()|. This value is converted to "v:null" when
used as a String (e.g. in |expr5| with string concatenation
operator) and to zero when used as a Number (e.g. in |expr5|
or |expr7| when used with numeric operators). Read-only.
In some places `v:null` can be used for a List, Dict, etc.
that is not set. That is slightly different than an empty
List, Dict, etc.
]=],
},
numbermax = {
type = 'integer',
desc = 'Maximum value of a number.',
},
numbermin = {
type = 'integer',
desc = 'Minimum value of a number (negative).',
},
numbersize = {
type = 'integer',
desc = [=[
Number of bits in a Number. This is normally 64, but on some
systems it may be 32.
]=],
},
oldfiles = {
type = 'string[]',
desc = [=[
List of file names that is loaded from the |shada| file on
startup. These are the files that Vim remembers marks for.
The length of the List is limited by the ' argument of the
'shada' option (default is 100).
When the |shada| file is not used the List is empty.
Also see |:oldfiles| and |c_#<|.
The List can be modified, but this has no effect on what is
stored in the |shada| file later. If you use values other
than String this will cause trouble.
]=],
},
option_new = {
desc = [=[
New value of the option. Valid while executing an |OptionSet|
autocommand.
]=],
},
option_old = {
desc = [=[
Old value of the option. Valid while executing an |OptionSet|
autocommand. Depending on the command used for setting and the
kind of option this is either the local old value or the
global old value.
]=],
},
option_oldlocal = {
desc = [=[
Old local value of the option. Valid while executing an
|OptionSet| autocommand.
]=],
},
option_oldglobal = {
desc = [=[
Old global value of the option. Valid while executing an
|OptionSet| autocommand.
]=],
},
option_type = {
type = 'string',
desc = [=[
Scope of the set command. Valid while executing an
|OptionSet| autocommand. Can be either "global" or "local"
]=],
},
option_command = {
type = 'string',
desc = [=[
Command used to set the option. Valid while executing an
|OptionSet| autocommand.
value option was set via ~
"setlocal" |:setlocal| or `:let l:xxx`
"setglobal" |:setglobal| or `:let g:xxx`
"set" |:set| or |:let|
"modeline" |modeline|
]=],
},
operator = {
type = 'string',
desc = [=[
The last operator given in Normal mode. This is a single
character except for commands starting with <g> or <z>,
in which case it is two characters. Best used alongside
|v:prevcount| and |v:register|. Useful if you want to cancel
Operator-pending mode and then use the operator, e.g.: >vim
:omap O <Esc>:call MyMotion(v:operator)<CR>
<
The value remains set until another operator is entered, thus
don't expect it to be empty.
v:operator is not set for |:delete|, |:yank| or other Ex
commands.
Read-only.
]=],
},
prevcount = {
type = 'integer',
desc = [=[
The count given for the last but one Normal mode command.
This is the v:count value of the previous command. Useful if
you want to cancel Visual or Operator-pending mode and then
use the count, e.g.: >vim
:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
<
Read-only.
]=],
},
profiling = {
type = 'integer',
desc = [=[
Normally zero. Set to one after using ":profile start".
See |profiling|.
]=],
},
progname = {
type = 'string',
desc = [=[
The name by which Nvim was invoked (with path removed).
Read-only.
]=],
},
progpath = {
type = 'string',
desc = [=[
Absolute path to the current running Nvim.
Read-only.
]=],
},
register = {
type = 'string',
desc = [=[
The name of the register in effect for the current normal mode
command (regardless of whether that command actually used a
register). Or for the currently executing normal mode mapping
(use this in custom commands that take a register).
If none is supplied it is the default register '"', unless
'clipboard' contains "unnamed" or "unnamedplus", then it is
"*" or '+'.
Also see |getreg()| and |setreg()|
]=],
},
relnum = {
type = 'integer',
desc = [=[
Relative line number for the 'statuscolumn' expression.
Read-only.
]=],
},
scrollstart = {
desc = [=[
String describing the script or function that caused the
screen to scroll up. It's only set when it is empty, thus the
first reason is remembered. It is set to "Unknown" for a
typed command.
This can be used to find out why your script causes the
hit-enter prompt.
]=],
},
servername = {
type = 'string',
desc = [=[
Primary listen-address of Nvim, the first item returned by
|serverlist()|. Usually this is the named pipe created by Nvim
at |startup| or given by |--listen| (or the deprecated
|$NVIM_LISTEN_ADDRESS| env var).
See also |serverstart()| |serverstop()|.
Read-only.
*$NVIM*
$NVIM is set by |terminal| and |jobstart()|, and is thus
a hint that the current environment is a subprocess of Nvim.
Example: >vim
if $NVIM
echo nvim_get_chan_info(v:parent)
endif
<
Note the contents of $NVIM may change in the future.
]=],
},
searchforward = {
type = 'integer',
desc = [=[
Search direction: 1 after a forward search, 0 after a
backward search. It is reset to forward when directly setting
the last search pattern, see |quote/|.
Note that the value is restored when returning from a
function. |function-search-undo|.
Read-write.
]=],
},
shell_error = {
type = 'string',
desc = [=[
Result of the last shell command. When non-zero, the last
shell command had an error. When zero, there was no problem.
This only works when the shell returns the error code to Vim.
The value -1 is often used when the command could not be
executed. Read-only.
Example: >vim
!mv foo bar
if v:shell_error
echo 'could not rename "foo" to "bar"!'
endif
<
]=],
},
statusmsg = {
type = 'string',
desc = [=[
Last given status message.
Modifiable (can be set).
]=],
},
stderr = {
type = 'string',
desc = [=[
|channel-id| corresponding to stderr. The value is always 2;
use this variable to make your code more descriptive.
Unlike stdin and stdout (see |stdioopen()|), stderr is always
open for writing. Example: >vim
:call chansend(v:stderr, "error: toaster empty\n")
<
]=],
},
swapname = {
type = 'string',
desc = [=[
Name of the swapfile found.
Only valid during |SwapExists| event.
Read-only.
]=],
},
swapchoice = {
type = 'string',
desc = [=[
|SwapExists| autocommands can set this to the selected choice
for handling an existing swapfile:
'o' Open read-only
'e' Edit anyway
'r' Recover
'd' Delete swapfile
'q' Quit
'a' Abort
The value should be a single-character string. An empty value
results in the user being asked, as would happen when there is
no SwapExists autocommand. The default is empty.
]=],
},
swapcommand = {
type = 'string',
desc = [=[
Normal mode command to be executed after a file has been
opened. Can be used for a |SwapExists| autocommand to have
another Vim open the file and jump to the right place. For
example, when jumping to a tag the value is ":tag tagname\r".
For ":edit +cmd file" the value is ":cmd\r".
]=],
},
t_blob = {
type = 'integer',
tags = { 'v:t_TYPE' },
desc = 'Value of |Blob| type. Read-only. See: |type()|',
},
t_bool = {
type = 'integer',
desc = 'Value of |Boolean| type. Read-only. See: |type()|',
},
t_dict = {
type = 'integer',
desc = 'Value of |Dictionary| type. Read-only. See: |type()|',
},
t_float = {
type = 'integer',
desc = 'Value of |Float| type. Read-only. See: |type()|',
},
t_func = {
type = 'integer',
desc = 'Value of |Funcref| type. Read-only. See: |type()|',
},
t_list = {
type = 'integer',
desc = 'Value of |List| type. Read-only. See: |type()|',
},
t_number = {
type = 'integer',
desc = 'Value of |Number| type. Read-only. See: |type()|',
},
t_string = {
type = 'integer',
desc = 'Value of |String| type. Read-only. See: |type()|',
},
termresponse = {
desc = [=[
The value of the most recent OSC or DCS escape sequence
received by Nvim from the terminal. This can be read in a
|TermResponse| event handler after querying the terminal using
another escape sequence.
]=],
},
testing = {
desc = [=[
Must be set before using `test_garbagecollect_now()`.
]=],
},
this_session = {
desc = [=[
Full filename of the last loaded or saved session file.
Empty when no session file has been saved. See |:mksession|.
Modifiable (can be set).
]=],
},
throwpoint = {
desc = [=[
The point where the exception most recently caught and not
finished was thrown. Not set when commands are typed. See
also |v:exception| and |throw-variables|.
Example: >vim
try
throw "oops"
catch /.*/
echo "Exception from" v:throwpoint
endtry
<
Output: "Exception from test.vim, line 2"
]=],
},
['true'] = {
desc = [=[
Special value used to put "true" in JSON and msgpack. See
|json_encode()|. This value is converted to "v:true" when used
as a String (e.g. in |expr5| with string concatenation
operator) and to one when used as a Number (e.g. in |expr5| or
|expr7| when used with numeric operators). Read-only.
]=],
},
val = {
desc = [=[
Value of the current item of a |List| or |Dictionary|. Only
valid while evaluating the expression used with |map()| and
|filter()|. Read-only.
]=],
},
version = {
type = 'integer',
desc = [=[
Vim version number: major version times 100 plus minor
version. Vim 5.0 is 500, Vim 5.1 is 501.
Read-only.
Use |has()| to check the Nvim (not Vim) version: >vim
:if has("nvim-0.2.1")
<
]=],
},
virtnum = {
type = 'integer',
desc = [=[
Virtual line number for the 'statuscolumn' expression.
Negative when drawing the status column for virtual lines, zero
when drawing an actual buffer line, and positive when drawing
the wrapped part of a buffer line.
Read-only.
]=],
},
vim_did_enter = {
type = 'integer',
desc = [=[
0 during startup, 1 just before |VimEnter|.
Read-only.
]=],
},
warningmsg = {
type = 'string',
desc = [=[
Last given warning message.
Modifiable (can be set).
]=],
},
windowid = {
type = 'integer',
desc = [=[
Application-specific window "handle" which may be set by any
attached UI. Defaults to zero.
Note: For Nvim |windows| use |winnr()| or |win_getid()|, see
|window-ID|.
]=],
},
}
return M