March 2020 (version 1.44)
April 5, 2020 · View on GitHub
Welcome to the Insiders build. These are the preliminary notes for the March 1.44 release of Visual Studio Code. As we get closer to the release date, you'll find details below about new features and important fixes.
Until the March milestone release notes are available, you can still track our progress:
- March iteration plan - Review what's planned for the milestone.
- Commit log - GitHub commits to the vscode open-source repository.
- Closed issues - Resolved bugs and implemented feature requests in the milestone.
We really appreciate people trying our new features as soon as they are ready, so check back here often and learn what's new.
If you find issues or have suggestions, you can enter them in the VS Code repository on GitHub.
Workbench
Quick Open rewrite
The Quick Open (kb(workbench.action.quickOpen)) control was using an old version of our tree widget, and in this iteration it was migrated to use our latest list control, already used in the rest of the VS Code UI. Functionally, you should not be able to tell the difference, as all commands will work as before.
We did take this opportunity to add some features that you might find useful.

Navigate from files to symbols
You can now continue to navigate to the symbols of a file result simply by typing @. For the file that is currently selected, all symbols will appear and the editor will open in the background to reveal the active symbol.

Filter results by separating multiple queries with spaces
If you are getting too many results for a file search, you can add more search patterns after typing a space. For example, you can narrow down results by folder if you type <file name> <folder name> one after the other.

Note: This also works for the editor (kb(workbench.action.gotoSymbol)) and workspace (kb(workbench.action.showAllSymbols)) symbol picker. Any filter after a space character will be used to filter by the container of that symbol.
Input is preserved when switching providers
If you leave Quick Open visible and switch to another provider (for example, from file search to symbol search), VS Code will apply whatever filter is typed and use it for the new provider. This allows you to quickly reuse the typed input for symbol search when it was previously used for a file search.
Sort editor history strictly by recency
A new setting "search.quickOpen.history.filterSortOrder": "recency" allows you to sort editor history by the most recently opened items, even when starting to search. By default, editor history results will be sorted by relevance based on the filter pattern that was used.
Control height of tabs scroll bar
A new setting workbench.editor.titleScrollbarSizing lets you increase the size of the scroll bar for editor tabs and breadcrumbs.
Configure it to large for a larger scroll bar:

Explorer shows hidden files and their path if they are opened and visible
If a file is hidden (via files.exclude) and it is open and visible in the editor area Explorer will now show it and its parent chain. Those files and their parents are shown in the Explorer using a dimmed color as long as the file is visible in the editor area.
Improved Extension Pack display
To identify Extension Packs in the Extensions view, a number badge now shows the number of extensions included in the Extension Pack.

Theme: GitHub Sharp with Customizations
The Extension details page now shows all extensions included in the Extension Pack.

Theme: GitHub Sharp with Customizations
View: Reopen with
The new View: Reopen with command lets you reopen the currently active file using a different custom editor.

You can use this command to switch between VS Code's standard text editor and the custom editor, or to switch between multiple custom editors for a resource.
The workbench.editorAssociations setting
Also for custom editor, the new workbench.editorAssociations setting lets you configure which editor is used for a specific resource.
The example below configures all files ending in .catScratch to open using the example custom text editor from our extension samples.
"workbench.editorAssociations": [
{
"viewType": "catCustoms.catScratch",
"filenamePattern": "*.catScratch"
}
]
Editor
Explicit ordering for editor.codeActionsOnSave
You can now 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:
"editor.codeActionsOnSave": [
"source.organizeImports",
"source.fixAll"
]
Accessibility
This milestone we received great feedback from our community, which helped us identify and tackle many accessibility issues.
Highlights are:
- Diff view is now more accessible. Use
kb(editor.action.diffReview.next)andkb(editor.action.diffReview.prev)to navigate through changes and use the Stage / Unstage / Revert Selected Ranges commands to stage, unstage, or revert the current change. - Better roles used across our widgets. The
listboxrole is used for the Suggest widget and Quick Pick,listfor static lists, anddocumentfor read-only content such as the Welcome view and Markdown preview. - Tuned the behavior of our Quick Pick widget
- The current line CodeLens can now be shown in the Quick Pick with the Show CodeLens Commands For Current Line.
The full list of issues fixed can be found here.
Debugging
Call stack view improvements
The CALL STACK view is a complex view because it shows different types of objects (sessions, processes, threads, stack frames, and separator elements) and provides different actions for different types. In order to make it easier to differentiate the object types and to understand their supported interactions, we have started to make some visual improvements:
- Debug sessions are now decorated with an icon.
- Clickable elements use the link color.
- Smaller separator and presentation elements.

