Add ability to run ESLint (and other non-primary language server) code actions on format (#8496)
This PR does two things to fix https://github.com/zed-industries/zed/issues/4325: 1. It changes the way `code_actions_on_format` works to send the possibly configured code actions to _all_ (and not just the primary) languages servers. That means configured code actions can now be sent to ESLint, tailwind, ... and other language servers. 2. It enables `codeActionsOnSave` by default for ESLint. That does **not** mean that by default we will run something on save, but only that we enable it for ESLint. Users can then configure their Zed to run the `eslint` code action on format. Example, for JavaScript: ```json { "languages": { "JavaScript": { "code_actions_on_format": { "source.fixAll.eslint": true } }, } } ``` Release Notes: - Added ability to run ESLint fixes when formatting a buffer. Code actions configured in [`code_actions_on_format`](https://zed.dev/docs/configuring-zed#code-actions-on-format) are now being sent to _all_ language servers connected to a buffer, not just the primary one. So if a user now sets `"code_actions_on_format": { "source.fixAll.eslint": true }` in their Zed settings, the `source.fixAll.eslint` code action will be sent to ESLint, which is not a primary language server. Since the formatter (prettier, or external commands, or another language server, ...) still runs, it's important that these code actions and the formatter don't clash. ([#4325](https://github.com/zed-industries/zed/issues/4325)). Demo: https://github.com/zed-industries/zed/assets/1185253/9ef03ad5-1f5c-4d46-b72a-eef611e32f39
This commit is contained in:
parent
2e516261fe
commit
f8959834c4
2 changed files with 31 additions and 20 deletions
|
@ -241,6 +241,11 @@ impl LspAdapter for EsLintLspAdapter {
|
|||
.unwrap_or_else(|| workspace_root.as_os_str()),
|
||||
},
|
||||
"problems": {},
|
||||
"codeActionOnSave": {
|
||||
// We enable this, but without also configuring `code_actions_on_format`
|
||||
// in the Zed configuration, it doesn't have an effect.
|
||||
"enable": true,
|
||||
},
|
||||
"experimental": {
|
||||
"useFlatConfig": workspace_root.join("eslint.config.js").is_file(),
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue