From d1615971a7bb7c5bec1655fb32594258350fca66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Chartier?= Date: Sun, 23 Feb 2025 11:56:41 +0100 Subject: [PATCH] fix: correct strdisplaywidth calculation for signs --- lua/tiny-inline-diagnostic/diagnostic.lua | 8 +++++++- lua/tiny-inline-diagnostic/virtual_text.lua | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lua/tiny-inline-diagnostic/diagnostic.lua b/lua/tiny-inline-diagnostic/diagnostic.lua index 0f79c61..817d724 100644 --- a/lua/tiny-inline-diagnostic/diagnostic.lua +++ b/lua/tiny-inline-diagnostic/diagnostic.lua @@ -150,7 +150,6 @@ local function apply_virtual_texts(opts, event) local filtered_diags = filter_diagnostics(opts, event, diagnostics) local cursor_line = vim.api.nvim_win_get_cursor(0)[1] - 1 local visible_diags = get_visible_diagnostics(filtered_diags) - local signs_offset = vim.fn.strdisplaywidth(opts.signs.left) + vim.fn.strdisplaywidth(opts.signs.arrow) -- Clear existing extmarks extmarks.clear(event.buf) @@ -189,6 +188,13 @@ local function apply_virtual_texts(opts, event) local offset = data.offset local need_to_be_under = data.need_to_be_under local diagnostic_pos = data.diagnostic_pos + local signs_offset = 0 + + if need_to_be_under then + signs_offset = vim.fn.strdisplaywidth(opts.signs.left) + else + signs_offset = vim.fn.strdisplaywidth(opts.signs.left) + vim.fn.strdisplaywidth(opts.signs.arrow) + end extmarks.create_extmarks( opts, diff --git a/lua/tiny-inline-diagnostic/virtual_text.lua b/lua/tiny-inline-diagnostic/virtual_text.lua index 5306172..e458041 100644 --- a/lua/tiny-inline-diagnostic/virtual_text.lua +++ b/lua/tiny-inline-diagnostic/virtual_text.lua @@ -49,7 +49,7 @@ local function build_first_chunk(opts, chunk_info, message, hl, index_diag, tota if index_diag == 1 then local cursor_line = vim.api.nvim_win_get_cursor(0)[1] - 1 - local chunk_arrow = chunk_utils.get_arrow_from_chunk(opts, cursor_line, chunk_info, hl.diag_hi) + local chunk_arrow = chunk_utils.get_arrow_from_chunk(opts, cursor_line, chunk_info, hl.diag_inv_hi) if type(chunk_arrow[1]) == "table" then return { chunk_arrow, chunk_header }