refactor(api): give "hl_group" more accurate _meta type

These can either be number or string in lua, so we can specify this
directly as "number|string".
This commit is contained in:
bfredl 2024-01-22 08:49:45 +01:00
parent 646fdf1073
commit d66ed4ea46
5 changed files with 16 additions and 15 deletions

View File

@ -246,7 +246,7 @@ error('Cannot require a meta file')
--- @field end_line? integer
--- @field end_row? integer
--- @field end_col? integer
--- @field hl_group? integer
--- @field hl_group? number|string
--- @field virt_text? any[]
--- @field virt_text_pos? string
--- @field virt_text_win_col? integer
@ -264,10 +264,10 @@ error('Cannot require a meta file')
--- @field virt_lines_leftcol? boolean
--- @field strict? boolean
--- @field sign_text? string
--- @field sign_hl_group? integer
--- @field number_hl_group? integer
--- @field line_hl_group? integer
--- @field cursorline_hl_group? integer
--- @field sign_hl_group? number|string
--- @field number_hl_group? number|string
--- @field line_hl_group? number|string
--- @field cursorline_hl_group? number|string
--- @field conceal? string
--- @field spell? boolean
--- @field ui_watched? boolean

View File

@ -88,6 +88,7 @@ local API_TYPES = {
LuaRef = 'function',
Dictionary = 'table<string,any>',
Float = 'number',
HLGroupID = 'number|string',
void = '',
}

View File

@ -28,7 +28,7 @@ typedef struct {
Integer end_line;
Integer end_row;
Integer end_col;
Integer hl_group;
HLGroupID hl_group;
Array virt_text;
String virt_text_pos;
Integer virt_text_win_col;
@ -46,10 +46,10 @@ typedef struct {
Boolean virt_lines_leftcol;
Boolean strict;
String sign_text;
Integer sign_hl_group;
Integer number_hl_group;
Integer line_hl_group;
Integer cursorline_hl_group;
HLGroupID sign_hl_group;
HLGroupID number_hl_group;
HLGroupID line_hl_group;
HLGroupID cursorline_hl_group;
String conceal;
Boolean spell;
Boolean ui_watched;

View File

@ -124,6 +124,7 @@ struct key_value_pair {
};
typedef uint64_t OptionalKeys;
typedef Integer HLGroupID;
// this is the prefix of all keysets with optional keys
typedef struct {

View File

@ -72,7 +72,6 @@ local keysets = {}
local function add_keyset(val)
local keys = {}
local types = {}
local hlgroups = {}
local is_set_name = 'is_set__' .. val.keyset_name .. '_'
local has_optional = false
for i, field in ipairs(val.fields) do
@ -81,7 +80,6 @@ local function add_keyset(val)
end
if field.name ~= is_set_name and field.type ~= 'OptionalKeys' then
table.insert(keys, field.name)
hlgroups[field.name] = field.name:find('hl_group') and true or false
else
if i > 1 then
error("'is_set__{type}_' must be first if present")
@ -97,7 +95,6 @@ local function add_keyset(val)
name = val.keyset_name,
keys = keys,
types = types,
hlgroups = hlgroups,
has_optional = has_optional,
})
end
@ -285,7 +282,9 @@ for _, k in ipairs(keysets) do
keysets_defs:write('extern KeySetLink ' .. k.name .. '_table[];\n')
local function typename(type)
if type ~= nil then
if type == 'HLGroupID' then
return 'kObjectTypeInteger'
elseif type ~= nil then
return 'kObjectType' .. type
else
return 'kObjectTypeNil'
@ -311,7 +310,7 @@ for _, k in ipairs(keysets) do
.. ', '
.. ind
.. ', '
.. (k.hlgroups[key] and 'true' or 'false')
.. (k.types[key] == 'HLGroupID' and 'true' or 'false')
.. '},\n'
)
end