Powerful source code editor developed by Microsoft for Windows

Visual Studio Code

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more

Download Visual Studio Code 1.19.2

Visual Studio Code

 -  100% Safe  -  Freeware

What's new in this version:

Visual Studio Code 1.19.2
The update addresses these issues:
- Cannot compare changes for git conflicts after upgrade to 1.19
- Missing icons in activity bar
- Workbench doesn't finish loading when Extensions viewlet is first to load

Visual Studio Code 1.19.1
Update addresses these issues:
- code --status doesn't work if your shell is PowerShell
- Every time i lunch code it starts with code-stdin-randomchars.txt file
- Task ${relativeFile} slash style
- Git diff not working for UNC paths
- what is "Would you like to enable auto fetching of Git repositories?" bug
- Type error: cannot read property comments of null
- Git doesn't pick up user installation directories

Visual Studio Code 1.19.0
- Faster startup and other performance improvements

- New VS Code diagnostics, logging, and extension monitoring

Smarter IntelliSense:
- IntelliSense remembers your previous suggestion choices

Better Tab layout:
- Tabbed headers can scale to fit the available space

Git side-by-side image diff:
- Git source control provider can display image changes side by side

Pipe output into VS Code:
- Easily view terminal output in a VS Code editor

New debugging recipes:
- Learn how to debug Next.js, Meteor projects and applications using the nodemon utility

Visual Studio Code 1.18.1
- gitDecoration.ignoredResourceForeground Theme Bug
- 'The preLaunchTask 'xxxx' cannot be tracked.' exception after installing the October 1.18 release
- Workspace recommendations that are file based recommendations as well, repeat in the split view
- Git: checkIgnore nested Promise/resolve bug (with PR)
- Shell task doesn't finish
- Alt+F S no longer a single action
- Report "spawn UNKNOWN" when global searching
- Zombie breakpoints when editing lines around a breakpoint
- Welcome page needs to update Python extension id
- multi-root folders: excluding dot files from a folder makes it invisible in file explorer candidate

Visual Studio Code 1.18.0
- Multi-root workspaces released to Stable - Group a logical set of folders into a single workspace
- Vertical panels - Dock panels (Terminal, Output, or Debug Console) to the right of your editor
- Git indicators in the Explorer - See pending file changes in the File Explorer
- Inline pending change review - View pending changes and perform partial commits in the editor
- Several performance improvements - Faster Windows start-up and editor performance tuning
- Auto imports for JS/TS - Relevant imports are added as you call local symbols
- Extract local variable for JS/TS - Refactor a new local variable based on your selection
- Install @types for TypeScript - A new Quick Fix adds missing @types files to your project
- Improved extension recommendations - Recommendations are highlighted in extension searches

Visual Studio Code 1.17.0
New Visual Studio Code logo:
- We've updated the VS Code logo and colors, orange for the stable release and green for Insiders

Better --wait support:
- VS Code can be started with the --wait argument from the command line to wait until the instance that opens is closed. In this milestone, we made this feature more powerful by also terminating the calling process when all of the editors are closed that got opened. As a consequence, you can now use --wait with instances that are already opened, making this a much faster experience

New features around file encoding:
- It is now possible to configure the files.encoding as well as files.autoGuessEncoding setting per language. VS Code also now supports CP 850 and CP 865 encoding

New setting to control editor labels:
- A new setting, workbench.editor.labelFormat, adjusts the default label for editors. Possible values are short, medium, long and default. By default, editors will only show information about the file path when multiple editors with the same name are opened. If any of the other options is used, the editor label will always show path information

${workspaceFolder} in launch.json and tasks.json:
- We have introduced a new substitution variable ${workspaceFolder}. This variable will get substituted to the absolute path of the workspace folder containing the appropriate launch.json or tasks.json. This has the same effect as the previous ${workspaceRoot}, however we felt like the old name was not specific enough for the upcoming multi-root workspace scenarios. We are deprecating ${workspaceRoot}, though we will still support substituting it for backwards compatibility. More about variable substitution can be found here

QuickOpen uses ripgrep:
- QuickOpen (Ctrl+P) now uses ripgrep to retrieve the full list of file names before applying the user's input filter. Windows users should see improved performance on large folders getting them on par with Linux and macOS which were previously using find to boost listing file names

Folding regions:
Folding now supports region markers. Markers are defined by the language in the language configuration. The following languages currently have markers defined:
- TypeScript/JavaScript: //#region and //#endregion and //region and //endregion
- C#: #region and #endregion
- C/C++: #pragma region and #pragma endregion
- F#: //#region and //#endregion
- Powershell: #region and #endregion
- VB: #Region and #End Region
- Each language also has snippets available for the markers. Type '#' and invoke code completion to see them
- To have region markers configured for your language, contact the language extension provider

Folding in off-side languages:
- In languages that follow the off-side rule for code blocks, empty lines belong to the next folding region

The setting is configured in the language configuration and is enabled for the following languages:
- Python, Yaml, Pug, Markdown, Clojure, CoffeScript, FSharp

Snippet selector:
- The snippet picker drop-down shown by the Insert Snippet command now displays snippets in two groups, User Snippets and Extension Snippets. User-defined snippets are listed on top to give you quick access to your favorite snippets
Snippet transforms:
The VS Code snippet engine now supports variable transformations. Transformations can change the value of a variable before inserting it. The format is var_name/regular_expression/format_string/options. The sample below is a snippet that creates a public Java class whose name is derived from the filename.
Lightbulb improvements:
- The new editor.lightbulb.enabled setting enables or disables the Code Action light bulb in the editor. The default value is true
- The Code Action menu now selects the first entry by default making it easier to run

