diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2022-01-06 14:51:38 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2022-01-06 14:51:38 +0800 |
commit | 995faa1c62849848a01a4cf7d462e443eb03c061 (patch) | |
tree | 4dc07c95d8b5a29964dae950c2af9973f9d9e87a | |
parent | 8b3350de3d3e197a39b50135cbca0989e00fe32a (diff) | |
download | lua-language-server-995faa1c62849848a01a4cf7d462e443eb03c061.zip |
optimized diagnostic smoothing
-rw-r--r-- | script/provider/diagnostic.lua | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/script/provider/diagnostic.lua b/script/provider/diagnostic.lua index a649ce8b..db967e81 100644 --- a/script/provider/diagnostic.lua +++ b/script/provider/diagnostic.lua @@ -61,6 +61,7 @@ local function buildSyntaxError(uri, err) source = lang.script.DIAG_SYNTAX_CHECK, message = message, relatedInformation = relatedInformation, + data = 'syntax', } end @@ -155,8 +156,9 @@ function m.syntaxErrors(uri, ast) local results = {} pcall(function () + local disables = config.get(uri, 'Lua.diagnostics.disable') for _, err in ipairs(ast.errs) do - if not config.get(uri, 'Lua.diagnostics.disable')[err.type:lower():gsub('_', '-')] then + if not disables[err.type:lower():gsub('_', '-')] then results[#results+1] = buildSyntaxError(uri, err) end end @@ -165,6 +167,19 @@ function m.syntaxErrors(uri, ast) return results end +local function copyDiagsWithoutSyntax(diags) + if not diags then + return nil + end + local copyed = {} + for _, diag in ipairs(diags) do + if diag.data ~= 'syntax' then + copyed[#copyed+1] = diag + end + end + return copyed +end + ---@async function m.doDiagnostic(uri, isScopeDiag) if not config.get(uri, 'Lua.diagnostics.enable') then @@ -208,7 +223,7 @@ function m.doDiagnostic(uri, isScopeDiag) local syntax = m.syntaxErrors(uri, state) local diags = {} - local lastDiag = util.deepCopy(m.cache[uri]) + local lastDiag = copyDiagsWithoutSyntax(m.cache[uri]) local function pushResult() tracy.ZoneBeginN 'mergeSyntaxAndDiags' local _ <close> = tracy.ZoneEnd |