Progress feedback UI for debug extensions
VS Code now supports the "progress events" that were proposed for the Debug Adapter Protocol (DAP) in the last milestone. With progress events, a debug extension can provide feedback to users for long running operations.
The VS Code debugging UI shows progress feedback in two locations:
- As a progress bar at the top of the debug view.
- As a "silent notification", which means that progress is shown "silently" (without interrupting the user) in the Status bar and can be opened into a notification by clicking on it. The notification shows more detailed information and allows cancellation of the underlying long running operation (if the operation supports this).
In order to avoid flicker for short operations, the progress UI only starts after a 0.5 second delay.
The following video shows the new progress UI for a (simulated) long running operation in Mock Debug (the only supporting debug extension as of today). We expect that other debug extensions will adopt the progress support soon.

Code completion in the debug console now supports to control the selection
In the last milestone, we added "selection control" to the "completion" request of the Debug Adapter Protocol. With this release, VS Code now fully supports the protocol addition and a debug extension can adjust the selection (or insertion point) after a completion item has been inserted.
Integrated Terminal
All menu bar mnemonics to skip terminal
When the new setting terminal.integrated.allowMenubarMnemonics is enabled, all keystrokes using Alt will skip the terminal so they get processed by VS Code's keybinding manager, making all menu mnemonics work at the cost of Alt hotkeys within the terminal. This is disabled by default.
Languages
Finer grained control over auto import style in JavaScript
The new javascript.preferences.importModuleSpecifierEnding setting lets you control the style of imports that VS Code's auto imports use. This can be useful if you are writing code for platforms such as browsers that support native ES6 modules.
Possible values are:
auto— The default. Uses the project'sjsconfigto determine the import style to useminimal— Use's node.js style imports. This shortens imports forsrc/component/index.jstosrc/component.index— Include theindexpart of the path as well. This shortenssrc/component/index.jstosrc/component/index.js— Use the full path, including the file extension (.js).
Preview features
Preview features are not ready for release but are functional enough to use. We welcome your early feedback while they are under development.
Settings Sync
In this milestone, we enabled synchronizing User Snippets and more UI State.

Theme: GitHub Sharp with Customizations
Currently following UI State is synchronized:
- Display Language
- Activity Bar entries
- Panel entries
- Views layout and visibility
- Recently used commands
- Do not show again notifications
Note: Currently only user language snippets are synchronized and global snippets will be supported in next milestone.
We also added remote and local sync backup views for restoring your data and trouble shooting. You can access these views using commands Preferences Sync: Show Remote Backup and Preferences Sync: Show Local Backup.

Theme: GitHub Sharp with Customizations
To learn more, you can go to the Settings Sync Documentation.
Accounts Management
Extensions that contribute an Authentication Provider will now have their accounts appear under a new accounts context menu by the settings gear. You can view all accounts you are currently signed into, sign out of them, and manage trusted extensions. Signing into a Microsoft account from here is another way to start settings sync.

Theme: Pop Light with Customizations
TypeScript 3.9 beta support
This iteration we added support the new TypeScript 3.9-beta features. Some highlights of TypeScript 3.9 include:
- Suggestions for the
// @ts-expect-errordirective. - Refactorings that better preserve newlines and formatting.
- Auto imports in JavaScript can now add common JS style imports (
require(...))
You can easily try all the new TypeScript 3.9 features today by installing the TypeScript Nightly extension. Please share feedback and let us know if you run into any bugs with the TypeScript 3.9 beta!
Contributions to extensions
Docker
The 1.0 version of the Microsoft Docker extension is now available. The Docker extension helps you build applications using Docker containers. The extension can add required Docker files to your project, build Docker images, let you debug your app inside a container, and includes an Explorer that makes it easy to start, stop, inspect, and remove containers and images.