Improved history navigation:
VS Code has commands to navigate within the editor history (workbench.action.navigateBack, workbench.action.navigateForward), either across or within files. During this milestone, we tweaked the experience to produce less unwanted stops in history:
- We now require a minimum distance of 10 lines from one selection to another to add a new entry to history (previously we required a distance of 5 lines)
- Navigating less than 10 lines replaces the last history stop within the file with that location and thus avoids introducing unwanted stops
- In addition, we no longer center the selection vertically when navigating unless the selection is outside of the view. This makes it easier to stay in context while navigating around

Coloring of warning squigglies:
- You can now use a different color for warning squigglies to differentiate them from information

Emmet preferences:
We're continuing to add support for more Emmet Preferences in Emmet 2.0. In addition to the preferences we added in the last release, we now have:
- bem.elementSeparator
- bem.modifierSeparator
- filter.commentBefore
- filter.commentTrigger
- filter.commentAfter
- The format for the filter.commentAfter preference is different and simpler in Emmet 2.0.

New rendering engine:
- The integrated terminal is now using a new canvas-based rendering engine which renders approximately 5 to 45 times faster, depending on the situation. This change reduces the input latency, power usage, and increases the frame rate of the terminal significantly

Debug Console messages show source location:
- Output messages in the Debug Console now optionally show the originating source location on the right hand side. Clicking on this origin opens the source file in the editor.

First steps towards WSL support:
- Thanks to a feature contributed by Bartosz Sosnowski (@bzoz), the Node.js debugger (for this milestone "legacy" protocol only), supports launching and debugging Node.js applications in the Windows Subsystem for Linux (WSL).
- With this feature, you can add a useWSL flag to a debug configuration to make it run in the Linux subsystem on Windows. The flag configures the debugger not only to launch the Node.js runtime in WSL but it also maps paths correctly between WSL and Windows.

Viewing output from direct stdout/stderr writes:
- There are a number of Node.js logging libraries that write directly to the stdout stream, with process.stdout.write, rather than console.log. This is faster, but it isn't sent through Node's debug socket, so these messages were previously not shown in the Debug Console when debugging with the new 'inspector' protocol
- A PR #138 from Vakhurin Sergey (@igelbox) adds a new launch config option, "outputCapture": "std" which will tell the debug adapter to show stdout/stderr output in the Debug Console

- We added multi folder support to tasks. If you have created a workspace with multiple folders, tasks from all workspace folders using task version "2.0.0" are collected and presented in the corresponding Run commands. Launch configuration can also reference tasks as preLaunch tasks from the same workspace folder. Tasks auto detection for Gulp, Grunt, Jake and npm now also support multi-root workspaces. In addition, the task contribution API was enhanced to support contributing tasks for different workspace folders. Please note that multi folder support still requires the Insiders build

TypeScript 2.5.3:
- VS Code now includes TypeScript 2.5.3. This updates brings a few important fixes and improvements, with a focus on the extract method refactoring

Import path quick suggestions in JavaScript and TypeScript:
- JavaScript and TypeScript have provided IntelliSense for import paths ever since VS Code 1.9. However, you may not have known about this feature because it required manually triggering IntelliSense while typing the import. With VS Code 1.17, we now automatically show module and path suggestions as soon as you start typing an import or require path

Improved colorization in Dark+ and Light+ themes:
- VS Code's built-in Dark+ and Light+ themes now highlight regular expression components so that they can be more easily identified.Colorization of format strings and string interpolation has also been improved for a few languages

Extract method now triggers rename:
- The extract method and extract function refactoring for JavaScript and TypeScript will now automatically trigger a rename on the extracted method or function

Auto detection of TypeScript watch build tasks:
- TypeScript now automatically creates watch tasks for tsconfig.json files in a project, along with the normal build tasks

JavaScript and TypeScript IntelliSense now supports Markdown:
- Suggestions and parameter hints for JavaScript and TypeScript can now render Markdown content

Improvements to JSX language scoping:
- JavaScript expressions inside of JSX tags now are correctly marked as being of the JavaScript language. This fixes a number of bugs around basic language features such as bracket matching and code commenting

Language support in Markdown code blocks:
- Fenced code blocks in Markdown files now set the language mode for their contents. This means that basic language features such as bracket matching and code commenting now use the settings for the fenced code block's language rather than the generic Markdown language settings

Detection of Markdown reference links:
- Reference links and reference link definitions are now detected as links in the editor. Clicking on link definition will jump to [link definition]:. /path/to/link is now also detected as a link

CSS language improvements:
The built-in CSS/LESS/SCSS language server was updated and now supports the following features:
- Validation and completion for the @supports rule
- Support for @import with queries
- Support for contain and various flex properties

Improved multiple SCM support:
- Continuous iteration on the multiple source control provider support UX has led us to a master-detail implementation. There is a new SOURCE CONTROL PROVIDERS section which gives you an overview when you have multiple active repositories. These can be contributed by several SCM providers; for example, you can have Git repositories side-by-side with TFS workspaces. As you select repositories in this view, they get highlighted underneath. You can use ctrl+click or shift+click to select multiple repositories. They will appear as split views underneath

Increased Performance:
- We did quite a bit of performance work around the Source Control extension API and UI. Overall, the experience should be much smoother especially in repositories with a large number of objects

Git stash commands:
- You might have missed this in the last release, but thanks to a PR from Krzysztof Cieślak (@Krzysztof-Cieslak), VS Code has Git stash commands in the Source Control view More (...) dropdown

Java language support:
- A new Java language topic describes how to install and use the Java Extension Pack for great Java code intelligence and debugging support in VS Code

Tips and Tricks:
- We've added a Tips and Tricks topic to help you quickly become productive with VS Code. It includes the VS Code team's favorite features and keyboard shortcuts which they use on a daily basis

Debugging Recipes:
- We've been working on recipes for various debugging scenarios and added a new topic outlining these guides and providing links to helpful blog posts. See Debugging Recipes for help on debugging frameworks such as React and Angular and runtimes like Electron and Docker

