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

View File

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

View File

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

View File

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

View File

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