Skip to content

Commit 134c466

Browse files
ofseedwookayin
andauthored
fix: compatibility with 0.10 extmark sign (#1265)
Co-authored-by: Jongwook Choi <wookayin@gmail.com>
1 parent 77d9f48 commit 134c466

File tree

1 file changed

+40
-15
lines changed

1 file changed

+40
-15
lines changed

lua/neo-tree/sources/common/components.lua

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,45 @@ M.current_filter = function(config, node, state)
7474
}
7575
end
7676

77+
---`sign_getdefined` based wrapper with compatibility
78+
---@param severity string
79+
---@return vim.fn.sign_getdefined.ret.item
80+
local function get_defined_sign(severity)
81+
local defined
82+
83+
if vim.fn.has("nvim-0.10") > 0 then
84+
local signs_config = vim.diagnostic.config().signs
85+
if type(signs_config) == "table" then
86+
local identifier = severity:sub(1, 1)
87+
if identifier == "H" then
88+
identifier = "N"
89+
end
90+
defined = {
91+
text = signs_config.text[vim.diagnostic.severity[identifier]],
92+
texthl = "DiagnosticSign" .. severity,
93+
}
94+
end
95+
else -- before 0.10
96+
defined = vim.fn.sign_getdefined("DiagnosticSign" .. severity)
97+
if vim.tbl_isempty(defined) then
98+
-- backwards compatibility...
99+
local old_severity = severity
100+
if severity == "Warning" then
101+
old_severity = "Warn"
102+
elseif severity == "Information" then
103+
old_severity = "Info"
104+
end
105+
defined = vim.fn.sign_getdefined("LspDiagnosticsSign" .. old_severity)
106+
end
107+
defined = defined and defined[1]
108+
end
109+
110+
if type(defined) ~= "table" then
111+
defined = {}
112+
end
113+
return defined
114+
end
115+
77116
M.diagnostics = function(config, node, state)
78117
local diag = state.diagnostics_lookup or {}
79118
local diag_state = diag[node:get_id()]
@@ -87,21 +126,7 @@ M.diagnostics = function(config, node, state)
87126
return {}
88127
end
89128
local severity = diag_state.severity_string
90-
local defined = vim.fn.sign_getdefined("DiagnosticSign" .. severity)
91-
if not defined then
92-
-- backwards compatibility...
93-
local old_severity = severity
94-
if severity == "Warning" then
95-
old_severity = "Warn"
96-
elseif severity == "Information" then
97-
old_severity = "Info"
98-
end
99-
defined = vim.fn.sign_getdefined("LspDiagnosticsSign" .. old_severity)
100-
end
101-
defined = defined and defined[1]
102-
if type(defined) ~= "table" then
103-
defined = {}
104-
end
129+
local defined = get_defined_sign(severity)
105130

106131
-- check for overrides in the component config
107132
local severity_lower = severity:lower()

0 commit comments

Comments
 (0)