diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-06-04 14:54:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-04 14:54:44 +0200 |
commit | 3adb8a10b157bc5c20ab1bdcbaa6f6aa9e36a5fc (patch) | |
tree | 471fa95580c6597a6bc1f922f9c401744e49de73 /src/nvim/generators/gen_api_dispatch.lua | |
parent | db415bde5f1e366fea09ad572cf37a84894d61d4 (diff) | |
parent | f5c56f03bb9ee25c3d931034497dc76a5591b770 (diff) | |
download | rneovim-3adb8a10b157bc5c20ab1bdcbaa6f6aa9e36a5fc.tar.gz rneovim-3adb8a10b157bc5c20ab1bdcbaa6f6aa9e36a5fc.tar.bz2 rneovim-3adb8a10b157bc5c20ab1bdcbaa6f6aa9e36a5fc.zip |
Merge pull request #9170 from bfredl/lua_cb
lua callbacks for nvim_buf_attach
Diffstat (limited to 'src/nvim/generators/gen_api_dispatch.lua')
-rw-r--r-- | src/nvim/generators/gen_api_dispatch.lua | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nvim/generators/gen_api_dispatch.lua b/src/nvim/generators/gen_api_dispatch.lua index 3703b76973..f52d05a4a5 100644 --- a/src/nvim/generators/gen_api_dispatch.lua +++ b/src/nvim/generators/gen_api_dispatch.lua @@ -135,7 +135,7 @@ for i,f in ipairs(shallowcopy(functions)) do end -- don't expose internal attributes like "impl_name" in public metadata -exported_attributes = {'name', 'parameters', 'return_type', 'method', +exported_attributes = {'name', 'return_type', 'method', 'since', 'deprecated_since'} exported_functions = {} for _,f in ipairs(functions) do @@ -144,6 +144,13 @@ for _,f in ipairs(functions) do for _,attr in ipairs(exported_attributes) do f_exported[attr] = f[attr] end + f_exported.parameters = {} + for i,param in ipairs(f.parameters) do + if param[1] == "DictionaryOf(LuaRef)" then + param = {"Dictionary", param[2]} + end + f_exported.parameters[i] = param + end exported_functions[#exported_functions+1] = f_exported end end @@ -371,14 +378,18 @@ local function process_function(fn) param = fn.parameters[j] cparam = string.format('arg%u', j) param_type = real_type(param[1]) - lc_param_type = param_type:lower() + lc_param_type = real_type(param[1]):lower() + extra = ((param_type == "Object" or param_type == "Dictionary") and "false, ") or "" + if param[1] == "DictionaryOf(LuaRef)" then + extra = "true, " + end write_shifted_output(output, string.format([[ - const %s %s = nlua_pop_%s(lstate, &err); + const %s %s = nlua_pop_%s(lstate, %s&err); if (ERROR_SET(&err)) { goto exit_%u; } - ]], param[1], cparam, param_type, #fn.parameters - j)) + ]], param[1], cparam, param_type, extra, #fn.parameters - j)) free_code[#free_code + 1] = ('api_free_%s(%s);'):format( lc_param_type, cparam) cparams = cparam .. ', ' .. cparams |