Updated keyboard shortcut cheat sheets:
- We refreshed the keyboard shortcut PDFs and added the keybindings for useful commands such as Open User Settings (Ctrl+,) and Open Keyboard Shortcuts (Ctrl+K Ctrl+S)

Multi root guide for extension authors:
- We are very close to shipping multi-root support for all users. All of the VS Code core features [SCM, Settings, Debug, Tasks, ...] and extensions [HTML, JS/TS, ESLint, Docker, ...] now support multi-root concepts
- We've created a guide for how to make your extension ready for multi-root workspaces. See the Adopting Multi Root Workspace APIs guide for more information. All the APIs discussed are considered stable and currently available. Note however that multi-root workspaces are only enabled in VS Code Insiders release

File Save & File Open dialogs:
- The extension API has two new functions that allow extensions to show dialogs for saving and opening files or folders. The snippet below will show an open dialog to select image files

Styled completions and signature help:
- We have extended the API for CompletionItems and SignatureHelp such that documentation can be provided as MarkdownString. This allows for fancy rendering, embedded code snippets, and links to further documentation. Our own TypeScript and JavaScript extension is already using MarkdownString

- CompletionItemProvider.provideCompletionItems now is provided with a new CompletionContext parameter. This context contains information about how the completion provider was triggered
- Refer to the 'active' view column
- The editor layout works with columns 1, 2, and 3 and when using the showTextDocument function, you can set a column. However, often you simply want to refer to the currently active column. To make that easy, we have added a new symbolic column: ViewColumn.Active. It will always show a document in the currently active column and saves you from figuring out what column that is

MarkedString vs MarkdownString:
- Note that with this release, you cannot use command links in MarkedStrings anymore. If this affects your extension, we have likely already contacted you. In short, use the new MarkdownString and make sure to mark it as trusted. All the details and background can be found here

New Source Control menu:
- You can now use the scm/sourceControl menu id to contribute commands to the inline source control provider rows in the new SOURCE CONTROL PROVIDERS section of the Source Control view. Only context menu commands are supported for now

Tasks contribution API:
- The tasks API was enhanced to support contributing tasks for different workspace folders. The constructor to create tasks in an extension has an additional argument to specific whether the task is global, user local, or belongs to a workspace folder

Debug API updates:
- Command vscode.startDebug is deprecated
- Command vscode.workbench.customDebugRequest is deprecated
- Debug contributions in package.json
- New Activation event onDebug
- Activation event onDebug:type is deprecated
- Using debuggers.startSessionCommand in package.json is deprecated
- Using command with debuggers.initialConfigurations in package.json is deprecated

Debug Adapter Protocol:
- BreakpointEvent now supports a removed reason
- Locale can be passed to debug adapter
- Preview: Multi Root Workspaces

