Expose unfixable as an LSP setting

This commit is contained in:
Charlie Marsh 2024-08-04 22:47:57 -04:00
parent 25aabec814
commit d579767f78
3 changed files with 25 additions and 4 deletions

View File

@ -246,6 +246,7 @@ impl<'a> ConfigurationTransformer for EditorConfigurationTransformer<'a> {
select, select,
extend_select, extend_select,
ignore, ignore,
unfixable,
exclude, exclude,
line_length, line_length,
configuration_preference, configuration_preference,
@ -260,6 +261,7 @@ impl<'a> ConfigurationTransformer for EditorConfigurationTransformer<'a> {
select, select,
extend_select: extend_select.unwrap_or_default(), extend_select: extend_select.unwrap_or_default(),
ignore: ignore.unwrap_or_default(), ignore: ignore.unwrap_or_default(),
unfixable: unfixable.unwrap_or_default(),
..RuleSelection::default() ..RuleSelection::default()
}], }],
..LintConfiguration::default() ..LintConfiguration::default()

View File

@ -37,6 +37,7 @@ pub(crate) struct ResolvedEditorSettings {
pub(super) select: Option<Vec<RuleSelector>>, pub(super) select: Option<Vec<RuleSelector>>,
pub(super) extend_select: Option<Vec<RuleSelector>>, pub(super) extend_select: Option<Vec<RuleSelector>>,
pub(super) ignore: Option<Vec<RuleSelector>>, pub(super) ignore: Option<Vec<RuleSelector>>,
pub(super) unfixable: Option<Vec<RuleSelector>>,
pub(super) exclude: Option<Vec<String>>, pub(super) exclude: Option<Vec<String>>,
pub(super) line_length: Option<LineLength>, pub(super) line_length: Option<LineLength>,
pub(super) configuration_preference: ConfigurationPreference, pub(super) configuration_preference: ConfigurationPreference,
@ -130,6 +131,7 @@ struct LintOptions {
select: Option<Vec<String>>, select: Option<Vec<String>>,
extend_select: Option<Vec<String>>, extend_select: Option<Vec<String>>,
ignore: Option<Vec<String>>, ignore: Option<Vec<String>>,
unfixable: Option<Vec<String>>,
} }
impl LintOptions { impl LintOptions {
@ -348,6 +350,16 @@ impl ResolvedClientSettings {
.map(|rule| RuleSelector::from_str(rule).ok()) .map(|rule| RuleSelector::from_str(rule).ok())
.collect() .collect()
}), }),
unfixable: Self::resolve_optional(all_settings, |settings| {
settings
.lint
.as_ref()?
.unfixable
.as_ref()?
.iter()
.map(|rule| RuleSelector::from_str(rule).ok())
.collect()
}),
exclude: Self::resolve_optional(all_settings, |settings| settings.exclude.clone()), exclude: Self::resolve_optional(all_settings, |settings| settings.exclude.clone()),
line_length: Self::resolve_optional(all_settings, |settings| settings.line_length), line_length: Self::resolve_optional(all_settings, |settings| settings.line_length),
configuration_preference: Self::resolve_or( configuration_preference: Self::resolve_or(
@ -480,6 +492,7 @@ mod tests {
), ),
extend_select: None, extend_select: None,
ignore: None, ignore: None,
unfixable: None,
}, },
), ),
format: Some( format: Some(
@ -535,6 +548,7 @@ mod tests {
select: None, select: None,
extend_select: None, extend_select: None,
ignore: None, ignore: None,
unfixable: None,
}, },
), ),
format: Some( format: Some(
@ -603,6 +617,7 @@ mod tests {
select: None, select: None,
extend_select: None, extend_select: None,
ignore: None, ignore: None,
unfixable: None,
}, },
), ),
format: Some( format: Some(
@ -691,6 +706,7 @@ mod tests {
]), ]),
extend_select: None, extend_select: None,
ignore: None, ignore: None,
unfixable: None,
exclude: None, exclude: None,
line_length: None, line_length: None,
configuration_preference: ConfigurationPreference::default(), configuration_preference: ConfigurationPreference::default(),
@ -723,6 +739,7 @@ mod tests {
]), ]),
extend_select: None, extend_select: None,
ignore: None, ignore: None,
unfixable: None,
exclude: None, exclude: None,
line_length: None, line_length: None,
configuration_preference: ConfigurationPreference::EditorFirst, configuration_preference: ConfigurationPreference::EditorFirst,
@ -754,6 +771,7 @@ mod tests {
"RUF001", "RUF001",
], ],
), ),
unfixable: None,
}, },
), ),
format: None, format: None,
@ -815,6 +833,7 @@ mod tests {
select: None, select: None,
extend_select: None, extend_select: None,
ignore: Some(vec![RuleSelector::from_str("RUF001").unwrap()]), ignore: Some(vec![RuleSelector::from_str("RUF001").unwrap()]),
unfixable: None,
exclude: Some(vec!["third_party".into()]), exclude: Some(vec!["third_party".into()]),
line_length: Some(LineLength::try_from(80).unwrap()), line_length: Some(LineLength::try_from(80).unwrap()),
configuration_preference: ConfigurationPreference::EditorFirst, configuration_preference: ConfigurationPreference::EditorFirst,

View File

@ -497,9 +497,9 @@ Rules to disable by default. See [the documentation](https://docs.astral.sh/ruff
} }
``` ```
### `extendIgnore` ### `unfixable`
Rules to disable in addition to those in [`lint.ignore`](#ignore). Rules for which fixes should be disabled default. See [the documentation](https://docs.astral.sh/ruff/settings/#unfixable).
**Default value**: `null` **Default value**: `null`
@ -510,7 +510,7 @@ Rules to disable in addition to those in [`lint.ignore`](#ignore).
=== "VS Code" === "VS Code"
```json ```json
{ {
"ruff.lint.extendIgnore": ["W1"] "ruff.lint.unfixable": ["F401"]
} }
``` ```
@ -520,7 +520,7 @@ Rules to disable in addition to those in [`lint.ignore`](#ignore).
init_options = { init_options = {
settings = { settings = {
lint = { lint = {
extendIgnore = {"W1"} ignore = {"F401"}
} }
} }
} }