Feature highlights in 1.0 include:
- Improved Dockerfile scaffolding for Python Django & Flask web frameworks.
- A Compose.yml file is now optional when adding Docker files to a workspace.
- Node.js, Python, and .NET Core support integrated debugging of a single service using a Dockerfile.
- Work easily with multiple containers and images.
Extension authoring
Welcome View Content API
Certain views now support Welcome content contributed from extensions. Refer to the original issue for more information.
This API was added as proposed in the last milestone and we have now finalized it.
Semantic Token Theming
Color themes can now write rules to theme semantic tokens reported by language extension like TypeScript.
"semanticTokenColors": {
"variable.readonly:java": "#ff0000"
}
This rule above colors all readonly variables in a Java file red.
Other examples of rules:
"*.declaration": { "fontStyle": "bold" }"class.defaultLibrary:typescript": { "foreground": "#00ff00" "fontStyle": "bold" }
See the Semantic Highlighting Wiki Page for more information.
File system error code
We have added FileSystemError#code, which is a string identifying the error. When a file system error is created through any of its factory functions, then code is the name of that function, for example FileSystemError.FileNotFound(msg).code === 'FileNotFound'
Arguments for StatusBarItem.command
StatusBarItem.command now accepts a full Command object instead of just a command id. This lets you pass arguments to the command when the status bar item is activated.
Custom Text Editors
With custom text editors, extensions can now replace VS Code's standard editor with a custom webview based view for specific text based resources. Potential use case include:
- Previewing assets, such as shaders or
.objfiles. - Creating WYSIWYG editors for markup languages such as XAML.
- Providing alternative, interactive views of data files such as json or csv.
The custom editors documentation covers how to use the new custom text editor API and how to make sure your new editor works well with VS Code. Also be sure to check out the custom editors extension sample.

Next iteration, we're hoping to finalize the full custom editor proposal that extends custom editors to also support binary files.
Debug Adapter Protocol
New progress events
We've finalized support for reporting progress in the Debug Adapter Protocol. Debug adapters can now send progress events (progressStart, progressUpdate, and progressEnd) to the frontend client, in order to display progress for long running debug adapter operations. The progressStart event can be marked as cancellable to make the client present a cancellation UI and send an cancel request.
In order to enable progress events in a supporting debug adapter, the frontend client needs to include the new client capability supportsProgressReporting in the initialize request.
More details can be found in the corresponding DAP feature request. VS Code supports progress events starting with this milestone.
Clipboard context value for the "evaluate" request
DAP clients (frontends) use the evaluate request when copying variable and expression values to the clipboard. To help debug adapters detect this scenario, a new value clipboard has been added to the value set for the context argument that is passed to the evaluate request. To ensure backward compatibility, a client is only allowed to pass the new value if the debug adapter returns a supportsClipboardContext capability.
Proposed extension APIs
Every milestone comes with new proposed APIs and extension authors can try them out. As always, we are keen on your feedback. This is what you have to do to try out a proposed API:
- You must use Insiders because proposed APIs change frequently.
- You must have this line in the
package.jsonfile of your extension:"enableProposedApi": true. - Copy the latest version of the
vscode.proposed.d.tsfile into your project's source location.
Note that you cannot publish an extension that uses a proposed API. There may be breaking changes in the next release and we never want to break existing extensions.
Terminal link handlers
This new API allows extensions to intercept and handle links that are clicked in the terminal.
window.registerTerminalLinkHandler({
handleLink((terminal, link) => {
if (link === 'https://code.visualstudio.com') {
window.showInformationMessage('Handled');
return true;
}
return false;
});
});
Contribute to terminal environments
This new API allows extensions to change environment variables when the terminal is starting up.
const collection = window.getEnvironmentVariableCollection(true);
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');
These collections are extension and workspace-specific and VS Code handles how conflicts between multiple extensions are dealt with. They can optionally be persisted across window reloads, care was taken to ensure this is done in such a way that terminals created immediately after the window is loaded do not block on the extension host launching but instead use the last known version. These persisted collections can get removed by disposing of the collection or create a new non-persistent collection, or when the extension is uninstalled.
The plan is to surface these environment modifications to the user and some indicator that allows updating or "stale" terminal environments but this is still a work in progress. You can follow the discussion in #46696.
Browser support
Remote indicator
When using VS Code in a browser, there is now a remote indicator. This lets you know the remote environment you are connected to and allows extensions to add additional commands associated with the remote. With this change, the Open in Desktop link was removed from the Status bar and will move into the remote picker.
Note: VS Code currently does not support connecting to a different remote - such as SSH, a container, or WSL - from the browser.

