Skip to content

feat(oxlint/lsp): support rulesCustomization lsp option#21858

Merged
graphite-app[bot] merged 1 commit into
mainfrom
04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option
May 5, 2026
Merged

feat(oxlint/lsp): support rulesCustomization lsp option#21858
graphite-app[bot] merged 1 commit into
mainfrom
04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option

Conversation

@Sysix

@Sysix Sysix commented Apr 27, 2026

Copy link
Copy Markdown
Member

Adds support for an LSP workspace option (rulesCustomization) that lets clients customize rule severity and control whether specific rules participate in “fix all” code actions.

related oxc-project/oxc-vscode#22
closes #21538

Sysix commented Apr 27, 2026

Copy link
Copy Markdown
Member Author

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@Sysix Sysix force-pushed the 04-26-e_oxlint_lsp_respect_rulecustomization.autofix_for_fix_all_code_actions branch from 82949ba to 75f2e3b Compare April 28, 2026 19:35
@Sysix Sysix force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch 2 times, most recently from 4f9e2ad to f4443a8 Compare April 29, 2026 18:31
@Sysix Sysix force-pushed the 04-26-e_oxlint_lsp_respect_rulecustomization.autofix_for_fix_all_code_actions branch from 75f2e3b to b5bc74b Compare April 29, 2026 18:31
@Sysix Sysix force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from f4443a8 to 0de7db1 Compare April 29, 2026 21:09
@Sysix Sysix force-pushed the 04-26-e_oxlint_lsp_respect_rulecustomization.autofix_for_fix_all_code_actions branch from b5bc74b to 06ce7f3 Compare April 29, 2026 21:09
@Sysix Sysix requested a review from Copilot April 29, 2026 21:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for an LSP workspace option (rulesCustomization) that lets clients customize rule severity and control whether specific rules participate in “fix all” code actions.

Changes:

  • Document rulesCustomization in the language server README, including the per-rule customization shape.
  • Extend LSP test harness config typing and add a new code action fixture + snapshot verifying fix-all respects per-rule autofix disabling.
  • Enable parsing of rulesCustomization from LSP options in non-test builds.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
crates/oxc_language_server/README.md Documents the new LSP option and its schema (but currently has markdown fence issues).
apps/oxlint/test/lsp/utils.ts Extends test initialization options typing to accept rulesCustomization.
apps/oxlint/test/lsp/code_action/fixtures/rules_customization/test.ts Adds fixture input used to validate fix-all behavior under customization.
apps/oxlint/test/lsp/code_action/code_action.test.ts Adds a new test ensuring source.fixAll.oxc omits fixes when a rule’s autofix is disabled.
apps/oxlint/test/lsp/code_action/snapshots/code_action.test.ts.snap Snapshot for the new code action test case.
apps/oxlint/src/lsp/options.rs Parses rulesCustomization from LSP options in all builds (not just tests).

Comment thread crates/oxc_language_server/README.md
Comment thread crates/oxc_language_server/README.md
Comment thread crates/oxc_language_server/README.md Outdated
Comment thread apps/oxlint/test/lsp/utils.ts
Comment thread apps/oxlint/test/lsp/code_action/code_action.test.ts Outdated
@Sysix Sysix force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from 0de7db1 to bb81fda Compare April 29, 2026 21:51
@Sysix Sysix marked this pull request as ready for review April 29, 2026 21:52
@Sysix Sysix force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from bb81fda to fadc528 Compare May 4, 2026 20:15
@Sysix Sysix force-pushed the 04-26-e_oxlint_lsp_respect_rulecustomization.autofix_for_fix_all_code_actions branch from 06ce7f3 to bcd9cb9 Compare May 4, 2026 20:15
@graphite-app graphite-app Bot force-pushed the 04-26-e_oxlint_lsp_respect_rulecustomization.autofix_for_fix_all_code_actions branch from bcd9cb9 to 41e8c45 Compare May 5, 2026 09:27
@graphite-app graphite-app Bot force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from fadc528 to 39cefb0 Compare May 5, 2026 09:28
@graphite-app graphite-app Bot force-pushed the 04-26-e_oxlint_lsp_respect_rulecustomization.autofix_for_fix_all_code_actions branch 2 times, most recently from d6813a7 to e41293a Compare May 5, 2026 09:43
@graphite-app graphite-app Bot force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from 39cefb0 to 7b14609 Compare May 5, 2026 09:43
@graphite-app graphite-app Bot changed the base branch from 04-26-e_oxlint_lsp_respect_rulecustomization.autofix_for_fix_all_code_actions to graphite-base/21858 May 5, 2026 09:48
@graphite-app graphite-app Bot force-pushed the graphite-base/21858 branch from e41293a to fd9510e Compare May 5, 2026 09:52
@graphite-app graphite-app Bot force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from 7b14609 to 3eebdb6 Compare May 5, 2026 09:52
@graphite-app graphite-app Bot changed the base branch from graphite-base/21858 to main May 5, 2026 09:53
@graphite-app graphite-app Bot force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from 3eebdb6 to 1bd4128 Compare May 5, 2026 09:53

@camc314 camc314 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💪

@camc314 camc314 self-assigned this May 5, 2026
@camc314 camc314 added the 0-merge Merge with Graphite Merge Queue label May 5, 2026

camc314 commented May 5, 2026

Copy link
Copy Markdown
Contributor

Merge activity

@camc314 camc314 added the A-linter Area - Linter label May 5, 2026
> Adds support for an LSP workspace option (`rulesCustomization`) that lets clients customize rule severity and control whether specific rules participate in “fix all” code actions.

