diff options
-rw-r--r-- | runtime/lua/vim/_meta/vimfn.lua | 38 | ||||
-rwxr-xr-x | scripts/gen_eval_files.lua | 52 | ||||
-rw-r--r-- | src/nvim/eval.lua | 64 |
3 files changed, 112 insertions, 42 deletions
diff --git a/runtime/lua/vim/_meta/vimfn.lua b/runtime/lua/vim/_meta/vimfn.lua index f044871601..fd9b68a6f3 100644 --- a/runtime/lua/vim/_meta/vimfn.lua +++ b/runtime/lua/vim/_meta/vimfn.lua @@ -1843,7 +1843,13 @@ function vim.fn.exp(expr) end --- --- @param string string --- @param nosuf? boolean ---- @param list? any +--- @param list? nil|false +--- @return string +function vim.fn.expand(string, nosuf, list) end + +--- @param string string +--- @param nosuf boolean +--- @param list true|number|string|table --- @return string|string[] function vim.fn.expand(string, nosuf, list) end @@ -3138,7 +3144,12 @@ function vim.fn.getjumplist(winnr, tabnr) end --- |getbufoneline()| --- --- @param lnum integer ---- @param end_? any +--- @param end_? nil|false +--- @return string +function vim.fn.getline(lnum, end_) end + +--- @param lnum integer +--- @param end_ true|number|string|table --- @return string|string[] function vim.fn.getline(lnum, end_) end @@ -3436,7 +3447,12 @@ function vim.fn.getqflist(what) end --- If {regname} is not specified, |v:register| is used. --- --- @param regname? string ---- @param list? any +--- @param list? nil|false +--- @return string +function vim.fn.getreg(regname, list) end + +--- @param regname string +--- @param list true|number|string|table --- @return string|string[] function vim.fn.getreg(regname, list) end @@ -5067,7 +5083,14 @@ function vim.fn.map(expr1, expr2) end --- @param name string --- @param mode? string --- @param abbr? boolean ---- @param dict? boolean +--- @param dict? false +--- @return string +function vim.fn.maparg(name, mode, abbr, dict) end + +--- @param name string +--- @param mode string +--- @param abbr boolean +--- @param dict true --- @return string|table<string,any> function vim.fn.maparg(name, mode, abbr, dict) end @@ -9317,7 +9340,12 @@ function vim.fn.strwidth(string) end --- A line break is included as a newline character. --- --- @param nr integer ---- @param list? integer +--- @param list? nil +--- @return string +function vim.fn.submatch(nr, list) end + +--- @param nr integer +--- @param list integer --- @return string|string[] function vim.fn.submatch(nr, list) end diff --git a/scripts/gen_eval_files.lua b/scripts/gen_eval_files.lua index e2ca62c2ee..c49f598304 100755 --- a/scripts/gen_eval_files.lua +++ b/scripts/gen_eval_files.lua @@ -354,41 +354,35 @@ local function render_eval_meta(f, fun, write) local params = process_params(fun.params) - if fun.signature then - write('') - if fun.deprecated then - write('--- @deprecated') - end - - local desc = fun.desc - - if desc then - --- @type string - desc = desc:gsub('\n%s*\n%s*$', '\n') - for _, l in ipairs(split(desc)) do - l = l:gsub('^ ', ''):gsub('\t', ' '):gsub('@', '\\@') - write('--- ' .. l) - end - end + write('') + if fun.deprecated then + write('--- @deprecated') + end - local req_args = type(fun.args) == 'table' and fun.args[1] or fun.args or 0 + local desc = fun.desc - for i, param in ipairs(params) do - local pname, ptype = param[1], param[2] - local optional = (pname ~= '...' and i > req_args) and '?' or '' - write(string.format('--- @param %s%s %s', pname, optional, ptype)) + if desc then + --- @type string + desc = desc:gsub('\n%s*\n%s*$', '\n') + for _, l in ipairs(split(desc)) do + l = l:gsub('^ ', ''):gsub('\t', ' '):gsub('@', '\\@') + write('--- ' .. l) end + end - if fun.returns ~= false then - write('--- @return ' .. (fun.returns or 'any')) - end + local req_args = type(fun.args) == 'table' and fun.args[1] or fun.args or 0 - write(render_fun_sig(funname, params)) + for i, param in ipairs(params) do + local pname, ptype = param[1], param[2] + local optional = (pname ~= '...' and i > req_args) and '?' or '' + write(string.format('--- @param %s%s %s', pname, optional, ptype)) + end - return + if fun.returns ~= false then + write('--- @return ' .. (fun.returns or 'any')) end - print('no doc for', funname) + write(render_fun_sig(funname, params)) end --- @type table<string,true> @@ -398,6 +392,10 @@ local rendered_tags = {} --- @param fun vim.EvalFn --- @param write fun(line: string) local function render_sig_and_tag(name, fun, write) + if not fun.signature then + return + end + local tags = { '*' .. name .. '()*' } if fun.tags then diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index 04d176ad1b..6bd6087a4e 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -17,7 +17,7 @@ --- @field deprecated? true --- @field returns? string|false --- @field returns_desc? string ---- @field signature string +--- @field signature? string --- @field desc? string --- @field params {[1]:string, [2]:string, [3]:string}[] --- @field lua? false Do not render type information @@ -2348,9 +2348,20 @@ M.funcs = { ]=], name = 'expand', - params = { { 'string', 'string' }, { 'nosuf', 'boolean' }, { 'list', 'any' } }, - returns = 'string|string[]', + params = { { 'string', 'string' }, { 'nosuf', 'boolean' }, { 'list', 'nil|false' } }, signature = 'expand({string} [, {nosuf} [, {list}]])', + returns = 'string', + }, + expand__1 = { + args = { 3 }, + base = 1, + name = 'expand', + params = { + { 'string', 'string' }, + { 'nosuf', 'boolean' }, + { 'list', 'true|number|string|table' }, + }, + returns = 'string|string[]', }, expandcmd = { args = { 1, 2 }, @@ -3918,9 +3929,16 @@ M.funcs = { |getbufoneline()| ]=], name = 'getline', - params = { { 'lnum', 'integer' }, { 'end', 'any' } }, - returns = 'string|string[]', + params = { { 'lnum', 'integer' }, { 'end', 'nil|false' } }, signature = 'getline({lnum} [, {end}])', + returns = 'string', + }, + getline__1 = { + args = { 2 }, + base = 1, + name = 'getline', + params = { { 'lnum', 'integer' }, { 'end', 'true|number|string|table' } }, + returns = 'string|string[]', }, getloclist = { args = { 1, 2 }, @@ -4249,9 +4267,16 @@ M.funcs = { ]=], name = 'getreg', - params = { { 'regname', 'string' }, { 'list', 'any' } }, - returns = 'string|string[]', + params = { { 'regname', 'string' }, { 'list', 'nil|false' } }, signature = 'getreg([{regname} [, 1 [, {list}]]])', + returns = 'string', + }, + getreg__1 = { + args = { 3 }, + base = 1, + name = 'getreg', + params = { { 'regname', 'string' }, { 'list', 'true|number|string|table' } }, + returns = 'string|string[]', }, getreginfo = { args = { 0, 1 }, @@ -6218,10 +6243,22 @@ M.funcs = { { 'name', 'string' }, { 'mode', 'string' }, { 'abbr', 'boolean' }, - { 'dict', 'boolean' }, + { 'dict', 'false' }, }, - returns = 'string|table<string,any>', signature = 'maparg({name} [, {mode} [, {abbr} [, {dict}]]])', + returns = 'string', + }, + maparg__1 = { + args = { 4 }, + base = 1, + name = 'maparg', + params = { + { 'name', 'string' }, + { 'mode', 'string' }, + { 'abbr', 'boolean' }, + { 'dict', 'true' }, + }, + returns = 'string|table<string,any>', }, mapcheck = { args = { 1, 3 }, @@ -11120,9 +11157,16 @@ M.funcs = { ]=], name = 'submatch', + params = { { 'nr', 'integer' }, { 'list', 'nil' } }, + signature = 'submatch({nr} [, {list}])', + returns = 'string', + }, + submatch__1 = { + args = { 2 }, + base = 1, + name = 'submatch', params = { { 'nr', 'integer' }, { 'list', 'integer' } }, returns = 'string|string[]', - signature = 'submatch({nr} [, {list}])', }, substitute = { args = 4, |