Set language for syntax highlighting in Visual Studio Code

EditorSyntax HighlightingVisual Studio-Code

Editor Problem Overview


Before the confusion begins, this question is about Code, the new lightweight Visual Studio Editor. You can get it from here: https://code.visualstudio.com/

I have a textfile (.txt) with CSS in it and want to get syntax hightlighting. You can open the command palette with ctrl+shift+p. But there you can not set syntax like in Sublime.

Is there any other way to get the CSS coloring in from my textfile?

Editor Solutions


Solution 1 - Editor

In the very right bottom corner, left to the smiley there was the icon saying "Plain Text". When you click it, the menu with all languages appears where you can choose your desired language.

VSCode

Solution 2 - Editor

Press Ctrl + KM and then type in (or click) the language you want.

Alternatively, to access it from the command palette, look for "Change Language Mode" as seen below:

enter image description here

Solution 3 - Editor

Another reason why people might struggle to get Syntax Highlighting working is because they don't have the appropriate syntax package installed. While some default syntax packages come pre-installed (like Swift, C, JS, CSS), others may not be available.

To solve this you can Cmd + Shift + P → "install Extensions" and look for the language you want to add, say "Scala".

enter image description here

Find the suitable Syntax package, install it and reload. This will pick up the correct syntax for your files with the predefined extension, i.e. .scala in this case.

On top of that you might want VS Code to treat all files with certain custom extensions as your preferred language of choice. Let's say you want to highlight all *.es files as JavaScript, then just open "User Settings" (Cmd + Shift + P → "User Settings") and configure your custom files association like so:

  "files.associations": {
    "*.es": "javascript"
  },

Solution 4 - Editor

Syntax Highlighting for custom file extension

Any custom file extension can be associated with standard syntax highlighting with custom files association in User Settings as follows.

Changing File Association settings for permanent Syntax Highlighting

> Note that this will be a permanent setting. In order to set for the current session alone, type in the preferred language in Select Language Mode box (without changing file association settings)

Installing new Syntax Package

If the required syntax package is not available by default, you can add them via the Extension Marketplace (Ctrl+Shift+X) and search for the language package.

You can further reproduce the above steps to map the file extensions with the new syntax package.

Solution 5 - Editor

To permanently set the language syntax:
open settings.json file

  • format all txt files with javascript formatting
"files.associations": {
            "*.txt": "javascript"
          
     }
  • format all unsaved files (untitled-1 etc) to javascript:
"files.associations": {
            "untitled-*": "javascript"
          
     }

Solution 6 - Editor

Note that for "Untitled" editor ("Untitled-1", "Untitled-2"), you now can set the language in the settings.

The previous setting was:

"files.associations": {
        "untitled-*": "javascript"
 }

This will not always work anymore, because with VSCode 1.42 (Q1 2020) will change the title of those untitled editors.
The title will now be the first line of the document for the editor title, along the generic name as part of the description.
It won't start anymore with "untitled-"

See "Untitled editor improvements"

Regarding the associated language for those "Untitled" editors:

> By default, untitled files do not have a specific language mode configured. > > VS Code has a setting, files.defaultLanguage, to configure a default language for untitled files. > > With this release, the setting can take a new value {activeEditorLanguage} that will dynamically use the language mode of the currently active editor instead of a fixed default. > > In addition, when you copy and paste text into an untitled editor, VS Code will now automatically change the language mode of the untitled editor if the text was copied from a VS Code editor:

https://media.githubusercontent.com/media/microsoft/vscode-docs/vnext/release-notes/images/1_42/untitled-copy2.gif

And see workbench.editor.untitled.labelFormat in VSCode 1.43.


In March 2021 (possible for VSCode 1.55), issue 118455 "Automatic language classification for Untitled files" and PR 119325 are studying some kind of automatic language detection for untitled files.


And if you forget, with VSCode 1.56, Apr. 2021:

> ## Untitled editors hint

> We have noticed that many new users are not aware that a language has to be set in order to get full VS Code language support. > > To help with this problem, we have introduced a hint for untitled editors to help users set the correct language mode.
The untitled hint might not be helpful to advanced users, so it goes away immediately as you start typing or you can select don't show to never display the hint again. > > Untitled editor shows an untitled hint -- https://github.com/microsoft/vscode-docs/raw/vnext/release-notes/images/1_56/untitled-hint.png


With VScode 1.60 (Aug. 2021):

> ## Automatic language detection

> Last release, we introduced an experimental feature for untitled files that would automatically set the language mode for the file based on the contents. > > This feature uses machine learning to guess the language and is done entirely on your machine. It's powered by the open-source ML library, Tensorflow.js, and the ML model from Guesslang by GitHub user @yoeo. > > This release we are enabling this feature by default and also expanding the automatic language detection to files that don't have a file extension. In Notebooks, we provide an easy way to ask for language detection using the language picker. > This enables a few fun scenarios: > > - Grab an example from online and paste it in an untitled editor Language detection of untitled files
> https://media.githubusercontent.com/media/microsoft/vscode-docs/vnext/release-notes/images/1_60/language-detection-untitled.gif > > - "Pipe into code" language detection (showing off detection of extension-less files) Language detection of extension-less files
> https://media.githubusercontent.com/media/microsoft/vscode-docs/vnext/release-notes/images/1_60/language-detection-pipe.gif > > - Auto detect option in Notebooks language picker Language detection of Notebooks
> https://media.githubusercontent.com/media/microsoft/vscode-docs/vnext/release-notes/images/1_60/language-detection-notebooks.gif


VSCode 1.65 (Feb. 2022) comes with:

> ## Improved automatic language detection > > When the new setting workbench.editor.historyBasedLanguageDetection is enabled, untitled editors will use an improved automatic language detection algorithm that factors in your editor history and the contents of the current workspace to provide detection results with much less input text required than before. > > Below is an example of using this across JavaScript, TypeScript, Markdown, PHP, and C++ (many more languages are supported): > > Using automatic language detection > > Theme: GitHub Light + HC Customizations

Solution 7 - Editor

Now you can set syntax highlight from command palette by installing an VS Code extension: Set Syntax

enter image description here

https://marketplace.visualstudio.com/items?itemName=ahgood.set-syntax

Solution 8 - Editor

You can change the language mode in VS Code as follows.

Select the file which you want to change then use the following shortcut.

On macOS:

  • press +K then press M.

On Windows and Linux:

  • press CTRL+K then press M

Select the language from the list provided or choose Auto-detect

enter image description here

Solution 9 - Editor

This may not be quite a correct answer to the question, but this is what happened to me. Sometimes the answer that we seek may not be the answer that we needed.

enter image description here

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
QuestionFlorian LeitgebView Question on Stackoverflow
Solution 1 - EditorFlorian LeitgebView Answer on Stackoverflow
Solution 2 - EditorgitsitgoView Answer on Stackoverflow
Solution 3 - EditorAurelioView Answer on Stackoverflow
Solution 4 - EditorSayooj SamuelView Answer on Stackoverflow
Solution 5 - EditorGorvGoylView Answer on Stackoverflow
Solution 6 - EditorVonCView Answer on Stackoverflow
Solution 7 - EditorDevNerdView Answer on Stackoverflow
Solution 8 - EditorMwizaView Answer on Stackoverflow
Solution 9 - EditorAnees HameedView Answer on Stackoverflow