Navigational links
A new menu location lets extensions running in the browser contribute links to the hamburger menu in the upper left.

New Commands
We now expose commands for navigating through search results in the Find control from the Editor, Integrated Terminal, Extension Details view, and Webviews.
| Key | Command | Command ID |
|---|---|---|
kb(workbench.action.alternativeAcceptSelectedQuickOpenItem) | Alternate Accept Quick Open Item (such as Open to Side) | workbench.action.alternativeAcceptSelectedQuickOpenItem |
kb(codelens.showLensesInCurrentLine) | Show CodeLens for Current Line | codelens.showLensesInCurrentLine |
Engineering
VS Code compiles to ES6
VS Code has adopted ES6 - all the way. Thanks to TypeScript, we have been using ES6-syntax for a long time, but we now assume that the target runtime also supports ES6. This allows us to use ES6 "globals" like Strings#endsWith and allows the use of new language features, like generator-functions and symbols.
New documentation
Python
There are two new Python tutorials:
- Python in a container - Learn how to build a Python application in a Docker container.
- Python for Data Science - Use Python data science libraries to create a machine learning model.
C++
We've updated the C++ extension tutorials and added a new tutorial specific to Using C++ on Linux.
Notable fixes
- 75932: Debug failed to load: Process picker failed (your 131072x1 screen size is bogus, expect trouble)
- 84271: Add "x" to remove a file from recently opened (quick pick)
- 89658: No debug adapter found
- 92381: "Add folder to workspace" prompt duplicates itself if you add and then remove a folder from the workspace repeatedly
- 93344: Welcome view should scroll
- 93634: Progress: let window progress turn into silent notification progress
Thank you
Last but certainly not least, a big Thank You! to the following folks that helped to make VS Code even better:
Contributions to vscode:
- Andrew Branch (@andrewbranch): [typescript-language-features] Add importModuleSpecifierEnding preference PR #90405
- Andy Barron (@AndyBarron): editor.codeActionsOnSave: support both object and array configs PR #92681
- Benny Neugebauer (@bennyn): fix typing for proxy auth window options PR #91954
- Benno (@blueworrybear): update #91296 allow multiple workspace roots PR #92082
- Charles Gagnon (@Charles-Gagnon): Alert input box messages anytime shown PR #92531
- @dependabot[bot]: Bump acorn from 6.3.0 to 6.4.1 in /extensions/markdown-language-features PR #92742
- Gustavo Sampaio (@GustavoKatel): Easy pick codelenses with keyboard shortcut PR #91232
- Huachao Mao (@Huachao): Fix typo of word extension PR #93178
- Hyun Sick Moon (@hyun6): fix typo PR #93291
- Ilia Pozdnyakov (@iliazeus)
- @jaqra: Fix search view 'Toggle Search Detail' padding PR #91429
- Jean Pierre (@jeanp413)
- Jonas Dellinger (@JohnnyCrazy): Allow users to make the scrollbars in the title area larger PR #92720
- @nrayburn-tech: Use ResizeObserver for monaco editor automaticLayout PR #93630
- Raul Piraces Alastuey (@piraces): Fix history entries navigation taking extra navigates in debug console PR #93125
- Robert Rossmann (@robertrossmann): Inherit theme text colour in Settings Editor's section headings PR #93605
- Sharak (@SharakPL): WebView width fix PR #93085
- Tobias Hernstig (@thernstig): Add .npmrc file association as ini-file PR #92397
- Matej Urbas (@urbas)
- Alvaro Videla (@videlalvaro)
- David Teller (@Yoric): Fixes #91913 : Exclude /.hg/store/ from the file watcher PR #91941
Our accessibility community for providing constant feedback! To name a few: Florian Bejers (@zersiax), José Vilmar Estácio de Souza (@jvesouza), Andy Borka (@ajborka), Dickson Tan (@Neurrone), Joan Marie (@joanmarie), Pawel Lurbanski (@pawelurbanski), Bryan Duarte (@RedEyeDragon), Alex Hall (@mehgcap), Michał Zegan (@webczat), Nolan Darilek (@ndarilek), Alexander Epaneshnikov (@alex19EP), Marco Zehe (@MarcoZehe), Leonard de Ruijter (@leonardder), Ivan Fetch (@ivanfetch)
Contributions to vscode-vsce:
- Bob Brown (@bobbrow): Change a console.warn to console.log for an informational message PR #434
- James George (@jamesgeorge007)
Contributions to language-server-protocol:
- Aleksey Kladov (@matklad): Add link to section PR #942
Contributions to vscode-languageserver-node:
- Remy Suen (@rcjsuen): Reword type and modifier descriptions PR #588
- Tom Raviv (@tomrav): Fix npm badges in text-document package readme PR #592
- Heejae Chang (@heejaechang):
Contributions to vscode-generator-code:
- Sibiraj (@sibiraj-s): Remove deprecated
useColorsmocha api PR #196
Contributions to localization:
There are over 800 Cloud + AI Localization community members using the Microsoft Localization Community Platform (MLCP), with over about 170 active contributors to Visual Studio Code. We appreciate your contributions, either by providing new translations, voting on translations, or suggesting process improvements.
Here is a snapshot of contributors. For details about the project including the contributor name list, visit the project site at https://aka.ms/vscodeloc.
- Chinese (Simplified, China) Tingting Yi, Yizhi Gu, Charles Dong, Justin Liu, Joel Yang, Tony Xia, 朱知阳, meng shao, 普鲁文, paul cheung, 张锐, Yiting Zhu, Nong Zhichao, Liam Kennedy, 武 健, Zhao Liguo, 宁 倬, Bochen Wang, 一斤瓜子, 顺 谭, 云 何, Yun Liu, yungkei fan.
- Chinese (Traditional, Taiwan) 船長, Winnie Lin, 予 恆.
- Czech David Knieradl.
- Danish (Denmark) Javad Shafique, Lasse Stilvang.
- English (United Kingdom) Martin Littlecott, Oren Recht, Faris Ansari.
- Finnish (Finland) Teemu Sirkiä.
- French (France) Antoine Griffard, Thierry DEMAN-BARCELÒ, Rodolphe NOEL, Nathan Bonnemains.
- Hebrew (Israel) Chayim Refael Friedman, Asaf Amitai.
- Indonesian (Indonesia) Gerry Surya, Laurensius Dede Suhardiman.
- Italian (Italy) Alessandro Alpi, Riccardo Cappello.
- Japanese (Japan) Ikko Ashimine, Aya Tokura, Takayuki Fuwa, ちゃん きさらぎ, 住吉 貴志, Koichi Makino, Yoshihisa Ozaki, TENMYO Masakazu.
- Korean (Korea) Kyunghee Ko, June Heo.
- Norwegian (Norway) Torbjørn Viem Ness.
- Polish (Poland) Makabeus Orban, Kacper Łakomski.
- Portuguese (Brazil) Alessandro Trovato, Marcelo Fernandes, Arthur Lima, Luciana de Melo, Luiz Gustavo Nunes.
- Portuguese(Portugal) Pedro Filipe.
- Russian (Russia) Andrey Veselov, Vadim Svitkin, Минаков Антон.
- Spanish (Spain, International Sort) Sifredo Da Silva, Ariel Costas Guerrero, David Roa, Abdón Rodríguez P., Luis Manuel, Carlos A. Echeverri V.
- Swedish (Sweden) Per Ragnar Edin.
- Tamil (India) krishnakoumar c.
- Turkish (Turkey) Umut Can Alparslan, Mehmet Yönügül.
- Ukrainian (Ukraine) Nikita Potapenko.
- Vietnamese (Vietnam) Hieu Nguyen Trung.