From ca187c838606a5cb15b7636f798511e8b5c50bea Mon Sep 17 00:00:00 2001 From: William Villeneuve Date: Mon, 29 Apr 2024 04:41:48 -0400 Subject: [PATCH] Allow users to configure ESLint's `rulesCustomizations` settings (#11135) https://github.com/zed-industries/zed/assets/2072378/18f0bb28-0546-4234-a11f-39af6c9fcc12 `rulesCustomizations` is an array of rule severity overrides. Globs can be used to apply default severities for multiple rules. See [docs](https://github.com/microsoft/vscode-eslint/blob/553e632fb4cf073fce1549fb6c3c1b5140a52ebb/README.md?plain=1#L312-L333) & [type definitions](https://github.com/microsoft/vscode-eslint/blob/553e632fb4cf073fce1549fb6c3c1b5140a52ebb/%24shared/settings.ts#L168) Example Zed `settings.json` to override all eslint errors to warnings: ```jsonc { "lsp": { "eslint": { "settings": { "rulesCustomizations": [ // set all eslint errors/warnings to show as warnings { "rule": "*", "severity": "warn" } ] } } } } ``` Release Notes: - Added support for configuring ESLint's `rulesCustomizations` settings, ie. `{"lsp": {"eslint": {"settings": {"rulesCustomizations": [{"rule": "*", "severity": "warn"}]}}}}` --- crates/languages/src/typescript.rs | 7 ++++++- docs/src/languages/javascript.md | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/crates/languages/src/typescript.rs b/crates/languages/src/typescript.rs index 13ff23f26d..7a538dba13 100644 --- a/crates/languages/src/typescript.rs +++ b/crates/languages/src/typescript.rs @@ -286,6 +286,11 @@ impl LspAdapter for EsLintLspAdapter { .cloned() .unwrap_or_else(|| json!({})); + let rules_customizations = eslint_user_settings + .get("rulesCustomizations") + .cloned() + .unwrap_or_else(|| json!([])); + let node_path = eslint_user_settings.get("nodePath").unwrap_or(&Value::Null); let use_flat_config = Self::FLAT_CONFIG_FILE_NAMES .iter() @@ -294,7 +299,7 @@ impl LspAdapter for EsLintLspAdapter { Ok(json!({ "": { "validate": "on", - "rulesCustomizations": [], + "rulesCustomizations": rules_customizations, "run": "onType", "nodePath": node_path, "workingDirectory": {"mode": "auto"}, diff --git a/docs/src/languages/javascript.md b/docs/src/languages/javascript.md index 9ddd277640..fc57833565 100644 --- a/docs/src/languages/javascript.md +++ b/docs/src/languages/javascript.md @@ -121,3 +121,22 @@ For example, here's how to set `problems.shortenToSingleLine`: } } ``` + +#### Configure ESLint's `rulesCustomizations`: + +You can configure ESLint's `rulesCustomizations` setting: + +```json +{ + "lsp": { + "eslint": { + "settings": { + "rulesCustomizations": [ + // set all eslint errors/warnings to show as warnings + { "rule": "*", "severity": "warn" } + ] + } + } + } +} +```