-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce common Ruff configuration options to extension settings #456
Conversation
Could you please share a print screen how the settings are rendered in VS code? What happens if you add settings to |
…ntation links, scope new settings to 'resource', remove getLineLength functions
Thanks for the screenshot. Can we influence the ordering of the settings? E.g., I'm surprised that
Yeah, that's not ideal. Maybe the documentation should mention that they either need to reset the configuration or manually edit the JSON. However, I think that's fine for now. We can still change the field type to Having to click Add Item for each rule is a bit annoying but I guess users can navigate to the JSON editor themselves. So I think that UX is good. |
…ect configuration (#11062) ## Summary This is a follow-up to #10984 that implements configuration resolution for editor configuration. By 'editor configuration', I'm referring to the client settings that correspond to Ruff configuration/options, like `preview`, `select`, and so on. These will be combined with 'project configuration' (configuration taken from project files such as `pyproject.toml`) to generate the final linter and formatter settings used by `RuffSettings`. Editor configuration takes priority over project configuration. In a follow-up pull request, I'll implement a new client setting that allows project configuration to override editor configuration, as per [this issue](astral-sh/ruff-vscode#425). ## Review guide The first commit, e38966d, is just doing re-arrangement so that we can pass the right things to `RuffSettings::resolve`. The actual resolution logic is in the second commit, 0eec9ee. It might help to look at these comments individually since the diff is rather messy. ## Test Plan For the settings to show up in VS Code, you'll need to checkout this branch: astral-sh/ruff-vscode#456. To test that the resolution for a specific setting works as expected, run through the following scenarios, setting it in project and editor configuration as needed: | Set in project configuration? | Set in editor configuration? | Expected Outcome | |-------------------------------|--------------------------------------------------|------------------------------------------------------------------------------------------| | No | No | The editor should behave as if the setting was set to its default value. | | Yes | No | The editor should behave as if the setting was set to the value in project configuration. | | No | Yes | The editor should behave as if the setting was set to the value in editor configuration. | | Yes | Yes (but distinctive from project configuration) | The editor should behave as if the setting was set to the value in editor configuration. | An exception to this is `extendSelect`, which does not have an analog in TOML configuration. Instead, you should verify that `extendSelect` amends the `select` setting. If `select` is set in both editor and project configuration, `extendSelect` will only append to the `select` value in editor configuration, so make sure to un-set it there if you're testing `extendSelect` with `select` in project configuration.
I thought this wasn't possible but it looks like this was recently added as a feature. 😄 I'll add ordering in a follow-up. |
## Summary This is a follow-up to astral-sh/ruff#10984, which implemented support for common Ruff configuration options in client settings. This PR exposes these new settings in the extension configuration. These settings are different from other extension settings, because they don't have default values. Instead, if the user does not set them, they will be sent as `null`, and the server will use project configuration instead. At the moment, `ruff server` does not actually resolve these settings yet - settings resolution is introduced in astral-sh/ruff#11062, which means that you'll need to work from that branch to test this PR (and vice-versa). ## Test Plan See the test plan in astral-sh/ruff#11062.
) ## Summary Fixes #425 (though only in the pre-release version, since this is a feature for the new LSP server) This is a follow-up to #456. A new setting has been introduced, `Prioritize File Configuration`, which tells the extension to prioritize settings from discovered TOML files over extension settings. Extension settings will still be used when a set field in the extension is not set in the file configuration. ## Test Plan Refer to astral-sh/ruff#11086 for a test plan.
) ## Summary Fixes #425 (though only in the pre-release version, since this is a feature for the new LSP server) This is a follow-up to #456. A new setting has been introduced, `Prioritize File Configuration`, which tells the extension to prioritize settings from discovered TOML files over extension settings. Extension settings will still be used when a set field in the extension is not set in the file configuration. ## Test Plan Refer to astral-sh/ruff#11086 for a test plan.
Summary
This is a follow-up to astral-sh/ruff#10984, which implemented support for common Ruff configuration options in client settings. This PR exposes these new settings in the extension configuration.
These settings are different from other extension settings, because they don't have default values. Instead, if the user does not set them, they will be sent as
null
, and the server will use project configuration instead.At the moment,
ruff server
does not actually resolve these settings yet - settings resolution is introduced in astral-sh/ruff#11062, which means that you'll need to work from that branch to test this PR (and vice-versa).Test Plan
See the test plan in astral-sh/ruff#11062.