related oxc-project/oxc-vscode#22
closes #21538
@graphite-app graphite-app Bot force-pushed the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch from 1bd4128 to 5a4414d Compare May 5, 2026 09:57
@graphite-app graphite-app Bot merged commit 5a4414d into main May 5, 2026
25 checks passed
@graphite-app graphite-app Bot removed the 0-merge Merge with Graphite Merge Queue label May 5, 2026
@graphite-app graphite-app Bot deleted the 04-27-feat_oxlint_lsp_support_rulescustomization_lsp_option branch May 5, 2026 10:01
camc314 added a commit that referenced this pull request May 11, 2026
# Oxlint
### 💥 BREAKING CHANGES

- 00ce512 oxlint/lsp: [**BREAKING**] Don't fix suggestions on fixAll
code actions & command (#22195) (Sysix)

### 🚀 Features

- 0eeceaf linter/no-unused-vars: Rename parameter with initializer
(#22308) (camc314)
- fa0232b linter/no-unused-vars: Add param rename suggestion (#22285)
(Ryota Misumi)
- ae59305 linter/promise/no-promise-in-callback: Add
`exemptDeclarations` option (#22275) (Mikhail Baev)
- 60bed4a linter: Extends `no-redundant-roles` and
`prefer-tag-over-role` support roles (#22069) (mehm8128)
- 545c80f linter/eslint: Implement `prefer-regex-literals` rule (#22192)
(Mikhail Baev)
- cf86d7a linter: Bulk suppression (#19328) (Said Atrahouch)
- 23abd22 linter/jsx-a11y: Implement
no-noninteractive-element-to-interactive-role (#21264) (Pedro Tainha)
- fbb8f22 linter: Support `ignores` in overrides (#22148) (camc314)
- 5a4414d oxlint/lsp: Support `rulesCustomization` lsp option (#21858)
(Sysix)

### 🐛 Bug Fixes

- 610f4c7 linter/no-unused-vars: Avoid renaming captured vars (#22310)
(camc314)
- 6b50f23 oxlint/cli: Load root config by searching up parent
directories (#22272) (Sysix)
- 31a5de7 linter: Rename override `ignores` to `excludeFiles` (#22283)
(camc314)
- 26d5d7b linter: Add missing vitest/valid-describe-callback
functionality (#22279) (camchenry)
- 784530f linter: `valid-title`: detect `String.raw` strings (#22271)
(Sysix)
- 080d90e linter: Move `no-debugger` fix to suggestion (#22256) (Sysix)
- 25b7017 linter: Undocument override `ignores` option (#22213)
(camc314)
- 7bb00dd linter: Fix role-has-required-aria-props (#22097) (mehm8128)
- d25279e linter/disable-directives: Improve parsing of names,
descriptions (#22184) (camc314)
- a59e447 linter/disable-directives: Ignore invalid enable suffixes
(#22179) (camc314)
- aafef0f ci: Disable bulk supression test on big endian (#22175)
(camc314)
- 281daec linter/vue/define-props-destructuring: Add
`only-when-assigned` config opt (#22142) (camc314)
- 46ab679 linter/plugins: Trim leading newline for partial sources
(#20928) (bab)
- 29ff6d9 linter: Update docs for no_alias_methods rule to be
Vitest-specific and add toThrowError alias (#22129) (camchenry)

### ⚡ Performance

- 9414bee linter/role-has-required-aria-props: Avoid intermediate vec
(#22212) (camc314)
- 3883ea3 linter/no-useless-escape: Drop unnecessary Vec collect
(#22171) (connorshea)
- 42c3029 linter/check-property-names: Replace split-collect-pop-join
with rfind (#22172) (connorshea)
- 9551d53 linter: Remove unnecessary Vec collect in CFG edge traversal
(#22167) (connorshea)
- 26fa2fc linter/aria-role: Remove unnecessary string allocations in run
method (#22168) (connorshea)
- c9ce045 linter/getter-return: Remove unnecessary Vec collect in CFG
edge traversal (#22166) (connorshea)
- 72bd846 linter/no-this-in-sfc: Reorder cheap name check, avoid String
allocation (#22164) (connorshea)

### 📚 Documentation

- 4da212a linter/no-unused-vars: Add docs to
`rename_unused_function_parameter` (#22311) (camc314)
- 27c4628 linter/forbid-dom-props: Escape jsx examples in lint rule docs
(#22254) (4MBL)
- 3f81147 linter: Improve the `react/jsx-key` rule docs. (#22162)
(connorshea)
- 07f03cc linter/consistent-return: Add note about `noImplicitReturns`
coverage (#22156) (camc314)
- 7c1e049 oxlint/lsp: Improve autogenerated lsp docs (#22154) (Sysix)
- 87b3e38 linter: Update docs to be vitest-specific for
consistent-test-it (#22128) (camchenry)
# Oxfmt
### 💥 BREAKING CHANGES

- 5c6c390 oxfmt: [**BREAKING**] Respect more git ignore options, align
with Oxlint (#22210) (leaysgur)

### 🚀 Features

- 6e8e818 oxfmt: Experimental .svelte support (#21700) (leaysgur)

### 🐛 Bug Fixes

- e2a20b6 formatter: Add space after commas in import attributes
(#22274) (Leonabcd123)

### ⚡ Performance

- b756682 oxfmt: Optimize nested config prescan (#22232) (Jovi De
Croock)
- f14e81e formatter/sort_imports: Skip sort for single import runs
(#22204) (leaysgur)
- 32255b1 formatter: Process `ImportDeclaration`s in a run (#22079)
(overlookmotel)

### 📚 Documentation

- 4da6f4c formatter: Correct comment (#22217) (overlookmotel)
- ef3507d formatter/sort_imports: Refresh docs (#22203) (leaysgur)

Co-authored-by: Cameron <cameron.clark@hey.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-linter Area - Linter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

linter: Allow filtering rules that are applied on save by name

3 participants