@@ -74,6 +74,45 @@ M.current_filter = function(config, node, state)
7474 }
7575end
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+
77116M .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