summaryrefslogtreecommitdiffstatshomepage
path: root/runtime/lua/tohtml.lua
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2025-06-05 11:31:51 +0100
committerLewis Russell <me@lewisr.dev>2025-06-06 15:36:48 +0100
commit3b6084ddf4f0d49fb0e5d135919c9daacea2a46d (patch)
treec46454da48ec05e345c953f4e172e52dff8bef52 /runtime/lua/tohtml.lua
parent4c333fdbb7bee299f36624b429f5c065470e421d (diff)
fix: type fixes
Type fixes caught by emmylua
Diffstat (limited to 'runtime/lua/tohtml.lua')
-rw-r--r--runtime/lua/tohtml.lua78
1 files changed, 39 insertions, 39 deletions
diff --git a/runtime/lua/tohtml.lua b/runtime/lua/tohtml.lua
index 80892f5c60..019fab6286 100644
--- a/runtime/lua/tohtml.lua
+++ b/runtime/lua/tohtml.lua
@@ -48,7 +48,7 @@
--- @class (private) vim.tohtml.line
--- @field virt_lines {[integer]:[string,integer][]}
---- @field pre_text string[][]
+--- @field pre_text [string, integer?][]
--- @field hide? boolean
--- @field [integer] vim.tohtml.cell? (integer: (1-index, exclusive))
@@ -229,7 +229,7 @@ local function cterm_to_hex(colorstr)
return colorstr
end
assert(colorstr ~= '')
- local color = tonumber(colorstr)
+ local color = tonumber(colorstr) --[[@as integer]]
assert(color and 0 <= color and color <= 255)
if cterm_color_cache[color] then
return cterm_color_cache[color]
@@ -398,7 +398,7 @@ end
local function styletable_syntax(state)
for row = state.start, state.end_ do
local prev_id = 0
- local prev_col = nil
+ local prev_col --- @type integer?
for col = 1, #vim.fn.getline(row) + 1 do
local hlid = vim.fn.synID(row, col, 1)
hlid = hlid == 0 and 0 or assert(register_hl(state, hlid))
@@ -430,7 +430,7 @@ local function styletable_diff(state)
break
end
local prev_id = 0
- local prev_col = nil
+ local prev_col --- @type integer?
for col = 1, #vim.fn.getline(row) do
local hlid = vim.fn.diff_hlID(row, col)
hlid = hlid == 0 and 0 or assert(register_hl(state, hlid))
@@ -486,7 +486,7 @@ local function styletable_treesitter(state)
end
--- @param state vim.tohtml.state
---- @param extmark [integer, integer, integer, vim.api.keyset.set_extmark|any]
+--- @param extmark [integer, integer, integer, vim.api.keyset.extmark_details]
--- @param namespaces table<integer,string>
local function _styletable_extmarks_highlight(state, extmark, namespaces)
if not extmark[4].hl_group then
@@ -548,7 +548,7 @@ local function _styletable_extmarks_virt_text(state, extmark, namespaces)
else
style_line_insert_virt_text(styletable[row + 1], col + 1, { i[1], hlid })
end
- virt_text_len = virt_text_len + len(i[1])
+ virt_text_len = virt_text_len + len(assert(i[1]))
end
if extmark[4].virt_text_pos == 'overlay' then
styletable_insert_range(state, row + 1, col + 1, row + 1, col + virt_text_len + 1, HIDE_ID)
@@ -588,7 +588,7 @@ local function _styletable_extmarks_virt_lines(state, extmark)
end
--- @param state vim.tohtml.state
---- @param extmark [integer, integer, integer, vim.api.keyset.set_extmark|any]
+--- @param extmark [integer, integer, integer, vim.api.keyset.extmark_details]
local function _styletable_extmarks_conceal(state, extmark)
if not extmark[4].conceal or state.opt.conceallevel == 0 then
return
@@ -611,6 +611,8 @@ local function styletable_extmarks(state)
--TODO(altermo) extmarks may have col/row which is outside of the buffer, which could cause an error
local bufnr = state.bufnr
local extmarks = vim.api.nvim_buf_get_extmarks(bufnr, -1, 0, -1, { details = true })
+ --- @cast extmarks [integer,integer,integer,vim.api.keyset.extmark_details][]
+
local namespaces = {} --- @type table<integer, string>
for ns, ns_id in pairs(vim.api.nvim_get_namespaces()) do
namespaces[ns_id] = ns
@@ -662,12 +664,12 @@ local function styletable_conceal(state)
for col = 1, line_len_exclusive do
--- @type integer,string,integer
local is_concealed, conceal, hlid = unpack(vim.fn.synconcealed(row, col) --[[@as table]])
- if is_concealed == 0 then
- assert(true)
- elseif not conceals[hlid] then
- conceals[hlid] = { col, math.min(col + 1, line_len_exclusive), conceal }
- else
- conceals[hlid][2] = math.min(col + 1, line_len_exclusive)
+ if is_concealed ~= 0 then
+ if not conceals[hlid] then
+ conceals[hlid] = { col, math.min(col + 1, line_len_exclusive), conceal }
+ else
+ conceals[hlid][2] = math.min(col + 1, line_len_exclusive)
+ end
end
end
for _, v in pairs(conceals) do
@@ -679,9 +681,7 @@ end
--- @param state vim.tohtml.state
local function styletable_match(state)
- for _, match in
- ipairs(vim.fn.getmatches(state.winid) --[[@as (table[])]])
- do
+ for _, match in ipairs(vim.fn.getmatches(state.winid)) do
local hlid = register_hl(state, match.group)
local function range(srow, scol, erow, ecol)
if match.group == 'Conceal' and state.opt.conceallevel ~= 0 then
@@ -692,19 +692,19 @@ local function styletable_match(state)
end
if match.pos1 then
for key, v in
- pairs(match --[[@as (table<string,integer[]>)]])
+ pairs(match --[[@as table<string,[integer,integer,integer]>]])
do
- if not key:match('^pos(%d+)$') then
- assert(true)
- elseif #v == 1 then
- range(v[1], 1, v[1], #vim.fn.getline(v[1]) + 1)
- else
- range(v[1], v[2], v[1], v[3] + v[2])
+ if key:match('^pos(%d+)$') then
+ if #v == 1 then
+ range(v[1], 1, v[1], #vim.fn.getline(v[1]) + 1)
+ else
+ range(v[1], v[2], v[1], v[3] + v[2])
+ end
end
end
else
for _, v in
- ipairs(vim.fn.matchbufline(state.bufnr, match.pattern, 1, '$') --[[@as (table[])]])
+ ipairs(vim.fn.matchbufline(state.bufnr, assert(match.pattern), 1, '$') --[[@as (table[])]])
do
range(v.lnum, v.byteidx + 1, v.lnum, v.byteidx + 1 + #v.text)
end
@@ -744,13 +744,15 @@ local function styletable_statuscolumn(state)
signcolumn = 'auto'
end
if signcolumn ~= 'no' then
- local max = tonumber(signcolumn:match('^%w-:(%d)')) or 1
+ local max = tonumber(signcolumn:match('^%w-:(%d)')) --[[@as integer?]]
+ or 1
if signcolumn:match('^auto') then
--- @type table<integer,integer>
local signcount = {}
for _, extmark in
ipairs(vim.api.nvim_buf_get_extmarks(state.bufnr, -1, 0, -1, { details = true }))
do
+ --- @cast extmark [integer, integer, integer, vim.api.keyset.extmark_details]
if extmark[4].sign_text then
signcount[extmark[2]] = (signcount[extmark[2]] or 0) + 1
end
@@ -770,7 +772,8 @@ local function styletable_statuscolumn(state)
local foldcolumn = state.opt.foldcolumn
if foldcolumn ~= '0' then
if foldcolumn:match('^auto') then
- local max = tonumber(foldcolumn:match('^%w-:(%d)')) or 1
+ local max = tonumber(foldcolumn:match('^%w-:(%d)')) --[[@as integer?]]
+ or 1
local maxfold = 0
vim._with({ buf = state.bufnr }, function()
for row = state.start, state.end_ do
@@ -782,11 +785,11 @@ local function styletable_statuscolumn(state)
end)
minwidth = minwidth + math.min(maxfold, max)
else
- minwidth = minwidth + tonumber(foldcolumn)
+ minwidth = minwidth + tonumber(foldcolumn) --[[@as integer]]
end
end
- --- @type table<integer,any>
+ --- @type table<integer,vim.api.keyset.eval_statusline_ret>
local statuses = {}
for row = state.start, state.end_ do
local status = vim.api.nvim_eval_statusline(
@@ -798,15 +801,13 @@ local function styletable_statuscolumn(state)
minwidth = width
end
table.insert(statuses, status)
- --- @type string
end
for row, status in pairs(statuses) do
- --- @type string
local str = status.str
- --- @type table[]
local hls = status.highlights
for k, v in ipairs(hls) do
- local text = str:sub(v.start + 1, hls[k + 1] and hls[k + 1].start or nil)
+ local hlsk1 = hls[k + 1]
+ local text = str:sub(v.start + 1, hlsk1 and hlsk1.start or nil)
if k == #hls then
text = text .. (' '):rep(minwidth - len(str))
end
@@ -852,11 +853,9 @@ local function styletable_listchars(state)
for _, match in
ipairs(vim.fn.matchbufline(state.bufnr, '\t', 1, '$') --[[@as (table[])]])
do
- --- @type integer
- local tablen = #state.tabstop
- - ((vim.fn.virtcol({ match.lnum, match.byteidx }, false, state.winid)) % #state.tabstop)
- --- @type string?
- local text
+ local vcol = vim.fn.virtcol({ match.lnum, match.byteidx }, false, state.winid) --[[@as integer]]
+ local tablen = #state.tabstop - (vcol % #state.tabstop)
+ local text --- @type string
if len(listchars.tab) == 3 then
if tablen == 1 then
text = utf8_sub(listchars.tab, 3, 3)
@@ -1142,6 +1141,7 @@ local function extend_pre(out, state)
local before = ''
local after = ''
+ --- @param row integer
local function loop(row)
local inside = row <= state.end_ and row >= state.start
local style_line = styletable[row]
@@ -1168,7 +1168,7 @@ local function extend_pre(out, state)
pairs(style_line --[[@as table<string,any>]])
do
if type(k) == 'number' and k > true_line_len then
- true_line_len = k
+ true_line_len = k --[[@as integer]]
end
end
for col = 1, true_line_len do
@@ -1305,7 +1305,7 @@ local function opt_to_global_state(opt, title)
-- Input: "Font,Escape\,comma, Ignore space after comma"
-- Output: { "Font","Escape,comma","Ignore space after comma" }
local prev = ''
- for name in vim.gsplit(vim.o.guifont:match('^[^:]+'), ',', { trimempty = true }) do
+ for name in vim.gsplit(assert(vim.o.guifont:match('^[^:]+')), ',', { trimempty = true }) do
if vim.endswith(name, '\\') then
prev = prev .. vim.trim(name:sub(1, -2) .. ',')
elseif vim.trim(name) ~= '' then