diff options
author | Lewis Russell <lewis6991@gmail.com> | 2024-01-26 11:38:19 +0000 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2024-01-26 15:07:25 +0000 |
commit | 28d1640dd6043f25cd3ae761dc9c4c8d374a8ce1 (patch) | |
tree | 50c105644611d7ef83eaf10c108dd463fc254302 /scripts/gen_eval_files.lua | |
parent | 65b1fd00a7aa9d88542a1daa84c26bc56962278f (diff) | |
download | rneovim-28d1640dd6043f25cd3ae761dc9c4c8d374a8ce1.tar.gz rneovim-28d1640dd6043f25cd3ae761dc9c4c8d374a8ce1.tar.bz2 rneovim-28d1640dd6043f25cd3ae761dc9c4c8d374a8ce1.zip |
feat: improve return type annotations for vim.api.*
Diffstat (limited to 'scripts/gen_eval_files.lua')
-rwxr-xr-x | scripts/gen_eval_files.lua | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/scripts/gen_eval_files.lua b/scripts/gen_eval_files.lua index 499c7dc9a7..78fc1c7d4f 100755 --- a/scripts/gen_eval_files.lua +++ b/scripts/gen_eval_files.lua @@ -1,3 +1,5 @@ +#!/usr/bin/env -S nvim -l + -- Generator for various vimdoc and Lua type files local DEP_API_METADATA = 'build/api_metadata.mpack' @@ -17,6 +19,31 @@ local DEP_API_DOC = 'runtime/doc/api.mpack' --- @field remote boolean --- @field since integer +local LUA_API_RETURN_OVERRIDES = { + nvim_buf_get_command = 'table<string,vim.api.keyset.command_info>', + nvim_buf_get_extmark_by_id = 'vim.api.keyset.get_extmark_item', + nvim_buf_get_extmarks = 'vim.api.keyset.get_extmark_item[]', + nvim_buf_get_keymap = 'vim.api.keyset.keymap[]', + nvim_get_autocmds = 'vim.api.keyset.get_autocmds.ret[]', + nvim_get_color_map = 'table<string,integer>', + nvim_get_command = 'table<string,vim.api.keyset.command_info>', + nvim_get_keymap = 'vim.api.keyset.keymap[]', + nvim_get_mark = 'vim.api.keyset.get_mark', + + -- Can also return table<string,vim.api.keyset.hl_info>, however we need to + -- pick one to get some benefit. + -- REVISIT lewrus01 (26/01/24): we can maybe add + -- @overload fun(ns: integer, {}): table<string,vim.api.keyset.hl_info> + nvim_get_hl = 'vim.api.keyset.hl_info', + + nvim_get_mode = 'vim.api.keyset.get_mode', + nvim_get_namespaces = 'table<string,integer>', + nvim_get_option_info = 'vim.api.keyset.get_option_info', + nvim_get_option_info2 = 'vim.api.keyset.get_option_info', + nvim_parse_cmd = 'vim.api.keyset.parse_cmd', + nvim_win_get_config = 'vim.api.keyset.float_config', +} + local LUA_META_HEADER = { '--- @meta _', '-- THIS FILE IS GENERATED', @@ -289,11 +316,9 @@ local function render_api_meta(_f, fun, write) end end if fun.returns ~= '' then - if fun.returns_desc then - write('--- @return ' .. fun.returns .. ' : ' .. fun.returns_desc) - else - write('--- @return ' .. fun.returns) - end + local ret_desc = fun.returns_desc and ' : ' .. fun.returns_desc or '' + local ret = LUA_API_RETURN_OVERRIDES[fun.name] or fun.returns + write('--- @return ' .. ret .. ret_desc) end local param_str = table.concat(param_names, ', ') |