mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-03 15:15:33 +00:00
Use default settings if initialization options is empty or not provided (#11566)
## Summary This PR fixes the bug to avoid flattening the global-only settings for the new server. This was added in https://github.com/astral-sh/ruff/pull/11497, possibly to correctly de-serialize an empty value (`{}`). But, this lead to a bug where the configuration under the `settings` key was not being read for global-only variant. By using #[serde(default)], we ensure that the settings field in the `GlobalOnly` variant is optional and that an empty JSON object `{}` is correctly deserialized into `GlobalOnly` with a default `ClientSettings` instance. fixes: #11507 ## Test Plan Update the snapshot and existing test case. Also, verify the following settings in Neovim: 1. Nothing ```lua ruff = { cmd = { '/Users/dhruv/work/astral/ruff/target/debug/ruff', 'server', '--preview', }, } ``` 2. Empty dictionary ```lua ruff = { cmd = { '/Users/dhruv/work/astral/ruff/target/debug/ruff', 'server', '--preview', }, init_options = vim.empty_dict(), } ``` 3. Empty `settings` ```lua ruff = { cmd = { '/Users/dhruv/work/astral/ruff/target/debug/ruff', 'server', '--preview', }, init_options = { settings = vim.empty_dict(), }, } ``` 4. With some configuration: ```lua ruff = { cmd = { '/Users/dhruv/work/astral/ruff/target/debug/ruff', 'server', '--preview', }, init_options = { settings = { configuration = '/tmp/ruff-repro/pyproject.toml', }, }, } ```
This commit is contained in:
parent
246a3388ee
commit
37ad994318
2 changed files with 16 additions and 14 deletions
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"settings": {
|
||||||
"codeAction": {
|
"codeAction": {
|
||||||
"disableRuleComment": {
|
"disableRuleComment": {
|
||||||
"enable": false
|
"enable": false
|
||||||
|
@ -13,3 +14,4 @@
|
||||||
"lineLength": 80,
|
"lineLength": 80,
|
||||||
"exclude": ["third_party"]
|
"exclude": ["third_party"]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -130,7 +130,7 @@ enum InitializationOptions {
|
||||||
workspace_settings: Vec<WorkspaceSettings>,
|
workspace_settings: Vec<WorkspaceSettings>,
|
||||||
},
|
},
|
||||||
GlobalOnly {
|
GlobalOnly {
|
||||||
#[serde(flatten)]
|
#[serde(default)]
|
||||||
settings: ClientSettings,
|
settings: ClientSettings,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue