diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-08-01 14:20:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-01 14:20:44 +0100 |
commit | 48d533272e57e91e4d14c93b26d4922957f40cd7 (patch) | |
tree | 9958147e5e1cbc0f880a9d240c4ee02e39614747 /src | |
parent | e55e80d51ca5d85770981bffb9254badc3662e0c (diff) | |
download | rneovim-48d533272e57e91e4d14c93b26d4922957f40cd7.tar.gz rneovim-48d533272e57e91e4d14c93b26d4922957f40cd7.tar.bz2 rneovim-48d533272e57e91e4d14c93b26d4922957f40cd7.zip |
feat(lua-types): types for vim.api.* (#24523)
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/nvim/eval.lua | 3 | ||||
-rw-r--r-- | src/nvim/generators/gen_api_dispatch.lua | 14 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index e538e2e447..5346e8e1b8 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -857,4 +857,6 @@ add_custom_target(generated-sources DEPENDS ${NVIM_GENERATED_SOURCES} ) +add_custom_target(api-metadata DEPENDS ${API_METADATA}) + add_subdirectory(po) diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index 9acfa0984a..37b2fcdaea 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -16,9 +16,10 @@ --- @field fast? boolean Function can run in |api-fast| events. Defaults to false. --- @field deprecated? true --- @field returns? string|false +--- @field returns_desc? string --- @field signature string --- @field desc? string ---- @field params {[1]:string, [2]:string}[] +--- @field params {[1]:string, [2]:string, [3]:string}[] --- @field lua? false Do not render type information --- @field tags? string[] Extra tags --- @field data? string Used by gen_eval.lua diff --git a/src/nvim/generators/gen_api_dispatch.lua b/src/nvim/generators/gen_api_dispatch.lua index bf211f5273..1b0565d9b6 100644 --- a/src/nvim/generators/gen_api_dispatch.lua +++ b/src/nvim/generators/gen_api_dispatch.lua @@ -71,7 +71,7 @@ local function add_keyset(val) if field.type ~= 'Object' then error 'not yet implemented: types other than Object' end - table.insert(keys, field.name) + table.insert(keys, {field.name, field.type}) end table.insert(keysets, {val.keyset_name, keys}) end @@ -242,13 +242,16 @@ for _,keyset in ipairs(keysets) do return key end + local key_names = {} for i = 1,#keys do - if vim.endswith(keys[i], "_") then - keys[i] = string.sub(keys[i],1, #(keys[i]) - 1) - special[keys[i]] = true + local kname = keys[i][1] + if vim.endswith(kname, "_") then + kname = string.sub(kname,1, #kname - 1) + special[kname] = true end + key_names[i] = kname end - local neworder, hashfun = hashy.hashy_hash(name, keys, function (idx) + local neworder, hashfun = hashy.hashy_hash(name, key_names, function (idx) return name.."_table["..idx.."].str" end) @@ -502,6 +505,7 @@ output:write(hashfun) output:close() +functions.keysets = keysets local mpack_output = io.open(mpack_outputf, 'wb') mpack_output:write(mpack.encode(functions)) mpack_output:close() |