aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-08-01 14:20:44 +0100
committerGitHub <noreply@github.com>2023-08-01 14:20:44 +0100
commit48d533272e57e91e4d14c93b26d4922957f40cd7 (patch)
tree9958147e5e1cbc0f880a9d240c4ee02e39614747 /src
parente55e80d51ca5d85770981bffb9254badc3662e0c (diff)
downloadrneovim-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.txt2
-rw-r--r--src/nvim/eval.lua3
-rw-r--r--src/nvim/generators/gen_api_dispatch.lua14
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()