aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/tohtml.lua
diff options
context:
space:
mode:
authorRiley Bruins <ribru17@hotmail.com>2024-08-29 09:36:33 -0700
committerGitHub <noreply@github.com>2024-08-29 09:36:33 -0700
commit59baa5e8a1f9e71b82f28c2723ccc558370b6fc0 (patch)
treeb7f5599f50c48baab698bea9a059ee7030fe00bb /runtime/lua/tohtml.lua
parent7588ff2d8986e343d440dc8e025b1b5d4d8974b5 (diff)
downloadrneovim-59baa5e8a1f9e71b82f28c2723ccc558370b6fc0.tar.gz
rneovim-59baa5e8a1f9e71b82f28c2723ccc558370b6fc0.tar.bz2
rneovim-59baa5e8a1f9e71b82f28c2723ccc558370b6fc0.zip
fix(tohtml): apply sp color if present #30110
Problem: Things like underlines are always given a default foreground highlight regardless of the value of `sp`. Solution: Check for `sp` first, and apply that color to the text decoration color if it exists. Limitations: If there is no value of `sp`, vim applies a text decoration color that matches the foreground of the text. This is still not implemented (and seems like a much more complex problem): in TOhtml, the underline will still be given a default foreground highlight.
Diffstat (limited to 'runtime/lua/tohtml.lua')
-rw-r--r--runtime/lua/tohtml.lua3
1 files changed, 3 insertions, 0 deletions
diff --git a/runtime/lua/tohtml.lua b/runtime/lua/tohtml.lua
index a4b5a741bc..6a5bd6de9d 100644
--- a/runtime/lua/tohtml.lua
+++ b/runtime/lua/tohtml.lua
@@ -1003,6 +1003,7 @@ local function extend_style(out, state)
--TODO(altermo) use local namespace (instead of global 0)
local fg = vim.fn.synIDattr(hlid, 'fg#')
local bg = vim.fn.synIDattr(hlid, 'bg#')
+ local sp = vim.fn.synIDattr(hlid, 'sp#')
local decor_line = {}
if vim.fn.synIDattr(hlid, 'underline') ~= '' then
table.insert(decor_line, 'underline')
@@ -1020,6 +1021,8 @@ local function extend_style(out, state)
['font-weight'] = vim.fn.synIDattr(hlid, 'bold') ~= '' and 'bold' or nil,
['text-decoration-line'] = not vim.tbl_isempty(decor_line) and table.concat(decor_line, ' ')
or nil,
+ -- TODO(ribru17): fallback to displayed text color if sp not set
+ ['text-decoration-color'] = sp ~= '' and cterm_to_hex(sp) or nil,
--TODO(altermo) if strikethrough and undercurl then the strikethrough becomes wavy
['text-decoration-style'] = vim.fn.synIDattr(hlid, 'undercurl') ~= '' and 'wavy' or nil,
}