From 8fb7273ac0b981eeb9afdc82675b908c1600d34f Mon Sep 17 00:00:00 2001 From: ZyX Date: Fri, 1 Jan 2016 12:17:22 +0300 Subject: eval: Move VimL functions list to a lua file Removes all kinds of problems with sorting, provides a ready-to-use function list representation for genvimvim.lua, does not require specifying function name twice (VimL function name (string) + f_ function name). --- src/nvim/eval.lua | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 src/nvim/eval.lua (limited to 'src/nvim/eval.lua') diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua new file mode 100644 index 0000000000..57c58f8f83 --- /dev/null +++ b/src/nvim/eval.lua @@ -0,0 +1,307 @@ +-- File containing table with all functions. +-- +-- 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. +-- func Name of the C function which implements the VimL function. Defaults to +-- `f_{funcname}`. + +local varargs = function(nr) + return {nr} +end + +return { + funcs={ + abs={args=1}, + acos={args=1}, -- WJMc + add={args=2}, + ['and']={args=2}, + append={args=2}, + argc={}, + argidx={}, + arglistid={args={0, 2}}, + argv={args={0, 1}}, + asin={args=1}, -- WJMc + atan={args=1}, + atan2={args=2}, + browse={args=4}, + browsedir={args=2}, + bufexists={args=1}, + buffer_exists={args=1, func='f_bufexists'}, -- obsolete + buffer_name={args=1, func='f_bufname'}, -- obsolete + buffer_number={args=1, func='f_bufnr'}, -- obsolete + buflisted={args=1}, + bufloaded={args=1}, + bufname={args=1}, + bufnr={args={1, 2}}, + bufwinnr={args=1}, + byte2line={args=1}, + byteidx={args=2}, + byteidxcomp={args=2}, + call={args={2, 3}}, + ceil={args=1}, + changenr={}, + char2nr={args={1, 2}}, + cindent={args=1}, + clearmatches={}, + col={args=1}, + complete={args=2}, + complete_add={args=1}, + complete_check={}, + confirm={args={1, 4}}, + copy={args=1}, + cos={args=1}, + cosh={args=1}, + count={args={2, 4}}, + cscope_connection={args={0, 3}}, + cursor={args={1, 3}}, + deepcopy={args={1, 2}}, + delete={args=1}, + dictwatcheradd={args=3}, + dictwatcherdel={args=3}, + did_filetype={}, + diff_filler={args=1}, + diff_hlID={args=2}, + empty={args=1}, + escape={args=2}, + eval={args=1}, + eventhandler={}, + executable={args=1}, + exepath={args=1}, + exists={args=1}, + exp={args=1}, + expand={args={1, 3}}, + extend={args={2, 3}}, + feedkeys={args={1, 2}}, + file_readable={args=1, func='f_filereadable'}, -- obsolete + filereadable={args=1}, + filewritable={args=1}, + filter={args=2}, + finddir={args={1, 3}}, + findfile={args={1, 3}}, + float2nr={args=1}, + floor={args=1}, + fmod={args=2}, + fnameescape={args=1}, + fnamemodify={args=2}, + foldclosed={args=1}, + foldclosedend={args=1}, + foldlevel={args=1}, + foldtext={}, + foldtextresult={args=1}, + foreground={}, + ['function']={args=1}, + garbagecollect={args={0, 1}}, + get={args={2, 3}}, + getbufline={args={2, 3}}, + getbufvar={args={2, 3}}, + getchar={args={0, 1}}, + getcharmod={}, + getcharsearch={}, + getcmdline={}, + getcmdpos={}, + getcmdtype={}, + getcmdwintype={}, + getcurpos={}, + getcwd={}, + getfontname={args={0, 1}}, + getfperm={args=1}, + getfsize={args=1}, + getftime={args=1}, + getftype={args=1}, + getline={args={1, 2}}, + getloclist={args=1, func='f_getqflist'}, + getmatches={}, + getpid={}, + getpos={args=1}, + getqflist={}, + getreg={args={0, 3}}, + getregtype={args={0, 1}}, + gettabvar={args={2, 3}}, + gettabwinvar={args={3, 4}}, + getwinposx={}, + getwinposy={}, + getwinvar={args={2, 3}}, + glob={args={1, 3}}, + glob2regpat={args=1}, + globpath={args={2, 4}}, + has={args=1}, + has_key={args=2}, + haslocaldir={}, + hasmapto={args={1, 3}}, + highlightID={args=1, func='f_hlID'}, -- obsolete + highlight_exists={args=1, func='f_hlexists'}, -- obsolete + histadd={args=2}, + histdel={args={1, 2}}, + histget={args={1, 2}}, + histnr={args=1}, + hlID={args=1}, + hlexists={args=1}, + hostname={}, + iconv={args=3}, + indent={args=1}, + index={args={2, 4}}, + input={args={1, 3}}, + inputdialog={args={1, 3}}, + inputlist={args=1}, + inputrestore={}, + inputsave={}, + inputsecret={args={1, 2}}, + insert={args={2, 3}}, + invert={args=1}, + isdirectory={args=1}, + islocked={args=1}, + items={args=1}, + jobclose={args={1, 2}}, + jobresize={args=3}, + jobsend={args=2}, + jobstart={args={1, 2}}, + jobstop={args=1}, + jobwait={args={1, 2}}, + join={args={1, 2}}, + keys={args=1}, + last_buffer_nr={}, -- obsolete + len={args=1}, + libcall={args=3}, + libcallnr={args=3}, + line={args=1}, + line2byte={args=1}, + lispindent={args=1}, + localtime={}, + log={args=1}, + log10={args=1}, + map={args=2}, + maparg={args={1, 4}}, + mapcheck={args={1, 3}}, + match={args={2, 4}}, + matchadd={args={2, 4}}, + matchaddpos={args={2, 4}}, + matcharg={args=1}, + matchdelete={args=1}, + matchend={args={2, 4}}, + matchlist={args={2, 4}}, + matchstr={args={2, 4}}, + max={args=1}, + min={args=1}, + mkdir={args={1, 3}}, + mode={args={0, 1}}, + msgpackdump={args=1}, + msgpackparse={args=1}, + nextnonblank={args=1}, + nr2char={args={1, 2}}, + ['or']={args=2}, + pathshorten={args=1}, + pow={args=2}, + prevnonblank={args=1}, + printf={args=varargs(2)}, + pumvisible={}, + py3eval={args=1}, + pyeval={args=1}, + range={args={1, 3}}, + readfile={args={1, 3}}, + reltime={args={0, 2}}, + reltimestr={args=1}, + remove={args={2, 3}}, + rename={args=2}, + ['repeat']={args=2}, + resolve={args=1}, + reverse={args=1}, + round={args=1}, + rpcnotify={args=varargs(2)}, + rpcrequest={args=varargs(2)}, + rpcstart={args={1, 2}}, + rpcstop={args=1}, + screenattr={args=2}, + screenchar={args=2}, + screencol={}, + screenrow={}, + search={args={1, 4}}, + searchdecl={args={1, 3}}, + searchpair={args={3, 7}}, + searchpairpos={args={3, 7}}, + searchpos={args={1, 4}}, + serverlist={}, + serverstart={args={0, 1}}, + serverstop={args=1}, + setbufvar={args=3}, + setcharsearch={args=1}, + setcmdpos={args=1}, + setline={args=2}, + setloclist={args={2, 3}}, + setmatches={args=1}, + setpos={args=2}, + setqflist={args={1, 2}}, + setreg={args={2, 3}}, + settabvar={args=3}, + settabwinvar={args=4}, + setwinvar={args=3}, + sha256={args=1}, + shellescape={args={1, 2}}, + shiftwidth={}, + simplify={args=1}, + sin={args=1}, + sinh={args=1}, + sort={args={1, 3}}, + soundfold={args=1}, + spellbadword={args={0, 1}}, + spellsuggest={args={1, 3}}, + split={args={1, 3}}, + sqrt={args=1}, + str2float={args=1}, + str2nr={args={1, 2}}, + strchars={args=1}, + strdisplaywidth={args={1, 2}}, + strftime={args={1, 2}}, + stridx={args={2, 3}}, + string={args=1}, + strlen={args=1}, + strpart={args={2, 3}}, + strridx={args={2, 3}}, + strtrans={args=1}, + strwidth={args=1}, + submatch={args={1, 2}}, + substitute={args=4}, + synID={args=3}, + synIDattr={args={2, 3}}, + synIDtrans={args=1}, + synconcealed={args=2}, + synstack={args=2}, + system={args={1, 2}}, + systemlist={args={1, 3}}, + tabpagebuflist={args={0, 1}}, + tabpagenr={args={0, 1}}, + tabpagewinnr={args={1, 2}}, + tagfiles={}, + taglist={args=1}, + tan={args=1}, + tanh={args=1}, + tempname={}, + termopen={args={1, 2}}, + test={args=1}, + tolower={args=1}, + toupper={args=1}, + tr={args=3}, + trunc={args=1}, + type={args=1}, + undofile={args=1}, + undotree={}, + uniq={args={1, 3}}, + values={args=1}, + virtcol={args=1}, + visualmode={args={0, 1}}, + wildmenumode={}, + winbufnr={args=1}, + wincol={}, + winheight={args=1}, + winline={}, + winnr={args={0, 1}}, + winrestcmd={}, + winrestview={args=1}, + winsaveview={}, + winwidth={args=1}, + writefile={args={2, 3}}, + xor={args=2}, + }, +} -- cgit From abe00d583e06a67b9eddbe0aed255a8db06bc725 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Sat, 18 Jun 2016 11:39:40 +0200 Subject: eval: add new function entries --- src/nvim/eval.lua | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) (limited to 'src/nvim/eval.lua') diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index 57c58f8f83..627925cd58 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -18,12 +18,21 @@ return { acos={args=1}, -- WJMc add={args=2}, ['and']={args=2}, + api_info={}, append={args=2}, argc={}, argidx={}, arglistid={args={0, 2}}, argv={args={0, 1}}, asin={args=1}, -- WJMc + assert_equal={args={2, 3}}, + assert_exception={args={1, 2}}, + assert_fails={args={1, 2}}, + assert_false={args={1, 2}}, + assert_match={args={2, 3}}, + assert_notequal={args={2, 3}}, + assert_notmatch={args={2, 3}}, + assert_true={args={1, 2}}, atan={args=1}, atan2={args=2}, browse={args=4}, @@ -58,7 +67,7 @@ return { cscope_connection={args={0, 3}}, cursor={args={1, 3}}, deepcopy={args={1, 2}}, - delete={args=1}, + delete={args={1,2}}, dictwatcheradd={args=3}, dictwatcherdel={args=3}, did_filetype={}, @@ -69,6 +78,7 @@ return { eval={args=1}, eventhandler={}, executable={args=1}, + execute={args=1}, exepath={args=1}, exists={args=1}, exp={args=1}, @@ -104,8 +114,9 @@ return { getcmdpos={}, getcmdtype={}, getcmdwintype={}, + getcompletion={args=2}, getcurpos={}, - getcwd={}, + getcwd={args={0,2}}, getfontname={args={0, 1}}, getfperm={args=1}, getfsize={args=1}, @@ -124,12 +135,12 @@ return { getwinposx={}, getwinposy={}, getwinvar={args={2, 3}}, - glob={args={1, 3}}, + glob={args={1, 4}}, glob2regpat={args=1}, - globpath={args={2, 4}}, + globpath={args={2, 5}}, has={args=1}, has_key={args=2}, - haslocaldir={}, + haslocaldir={args={0,2}}, hasmapto={args={1, 3}}, highlightID={args=1, func='f_hlID'}, -- obsolete highlight_exists={args=1, func='f_hlexists'}, -- obsolete @@ -155,12 +166,15 @@ return { islocked={args=1}, items={args=1}, jobclose={args={1, 2}}, + jobpid={args=1}, jobresize={args=3}, jobsend={args=2}, jobstart={args={1, 2}}, jobstop={args=1}, jobwait={args={1, 2}}, join={args={1, 2}}, + json_decode={args=1}, + json_encode={args=1}, keys={args=1}, last_buffer_nr={}, -- obsolete len={args=1}, @@ -176,8 +190,8 @@ return { maparg={args={1, 4}}, mapcheck={args={1, 3}}, match={args={2, 4}}, - matchadd={args={2, 4}}, - matchaddpos={args={2, 4}}, + matchadd={args={2, 5}}, + matchaddpos={args={2, 5}}, matcharg={args=1}, matchdelete={args=1}, matchend={args={2, 4}}, @@ -202,6 +216,7 @@ return { range={args={1, 3}}, readfile={args={1, 3}}, reltime={args={0, 2}}, + reltimefloat={args=1}, reltimestr={args=1}, remove={args={2, 3}}, rename={args=2}, @@ -228,11 +243,12 @@ return { setbufvar={args=3}, setcharsearch={args=1}, setcmdpos={args=1}, + setfperm={args=2}, setline={args=2}, - setloclist={args={2, 3}}, + setloclist={args={2, 4}}, setmatches={args=1}, setpos={args=2}, - setqflist={args={1, 2}}, + setqflist={args={1, 3}}, setreg={args={2, 3}}, settabvar={args=3}, settabwinvar={args=4}, @@ -251,7 +267,7 @@ return { sqrt={args=1}, str2float={args=1}, str2nr={args={1, 2}}, - strchars={args=1}, + strchars={args={1,2}}, strdisplaywidth={args={1, 2}}, strftime={args={1, 2}}, stridx={args={2, 3}}, @@ -280,6 +296,8 @@ return { tempname={}, termopen={args={1, 2}}, test={args=1}, + timer_start={args={2,3}}, + timer_stop={args=1}, tolower={args=1}, toupper={args=1}, tr={args=3}, @@ -292,6 +310,10 @@ return { virtcol={args=1}, visualmode={args={0, 1}}, wildmenumode={}, + win_getid={args={0,2}}, + win_gotoid={args=1}, + win_id2tabwin={args=1}, + win_id2win={args=1}, winbufnr={args=1}, wincol={}, winheight={args=1}, @@ -301,6 +323,7 @@ return { winrestview={args=1}, winsaveview={}, winwidth={args=1}, + wordcount={}, writefile={args={2, 3}}, xor={args=2}, }, -- cgit From 3bd3b3b76859b3eef80fa4969147efa881b60f40 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Sat, 18 Jun 2016 12:06:50 +0200 Subject: api: auto generate api function wrappers for viml --- src/nvim/eval.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/eval.lua') diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index 627925cd58..bbac27c7db 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -33,7 +33,7 @@ return { assert_notequal={args={2, 3}}, assert_notmatch={args={2, 3}}, assert_true={args={1, 2}}, - atan={args=1}, + atan={args=1, func="float_op_wrapper", data="atan"}, atan2={args=2}, browse={args=4}, browsedir={args=2}, -- cgit From 7e2348f2b1b487c875bbcf6c6711a276f9063040 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Sun, 19 Jun 2016 16:41:08 +0200 Subject: eval: use gperf to generate the hash of builtin functions make api functions highlighted as builtins in vim.vim --- src/nvim/eval.lua | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'src/nvim/eval.lua') diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index bbac27c7db..9a3d73736f 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -15,7 +15,7 @@ end return { funcs={ abs={args=1}, - acos={args=1}, -- WJMc + acos={args=1, func="float_op_wrapper", data="&acos"}, -- WJMc add={args=2}, ['and']={args=2}, api_info={}, @@ -24,7 +24,7 @@ return { argidx={}, arglistid={args={0, 2}}, argv={args={0, 1}}, - asin={args=1}, -- WJMc + asin={args=1, func="float_op_wrapper", data="&asin"}, -- WJMc assert_equal={args={2, 3}}, assert_exception={args={1, 2}}, assert_fails={args={1, 2}}, @@ -33,7 +33,7 @@ return { assert_notequal={args={2, 3}}, assert_notmatch={args={2, 3}}, assert_true={args={1, 2}}, - atan={args=1, func="float_op_wrapper", data="atan"}, + atan={args=1, func="float_op_wrapper", data="&atan"}, atan2={args=2}, browse={args=4}, browsedir={args=2}, @@ -50,7 +50,7 @@ return { byteidx={args=2}, byteidxcomp={args=2}, call={args={2, 3}}, - ceil={args=1}, + ceil={args=1, func="float_op_wrapper", data="&ceil"}, changenr={}, char2nr={args={1, 2}}, cindent={args=1}, @@ -61,8 +61,8 @@ return { complete_check={}, confirm={args={1, 4}}, copy={args=1}, - cos={args=1}, - cosh={args=1}, + cos={args=1, func="float_op_wrapper", data="&cos"}, + cosh={args=1, func="float_op_wrapper", data="&cosh"}, count={args={2, 4}}, cscope_connection={args={0, 3}}, cursor={args={1, 3}}, @@ -81,7 +81,7 @@ return { execute={args=1}, exepath={args=1}, exists={args=1}, - exp={args=1}, + exp={args=1, func="float_op_wrapper", data="&exp"}, expand={args={1, 3}}, extend={args={2, 3}}, feedkeys={args={1, 2}}, @@ -92,7 +92,7 @@ return { finddir={args={1, 3}}, findfile={args={1, 3}}, float2nr={args=1}, - floor={args=1}, + floor={args=1, func="float_op_wrapper", data="&floor"}, fmod={args=2}, fnameescape={args=1}, fnamemodify={args=2}, @@ -184,8 +184,8 @@ return { line2byte={args=1}, lispindent={args=1}, localtime={}, - log={args=1}, - log10={args=1}, + log={args=1, func="float_op_wrapper", data="&log"}, + log10={args=1, func="float_op_wrapper", data="&log10"}, map={args=2}, maparg={args={1, 4}}, mapcheck={args={1, 3}}, @@ -223,7 +223,7 @@ return { ['repeat']={args=2}, resolve={args=1}, reverse={args=1}, - round={args=1}, + round={args=1, func="float_op_wrapper", data="&round"}, rpcnotify={args=varargs(2)}, rpcrequest={args=varargs(2)}, rpcstart={args={1, 2}}, @@ -257,14 +257,14 @@ return { shellescape={args={1, 2}}, shiftwidth={}, simplify={args=1}, - sin={args=1}, - sinh={args=1}, + sin={args=1, func="float_op_wrapper", data="&sin"}, + sinh={args=1, func="float_op_wrapper", data="&sinh"}, sort={args={1, 3}}, soundfold={args=1}, spellbadword={args={0, 1}}, spellsuggest={args={1, 3}}, split={args={1, 3}}, - sqrt={args=1}, + sqrt={args=1, func="float_op_wrapper", data="&sqrt"}, str2float={args=1}, str2nr={args={1, 2}}, strchars={args={1,2}}, @@ -291,8 +291,8 @@ return { tabpagewinnr={args={1, 2}}, tagfiles={}, taglist={args=1}, - tan={args=1}, - tanh={args=1}, + tan={args=1, func="float_op_wrapper", data="&tan"}, + tanh={args=1, func="float_op_wrapper", data="&tanh"}, tempname={}, termopen={args={1, 2}}, test={args=1}, @@ -301,7 +301,7 @@ return { tolower={args=1}, toupper={args=1}, tr={args=3}, - trunc={args=1}, + trunc={args=1, func="float_op_wrapper", data="&trunc"}, type={args=1}, undofile={args=1}, undotree={}, -- cgit