-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Add codeActionsOnSave to docs #3938
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -213,6 +213,58 @@ Organize imports can also be automatically when you save a JavaScript file by se | |
"source.organizeImports": true | ||
} | ||
``` | ||
## Code Actions on Save | ||
|
||
The `editor.codeActionsOnSave` setting lets you configure a set of Code Actions that are run when a file is saved. For example, you can enable organize imports on save by setting: | ||
```json | ||
// On save, run both fixAll and organizeImports source actions | ||
"editor.codeActionsOnSave": { | ||
"source.fixAll": true, | ||
"source.organizeImports": true, | ||
} | ||
``` | ||
You can also enable or disable which Code Actions are run on save per language using a language specific setting: | ||
```json | ||
"[javascript]": { | ||
"editor.codeActionsOnSave": { | ||
"source.organizeImports": true | ||
} | ||
} | ||
``` | ||
Here are some source actions: | ||
|
||
* `"organizeImports"` - Enables organize imports on save. | ||
* `"fixAll"` - Auto Fix on Save computes all possible fixes in one round (for all providers including ESLint). | ||
* `"fixAll.eslint"` - Auto Fix only for ESLint. | ||
* `"addMissingImports"` - Adds all missing imports on save. | ||
|
||
The TSLint extension already uses `source.fixAll` Code Action kind to implement fix all and auto fix on save. | ||
|
||
You can also set `editor.codeActionsOnSave` to an array of Code Actions to execute in order. You can use this to guarantee that a specific Code Action is always run before or after another one that may conflict with it. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If you remove some parts, please make sure, if possible, to keep this one where you explain the reason why one would prefer to choose the array vs. the object syntax (to execute in order) I think this is important to understand... |
||
The following `editor.codeActionsOnSave` will always run Organize Imports followed by Fix All once organize imports finishes: | ||
```json | ||
"editor.codeActionsOnSave": [ | ||
"source.organizeImports", | ||
"source.fixAll" | ||
] | ||
``` | ||
Note: `editor.codeActionsOnSave` supports both object and array configs in settings. | ||
|
||
Examples: | ||
|
||
Selective behaviour for different source actions: | ||
```json | ||
"editor.codeActionsOnSave": { | ||
"source.fixAll": true, | ||
"source.fixAll.eslint": false | ||
} | ||
``` | ||
Add all missing imports on save: | ||
```json | ||
"editor.codeActionsOnSave": [ | ||
"source.addMissingImports" | ||
] | ||
``` | ||
|
||
## Code suggestions | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -245,7 +245,58 @@ Organize imports can also be automatically when you save a TypeScript file by se | |
"source.organizeImports": true | ||
} | ||
``` | ||
## Code Actions on Save | ||
|
||
The `editor.codeActionsOnSave` setting lets you configure a set of Code Actions that are run when a file is saved. For example, you can enable organize imports on save by setting: | ||
```json | ||
// On save, run both fixAll and organizeImports source actions | ||
"editor.codeActionsOnSave": { | ||
"source.fixAll": true, | ||
"source.organizeImports": true, | ||
} | ||
``` | ||
You can also enable or disable which Code Actions are run on save per language using a language specific setting: | ||
```json | ||
"[typescript]": { | ||
"editor.codeActionsOnSave": { | ||
"source.organizeImports": true | ||
} | ||
} | ||
``` | ||
Here are some source actions: | ||
|
||
* `"organizeImports"` - Enables organize imports on save. | ||
* `"fixAll"` - Auto Fix on Save computes all possible fixes in one round (for all providers including ESLint). | ||
* `"fixAll.eslint"` - Auto Fix only for ESLint. | ||
* `"addMissingImports"` - Adds all missing imports on save. | ||
|
||
The TSLint extension already uses `source.fixAll` Code Action kind to implement fix all and auto fix on save. | ||
|
||
You can also set `editor.codeActionsOnSave` to an array of Code Actions to execute in order. You can use this to guarantee that a specific Code Action is always run before or after another one that may conflict with it. | ||
The following `editor.codeActionsOnSave` will always run Organize Imports followed by Fix All once organize imports finishes: | ||
```json | ||
"editor.codeActionsOnSave": [ | ||
"source.organizeImports", | ||
"source.fixAll" | ||
] | ||
``` | ||
Note: `editor.codeActionsOnSave` supports both object and array configs in settings. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For me, the documentation explaining the difference between array vs. object was important to understand... So the part above where you say that the array is used to execute in a specific order is the most important part. It seems that the explanation is redundant below (maybe‽) |
||
|
||
Examples: | ||
|
||
Selective behaviour for different source actions: | ||
```json | ||
"editor.codeActionsOnSave": { | ||
"source.fixAll": true, | ||
"source.fixAll.eslint": false | ||
} | ||
``` | ||
Add all missing imports on save: | ||
```json | ||
"editor.codeActionsOnSave": [ | ||
"source.addMissingImports" | ||
] | ||
``` | ||
## Code suggestions | ||
|
||
VS Code automatically suggests some common code simplifications such as converting a chain of `.then` calls on a promise to use `async` and `await` | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The content looks good but let's try to tighten it up. These documents quick overviews of features available for js/ts so we try to keep each section fairly small.
I’d say keep the first example and the list of available code actions. You can link to documentation on language specific settings and other more advanced features