diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/geneval.lua | 29 | ||||
-rw-r--r-- | scripts/genvimvim.lua | 9 |
2 files changed, 27 insertions, 11 deletions
diff --git a/scripts/geneval.lua b/scripts/geneval.lua index 396e7b81db..75a8bdfab3 100644 --- a/scripts/geneval.lua +++ b/scripts/geneval.lua @@ -3,6 +3,7 @@ mpack = require('mpack') local nvimsrcdir = arg[1] local autodir = arg[2] local metadata_file = arg[3] +local funcs_file = arg[4] if nvimsrcdir == '--help' then print([[ @@ -19,20 +20,34 @@ package.path = nvimsrcdir .. '/?.lua;' .. package.path local funcsfname = autodir .. '/funcs.generated.h' -local funcspipe = io.open(funcsfname .. '.hsh', 'w') +local gperfpipe = io.open(funcsfname .. '.gperf', 'wb') local funcs = require('eval').funcs - local metadata = mpack.unpack(io.open(arg[3], 'rb'):read("*all")) - for i,fun in ipairs(metadata) do funcs['api_'..fun.name] = { args=#fun.parameters, func='api_wrapper', - data='handle_'..fun.name, + data='&handle_'..fun.name, } end +local funcsdata = io.open(funcs_file, 'w') +funcsdata:write(mpack.pack(funcs)) +funcsdata:close() + +gperfpipe:write([[ +%language=ANSI-C +%global-table +%define initializer-suffix ,0,0,NULL,NULL +%define word-array-name functions +%define hash-function-name hash_internal_func_gperf +%define lookup-function-name find_internal_func_gperf +%omit-struct-type +%struct-type +VimLFuncDef; +%% +]]) for name, def in pairs(funcs) do args = def.args or 0 @@ -43,7 +58,7 @@ for name, def in pairs(funcs) do end func = def.func or ('f_' .. name) data = def.data or "NULL" - local val = ('{ %s, %s, &%s, %s }'):format(args[1], args[2], func, data) - funcspipe:write(name .. '\n' .. val .. '\n') + gperfpipe:write(('%s, %s, %s, &%s, (FunPtr)%s\n') + :format(name, args[1], args[2], func, data)) end -funcspipe:close() +gperfpipe:close() diff --git a/scripts/genvimvim.lua b/scripts/genvimvim.lua index 729749a52f..24c147b811 100644 --- a/scripts/genvimvim.lua +++ b/scripts/genvimvim.lua @@ -1,3 +1,5 @@ +mpack = require('mpack') + if arg[1] == '--help' then print('Usage: lua genvimvim.lua src/nvim runtime/syntax/vim/generated.vim') os.exit(0) @@ -5,6 +7,7 @@ end local nvimsrcdir = arg[1] local syntax_file = arg[2] +local funcs_file = arg[3] package.path = nvimsrcdir .. '/?.lua;' .. package.path @@ -23,7 +26,6 @@ end local options = require('options') local auevents = require('auevents') local ex_cmds = require('ex_cmds') -local eval = require('eval') local cmd_kw = function(prev_cmd, cmd) if not prev_cmd then @@ -112,9 +114,9 @@ end w('\n\nsyn case match') local vimfun_start = 'syn keyword vimFuncName contained ' w('\n\n' .. vimfun_start) -eval_fd = io.open(nvimsrcdir .. '/eval.c', 'r') +funcs = mpack.unpack(io.open(funcs_file):read("*all")) local started = 0 -for name, def in pairs(eval.funcs) do +for name, def in pairs(funcs) do if name then if lld.line_length > 850 then w('\n' .. vimfun_start) @@ -122,7 +124,6 @@ for name, def in pairs(eval.funcs) do w(' ' .. name) end end -eval_fd:close() w('\n') syn_fd:close() |