From 701d317ddf6eb049d44931afb5051580e4c2d435 Mon Sep 17 00:00:00 2001 From: Saecki Date: Sat, 15 Jan 2022 10:25:18 +0100 Subject: [PATCH] fix(diagnostic): add option to disable invalid feature diagnostics --- lua/crates/config.lua | 10 ++++++++++ lua/crates/diagnostic.lua | 16 +++++++++------- teal/crates/config.tl | 10 ++++++++++ teal/crates/diagnostic.tl | 20 +++++++++++--------- 4 files changed, 40 insertions(+), 16 deletions(-) diff --git a/lua/crates/config.lua b/lua/crates/config.lua index 4d86f92f..dfc3c682 100644 --- a/lua/crates/config.lua +++ b/lua/crates/config.lua @@ -133,6 +133,7 @@ local M = {Config = {TextConfig = {}, HighlightConfig = {}, DiagnosticConfig = { + local Config = M.Config @@ -207,6 +208,15 @@ entry(M.schema, "date_format", { ]], }) +entry(M.schema, "disable_invalid_feature_diagnostic", { + type = "boolean", + default = false, + description = [[ + This is a temporary solution for: + https://github.com/Saecki/crates.nvim/issues/14 + ]], +}) + entry(M.schema, "text", { type = "section", diff --git a/lua/crates/diagnostic.lua b/lua/crates/diagnostic.lua index c6f969c5..9d49a753 100644 --- a/lua/crates/diagnostic.lua +++ b/lua/crates/diagnostic.lua @@ -294,14 +294,16 @@ function M.process_crate_deps(crate, version, deps) end end - for _, f in ipairs(crate:feats()) do - if not vim.tbl_contains(valid_feats, f.name) then - table.insert(diagnostics, M.feat_diagnostic( - crate, - f, - core.cfg.diagnostic.feat_invalid, - vim.diagnostic.severity.ERROR)) + if not core.cfg.disable_invalid_feature_diagnostic then + for _, f in ipairs(crate:feats()) do + if not vim.tbl_contains(valid_feats, f.name) then + table.insert(diagnostics, M.feat_diagnostic( + crate, + f, + core.cfg.diagnostic.feat_invalid, + vim.diagnostic.severity.ERROR)) + end end end diff --git a/teal/crates/config.tl b/teal/crates/config.tl index 63018fea..e2510477 100644 --- a/teal/crates/config.tl +++ b/teal/crates/config.tl @@ -9,6 +9,7 @@ local record M autoupdate: boolean loading_indicator: boolean date_format: string + disable_invalid_feature_diagnostic: boolean text: TextConfig highlight: HighlightConfig diagnostic: DiagnosticConfig @@ -206,6 +207,15 @@ entry(M.schema, "date_format", { The date format passed to `os.date`. ]], }) +-- TODO: use cargo metadata to get feature renames +entry(M.schema, "disable_invalid_feature_diagnostic", { + type = "boolean", + default = false, + description = [[ + This is a temporary solution for: + https://github.com/Saecki/crates.nvim/issues/14 + ]], +}) entry(M.schema, "text", { diff --git a/teal/crates/diagnostic.tl b/teal/crates/diagnostic.tl index 17cc171b..c0fb5c62 100644 --- a/teal/crates/diagnostic.tl +++ b/teal/crates/diagnostic.tl @@ -293,15 +293,17 @@ function M.process_crate_deps(crate: Crate, version: Version, deps: {Dependency} table.insert(valid_feats, d.name) end end - - for _,f in ipairs(crate:feats()) do - if not vim.tbl_contains(valid_feats, f.name) then - table.insert(diagnostics, M.feat_diagnostic( - crate, - f, - core.cfg.diagnostic.feat_invalid, - vim.diagnostic.severity.ERROR - )) + + if not core.cfg.disable_invalid_feature_diagnostic then + for _,f in ipairs(crate:feats()) do + if not vim.tbl_contains(valid_feats, f.name) then + table.insert(diagnostics, M.feat_diagnostic( + crate, + f, + core.cfg.diagnostic.feat_invalid, + vim.diagnostic.severity.ERROR + )) + end end end