aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/eval.lua')
-rw-r--r--src/nvim/eval.lua299
1 files changed, 169 insertions, 130 deletions
diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua
index fd4108813e..a9c87e0a6d 100644
--- a/src/nvim/eval.lua
+++ b/src/nvim/eval.lua
@@ -2,74 +2,85 @@
--
-- Keys:
--
--- args Number of arguments, list with maximum and minimum number of arguments
--- or list with a minimum number of arguments only. Defaults to zero
--- arguments.
--- base For methods: the argument to use as the base argument (1-indexed):
--- base->method()
--- Defaults to BASE_NONE (function cannot be used as a method).
--- func Name of the C function which implements the Vimscript function. Defaults to
--- `f_{funcname}`.
--- fast Function can run in |api-fast| events. Defaults to false.
-
-local varargs = function(nr)
- return {nr}
-end
+--- @class vim.EvalFn
+--- @field args? integer|integer[] Number of arguments, list with maximum and minimum number of arguments
+--- or list with a minimum number of arguments only. Defaults to zero
+--- arguments.
+--- @field base? integer For methods: the argument to use as the base argument (1-indexed):
+--- base->method()
+--- Defaults to BASE_NONE (function cannot be used as a method).
+--- @field func? string Name of the C function which implements the Vimscript function. Defaults to
+--- `f_{funcname}`.
+--- @field fast? boolean Function can run in |api-fast| events. Defaults to false.
+--- @field deprecated? string[]|true
+--- @field returns? string|false
-- Usable with the base key: use the last function argument as the method base.
-- Value is from funcs.h file. "BASE_" prefix is omitted.
-- local LAST = "BASE_LAST" (currently unused after port of v8.2.1168)
+local VIMBOOL = '0|1'
+
return {
+ --- @type table<string,vim.EvalFn>
funcs={
abs={args=1, base=1},
- acos={args=1, base=1, float_func="acos"}, -- WJMc
+ acos={args=1, base=1, float_func="acos", returns='number'}, -- WJMc
add={args=2, base=1},
['and']={args=2, base=1},
api_info={fast=true},
append={args=2, base=2},
appendbufline={args=3, base=3},
- argc={args={0, 1}},
- argidx={},
- arglistid={args={0, 2}},
+ argc={args={0, 1}, returns='integer'},
+ argidx={returns='integer'},
+ arglistid={args={0, 2}, returns='integer'},
argv={args={0, 2}},
asin={args=1, base=1, float_func="asin"}, -- WJMc
- assert_beeps={args=1, base=1},
- assert_equal={args={2, 3}, base=2},
+ assert_beeps={args=1, base=1, returns=VIMBOOL},
+ assert_equal={args={2, 3}, base=2, returns=VIMBOOL},
assert_equalfile={args={2, 3}, base=1},
- assert_exception={args={1, 2}},
- assert_fails={args={1, 5}, base=1},
- assert_false={args={1, 2}, base=1},
- assert_inrange={args={3, 4}, base=3},
- assert_match={args={2, 3}, base=2},
- assert_nobeep={args=1, base=1},
+ assert_exception={args={1, 2}, returns=VIMBOOL},
+ assert_fails={args={1, 5}, base=1, returns=VIMBOOL},
+ assert_false={args={1, 2}, base=1, returns=VIMBOOL},
+ assert_inrange={args={3, 4}, base=3, returns=VIMBOOL},
+ assert_match={args={2, 3}, base=2, returns=VIMBOOL},
+ assert_nobeep={args=1, base=1, returns=VIMBOOL},
assert_notequal={args={2, 3}, base=2},
assert_notmatch={args={2, 3}, base=2},
assert_report={args=1, base=1},
assert_true={args={1, 2}, base=1},
- atan={args=1, base=1, float_func="atan"},
- atan2={args=2, base=1},
+ atan={args=1, base=1, float_func="atan", returns='number'},
+ atan2={args=2, base=1, returns='number'},
blob2list={args=1, base=1},
browse={args=4},
browsedir={args=2},
- bufadd={args=1, base=1},
- bufexists={args=1, base=1},
- buffer_exists={args=1, base=1, func='f_bufexists'}, -- obsolete
- buffer_name={args={0, 1}, base=1, func='f_bufname'}, -- obsolete
- buffer_number={args={0, 1}, base=1, func='f_bufnr'}, -- obsolete
- buflisted={args=1, base=1},
- bufload={args=1, base=1},
- bufloaded={args=1, base=1},
- bufname={args={0, 1}, base=1},
- bufnr={args={0, 2}, base=1},
- bufwinid={args=1, base=1},
- bufwinnr={args=1, base=1},
- byte2line={args=1, base=1},
- byteidx={args={2, 3}, base=1, fast=true},
- byteidxcomp={args={2, 3}, base=1, fast=true},
+ bufadd={args=1, base=1, returns='integer'},
+ bufexists={args=1, base=1, returns=VIMBOOL},
+ buffer_exists={
+ args=1, base=1, func='f_bufexists',
+ deprecated = { 'Obsolete name for |bufexists()|.' }
+ },
+ buffer_name={
+ args={0, 1}, base=1, func='f_bufname',
+ deprecated = { 'Obsolete name for |bufname()|.' }
+ },
+ buffer_number={
+ args={0, 1}, base=1, func='f_bufnr',
+ deprecated = { 'Obsolete name for |bufnr()|.' }
+ },
+ buflisted={args=1, base=1, returns=VIMBOOL},
+ bufload={args=1, base=1, returns=false},
+ bufloaded={args=1, base=1, returns=VIMBOOL},
+ bufname={args={0, 1}, base=1, returns='string'},
+ bufnr={args={0, 2}, base=1, returns='integer'},
+ bufwinid={args=1, base=1, returns='integer'},
+ bufwinnr={args=1, base=1, returns='integer'},
+ byte2line={args=1, base=1, returns='integer'},
+ byteidx={args={2, 3}, base=1, fast=true, returns='integer'},
+ byteidxcomp={args={2, 3}, base=1, fast=true, returns='integer'},
call={args={2, 3}, base=1},
ceil={args=1, base=1, float_func="ceil"},
- changenr={},
+ changenr={returns='integer'},
chanclose={args={1, 2}},
chansend={args=2},
char2nr={args={1, 2}, base=1, fast=true},
@@ -79,11 +90,11 @@ return {
chdir={args=1, base=1},
cindent={args=1, base=1},
clearmatches={args={0, 1}, base=1},
- col={args={1, 2}, base=1},
- complete={args=2, base=2},
- complete_add={args=1, base=1},
- complete_check={},
- complete_info={args={0, 1}, base=1},
+ col={args={1, 2}, base=1, returns='integer'},
+ complete={args=2, base=2, returns=false},
+ complete_add={args=1, base=1, returns='0|1|2'},
+ complete_check={returns=VIMBOOL},
+ complete_info={args={0, 1}, base=1, returns='table'},
confirm={args={1, 4}, base=1},
copy={args=1, base=1},
cos={args=1, base=1, float_func="cos"},
@@ -97,7 +108,7 @@ return {
cursor={args={1, 3}, base=1},
debugbreak={args={1, 1}, base=1},
deepcopy={args={1, 2}, base=1},
- delete={args={1,2}, base=1},
+ delete={args={1,2}, base=1, returns='integer'},
deletebufline={args={2,3}, base=1},
dictwatcheradd={args=3},
dictwatcherdel={args=3},
@@ -116,33 +127,36 @@ return {
executable={args=1, base=1, fast=true},
execute={args={1, 2}, base=1},
exepath={args=1, base=1},
- exists={args=1, base=1},
+ exists={args=1, base=1, returns=VIMBOOL},
exp={args=1, base=1, float_func="exp"},
- expand={args={1, 3}, base=1},
+ expand={args={1, 3}, base=1, returns='string|string[]'},
expandcmd={args={1, 2}, base=1},
extend={args={2, 3}, base=1},
extendnew={args={2, 3}, base=1},
feedkeys={args={1, 2}, base=1},
- file_readable={args=1, base=1, func='f_filereadable'}, -- obsolete
- filereadable={args=1, base=1, fast=true},
- filewritable={args=1, base=1, fast=true},
+ file_readable={
+ args=1, base=1, func='f_filereadable',
+ deprecated = { 'Obsolete name for |filereadable()|.' }
+ },
+ filereadable={args=1, base=1, fast=true, returns=VIMBOOL},
+ filewritable={args=1, base=1, fast=true, returns=VIMBOOL},
filter={args=2, base=1},
finddir={args={1, 3}, base=1},
findfile={args={1, 3}, base=1},
- flatten={args={1, 2}, base=1},
- flattennew={args={1, 2}, base=1},
+ flatten={args={1, 2}, base=1, returns='any[]|0'},
+ flattennew={args={1, 2}, base=1, returns='any[]|0'},
float2nr={args=1, base=1},
floor={args=1, base=1, float_func="floor"},
fmod={args=2, base=1},
- fnameescape={args=1, base=1, fast=true},
- fnamemodify={args=2, base=1, fast=true},
- foldclosed={args=1, base=1},
- foldclosedend={args=1, base=1},
- foldlevel={args=1, base=1},
- foldtext={},
- foldtextresult={args=1, base=1},
+ fnameescape={args=1, base=1, fast=true, returns='string'},
+ fnamemodify={args=2, base=1, fast=true, returns='string'},
+ foldclosed={args=1, base=1, returns='integer'},
+ foldclosedend={args=1, base=1, returns='integer'},
+ foldlevel={args=1, base=1, returns='integer'},
+ foldtext={returns='string'},
+ foldtextresult={args=1, base=1, returns='string'},
foreground={},
- fullcommand={args=1, base=1},
+ fullcommand={args=1, base=1, returns='string'},
funcref={args={1, 3}, base=1},
['function']={args={1, 3}, base=1},
garbagecollect={args={0, 1}},
@@ -153,39 +167,39 @@ return {
getbufvar={args={2, 3}, base=1},
getcellwidths={},
getchangelist={args={0, 1}, base=1},
- getchar={args={0, 1}},
- getcharmod={},
+ getchar={args={0, 1}, returns='integer'},
+ getcharmod={returns='integer'},
getcharpos={args=1, base=1},
getcharsearch={},
- getcharstr={args={0, 1}},
- getcmdcompltype={},
- getcmdline={},
+ getcharstr={args={0, 1}, returns='string'},
+ getcmdcompltype={returns='string'},
+ getcmdline={returns='string'},
getcmdpos={},
getcmdscreenpos={},
- getcmdtype={},
- getcmdwintype={},
- getcompletion={args={2, 3}, base=1},
+ getcmdtype={returns="':'|'>'|'/'|'?'|'@'|'-'|'='"},
+ getcmdwintype={returns="':'|'>'|'/'|'?'|'@'|'-'|'='"},
+ getcompletion={args={2, 3}, base=1, returns='string[]'},
getcurpos={args={0, 1}, base=1},
getcursorcharpos={args={0, 1}, base=1},
- getcwd={args={0, 2}, base=1},
- getenv={args=1, base=1},
- getfontname={args={0, 1}},
- getfperm={args=1, base=1, fast=true},
- getfsize={args=1, base=1, fast=true},
- getftime={args=1, base=1, fast=true},
- getftype={args=1, base=1, fast=true},
+ getcwd={args={0, 2}, base=1, returns='string'},
+ getenv={args=1, base=1, returns='string'},
+ getfontname={args={0, 1}, returns='string'},
+ getfperm={args=1, base=1, fast=true, returns='string'},
+ getfsize={args=1, base=1, fast=true, returns='integer'},
+ getftime={args=1, base=1, fast=true, returns='integer'},
+ getftype={args=1, base=1, fast=true, returns="'file'|'dir'|'link'|'bdev'|'cdev'|'socket'|'fifo'|'other'"},
getjumplist={args={0, 2}, base=1},
getline={args={1, 2}, base=1},
getloclist={args={1, 2}},
getmarklist={args={0, 1}, base=1},
getmatches={args={0, 1}},
getmousepos={},
- getpid={fast=true},
+ getpid={fast=true, returns='integer'},
getpos={args=1, base=1},
getqflist={args={0, 1}},
- getreg={args={0, 3}, base=1},
- getreginfo={args={0, 1}, base=1},
- getregtype={args={0, 1}, base=1},
+ getreg={args={0, 3}, base=1, returns='string|string[]'},
+ getreginfo={args={0, 1}, base=1, returns='table'},
+ getregtype={args={0, 1}, base=1, returns='string'},
gettabinfo={args={0, 1}, base=1},
gettabvar={args={2, 3}, base=1},
gettabwinvar={args={3, 4}, base=1},
@@ -194,31 +208,40 @@ return {
gettext={args=1, base=1},
getwininfo={args={0, 1}, base=1},
getwinpos={args={0, 1}, base=1},
- getwinposx={},
- getwinposy={},
+ getwinposx={returns='integer'},
+ getwinposy={returns='integer'},
getwinvar={args={2, 3}, base=1},
glob={args={1, 4}, base=1},
glob2regpat={args=1, base=1},
globpath={args={2, 5}, base=2},
- has={args=1},
- has_key={args=2, base=1},
- haslocaldir={args={0, 2}, base=1},
- hasmapto={args={1, 3}, base=1},
- highlightID={args=1, base=1, func='f_hlID'}, -- obsolete
- highlight_exists={args=1, base=1, func='f_hlexists'}, -- obsolete
- histadd={args=2, base=2},
- histdel={args={1, 2}, base=1},
- histget={args={1, 2}, base=1},
- histnr={args=1, base=1},
- hlID={args=1, base=1},
- hlexists={args=1, base=1},
- hostname={fast=true},
+ has={args=1, returns=VIMBOOL},
+ has_key={args=2, base=1, returns=VIMBOOL},
+ haslocaldir={args={0, 2}, base=1, returns=VIMBOOL},
+ hasmapto={args={1, 3}, base=1, returns=VIMBOOL},
+ highlightID={
+ args=1, base=1, func='f_hlID',
+ deprecated = { 'Obsolete name for |hlID()|.' }
+ },
+ highlight_exists={
+ args=1, base=1, func='f_hlexists',
+ deprecated = { 'Obsolete name for |hlexists()|.' }
+ },
+ histadd={args=2, base=2, returns=VIMBOOL},
+ histdel={args={1, 2}, base=1, returns=VIMBOOL},
+ histget={args={1, 2}, base=1, returns='string'},
+ histnr={args=1, base=1, returns='integer'},
+ hlID={args=1, base=1, returns='integer'},
+ hlexists={args=1, base=1, returns=VIMBOOL},
+ hostname={fast=true, returns='string'},
iconv={args=3, base=1, fast=true},
- indent={args=1, base=1},
+ indent={args=1, base=1, returns='integer'},
index={args={2, 4}, base=1},
indexof={args={2, 3}, base=1},
input={args={1, 3}, base=1},
- inputdialog={args={1, 3}, base=1},
+ inputdialog={
+ args={1, 3}, base=1,
+ deprecated = { 'Use |input()| instead.' }
+ },
inputlist={args=1, base=1},
inputrestore={},
inputsave={},
@@ -226,16 +249,22 @@ return {
insert={args={2, 3}, base=1},
interrupt={args=0},
invert={args=1, base=1},
- isdirectory={args=1, base=1, fast=true},
- isinf={args=1, base=1},
- islocked={args=1, base=1},
- isnan={args=1, base=1},
+ isdirectory={args=1, base=1, fast=true, returns=VIMBOOL},
+ isinf={args=1, base=1, returns='1|0|-1'},
+ islocked={args=1, base=1, returns=VIMBOOL},
+ isnan={args=1, base=1, returns=VIMBOOL},
id={args=1},
items={args=1, base=1},
- jobclose={args={1, 2}, func="f_chanclose"},
- jobpid={args=1},
+ jobclose={
+ args={1, 2}, func="f_chanclose",
+ deprecated = { 'Obsolete name for |chanclose()|' }
+ },
+ jobpid={args=1, returns='integer'},
jobresize={args=3},
- jobsend={args=2, func="f_chansend"},
+ jobsend={
+ args=2, func="f_chansend",
+ deprecated = { 'Obsolete name for |chansend()|' }
+ },
jobstart={args={1, 2}},
jobstop={args=1},
jobwait={args={1, 2}},
@@ -244,12 +273,14 @@ return {
json_encode={args=1, base=1},
keys={args=1, base=1},
keytrans={args=1, base=1},
- last_buffer_nr={}, -- obsolete
+ last_buffer_nr={
+ deprecated = { 'Obsolete name for bufnr("$").' }
+ },
len={args=1, base=1},
libcall={args=3, base=3},
libcallnr={args=3, base=3},
- line={args={1, 2}, base=1},
- line2byte={args=1, base=1},
+ line={args={1, 2}, base=1, returns='integer'},
+ line2byte={args=1, base=1, returns='integer'},
lispindent={args=1, base=1},
list2blob={args=1, base=1},
list2str={args={1, 2}, base=1},
@@ -286,7 +317,7 @@ return {
pathshorten={args={1, 2}, base=1},
pow={args=2, base=1},
prevnonblank={args=1, base=1},
- printf={args=varargs(1), base=2},
+ printf={args={1}, base=2},
prompt_getprompt={args=1, base=1},
prompt_setcallback={args={2, 2}, base=1},
prompt_setinterrupt={args={2, 2}, base=1},
@@ -315,10 +346,18 @@ return {
resolve={args=1, base=1, fast=true},
reverse={args=1, base=1},
round={args=1, base=1, float_func="round"},
- rpcnotify={args=varargs(2)},
- rpcrequest={args=varargs(2)},
+ rpcnotify={args={2}},
+ rpcrequest={args={2}},
rpcstart={args={1, 2}},
- rpcstop={args=1},
+ rpcstop={
+ args=1,
+ deprecated = {
+ 'Use |jobstop()| instead to stop any job, or',
+ '`chanclose(id, "rpc")` to close RPC communication',
+ 'without stopping the job. Use chanclose(id) to close',
+ 'any socket.'
+ }
+ },
rubyeval={args=1, base=1},
screenattr={args=2, base=1},
screenchar={args=2, base=1},
@@ -419,7 +458,7 @@ return {
taglist={args={1, 2}, base=1},
tan={args=1, base=1, float_func="tan"},
tanh={args=1, base=1, float_func="tanh"},
- tempname={},
+ tempname={returns='string'},
termopen={args={1, 2}},
test_garbagecollect_now={},
test_write_list_log={args=1},
@@ -428,16 +467,16 @@ return {
timer_start={args={2, 3}, base=1},
timer_stop={args=1, base=1},
timer_stopall={args=0},
- tolower={args=1, base=1, fast=true},
- toupper={args=1, base=1, fast=true},
+ tolower={args=1, base=1, fast=true, returns='string'},
+ toupper={args=1, base=1, fast=true, returns='string'},
tr={args=3, base=1},
- trim={args={1, 3}, base=1},
+ trim={args={1, 3}, base=1, returns='string'},
trunc={args=1, base=1, float_func="trunc"},
type={args=1, base=1, fast=true},
- undofile={args=1, base=1},
+ undofile={args=1, base=1, returns='string'},
undotree={},
- uniq={args={1, 3}, base=1},
- utf16idx={args={2, 4}, base=1},
+ uniq={args={1, 3}, base=1, returns='any[]|0'},
+ utf16idx={args={2, 4}, base=1, returns='integer'},
values={args=1, base=1},
virtcol={args={1, 2}, base=1},
virtcol2col={args=3, base=1},
@@ -445,22 +484,22 @@ return {
wait={args={2,3}},
wildmenumode={},
win_execute={args={2, 3}, base=2},
- win_findbuf={args=1, base=1},
- win_getid={args={0, 2}, base=1},
- win_gettype={args={0, 1}, base=1},
- win_gotoid={args=1, base=1},
+ win_findbuf={args=1, base=1, returns='integer[]'},
+ win_getid={args={0, 2}, base=1, returns='integer'},
+ win_gettype={args={0, 1}, base=1, returns="'autocmd'|'command'|''|'loclist'|'popup'|'preview'|'quickfix'|'unknown'"},
+ win_gotoid={args=1, base=1, returns=VIMBOOL},
win_id2tabwin={args=1, base=1},
win_id2win={args=1, base=1},
win_move_separator={args=2, base=1},
win_move_statusline={args=2, base=1},
win_screenpos={args=1, base=1},
win_splitmove={args={2, 3}, base=1},
- winbufnr={args=1, base=1},
- wincol={},
- windowsversion={fast=true},
- winheight={args=1, base=1},
+ winbufnr={args=1, base=1, returns='integer'},
+ wincol={returns='integer'},
+ windowsversion={fast=true, returns='string'},
+ winheight={args=1, base=1, returns='integer'},
winlayout={args={0, 1}, base=1},
- winline={},
+ winline={returns='integer'},
winnr={args={0, 1}, base=1},
winrestcmd={},
winrestview={args=1, base=1},