Skip to content
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

ruff server: Introduce settings for directly configuring the linter and formatter #10984

Merged
merged 8 commits into from
Apr 18, 2024

Conversation

snowsignal
Copy link
Contributor

@snowsignal snowsignal commented Apr 16, 2024

Summary

The following client settings have been introduced to the language server:

  • lint.preview
  • format.preview
  • lint.select
  • lint.extendSelect
  • lint.ignore
  • exclude
  • lineLength

exclude and lineLength apply to both the linter and formatter.

This does not actually use the settings yet, but makes them available for future use.

Test Plan

Snapshot tests have been updated.

Unverified

The committer email address is not verified.
@snowsignal snowsignal added the server Related to the LSP server label Apr 16, 2024
@snowsignal snowsignal added this to the Ruff Server: Beta milestone Apr 16, 2024

Unverified

The committer email address is not verified.

Unverified

The committer email address is not verified.
Copy link
Contributor

github-actions bot commented Apr 16, 2024

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

Unverified

The committer email address is not verified.

Unverified

The committer email address is not verified.

Unverified

The committer email address is not verified.
… their use cases

Unverified

The committer email address is not verified.
@snowsignal snowsignal enabled auto-merge (squash) April 18, 2024 06:09

Unverified

The committer email address is not verified.
@snowsignal snowsignal merged commit 2cc487e into main Apr 18, 2024
17 checks passed
@snowsignal snowsignal deleted the jane/server/editor-settings branch April 18, 2024 07:53
@charliermarsh
Copy link
Member

Will --config come later, or is it already supported? That was the last piece of the proposal, IIRC -- but may be misremembering.

@snowsignal
Copy link
Contributor Author

@charliermarsh That will come later! I'll be working on that next week.

snowsignal added a commit that referenced this pull request Apr 23, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…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.
snowsignal added a commit to astral-sh/ruff-vscode that referenced this pull request Apr 25, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
## 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.
snowsignal added a commit to astral-sh/ruff-vscode that referenced this pull request May 13, 2024

Unverified

The committer email address is not verified.
## 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
server Related to the LSP server
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants