How to exclude file extensions and languages from "format on save" in VSCode?

Visual Studio-CodeVscode Settings

Visual Studio-Code Problem Overview


Currently in VSCode settings you can configure format on save as following:

"editor.formatOnSave": true

I want to exclude some file extensions, for example only format JavaScript but not HTML files.

Visual Studio-Code Solutions


Solution 1 - Visual Studio-Code

You can use language specific settings to enable it for a specific language only, e.g. JavaScript:

"[javascript]": {
    "editor.formatOnSave": true
}

To disable it for a specific language, you could switch the global default to true and combine it with a language-specific false:

"editor.formatOnSave": true
"[javascript]": {
    "editor.formatOnSave": false
}

Note that language specific settings are based on language identifiers rather than directly on file extensions. There's an open feature request to allow for file extension specific settings as well.

In cases where the language ID isn't specific enough, "files.associations" could be used to remap files with a specific extension and/or in a specific directory to another ID, but this will affect syntax highlighting, code completion, etc. as well. For instance, this would work to disable formatting for JavaScript files in out directories, but they will be treated as plaintext:

"[javascript]": {
	"editor.formatOnSave": true
},
"files.associations": {
	"**/out/**/*.js": "plaintext"
}

Solution 2 - Visual Studio-Code

If you came across this question as I did because you were redirected because of this question https://stackoverflow.com/questions/41781045/vscode-disable-formatting-of-a-specific-file-or-extension which says, this is a duplicate (I don't feel so, because I wanted it for a specific file) and you're looking for a "one-time" solution:

VS Code has a shortcut "now" (I don't know since when) for saving a file without formatting listed under the command workbench.action.files.saveWithoutFormatting - Default keybinding should be

CTRL + K CTRL + SHIFT + S 

(simply keep CTRL pressed and then type K + SHIFT + S).

On OS X the default keybinding is

CMD + k then press s

Solution 3 - Visual Studio-Code

I messed up my keyboard keys with VSCode. One alternative could be utilizing the VSCode commands to save without formating by doing CTRL+SHIFT+P and executing the enter image description here command. :)

Solution 4 - Visual Studio-Code

On Mac & Linux, use Ctrl + K S

On Windows, use Ctrl + K Ctrl + Shift + S

To check the VS Code keyboard shortcuts:Ctrl + K, Ctrl + S (yes, almost the same as the above) and search for "save without formatting"

Solution 5 - Visual Studio-Code

You can use the below settings in Vscode and use "python.formatting.autopep8Args" to specify files or some pattern to ignore files you want. Of course, assuming that you are using autopep8 to format you python files other code formatters might have other ways to configure this.

{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "python.formatting.autopep8Args": ["--exclude settings.py"],
  "[python]": {
    "editor.defaultFormatter": "ms-python.python",
    "editor.formatOnSave": true
  }
}

Solution 6 - Visual Studio-Code

From VS Code IDE File -> Preferences - > Settings -> Text Editor -> Formatting and uncheck Format a file on save.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiongabrielAnzaldoView Question on Stackoverflow
Solution 1 - Visual Studio-CodeGama11View Answer on Stackoverflow
Solution 2 - Visual Studio-CodeАлександр ФишерView Answer on Stackoverflow
Solution 3 - Visual Studio-CodeRavi AnandView Answer on Stackoverflow
Solution 4 - Visual Studio-CodeJoost van der LaanView Answer on Stackoverflow
Solution 5 - Visual Studio-CodeIftakharView Answer on Stackoverflow
Solution 6 - Visual Studio-CodeSyed Nasir AbbasView Answer on Stackoverflow