- We continued working on support for opening multiple folders in a single VS Code window (instance) (issue #396). There was a preview of this feature in our last releases (see 1.14.0 release notes, 1.15.0 release notes and 1.16.0 release notes). During this milestone, we focused on making the transition into a workspace work without a window reload and introduced more APIs for extensions to better support multi-root workspaces

Enter a workspace without window reload:
- Previously we required a full window reload when creating or saving workspaces or when adding folders to a workspace. We no longer require this window reload making the multi-root experience a lot smoother.

Extension recommendations:
- We extended the support of extension recommendations to multi-root workspaces. Extension recommendations from all root folders are consolidated and shown. You can also configure recommendations for the multi-root workspace itself using the command Extensions: Configure Recommended Extensions (Workspace). This will open the workspace configuration file and you can enter the recommendations under a extensions/recommendations section

Enter a workspace without window reload:
- Previously we required a full window reload when creating or saving workspaces or when adding folders to a workspace. We no longer require this window reload making the multi-root experience a lot smoother

Extension recommendations:
- We extended the support of extension recommendations to multi-root workspaces. Extension recommendations from all root folders are consolidated and shown. You can also configure recommendations for the multi-root workspace itself using the command Extensions: Configure Recommended Extensions (Workspace). This will open the workspace configuration file and you can enter the recommendations under a extensions/recommendations section

New API: Workspace Folder Picker:
- With the advent of multi-root support in VS Code, we noticed that often an extension wants to ask the user for a specific WorkspaceFolder. The new proposed API method showWorkspaceFolderPick opens a picker and returns the result

New API: RelativePattern:
To make it easier to filter file paths to a specific WorkspaceFolder, we added a new type RelativePattern and support it in the following places:
- workspace.createFileSystemWatcher
- workspace.findFiles(include, exclude)
- DocumentFilter#pattern

Smarter workspace file format saving:
- When saving the workspace file back to disk upon changes, we will now prefer to use forward slashes for paths on Windows in case the file is already using slashes. This should make it easier to share workspace files between Windows and other platforms
- In addition, we now preserve any comments within the workspace file. Even though JSON does not allow for comments inside the file, we now use the same JSON parser that we use for VS Code settings which allows for comments and is also more error tolerant. For example, trailing commas will not render the workspace file as invalid anymore

Workspace folder name:
- You can now assign a name property to each of the folders within the configuration file. The name will be picked up in the Explorer and can be used to distinguish multiple workspace folders that have the same basename

Issue management automation:
- We have extended the use of our Probot instance beyond our main repository and now use it for automatic issue assignment and closing of stale "needs more info" issues in our extension and other repositories

Notable Changes:
- Cannot open a folder under my OneDrive folder
- VS Code flickers when running on a high DPI external monitor
- VS Code opens off-screen
- Cmd-A doesn't select all text in the save dialog save-as field

Visual Studio Code 1.16.1
- Performance regression due to exe-based extension recommendations
- Problem with syntax highlighting (HTML/PHP)
- vscode-node-debug extension w/security vulnerability included in latest release
- Git stage ranges fail to update file
- Hang then crash by typing in integrated terminal

Visual Studio Code 1.16.0
There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
- JavaScript/TypeScript refactoring - Easily extract source code into methods and functions
- HTML tag auto close - Improved editor productivity with automatic close tags
- Color picker in HTML - You can now use the VS Code color picker in HTML files
- Integrated Terminal quick open - Create or jump to terminals from VS Code Quick Open
- Drag and drop from search - Quickly open files from Search and also the Problems panel
- New online documentation - New Emmet topic and updates to the Node.js Deployment tutorial
- VS Code "recipes" repository - Examples using React, Angular and Docker in VS Code
- Preview: Multi-root workspaces - Smoother UI when adding folders and creating a Workspace (Insiders build)
- Preview: Multiple SCM providers - With multiple folders, you can have multiple source control providers (Insiders build)
- Multi-root tips for extension authors - Update your extension to work seamlessly with multi-root workspaces

The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:
- Workbench - Improved Extension sandboxing, more theme colors
- Editor - Undo stack detects file changes, smooth scrolling, Braille support
- Integrated Terminal - Better text selection on Linux and Windows, search history support
- Languages - TypeScript 2.5, JSDoc type assertions, Markdown Preview refresh command
- Extension Authoring - API updates and guidelines to support multi-root workspaces


Drag and drop from Search results and Problems panel:
- You can now drag files from the Search results and Problems panel over the editor area to control where these should open. The File Explorer always supported this and we have now expanded that feature to other regions of the UI.

Drag and drop in search results:

Open a folder via drag and drop:
- VS Code has always supported dragging a folder from outside VS Code into it to open the folder. VS Code stills support this, but the visual feedback is changed a little bit. Previously you could drop the folder anywhere in VS Code to open it. With this release, you need to drop the folder over the editor area to open it. This change is due to both a technical reason (an Electron update) as well as an explicit decision to make the multi-root experience better. If you are using VS Code Insiders with multi-root support, you will be happy to hear that you can now drop a folder into the File Explorer to add it to the workspace.

Open folder via drag and drop:

Extension Host:
- VS Code uses a multi-process architecture, where extensions are executed in a separate extension host process. The workbench can now recover gracefully from an unexpected termination of the extension host process. All UI elements and state driven from extensions will be removed (for example, squiggles and Status Bar items), and, if the extension host is restarted, everything will return to normal.

In the following short video, the extension host process is terminated. When the extension host terminates, basic editing still works, word completions are presented, and once the extension host is restarted, real TypeScript powered completions return:
Extension Host Restart:

Theming improvements:

Several new theming color keys were introduced. These colors can be set by themes or directly by the user with the workbench.colorCustomizations setting:
- tab.activeBorder: A border drawn to the bottom of the active tab
- tab.unfocusedActiveBorder: A border drawn to the bottom of the active tab in an editor group that is not focused
- editorOverviewRuler.border: Color of the overview ruler border
- editorOverviewRuler.findMatchForeground: Overview ruler marker color for find matches
- editorOverviewRuler.rangeHighlightForeground: Overview ruler marker color for range highlights
- editorOverviewRuler.selectionHighlightForeground: Overview ruler marker color for selection highlights
- editorOverviewRuler.wordHighlightForeground: Overview ruler marker color for symbol highlights
- editorOverviewRuler.wordHighlightStrongForeground: Overview ruler marker color for write-access symbol highlights
- editorOverviewRuler.modifiedForeground: Overview ruler marker color for modified content
- editorOverviewRuler.addedForeground: Overview ruler marker color for added content
- editorOverviewRuler.deletedForeground: Overview ruler marker color for deleted content
- editorOverviewRuler.errorForeground: Overview ruler marker color for errors
- editorOverviewRuler.warningForeground: Overview ruler marker color for warnings
- editorOverviewRuler.infoForeground: Overview ruler marker color for information messages

Undo stack preserved when file changes on disk:
- Thanks to the work of Ryan Stringham in PR #29655, VS Code will now preserve the undo stack associated with a open file when it is reloaded due to a change on disk.
- Smooth scrolling
- Thanks to the work of @JD342 in PR #25286, the editor now has a new option, editor.smoothScrolling, that will make the editor scroll with an animation. Once enabled, scrolling between different locations when using Page Up or Page Down, when cycling through find matches, when jumping to a definition in the same file, and when using the mouse wheel will be animated.
- Note: Our platform currently does not support differentiating between scrolling initiated by a touchpad or a physical mouse wheel, and we currently use a heuristic to determine if smooth scrolling should be applied.

Smooth Scrolling:
Emmet suggestions as snippets:
Emmet in suggestions/auto-completion list is most helpful when it is in the top few choices. There are two scenarios where Emmet suggestions can get pushed down the list:
- You have set editor.snippetSuggestions to top and so default/user/extension snippets are on top of your suggestion list
- When working on stylesheets, Emmet suggestions get sorted alphabetically among other CSS suggestions
- To ensure Emmet suggestions stay on top of the suggestion list, set the new emmet.showSuggestionsAsSnippets to true and editor.snippetSuggestions to top
- Emmet preferences
- The setting emmet.preferences as documented in Emmet Preferences was discontinued in the last release as the new modular approach in Emmet 2.0 did not support them

We are bringing back support for a few of these preferences via the setting emmet.preferences:
- css.propertyEnd
- css.valueSeparator
- sass.propertyEnd
- sass.valueSeparator
- stylus.propertyEnd
- stylus.valueSeparator
- css.unitAliases
- css.intUnit
- css.floatUnit
- If you want support for any of the other preferences, please log a feature request for the same

- There is a new snippet variable: $TM_FILENAME_BASE. It resolves to the filename without extension, so from /my/super/file.ts it resolves to file

Braille support:
- It is now possible to change the cursor position in VS Code using Braille routing keys on a connected Braille display when using NVDA on Windows. Many thanks to James Teh, who helped emulate the behavior of a Braille display in issue #27216.
- Integrated Terminal

Terminal quick open improvements:
- The Integrated Terminal can now be launched via the Terminal: Switch Active Terminal command or by typing "term " (with a trailing space) in Quick Open. When using the Integrated Terminal Quick Open drop-down, you can also create new terminals or delete existing terminals.

Terminal quick open improvements:
Force selection using Shift on Linux and Windows:
- Running programs in mouse mode within the terminal (like tmux) will intercept the mouse and therefore not allow you to make a selection. You can now hold the Shift key to force the mouse event to perform a selection rather than be sent to the terminal. This functionality was added for Alt on macOS in 1.15.
- Terminal Find widget improvements
- The terminal Find widget now supports find history. You can use Alt+Down and Alt+Up to show the next or previous find term in the Find widget. Many thanks to Christopher Leidigh, who has helped with both code refactoring and feature implementation in PR #32113.
- Terminal Find Widget improvements
- Languages
- HTML close tags

Tag elements are now automatically closed when > of the opening tag is typed:
Auto close on:
The matching closing tag is inserted when / of the closing tag is entered:
Auto close on:
- The new behavior is enabled by default and can be turned off with the setting html.autoClosingTags
- Thanks to Jun Han for leading the way with his Auto Close Tag. Note that the Auto Close Tag extension has more features, in particular, it can be enabled for languages other than HTML as well.

Color picker in HTML:
- The new VS Code color picker UI is now available in HTML style sections

TypeScript 2.5:
- VS Code now includes TypeScript 2.5.2, which brings some exciting new editor features and fixes a number of bugs. You can read more about TypeScript 2.5 here. Below are details about several of the new features.
- JavaScript and TypeScript refactorings

The new Extract method and Extract function code actions allow you to quickly refactor complex JavaScript or TypeScript code into new methods or functions:
- Simply select some code, then click on the lightbulb in the gutter or press (Ctrl+.) to see available refactorings. Source code fragments can be extracted into a new method, or into a new function at various different scopes.
- JSDoc type assertions

You can now use write JSDocs type assertions in JavaScript files:
- // @ts-check
- const img = /** @type {HTMLImageElement} */ (document.getElementById('#cat'))
- img.src = './cat.gif'
- This is particularly useful when using @ts-check to enable type checking in your JavaScript code.

Better loose JavaScript/TypeScript file isolation:
- Loose JavaScript and TypeScript files that are not part of a jsconfig.json or tsconfig.json project are now split into an implicit project per root folder. Previously, loose files across all root folders in the workspace were grouped into the same implicit project. The change means that you should no longer see suggestions from files in one JavaScript folder showing up in JavaScript files in a different folder.
- Markdown preview refresh command
- The new Markdown: Refresh Preview command allows you to manually refresh the contents of a Markdown preview.
- This can be used to reload images that have been modified on the file system.
- CSS/JSON color preview
- We moved the inline color preview rendering from the CSS/JSON extensions to the VS Code core and in the process deprecated four configuration settings: css.colorDecorators.enable, sass.colorDecorators.enable, scss.colorDecorators.enable and json.colorDecorators.enable. There is a new general setting editor.colorDecorators to control if the inline color box should be rendered.

New Documentation:
Updated Node.js Deployment tutorial:
- We continue to refine the Node.js Deployment to Azure tutorial so you can get your application running quickly in the Cloud.

New Emmet topic:
- We added a new Emmet topic describing VS Code's Emmet support. Learn about using Emmet abbreviations during your editing sessions, how to customize your Emmet experience, and even create custom Emmet snippets.

VS Code recipes:
- In May, we've started to collect recipes for some non-standard or complex debugging setups in a VS Code Recipe repository. This repository has now moved to the new location https://github.com/Microsoft/vscode-recipes. Here you can find working examples using React, Angular and Docker in VS Code.

Extension Authoring:
Upgraded Electron only supports "inspector" protocol:
- With the upgrade to Electron 1.7, the built-in Node.js version only supports the "inspector" protocol (instead of "legacy"). This change has benefits for both extension debugging and profiling as described below.

Extension debugging:
Extension Host debugging (implemented by VS Code's built-in Node Debugger) has been switched to always use the "inspector" protocol which results in the following behavioral difference:
- With the "inspector" protocol, the Node.js debugger does not mark breakpoints as "verified" until they are bound to a real script location loaded by the runtime. This means that if your extension is not yet activated, breakpoints will appear gray (unverified). But don't worry, they will turn red (verified) as soon as the extension is activated.

Profile your extension:
Since the upgraded version of Electron supports the more powerful "inspector" protocol, you can now profile extensions using Chrome DevTools. Do the following:
- Start VS Code from the command line the with --inspect-extensions=-flag, for example code --inspect-extensions=9333
- In VS Code, from the Command Palette (F1), select Developer: Toggle Developer Tools, hit Enter
- Select the Console tab and find a message that starts with "Debugger listening on port 9333" and that ends with a chrome-devtools-link
- Open that link in Chrome for dedicated DevTools for the extension host
- Use the CPU and Memory profiler to understand how memory and compute is being used

Handling uncaught errors:
- The extension host process is now looking at the stack-traces of uncaught errors to know what extension is throwing them. For now, we only prefix those errors with the respective extension ids. In the future we have more plans, for example an extension runtime view or the ability to create an issue against extensions.
- Themable colors in extensions

Extension can now contribute new themable colors. These colors can be used in decorators and in the Status Bar:
- "colors": [{
- "id": "superstatus.error",
- "description": "Color for error message in the status bar.",
- "defaults": {
- "dark": "errorForeground",
- "light": "errorForeground",
- "highContrast": "errorForeground"
- Once defined, user can customize the color in the workspace.colorCustomization setting. User themes can set the color value.

Source control API updates:
- The way of accessing the Source Control view's input box via scm.inputBox is now deprecated in favor of using SourceControl.inputBox. This is related to the multi-root feature, in which each source control provider can have its own input box
- The global scmProvider context key is now never set, since many source control providers can be active simultaneously
- You can now have tooltips on source control resource decorations

Debug API updates:
DebugConfigurationProvider replaces initialConfigurations and startSession commands:
- Currently a debugger extension can contribute the "hook"-like commands initialConfigurations and startSession to participate in the generation of an initial launch configuration and the start of a debug session. In this milestone, we are proposing a "real" API that will replace the more-or-less untyped command based mechanism with a typed solution. At the same time we are deprecating the initialConfigurations and startSession commands (and we will remove them in the October release).
- The new API centers around a DebugConfigurationProvider which is registered for a specifc debug type (which itself is contributed via a debuggers contribution as before). Whenever VS Code needs the initial debug configurations for a newly created launch.json it calls provideDebugConfigurations on the registered DebugConfigurationProviders. A method resolveDebugConfiguration is called by VS Code when a new debug session is started. The implementation of resolveDebugConfiguration can "massage" the passed debug configuration by filling in missing values or by adding/changing/removing attributes.
- Note: Currently this API is proposed, so in order to use it you must opt into it by adding a "enableProposedApi": true to package.json and you'll have to copy the vscode.proposed.d.ts into your extension project. Also be aware that you cannot publish an extension to the Marketplace that uses the enableProposedApi attribute.

Command vscode.startDebug is deprecated:
- With the introduction of a proper vscode.debug.startDebugging(...) API in the July release, it is no longer necessary to use the vscode.startDebug command to start a debug session. Therefore we are deprecating the vscode.startDebug command in the August release and plan to drop it in October. If it is difficult for you to move off this feature, please speak up by commenting here.

Command vscode.workbench.customDebugRequest is deprecated:
- With the introduction of a proper DebugSession.customRequest(...) API in the July release, it is no longer necessary to use the vscode.workbench.customDebugRequest command to send a custom request to the debug adapter. Therefore we are deprecating the vscode.workbench.customDebugRequest command in the August release and plan to drop it in October. If it is difficult for you to move off this feature, please speak up by commenting here.

Debug contributions in package.json:
Variable substitution in program and runtime attributes in package.json is no longer supported:
- In the July milestone, we had deprecated variable substitution in the program and runtime attributes of the debuggers contribution in package.json. In August, we have removed this functionality.

Using debuggers.startSessionCommand in package.json is deprecated:
- With the introduction of the resolveDebugConfiguration method on type DebugConfigurationProvider, it is no longer necessary to contribute a startSessionCommand on the debuggers contribution point. Therefore we are deprecating the startSessionCommand in this milestone and plan to drop it in October. If it is difficult for you to move off this feature, please speak up by commenting here.

Using command with debuggers.initialConfigurations in package.json is deprecated:
- With the introduction of the provideDebugConfigurations method on type DebugConfigurationProvider, it is no longer necessary to contribute a command for the debuggers.initialConfigurations contribution point. Therefore we are deprecating the ability to specify a command ID in this milestone and plan to drop it in October (but we will continue the support for contributing a JSON object literal). If it is difficult for you to move off this feature, please speak up by commenting here.

Debug Adapter Protocol:
Source link attributes added to output event:
- We've added a source, line, and column attribute to the Output event type . With this a frontend can show a link to the source where the output was generated. Please note: VS Code does not yet support this feature in the UI.

Loaded scripts support:
- We've added support for retrieving loaded scripts (LoadedSourcesRequest) and receiving loaded script events (LoadedSourceEvent). Please note: VS Code does not yet support this feature in the UI. The newly introduced Loaded Scripts Explorer for JavaScript debugging does not yet use this protocol but we are planning to migrate it to the new protocol.

Display hints for variables and evaluation results:
- We've added display hints for variables and evaluation results (type VariablePresentationHint). A frontend can use these hints when rendering variables or evaluation results, for example for selecting specific icons that reflect their visibility. Please note: VS Code does not yet make use of these hints in the UI.
- Updated Marketplace extension README rendering
- The Visual Studio Marketplace is now using the markdown-it library to render the extension README. This is the same Markdown library used by VS Code's Extensions view README rendering and it is unlikely to affect your extension README online display.
- Multi Root Workspace tips for extension authors
- We've created a guide for how to make your extension ready for multi-root workspaces. See the Adopting Multi Root Workspace APIs guide for more information. All the APIs discussed are considered stable and currently available. Note however that multi-root workspaces are only enabled in VS Code Insiders release.

The extension authors guide covers:
- Basic APIs
- Settings
- Impact on extensions that have a language client/server model
- In addition to the guide, there are new samples on our samples repository that exercise the new APIs. Look for samples with 'multi' in their folder name (for example, basic-multi-root-sample.
- Preview: Multi Root Workspaces
- Note: Multi-root functionality is only available in the Insiders build until we are confident enough that we can make it available in Stable. To try it out, grab our Insiders build from https://code.visualstudio.com/insiders.
- We continued working on support for opening multiple folders in a single VS Code window (instance) (issue #396). There was a preview of this feature in our last releases (see 1.14.0 release notes and 1.15.0 release notes).
- During this milestone, we focused on updating extensions to be ready for multi-root workspaces and adding source control support. We also revisited the workspace file format and made the UI transition into multi-root workspaces more pleasant.
- Smooth transition into multi-root workspaces
- There are several ways to turn an empty workspace or single-folder workspace into a multi-root workspace. The transition used to be a bit rough, for example, it was not possible transition with unsaved files. In addition, all the UI state was lost when you created a multi-root workspace. In this milestone, we made the behavior a lot smoother. We still require a window reload, but we have plans to get rid of that step to make the transition fast.

In the animation below you can see how a single-folder window turns into a multi-root workspace. A couple of things happen:
- All UI state is migrated into the workspace and restored (vertical editor layout and opened editors).
- All dirty (unsaved) files are properly restored and you are not prompted to save.
- Workspace settings are copied over into the multi-root workspace (hidden Status Bar, hidden Activity Bar)

Multi root transition:
Creating a multi-root workspace:
- We expanded the ways to create a multi-root workspace in VS Code

Command line:
- There is a new command line argument --add. Use it to add folders on the command line to the currently active window. The new folder argument should be provided as a path. This works for an empty workspace, a single-folder workspace, as well as an existing multi-root workspace
- If you provide multiple folders to open from the command line, we used to open each folder in a separate window. Now, we automatically create a workspace for you and open all folders into a single window.

Drag and drop:
- If you drop folders into VS Code, we used to open each folder into a separate window. With multi-root support, we now open all folders into one window by creating a workspace for you automatically. In addition, you can now drop folders into the File Explorer to add them to the workspace.

Multi root drag and drop:
Native platform File dialogs:
- Finally, when you pick multiple folders from the native file dialog (via File > Open), we will open all folders at once into a workspace. The same is true when you drop multiple folders onto the application icon in the dock on macOS.

New workspace file format:
- The contents of the workspace file (*.code-workspace) was changed during this sprint. You do not have to worry about existing workspace files, they will be migrated to the new format automatically!

A new workspace file now looks like this:
- "folders": [
- "path": "monaco"
- "path": "Projects/vscode-distro"
- "path": "vscode-docs"
- "path": "/Users/bpasero/Development/Microsoft/vscode-extension-sdk"

As you can see, the id property is no longer part of the file. Instead, the location of the workspace file on disk is used to derive an identifier for the workspace. We use this identifier to associate various items with the workspace:
- All UI state (for example, opened editors)
- Dirty (unsaved) files (for Hot Exit)
- Extension storage
- One advantage of this change is that you can now simply copy the workspace file on disk to open the same workspace into multiple windows.
- Another change was done on the folders property: each entry is now an object which gives us the possibility of adding additional metadata to folders in the future. We also went away from using file resources as the format for the folder paths and now simply use paths.
- Finally, we support relative paths in the workspace file! A relative folder path will be resolved against the folder where the workspace file is stored. We automatically store a path as relative if we detect that the location of the workspace file is a parent of the folder. Otherwise the absolute path will be used.

Updates for multi-root workspaces:
The following built-in languages have been updated to support folder specific settings when working with multi-root workspaces:
- Sass (SCSS)
- Less

In addition, the following Microsoft extensions have been updated:
- ESLint
- TSLint
- As mentioned above, there is an multi-root workspace guide to help you update your own extensions

Multi-root and the Language Server Protocol:
- Proposed protocol has been added to the LSP to support multi-root workspaces. Both the VS Code language client and the VS Code language server have been updated to support the proposed protocol. In addition, VS Code's language client has been enhanced to support a server per workspace folder. A corresponding example can be found here.

Preview: Source control:
- There is now support for having multiple source control providers simultaneously. This feature aligns with the work for multi-root workspaces as multiple projects may have different SCM providers

Multiple source control providers:
- You can now work on multiple Git repositories at once or even mix and match with other source control providers, all in a single workbench window
- Miscellaneous
- Electron update
- In this release, we updated from Electron 1.6.6 to 1.7.3. This brings a Chrome update from version 56 to 58 and Node.js from 7.4 to 7.9.

Notable Changes:
- 931: Windows: Cannot save hidden files
- 32550: Explorer: allow to collapse a sub-tree fully via Alt-click
- 6196: VSCode is not per monitor DPI aware
- 29119: Support files.eol as multi root folder setting
- 24795: Using integrated terminal to cat file with lots of unicode hangs terminal
- 24820: Icon shapes broken with rendering artifacts
- 24981: Backspace can not erase the last one character during Chinese/Japanese IME conversion (macOS)
- 32336: terminal.integrated.rightClickCopyPaste isn't working on x64 build

Visual Studio Code 1.15.1
The update addresses these issues:
- July Recovery Release
- Path must be a string. Received { Error: spawn wmic.exe ENOENT
- Emmet falsely suggesting completion with hyphen in parent tag
- Variables disappear when emmet abbreviations get expanded
- Emmet abbreviations don't expand unless there is a space after it
- Tab no longer works with Emmet
- "Find in files" search shows incomplete results
- $(basename).ts hiding JS files without associated TS files

Visual Studio Code 1.15.0
There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
- Large file support - Improved performance for large files, no size limit on 64-bit machines
- 64-bit Windows builds - Use your computer's full address space with the 64-bit builds
- Find in Markdown preview - Full search for Release Notes, Markdown preview, and Extensions
- Auto-indent, Emmet 2.0 on by default - Source code auto-indenting and new Emmet support
- Custom syntax highlighting - Easily adjust editor colors to your liking
- Terminal environment variables - Preconfigure the Integrated Terminal environment
- Color picker UI - Quickly create colors in your CSS, SASS, and Less files
- Loaded Scripts Explorer - Easily review and step through loaded scripts during Node.js debugging
- Markdown preview plugins - Add styles, scripts or plug-ins to Markdown previews
- code.visualstudio.com updates - Tutorials for React, Angular and deploying Node.js to Azure
- Preview: Multi-root workspaces - Settings and debug configurations across multiple projects (Insiders build)

Here are some further updates:
- Editor - Predefined snippet choices, improved auto-indenting and diff editor
- Workbench - Customizable Explorer sort order and view layout, prefilled Quick Open actions
- Integrated Terminal - Improved switching, delete word keyboard shortcuts
- Tasks - Less and Sass compiler output parsing, new Status Bar display
- Extension Authoring - Multi-root support for debugging and settings, new Markdown Preview API

Visual Studio Code 1.14.2
- Had to downgrade from 1.14 to restore JSX intellisense bug javascript upstream verified
- Type intellisense in javascript is missing in 1.14.0 bug javascript new release upstream verified
- Fail to start vscode.typescript extension bug candidate javascript new release typescript verified
- No snippet suggestions after whitespace bug candidate important new release snippets verified
- Word Wrap not working editor editor-wrapping new release verified
- Workspace files.excludes for sub-folders no longer works

Visual Studio Code 1.14.1
The update addresses these issues:
- Bug: Markdown Preview does not work; shows a blank page: VSCode 1.14.0
- Publish node2 with localizations
- Excessive logging of `vscode.workspace.rootPath`-usage causes high CPU load
- Any Git operations requiring credentials no longer work
- Snippet can freeze the editor
- HTML saving as RHTML
- Monokai Dimmed syntax highlighting is different - with less distinctions
- Add ability to theme terminal cursor
- Select for Compare disables context menu in OPEN EDITORS
- Terminal copied lines do not retain wrapped status for the initial viewport

Visual Studio Code 1.14.0
There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
- Integrated Terminal improvements - Find support, select/copy multiple pages
- Command Palette MRU list - Quickly find and run your recently used commands
- New Tasks menu - Top-level Tasks menu for running builds and configuring the task runner
- Automatic indentation - Auto indent while typing, moving, and pasting source code
- Emmet abbreviation enhancements - Add Emmet to any language. Multi-cursor support
- New Diff review pane - Navigate Diff editor changes quickly with F7, displayed in patch format
- Angular debugging recipe - Debug your Angular client in VS Code
- Better screen reader support - Aria properties to better present list and drop-down items
- Preview: 64 bit Windows build - Try out the Windows 64 bit version (Insiders build)
- Preview: Multi-root workspaces - Open multiple projects in the same editor (Insiders build)

Here are some further updates:
- Workbench - Restore loose files, quickly switch running windows (instances)
- Languages - TypeScript 2.4, refactoring for JavaScript/TypeScript
- Debugging - Simplifications for Node.js debug configurations
- Tasks - Auto-detect and customize npm scripts and TypeScript compiler to run in VS Code
- Extension Authoring - SVG rendering constraints, custom views visibility, new Debug API

Visual Studio Code 1.13.1
The update addresses these issues:
- Text disappeared after update to 1.13 [Bug]
- There is no Chinese after the update
- Bad text colors in terminal in Solarized Dark theme (regression)
- Contributed tree views can crash the explorer
- VS code icons is distorted when invoked from the command line
- Terminals created before panel is initialized have the wrong width
- Terminal: Unicode characters in or near linkified text are causing links to be duplicated

Visual Studio Code 1.13.0
Welcome to the May 2017 release of Visual Studio Code. There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
- Changes to settings defaults - We're enabling several useful features by default such as extensions auto-update, editor drag and drop and minimaps
- Set multiple cursors with Ctrl/Cmd + Click - Add multi-cursors just like Sublime Text and Atom
- Improved Git merge - Inline merge actions with Accept Changes CodeLens
- Better IntelliSense details - Easily toggle full suggestion documentation
- Emmet abbreviations display - Preview Emmet expansions as you type
- Enhanced snippets - Increase your productivity with multi-cursor and nested snippets
- Faster debugger performance - Stepping through source code is significantly faster
- File links in exception stack traces - Jump directly to source code from exception stack traces
- Docker and MERN debugging recipes - Debug configuration examples for Docker and MERN stack projects
- More workbench theming colors - We've added more VS Code customizable colors
- Better NVDA support - Accessibility improvements for the NVDA screen reader

Other Updates:
- Workbench - Filenames in symbol search, disable menu bar mnemonics
- Editor - Resizable Find widget, new folding control settings
- Languages - JSX/TSX component highlighting, Markdown headers in symbol search
- Debugging - Copy All from Debug Console, local/remote paths in launch configurations
- Tasks - Autodetect and customize Gulp and Grunt tasks to run in VS Code
- Extension Authoring - Custom views in the Explorer, reference theme colors

Visual Studio Code 1.12.1
- Fixes an issue with .NET debugging

Visual Studio Code 1.11.2
- We are releasing a 1.11.2 update to add the 1.11 translations and address a handful of issues

Visual Studio Code 1.11.1
Welcome to the March 2017 release of Visual Studio Code. There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
- Preview: Workbench theming - We're working to make the entire VS Code workbench colors customizable.
- Keyboard shortcuts editor - New keyboard shortcut editor to easily rebind commands to your preferred shortcuts.
- Faster search - Faster text search as well as respecting .gitignore files.
- Panel maximize and restore - Quickly open panels (Output, Terminal, Debug Console) to full size.
- Copy with drag and drop - Choose whether to copy or cut when you drag and drop in the editor.
- Terminal link validation - Integrated Terminal link validation and new customization settings.
- Implementer CodeLens for TypeScript - See who implements an interface or abstract class in a CodeLens window.
- New Debug menu - Run Debug commands directly from the main menu.
- Async call stacks - Async JavaScript call stacks now displayed in the debugger.
- Source Control API released - The Source Control API is now public, opening up VS Code to new SCM providers.

The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:
- Editor - Better file encoding detection, tune automatic suggestions, set the default language mode.
- Workbench - Quickly navigate between and resize views, reveal editor if already open.
- Languages - TypeScript 2.2.2, simplified TypeScript server log collection, Objective-C++ support.
- Debugging - Column breakpoints improvements, additional exception information.
- Node.js Debugging - Call stacks show async frames, access loaded scripts.
- Tasks - Extensions can no

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more