Visual Studio Code Changelog

What's new in Visual Studio Code 1.88.0

Apr 4, 2024
  • Apply custom editor labels - Distinguish between editors with same file names.
  • Locked scrolling - Compare editors side-by-side with synchronized scrolling.
  • Extension update improvements - Restart extensions without reload & update extensions with VS Code releases.
  • Test Coverage API - Native code coverage support in VS Code.
  • Folding markers in minimap - Easily identify and navigate to code sections from minimap.
  • Quick Search improvements - Sticky file path separators and separator buttons.
  • Notebook Run cells in section - Quickly run all cells in a notebook section.
  • Copilot improvements - Improved inline chat UI, commit messages, and used references.
  • Python auto-detect improvements - Detect startup files for Flask & Django, discover Hatch environments.
  • Preview: Terminal inline chat - Start a Copilot inline chat conversation directly from the terminal.

New in Visual Studio Code 1.87.2 (Mar 12, 2024)

  • The update addresses this security issue - Elevation of Privilege Vulnerability

New in Visual Studio Code 1.87.1 (Mar 8, 2024)

  • The update addresses these issues:
  • Visual Studio Code insiders is now sending textDocument/didOpen messages for notebooks.
  • Occurrence highlighting stuck
  • February 2024 Recovery 1

New in Visual Studio Code 1.87.0 (Feb 29, 2024)

  • Voice dictation in editor - Use your voice to dictate directly in the editor.
  • Multi-cursor inline suggestions - Review and accept inline suggestions for multiple cursors.
  • Copilot-powered rename suggestions - Get rename suggestions for symbols from Copilot.
  • Side-by-side preview refactoring - Preview refactorings across files with multi diff editor.
  • Smarter Python imports - Improvements for adding missing Python imports.
  • Sticky scroll in editor - Sticky scroll is enabled by default in the editor.
  • Multi-language support for speech - Multiple languages supported for speech recognition.
  • Copilot suggestions for dev containers - Get template and feature suggestions for dev container configurations.

New in Visual Studio Code 1.86.2 (Feb 16, 2024)

  • The update addresses these issues:
  • Restore Node.js env variables in integrated terminal when launching from CLI on macOS
  • Supported ffmpeg codecs broken in 1.86
  • January 2024 Recovery 2
  • "Surround with snippet" command is gone

New in Visual Studio Code 1.86.1 (Feb 12, 2024)

  • This update addresses these issues:
  • Provide legacy server when remote requirements fail
  • Map removed gnome backend values for safe storage
  • Problematic Behavior of Audio Cues and Accessibility-Related Text Notifications in Code Editor
  • Tomorrow Night Blue theme: keyword color wrong after update to 1.86.0
  • [Accessibility] Subsequent "Hey Code" does not work in the Chat view
  • Provide legacy server when remote requirements fail
  • Zoom level indicator always reset to level 1
  • Workaround for machines that do not have glibc >= 2.28
  • January 2024 Endgame Recovery 1

New in Visual Studio Code 1.86.0 (Feb 1, 2024)

  • There are many updates in this version that we hope you'll like, some of the key highlights include:
  • Per-window zoom levels - Adjust the zoom level for each window independently.
  • Hey Code voice command - Start a chat session with a voice command.
  • Multi-file diff editor - Quickly review diffs across multiple files in the diff editor.
  • Triggered breakpoints - Efficient debugging with breakpoint dependencies.
  • Expanded Sticky Scroll support - Sticky Scroll in tree views and notebooks.
  • Markdown paste options - Rich paste support for links, video, and audio elements.
  • Flexible Auto Save options - Skip Auto Save on errors or save only for specific file types.
  • Source Control input - Customize commit input and per-language editor settings.
  • Extension notifications - Fine-grained control for disabling notifications per extension.
  • GitHub Copilot updates - Improved default context, add file as context, AI fixes.

New in Visual Studio Code 1.85.2 (Jan 19, 2024)

  • Update Electron 25 builds

New in Visual Studio Code 1.85.0 (Dec 8, 2023)

  • There are many updates in this version that we hope you'll like, some of the key highlights include:
  • Floating editor windows - Drag and drop editors onto your desktop.
  • Accessible View workflow - Smoother transitions to and from the Accessible View.
  • Finer extension update control - Choose which extensions to auto update.
  • Source Control incoming and outgoing view - Easily review pending repository changes.
  • JavaScript heap snapshots - Visualize heap snapshots including memory object graphs.
  • TypeScript Go to Definition from inlay hints - Jump to definition from inlay hint hovers.
  • Python type hierarchy display - Quickly review and navigate complex type relationships.
  • GitHub Copilot updates - Inline chat improvements, Rust code explanation.
  • Preview: expanded Sticky Scroll support - Sticky Scroll in tree views and the terminal.

New in Visual Studio Code 1.84.1 (Nov 6, 2023)

  • The update addresses these issues:
  • Copilot setting button does not show up in Insiders or Stable
  • Standard view shortcuts no longer working when primary bar is hidden
  • Toggle Inline Chat Icon gutter item appears when inline chat isn't available

New in Visual Studio Code 1.84.0 (Nov 1, 2023)

  • More audio cues - New audio cues to indicate clear, save, and format activity.
  • Activity bar position - Move Activity bar to the top for compact display.
  • Hide editor tabs - Show multiple, single, or no editor tabs.
  • Maximize Editor Groups - Quickly expand the active Editor Group.
  • Python improvements - Better run code in terminal, easier virtual environment creation.
  • FastAPI tutorial - Learn about developing Python FastAPI apps with VS Code.
  • Gradle for Java - Improved support for Java Gradle projects.
  • Preview: GitHub Copilot - Chat "agents", generate commit messages, terminal support.

New in Visual Studio Code 1.83.1 (Oct 12, 2023)

  • The update addresses these issues:
  • Update C# extension recommendation bug candidate extensions verified
  • Basic C# syntax highlighting broke since 1.83 update bug candidate grammar upstream-issue-linked verified
  • Breakpoints not binding on typescript project on one machine candidate verified
  • breaking: codeActionsOnSave bug candidate insiders-released verified
  • vscode always replace symlink settings.json bug candidate config file-io verified
  • September 2023 Recovery 1 endgame-plan
  • CLI server setup fails on Windows on ARM bug candidate verified
  • Theme colour applied to SVG icons bug candidate menus ux verified

New in Visual Studio Code 1.82.3 (Oct 3, 2023)

  • The update addresses this security issue:
  • Update to Electron v25.8.1 with patch for CVE-2023-5217

New in Visual Studio Code 1.82.1 (Sep 14, 2023)

  • Update 1.82.1: The update addresses this security issue:
  • Protect against maliciously crafted package.json / .npmrc

New in Visual Studio Code 1.82.0 (Sep 14, 2023)

  • Accessibility improvements - Accessible View support for inline completions, updated keybindings.
  • Built-in port forwarding - Forward local server ports from within VS Code.
  • Sticky Scroll updates - Scrolls horizontally with editor, display last line in scope, folding UI.
  • New diff editor features - Detect moved code, dynamically switch inline and side-by-side view.
  • Command Center displayed by default - Quickly open files or run commands from the title bar.
  • Copy Notebook output - Easily copy cell output as well as generated images.
  • WebAssembly debugging - Decompile WASM code to step through and set breakpoints.
  • New TypeScript refactorings - Move to File and Inline Variables refactorings.
  • New Python Formatting topic - Learn how to integrate formatters such as autopep8 and Black.
  • Preview: GitHub Copilot - CreateWorkspace command previews file structure of proposed code.

New in Visual Studio Code 1.81.0 (Aug 3, 2023)

  • Accessibility improvements - Accessible View support for notifications, chat responses, and hovers.
  • VS Code Profiles - Finer control with partial profiles and "Apply to all profiles" options.
  • New diff editor features - Collapse unchanged regions, better diff region text alignment.
  • Git repositories with symlinks - Support for repository paths with symbolic links.
  • Notebook updates - Search text in closed notebooks, "sticky scroll" displays Markdown headers.
  • Python test discovery - Error tolerant pytest discovery continues across all files.
  • Access Jupyter servers in GitHub Codespaces - Connect to a remote Jupyter server in a codespace.
  • GitHub pull request creation - Better base branch detection, remember previous create PR options.
  • Preview: GitHub Copilot UX - Quick Chat improvements, iterative /fix command.

New in Visual Studio Code 1.80.2 (Jul 28, 2023)

  • The update includes this pull request: chore: update builds for [email protected] #189089

New in Visual Studio Code 1.80.1 (Jul 13, 2023)

  • Update 1.80.1: The update addresses these issues:
  • Cannot install copilot pre-release on stable
  • Are choice snippets dangerous now? Breaking extensions completions bug
  • Pick up TS 5.1.6
  • Terminal icon switches every time when pressing Shift key
  • Secrets store onDidChange does not fire in the window where the update was made in VS Code 1.8.0
  • Markdown preview broken after 1.80 update
  • June 2023 Recovery 1
  • Terminal full black
  • EnvironmentVariableCollection.description only works for one extension

New in Visual Studio Code 1.80.0 (Jul 6, 2023)

  • Accessibility improvements - Accessible View for better screen reader support, Copilot audio cues.
  • Better editor group and tab resizing - Set min tab size, avoid unnecessary editor group resizing.
  • Skip subwords when expanding selection - Control whether to use camel case for selection.
  • Terminal image support - Display images directly in the integrated terminal.
  • Python extensions for mypy and debugpy - For Python type checking and debugging in VS Code.
  • Remote connections to WSL - Connect to WSL instances on remote machines using Tunnels.
  • Preview: GitHub Copilot create workspace/notebook - Quickly scaffold projects and notebooks.
  • New C# in VS Code documentation - Learn about C# development with the C# Dev Kit extension.

New in Visual Studio Code 1.79.0 (Jun 8, 2023)

  • Notable fixes:
  • [emmet] http-equiv="X-UA-Compatible" in 2023
  • TreeView.reveal with expand: 3 only expands the first level 3 folder

New in Visual Studio Code 1.78.2 (May 11, 2023)

  • Addresses these issues:
  • Setting NODE_UNC_HOST_ALLOWLIST does not work
  • [json] Error while computing completions with snippets
  • "Unbinding" by using empty command in keybindings.json no longer works in v1.78
  • TypeError: Cannot set properties of undefined (setting 'ELECTRON_USE_V8_CONFIGURED_PARTITION_POOL') for 1.78.0 bug
  • Debugging AL Language
  • Cannot find module 'vscode-windows-ca-certs'
  • Stage/Discard buttons grayed out
  • First-letter navigation in explorer tree views no longer works

New in Visual Studio Code 1.78.1 (May 10, 2023)

  • Update 1.78.1: The update addresses this security issue:
  • JSON schema resulting in CSRF with UNC paths

New in Visual Studio Code 1.78.0 (May 3, 2023)

  • Accessibility improvements - Better screen reader support, new audio cues.
  • New color themes - "Modern" light and dark color theme defaults.
  • Profile templates - Built-in templates for Python, Java, Data Science, and more.
  • Drag and drop selector - Choose how you'd like item links placed into the editor.
  • Standalone color picker - Color picker UI to insert or modify color formats.
  • Quick Fixes for Source Control input - Fix spelling and other errors right in the input box.
  • Markdown drag and drop videos - Easily add video tags in Markdown files.
  • Notebooks insert images as attachments - Choose between an image link, path, or attachment.
  • Git LFS and VS Code for the Web - Use vscode.dev for repos with Git Large File Storage.
  • VS Code Day 2023 - Catch up on the sessions in the YouTube playlist.

New in Visual Studio Code 1.77.3 (Apr 12, 2023)

  • The update addresses these:
  • March 2023 Recovery 3
  • Pick up TS 5.0.4 recovery
  • Clicking Top Edge of Terminal break the Terminal
  • Incorrect layout of welcome page, when there are no suggestions

New in Visual Studio Code 1.77.2 (Apr 11, 2023)

  • Prompt with notification before running a command

New in Visual Studio Code 1.77.1 (Apr 6, 2023)

  • The update addresses these issues:
  • Bump JS Debug
  • Broken syntax highlighting in TS if no semicolon I used after type
  • March 2023 Recovery 1
  • Everytime I click the button " Open Folder'', it will crash and closed automatically.

New in Visual Studio Code 1.77.0 (Mar 30, 2023)

  • Welcome to the March 2023 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
  • Accessibility improvements - New keyboard shortcuts for hovers, notifications, and Sticky Scroll.
  • Copy GitHub deep links - Create permalinks and HEAD links from within the editor.
  • Notebook Format on Save - Automatically format notebooks cells on save.
  • TS/JS switch case completions - Quickly fill in TypeScript/JavaScript switch statements.
  • Python move symbol refactoring - Move Python symbols to an existing or new file.
  • Remote Tunnels update - Reuse existing tunnel and quickly transition from remote to desktop.
  • Ruby documentation - Learn about Ruby language support for VS Code.
  • Preview: expanded GitHub Copilot integration - New inline chat and full AI chat view.

New in Visual Studio Code 1.76.2 (Mar 15, 2023)

  • The update addresses these issues:
  • February 2023 Recovery 2
  • Git gutter not shown in workspace with multiple folders

New in Visual Studio Code 1.76.1 (Mar 9, 2023)

  • Notable fixes:
  • Persist state of badge hiding across reloads and view moves.

New in Visual Studio Code 1.74.2 (Dec 20, 2022)

  • The update addresses these issues:
  • Slow window resizing performance
  • accessibility - keyboard locks up every minute or so using most recent insider build

New in Visual Studio Code 1.74.1 (Dec 14, 2022)

  • The update addresses these issues:
  • Missing TextEditorOptions.indentSize API type
  • Extensions view doesn't auto load if is close when startup VSCode
  • SelectNextCodeAction custom keybinding not working
  • [remote-tunnel]Not connected in vscode : Illegal argument: connectionToken
  • Extensions are not loaded if there is an invalid extensions.json file in extensions folder
  • Typescript/lib/lib.d.ts not found in all jsconfig.json files without target
  • Zsh history not working after update
  • Restart running task not working - Prevented duplicate task from running
  • Previewing of code actions / refactorings stopped working
  • Incorrectly formatted translation in TS extension
  • Pick up TS 4.9.4
  • Git - sync fails silently when changes are in the working tree
  • Markdown scrolls to bottom of doc
  • [insiders] Git Sync Button at the bottom of the screen does not animate when clicked to sync changes
  • Characters not being rendered properly in the terminal

New in Visual Studio Code 1.73.1 (Nov 9, 2022)

  • The update addresses these issues:
  • October 2022 Recovery 1
  • Bug/regression: Renaming local, non-exported variables causes the file to be automatically saved
  • Settings editor More Actions menu clipped
  • Organize Imports broken in 1.73.0
  • improve terminal quick fix telemetry
  • Source Control menu showing wrong branches of worktrees contained in bare repository

New in Visual Studio Code 1.73.0 (Nov 2, 2022)

  • Search include/exclude folders - Quickly set folders to include/exclude in the tree view.
  • Command Center mode shortcuts - Displays commonly used modes before recent files list.
  • Merge editor improvements - Access Combination option to auto merge conflicts.
  • Markdown automatic link updates - File and image links updated on rename/move.
  • More audio cues - Task completed or failed, Terminal Quick Fix available.
  • Vscode.dev protected branch workflow - Create new branch when committing to protected branch.
  • New Python extensions - New standalone extensions for isort, Pylint, and Flake8.
  • Dev Container Templates - Create new Dev Containers based on existing templates.

New in Visual Studio Code 1.72.2 (Oct 13, 2022)

  • Solved issues:
  • September 2022 Recovery 2 Endgame
  • Do not cache activity bar icons (urls) in web
  • Extension sync not working in vscode server web
  • Merge editor saves files using the wrong newlines
  • Commit button disabled after resolving merge conflict

New in Visual Studio Code 1.72.0 (Oct 6, 2022)

  • Document shell integration vscode custom sequences on website
  • Migrate Codespaces content from VS Code docs to GitHub docs
  • Array<A|B> is displayed as A|B[]
  • List the places the Python extension looks for environments in the order that it performs its search
  • Variables-reference page add ${fileDirnameBasename}
  • Add doc to explain the benefit of Timeline view, especially when I commit my changes often
  • WSL docs use deprecated Chrome Debugger as extension example
  • Feature request: Show content of updates in RSS feed
  • VSCode API: contributes.menus missing menu possibilities
  • Add docs that explain 3-way merge editor
  • Contribution points page contains example with resourceScheme but no explanation how to do it
  • Review and update the Azure TOC node
  • Not introduced commands in "Configure C/C++ debugging" chapter
  • Clang error on macbook vscode
  • How to associate a configuration to a workspace
  • Update dev containers content
  • Clarify extension unique name restriction
  • Better Debug documentation for TypeScript
  • Adding a section on e2e testing for WebViews
  • A11y_Visual Studio Code Services_Docs Python_Tutorial_DeveloperTool: Incorrect role given for "Edit" control as "link" and "Button"
  • A11y_Visual Studio Code Services_Docs Setup_Linux_Usability:The "Installation" header has an additional "# installation link" besides it.
  • A11y_Visual Studio Code Services_Blog Posts_Extension Bisect_Resize: At 200% zoom Text and links in the page are getting overlapped when navigated using "shift + tab" key
  • Review and update Configure C/C++ debugging topic
  • Instructions on configuring vscode for chrome extensions debugging
  • Missing File System API extension guide

New in Visual Studio Code 1.71.2 (Sep 16, 2022)

  • The update addresses these issues:
  • August 2022 Recovery 2 Endgame
  • Change default git conflict experience to be the inline editor
  • Stuck with tall WCO
  • Telemetry is broken on the web
  • prompted for trust on behalf of automaticTasks in empty remote workspace
  • Safari not properly rendering Terminal after page reload
  • [Emmet] 'emmet.action.expandAbbreviation' command broken in 1.71.0
  • VSCode always executes the "folderOpen" task after every single task
  • Node JS Debugger Error
  • "Open in Merge Editor" and "Accept Merge" button missing in web
  • windows default close button location moved on its own when updating to v1.71.0
  • tasks shouldn't prompt for trust when trust has been refused

New in Visual Studio Code 1.71.1 (Sep 16, 2022)

  • The update addresses this security issue:
  • Terminal profile elevation of privilege vulnerability

New in Visual Studio Code 1.71.0 (Sep 1, 2022)

  • Welcome to the August 2022 release of Visual Studio Code. August is when many of the engineers on VS Code take their vacations, but there are still many updates in this version that we hope you'll like:
  • Merge editor improvements - Easier transition between text and merge editors.
  • Expanded codecs support - To help display embedded audio and video in notebooks and webviews.
  • File rename selection - Pressing F2 selects filename, whole name, or file extension.
  • New Code Action UI - Quickly find the Code Action you're looking for.
  • Terminal updates - Shell integration for fish and Git Bash, new smooth scrolling.
  • Jupyter notebook image pasting - Paste and preview image files in notebook Markdown cells.
  • TypeScript livestreams - Watch TS "Crash Course" or "Tips and Tricks" on YouTube.
  • Live Preview extension - Live Preview now supports multi-root web projects.
  • Markdown Language Server blog post - Learn how Markdown support moved to a Language Server.

New in Visual Studio Code 1.70.2 (Aug 18, 2022)

  • Addresses these issues:
  • July 2022 Recovery 2 endgame-plan
  • July 2022 Recovery 2
  • INVALID tree item bug candidate insiders-released tree-views verified
  • VS Code pre-release does not reload code on restart of the debugger bug candidate debug insiders-released regression verified
  • Extension contributed submenus missing with errors in output bug candidate menus verified

New in Visual Studio Code 1.70.1 (Aug 11, 2022)

  • The update addresses these issues:
  • Connections to mobile.events.data.microsoft.com
  • Bash shell script issue with "%" sign
  • Terminal Shell Integration Error -- bash: eval: line 5: unexpected token `EOF' in conditional command
  • ZDOTDIR set to /usr/tmp/vscode-zsh with Shell Integration enabled
  • July 2022 Recovery 1
  • Terminal error when starting VS Code from zip on Windows
  • Post commit does not work
  • Remote development: Zombie file watcher processes not cleaned up on remote host
  • actions toolbar without labels in the buttons

New in Visual Studio Code 1.70.0 (Aug 4, 2022)

  • There are many updates in this version that we hope you'll like, some of the key highlights include:
  • Title bar customization - Hide/show menu bar, Command Center, or layout control.
  • Fold selection - Create your own folded regions in the editor.
  • Search multi-select - Select and then act on multiple search results.
  • Tree view search and filtering - Find and filter in tree views such as the Find Explorer.
  • Terminal improvements - Shell integration on by default, extended PowerShell keybindings.
  • Command line option --merge - Use the 3-way merge editor as your default merge tool.
  • Notebooks: Go to Most Recently Failed Cell - Jump directly to notebook errors.
  • Python Get started experience - Quickly install and configure Python within VS Code.
  • Sticky scroll preview - New scrolling UI shows current source code scope.
  • Dev container CLI topic - Learn about the updated development container CLI.

New in Visual Studio Code 1.69.2 (Jul 19, 2022)

  • Fixed:
  • June 2022 Recovery 2 endgame-plan
  • mmet suggestion not automatically display bug candidate confirmed emmet
  • Focus problems with output in notebooks causing Ipywidgets dropdown to not work

New in Visual Studio Code 1.69.0 (Jul 8, 2022)

  • There are many updates in this version that we hope you'll like, some of the key highlights include:
  • 3-way merge editor - Resolve merge conflicts within VS Code.
  • Command Center - New UI to search files, run commands, and navigate cursor history.
  • Do Not Disturb mode - Silence non-critical notification popups.
  • Toggle Light/Dark themes - Quickly switch between preferred light and dark themes.
  • Terminal shell integration - Display command status, run recent commands, and more.
  • Task output decorations - Highlights task success or failure exit codes.
  • Git Commit action button - Configure your default Git Commit action.
  • Debug Step Into Target support - Allows you to step directly into functions when paused.
  • JavaScript sourcemap toggling - Switch to debugging compiled rather than source code.
  • Color theme tester - Use vscode.dev to preview color themes.
  • VS Code Server preview - Run the same server used for Remote Development.

New in Visual Studio Code 1.68.0 (Jun 9, 2022)

  • There are many updates in this version that we hope you'll like, some of the key highlights include:
  • Configure Display Language - See installed and available Language Packs in their language.
  • Problems panel table view - View errors and warnings as a table to quickly filter on their source.
  • Deprecated extensions - Learn whether an extension is deprecated or should be replaced.
  • Extension sponsorship - Support the developers who build your favorite extensions.
  • Hide Explorer files using .gitignore - Reuse your existing .gitignore to hide files in the Explorer.
  • Terminal color and contrast enhancements - Find match background color, min contrast ratio.
  • Git branch protection - Branch protection available right inside VS Code.
  • TypeScript Go to Source Definition - Jump directly to a symbol's JavaScript implementation.
  • VS Code for the Web localization - vscode.dev now matches your chosen browser language.
  • Development Container specification - Learn more about the evolving dev container spec.
  • Preview: Markdown link validation - Detects broken links to headers, images, and files.

New in Visual Studio Code 1.67.1 (May 10, 2022)

  • Git clone protocol handler

New in Visual Studio Code 1.67.0 (May 6, 2022)

  • Explorer file nesting - Nest generated files under source files in the Explorer.
  • Settings editor filters - Filter button brings up searches such as @Modified settings
  • Bracket pair colorization - Colored bracket pairs are now enabled by default.
  • Toggle inlay hints - Ctrl+Alt to quickly hide or show inlay hints in the editor.
  • Drag and drop to create Markdown links - Drop files into the editor to create Markdown links.
  • Find All References in Markdown - Quickly find all references to headers, files, URLs.
  • Java extension updates - Now supporting inlay hints and lazy variable resolution.
  • UX Guidelines for extension authors - Guidance for VS Code extension UI best practices.
  • New Rust language topic - Learn how to use the Rust programming language in VS Code.

New in Visual Studio Code 1.66.2 (Apr 12, 2022)

  • Update 1.66.2: The update addresses these security issues:
  • Git - Disable automatic repository scanning in the root of the HOMEDRIVE
  • Tighten permission in Windows install folder

New in Visual Studio Code 1.66.1 (Apr 7, 2022)

  • Update built in extension ms-vscode.js-debug-companion and ms-vscode.references-view
  • Applciation/json output is not working in vscode notebooks
  • [html] unnecessary 'semicolon expected' errors
  • Double click a word and move with one finger will select other words and lines
  • Jupyter Notebook progress bar is broken
  • Source control repository missed a repository if we have multiple with same name
  • VS Code 1.66 requires GLIBC 2.25 on RHEL 7
  • Problem in html right to left around whitespace
  • Settings editor list fails to render properly after clearing invalid query
  • Rendering whitespace influences bidi layout

New in Visual Studio Code 1.66.0 (Mar 31, 2022)

  • Welcome to the March 2022 release of Visual Studio Code. There are many updates in this version that we hope you will like, some of the key highlights include:
  • Local history - Keep track of local file changes independent of source control.
  • Settings editor language filter - Displays available language-specific settings.
  • Terminal find improvements - Matches are highlighted in the terminal panel and scroll bar.
  • Built-in CSS/LESS/SCSS formatters - Code formatting for CSS, LESS, and SCSS.
  • JavaScript heap profiles - Collect and view JS memory allocations while debugging.
  • VS Code for the Web - Drag and drop files and folders into vscode.dev.
  • Remote - SSH support for Mac - Connect via SSH to Apple Silicon/M1/ARM64 machines.
  • New R language topic - Learn how to use R for data science in VS Code.

New in Visual Studio Code 1.65.2 (Mar 11, 2022)

  • The update addresses these issues:
  • February 2022 Recovery 2 Endgame
  • dependsOn executes wrong tasks in multi-root workspaces
  • Azure-sphere-tools-ui needs to be added to the proposed API list
  • Newline missing when pressing Enter between open/close html tags in React files when tags have attributes
  • Code snippet "Choice" feature no longer working
  • editor.action.smartSelect.expand doesn't work if only basic language features are available
  • f removed from origin name in git log?
  • New notebook 'text/plain' renderer breaks alignment

New in Visual Studio Code 1.65.1 (Mar 8, 2022)

  • The update addresses these security issues:
  • Encode parent authority into webview origin
  • ${env:PATH} not detected on terminal
  • Bump distro and version
  • ${env:PATH} not detected on terminal

New in Visual Studio Code 1.65.0 (Mar 3, 2022)

  • New editor history navigation - Scope Go Back/Go Forward history to editor group or single editor.
  • Light High Contrast theme - Light theme for enhanced VS Code editor visibility.
  • New audio cues - Audio cues for warnings, inline suggestions, and breakpoint hits.
  • Drag and drop Problems and Search results - Drag results to new or existing editor groups.
  • Source Control diff editor management - Automatically close diff editors after Git operations.
  • Debugger lazy variable evaluation - Lazy evaluation of JavaScript/TypeScript property getters.
  • Preview: Terminal shell integration - Rerun terminal commands, command status decorations.
  • VS Code for the Web - Reopen recent local files and folders, improved Git integration.

New in Visual Studio Code 1.64.2 (Feb 11, 2022)

  • The update addresses these issues:
  • January 2022 Recovery 2 Endgame
  • Web: Extension host fails to initialize when certain browser extensions are installed
  • GVFS: can't open file
  • Output view dropdown scrollbar UI is not clickable/usable (regression)
  • jupyter notebook cell pending indicator missing
  • Integrated terminal automatically sends 'Y' when terminating node batch script
  • Latest update breaks due to proxy requirement.
  • Version 1.64.0 breaks task quoting
  • Resizing terminal inside side panel no longer works
  • Part navigation and resizing commands fail on new side panel
  • TypeScript plugin extensions don't load on Windows in 1.64.0
  • Function breakpoints don't seem to be editable anymore
  • Latex - Equation environment in markdown does not work
  • How can we move the new side panel to the right?

New in Visual Studio Code 1.64.1 (Feb 9, 2022)

  • The update addresses these security issues:
  • Restrict which sites out webview iframe can frame
  • Webview arbitrary file read
  • Avoid listening on all interfaces when debugging a remote extension host
  • Bump distro and version

New in Visual Studio Code 1.64.0 (Feb 3, 2022)

  • New Side Panel - Display more views at once with the new Side Panel.
  • Settings editor search - Search now prioritizes whole word matches.
  • Audio cues - Hear when the cursor moves to folded regions, errors, and breakpoints.
  • Unicode highlighting - Avoid highlighting characters in supported languages.
  • Automatic terminal replies - Create automatic responses to common terminal prompts.
  • Notebook UI improvements - Search text in Markdown and output cells.
  • Debug binary data view - View and edit binary data while debugging.
  • Markdown path suggestions - Quickly insert relative file paths and header links.
  • JS/TS surround with snippets - Insert selected code inside snippets.
  • VS Code for the Web - Support for signed GitHub commits in vscode.dev and github.dev.

New in Visual Studio Code 1.63.2 (Dec 16, 2021)

  • Interactive Window should collapse new cells by default
  • November 2021 Recovery 2 Endgame
  • Redundant requests are made to Marketplace
  • Background tokenization is a lot slower in large files
  • Ship TS 4.5.3 — fixes TS Server fatal error: Cannot read property 'flags' of undefined
  • Terminal in Editor rendering errors and disposed errors
  • Snippet suggestions are too eager
  • Terminal breaks when dragging to a different group, only when created in editor area via command
  • Background color is wrong when terminals are created in editor area via command
  • Wrong scroll appears when clicking on

New in Visual Studio Code 1.63.1 (Dec 15, 2021)

  • The update addresses these security issues:
  • Disable unsupported meta http-equiv tags in webviews
  • Do not enable the git extension in restricted mode

New in Visual Studio Code 1.63.0 (Dec 9, 2021)

  • Notable fixes:
  • Unable to run any tasks on a remote windows machine using openssh
  • Google Japanese Input (IME) on Mac - Suggestions Overlap w/ Text
  • Default settings deprecation warning with n breaks the json
  • Asking for nvm to be installed, when it is already
  • debug toolbar does not update if focused thread no longer exists
  • Cannot type Korean. Splitted self or missing
  • Zlib error: invalid distance too far back
  • I cannot save a file when there is another file with longer name
  • Call stack items aren't opening tabs with correct contents
  • Emmet does not work in js/jsx files for VS Code 1.62.2(Universal)
  • Perf: _removePropertiesWithPossibleUserInfo is ~10% of the cost of loading a renderer
  • Perf: Update editor configuration only after extensions are registered
  • vscode.dev can't switch branches in private repositories

New in Visual Studio Code 1.62.3 (Nov 19, 2021)

  • Fixed:
  • Git operations fail due to empty VSCODE_GIT_ASKPASS_EXTRA_ARGS
  • [json] editor stops validating: Invalid regular expression
  • LanguageClient failing to initialize language server on 1.62.1
  • Setting Sync: failed because of Unauthorized (401)

New in Visual Studio Code 1.62.2 (Nov 12, 2021)

  • Fixed:
  • Always use a command line flag together with ELECTRON_RUN_AS_NODE
  • Git operation hangs due to empty string in $GIT_ASKPASS
  • Resolve shell environment failed on 1.62.1
  • 1.62.1 - Sanity testing Mac server is failing
  • WSL Extension instalation failure
  • SetDecorations using contentText do not render on non ASCII lines
  • Custom task problemMatcher results not appearing in problems panel when problem is on the first line
  • Never prompted to select a kernel in Notebooks
  • Semantic highlighting flickers on 1.62.0 and later
  • Editors - pathsToEditors should ignore folders
  • Crash on opening large files with bracket pair colorization
  • Close Remote Connection blocked due to a veto from terminal

New in Visual Studio Code 1.62.1 (Nov 9, 2021)

  • The update addresses this security:
  • Always use a command line flag together with ELECTRON_RUN_AS_NODE

New in Visual Studio Code 1.62.0 (Nov 4, 2021)

  • Visual Studio Code for the Web - vscode.dev (Preview):
  • This iteration, we released a preview of Visual Studio Code for the Web. Visual Studio Code for the Web provides a zero-install experience running entirely in your browser, allowing you to quickly and safely browse source code repositories and make lightweight code changes. To get started, go to https://vscode.dev in your browser.
  • VS Code for the Web has many of the features of VS Code desktop that you love, including search and syntax highlighting, along with extension support to work on your codebase. In addition to opening repositories, forks, and pull requests from source control providers like GitHub and Azure Repos, you can also work with code that is stored on your local machine.
  • Not all extensions can run when VS Code is in the browser. Extensions that are purely declarative, such as themes, snippets, or grammars, can run unmodified in the browser. However, extensions that need to run code must be updated by the extension authors. We'd like to say thank you to the extension authors that already have published their extensions as web extensions.
  • Workbench:
  • Settings editor accessibility:
  • We made various Settings editor accessibility improvements:
  • The Settings editor scrolls back to the top after performing a search, so the user does not end up midway through the search results after each search.
  • The settings scope switcher is accessible via keyboard.
  • Deprecated setting text blocks display an icon. Previously, the deprecated text was distinguished from the rest of the setting text only by color.
  • More UI elements within the Settings editor have the setting ID as their name.
  • Updated search icons:
  • The search icons are now the same weight and the match whole word icon was updated to be more distinguishable from the rest.
  • Parameter hint highlight:
  • VS Code now highlights the current parameter in the parameter hint and the color can be themed via editorHoverWidget.highlightForeground
  • Editor:
  • Improved bracket pair guides:
  • We continued iterating on bracket pair guides. Horizontal lines now outline the scope of a bracket pair. Also, vertical lines now depend on the indentation of the code that is surrounded by the bracket pair.
  • Bracket pair guides can be enabled by setting editor.guides.bracketPairs to true (defaults to false). We added a third option "active" to only show a bracket pair guide for the active bracket pair.
  • The new setting editor.guides.bracketPairsHorizontal controls if and when to render horizontal guides (defaults to active).
  • New themable colors editorBracketPairGuide.background{1,...,6} and editorBracketPairGuide.activeBackground{1,...,6} can be used to customize the color of bracket pair guides
  • Customizable bracket pairs:
  • You can now configure bracket pairs for a specific programming language through settings. editor.language.bracketPairs can be used to configure which bracket characters should be matched. If set, editor.language.colorizedBracketPairs independently configures which bracket pairs are colorized when bracket pair colorization or bracket pair guides are enabled.
  • Display hovers above or below the current line:
  • You can now choose between displaying IntelliSense hovers above (default) or below the current line. By setting editor.hover.above to false, hovers will render below the current line.
  • Unicode directional formatting characters:
  • To address CVE-2021-42574, VS Code now renders Unicode directional formatting characters by default. Consider the following text snippet.
  • The above text snippet contains two explicit directional formatting characters, U+202E (RIGHT-TO-LEFT OVERRIDE) and U+202C (POP DIRECTIONAL FORMATTING). These characters can influence Unicode's Bidirectional Algorithm and could be used to craft source code that renders differently than what compilers would execute.
  • The special rendering of these directional formatting characters can be turned off by setting editor.renderControlCharacters to false. The setting editor.renderControlCharacters is now true by default.
  • Extensions:
  • Verified extension publishers:
  • VS Code now shows if the domains of an extension publisher are verified by the Visual Studio Marketplace.
  • If you are an extension author, more details about how to become a verified publisher can be found in the Publishing Extensions topic
  • Terminal:
  • New default keybindings for special characters:
  • The following keybindings were added that are typically supported in other terminals:
  • ctrl+shift+2: Inputs the null character (0x00).
  • ctrl+shift+6: Inputs the record separator character (0x1E).
  • ctrl+/: Inputs the unit separator character (0x1F).
  • Languages:
  • Configure how HTML completes attributes:
  • There is a new setting html.completion.attributeDefaultValue that lets you choose how values are filled in when an HTML attribute is completed:
  • doublequotes: The value is placed in double quotes (default)
  • singlequotes: The value is placed in single quotes
  • empty: The value is left empty
  • Emmet improvements:
  • The new Emmet: Update Tag command (editor.emmet.action.updateTag) updates the placeholder with the HTML tag to be updated.
  • The extension also activates now when one tries to run any Emmet command. This change should fix an issue where some commands were not found when run from the Command Palette, while also keeping the activation event list more precise so that Emmet does not start up unnecessarily, such as in an empty workspace.
  • For multi-root workspaces, Emmet now sources snippets from all workspace folders, rather than just the first one. As a result, custom snippets from all workspace folders will be suggested when editing an applicable file in the workspace.
  • Notebooks:
  • Find and Replace supports capturing groups:
  • The Find and Replace widget in the notebook editor now supports regular expression capturing groups.
  • In the short video below, replace uses the first (and only) captured text ('a').
  • Better selection of output renderers and mimetypes:
  • Notebook cells can output multiple types of data (mimetypes) that can be rendered in different ways both by VS Code itself and extensions. Previously, VS Code had basic memoization (caching) of the selected renderer for a mimetype, and you could manually configure your preferred mimetypes using the notebook.displayOrder setting. However, VS Code wasn't particularly smart about picking the best renderer for a mimetype, and preferred mimetypes had to be updated manually.
  • Now, preferred renderers are cached on a per-notebook type, level in the workspace. Additionally, if you switch to view a different mimetype, that preference will be updated in-memory for the VS Code session, and you can use the Notebook: Save Mimetype Display Order command to easily update the notebook.displayOrder setting to the working preference.
  • Contributions to extensions:
  • Jupyter:
  • Kernels
  • In order to make it easier to identify kernels, the Jupyter extension now groups kernels in the kernel picker.
  • You can now filter the list of kernels displayed in the kernel picker, either globally or on a workspace basis. This is helpful if you have a large number of kernels installed but usually only work with a subset.
  • To manage the list of kernels displayed, you can use the command Jupyter: Filter Kernels from the Command Palette.
  • Interactive Window:
  • Automatic cell creation when running the last cells in an Interactive Window using Shift+Enter can now be configured via the setting jupyter.newCellOnRunLast. If you don't want the default behavior to add a new cell, you can set jupyter.netCellOnRunLast to false.
  • ESLint:
  • A new version of the ESLint extension has shipped. Major improvements are:
  • Extended support for ESLint version 8.x.
  • The ability to define the rule set that is applied during code action on save and format via the setting eslint.codeActionsOnSave.rules.
  • GitHub Pull Requests and Issues:
  • Work continues on the GitHub Pull Requests and Issues extension, which allows you to work on, create, and manage pull requests and issues. Check out the changelog for the 0.32.0 release of the extension to see the highlights.
  • Remote Development:
  • Work continues on the Remote Development extensions, which allow you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment.
  • Feature highlights in 1.62 include:
  • New setting remote.SSH.foldersSortOrder to sort SSH targets alphabetically or by recent use.
  • Windows Subsystem for Linux indicator lets you quickly know whether you are using WSL 1 or WSL 2.
  • Advanced container configuration videos covering how to persist bash history and work with monorepos.
  • Preview features:
  • TypeScript 4.5 support:
  • This update adds support for the upcoming TypeScript 4.5 release. The TypeScript 4.5 beta announcement post has more information about the new language and tooling features. Some tooling highlights:
  • Method signature completions.
  • JSX attribute completions.
  • More accurate reference counts for the references CodeLens.
  • To start using the TypeScript 4.5 nightly builds, install the TypeScript Nightly extension.
  • Please share your feedback and let us know if you run into any bugs with TypeScript 4.5.
  • Extension authoring:
  • Emoji support in file decorations
  • The file decorations API now supports emojis as badge texts.
  • MarkdownString.supportHtml:
  • The new supportHtml property on MarkdownString enables rendering of a safe subset of raw HTML that appears inside the Markdown text.
  • The supportHtml property defaults to false. When disabled, VS Code will strip out any raw HTML tags that appear in the Markdown text.
  • Engineering:
  • File watching changes:
  • File watching in VS Code changed to a new library, thanks to the work of the Parcel team with their @parcel/watcher. We will gradually roll out this change to all users in the upcoming weeks. Linux users will be happy to learn that the files.watcherExclude now applies natively so that the number of file handles VS Code needs open for file watching can be greatly reduced.
  • The existing files.legacyWatcher setting was changed to an enumeration with these values:
  • on - The new file watcher will never be used.
  • off - The new file watcher will always be used.
  • default - The new file watcher will only be used when you open multi-root workspaces (via a .code-workspace file).
  • You should not notice any difference in your day to day work, but if file watching is broken for you, please report an issue.
  • Progress for Electron sandbox support:
  • As we continue to make the VS Code workbench ready for enabling Electron's sandbox, we made progress on moving Node.js file services out of the workbench window into a different process. The same is true for the file watcher that no longer forks from the workbench window, but from a background process. This change is enabled by default in VS Code Insiders and will be the default in Stable for our November release.
  • Notable fixes:
  • 73061: Enumerable properties mixed with regular properties
  • 130868: Emmet suggestions list missing entries after adding custom snippets.json
  • 131966: Emmet unable to expand abbreviation with onclick attribute
  • 135110: Support different border settings for vertical or horizontal layouts, for in-group editor splitting

New in Visual Studio Code 1.61.2 (Oct 19, 2021)

  • The update addresses these issues:
  • Web: Handles may contain slashes at the end
  • Focus of commit message textbox swaps when files are changed meanwhile

New in Visual Studio Code 1.61.1 (Oct 15, 2021)

  • Fixed:
  • Process handles leaked by pty host on windows
  • September 2021 Recovery Endgame
  • High CPU Usage: Every VS Code window eats 5+% CPU, even idle, even in the background
  • Empty HoverWidget is visible at startup
  • New Telemetry Level should respect my prior settings
  • Source Control bug when creating or changing branch in the workspace

New in Visual Studio Code 1.61.0 (Oct 7, 2021)

  • Split editors within the same group - Quickly create side-by-side editors for the same file.
  • Locked editor groups - Select editor types to automatically lock in an editor group.
  • Better display of deleted and readonly files - Tab decorations highlight deleted and readonly files.
  • Bracket pair guides - Display vertical guides to link matching bracket pairs.
  • Fixed terminal dimensions - Set an active terminal's width and height.
  • Jupyter Notebook improvements - Table of Contents view, full debugging support.
  • Platform-specific extensions - Publish different extension versions for Windows, macOS, and Linux.
  • Virtual Workspaces extension guide - Learn how to update your extension for virtual environments.
  • Advanced container configuration - Tips, code samples, and videos to help configure development containers.

New in Visual Studio Code 1.60.2 (Sep 23, 2021)

  • The update addresses these issues:
  • The GitHub.codespaces extension gets activated twice when creating a new codespace
  • Bundle TS 4.4.3
  • ugust 2021 Endgame Recovery 2 endgame-plan
  • Codespaces: Debugging is broken
  • Automatic language detection overrides openTextDocument API language parameter
  • Undo stops working after focusing webview

New in Visual Studio Code 1.60.1 (Sep 14, 2021)

  • The update addresses these issues:
  • npm script not work in default terminal
  • Context menu command "Open in Integrated Terminal" does not use Default Profile
  • Go to Symbol in Workspace
  • Allow also setting the language_info in a notebook
  • Show Log from Container Creation Progress notification has no effect
  • SSH Remote fails to connect
  • Inline-suggestion appearing at previous cursor location
  • August 2021 Endgame Recovery
  • v1.60: "Auto language select" feature sets "CoffeeScript" language in "Git commit" files
  • Powershell console opens every time I launch VS Code with a project
  • Unable to save notebook when executing a long running cell

New in Visual Studio Code 1.60.0 (Sep 2, 2021)

  • Automatic language detection - Programming language detected when you paste into VS Code.
  • Built-in fast bracket colorization - Fast bracket matching and colorization for large files.
  • Settings editor syntax highlighting - Rich syntax highlighting for setting description code blocks.
  • Custom terminal glyph rendering - Better display of box drawing and block element characters.
  • Set debugging Watch values - Change watched values during a debugging session.
  • Notebook improvements - Markdown link navigation, faster rendering of large outputs.
  • JavaScript/TypeScript inlay hints - Inline hints for parameter names and types, and more.
  • Locked editor group preview - Keep a preferred editor layout by locking the editor group.
  • Python extension testing updates - Better support for test discovery, navigation, and status.
  • Web extension authors guide - Learn how to update your extension for VS Code in the browser.

New in Visual Studio Code 1.59.1 (Aug 20, 2021)

  • The update addresses these issues:
  • Notebooks cannot be opened on 1.59
  • Authentication decryption error
  • tasks.onDidEndTaskProcess is called too many times in VS Code v1.59
  • Perma-hang/crash on M1 MBP with universal build
  • July 2021 Endgame Recovery
  • Stdout generated raw data file not in expected format.
  • Typing repeated dots in js expands to first suggestion

New in Visual Studio Code 1.59.0 (Aug 5, 2021)

  • Extensions view improvements - Rich extension detail hovers, new runtime status tab.
  • Settings editor validation - Quickly find editing errors for object-based settings.
  • Drag and drop terminals - Move terminals across windows to both editor and panel areas.
  • Extended theme customization - Customize multiple color themes at once.
  • Built-in support for Jupyter notebooks - Open .ipynb files directly in VS Code.
  • Notebook UI improvements - Display first line of collapsed cells, Undo/Redo per cell.
  • Testing API finalized - Native support for running tests in VS Code with built-in Test Explorer.
  • Debug Disassembly view preview - Display disassembled C++ code in VS Code.
  • Live Preview extension - Live HTML preview within VS Code with JavaScript debugging support.
  • Remote - Containers devcontainer CLI - Command line interface for working with development containers.

New in Visual Studio Code 1.58.2 (Jul 15, 2021)

  • Update 1.58.2: The update addresses these issues:
  • June 2021 Endgame Recovery 2
  • Only acquire workspace storage locks on the remote extension host
  • Remote extension will not work if it depends on a local UI one
  • Terminal is tiny when extensions create and show them
  • When multiple ghost text parts have line breaks, the first line of the ghost text gets deleted
  • Using command line to open vscode causes code warning
  • Trust and Continue dialog need two clicks on Continue to go away
  • VS Code Terminal doesn't autofocus
  • MacOS: Could not move terminal into editor area after first move

New in Visual Studio Code 1.58.1 (Jul 13, 2021)

  • The update addresses these security issues:
  • Improves Git security with untrusted workspaces bug git important
  • Don't use guessable nonces in webview
  • Update distro hash

New in Visual Studio Code 1.58.0 (Jul 8, 2021)

  • There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Terminals in the editor - Create or move terminals into the editor area.
  • Workspace Trust - Quickly customize Workspace Trust settings, disable Restricted Mode banner.
  • Editor scroll bar customization - Set bar visibility and width, click navigation behavior.
  • Markdown preview KaTeX support - Math support in the Markdown preview.
  • Settings editor improvements - Support for multiple checkboxes and enumeration dropdowns.
  • Sticky debug environment choice - Debugger remembers your previous environment choice.
  • Jupyter Interactive window - Run Jupyter code directly in an interactive window.
  • Jupyter notebook debugging - Debug Jupyter notebook code from within VS Code.
  • 'Open in VS Code' badge - Lets visitors quickly open your GitHub repo in VS Code.
  • Data Science tutorials - Learn about Jupyter Notebooks, PyTorch, and more.

New in Visual Studio Code 1.57.1 (Jun 18, 2021)

  • The update addresses these issues:
  • May 2021 Endgame Recovery
  • Scrolling on mouse click
  • macOS: restore Cmd+W closing the window when all tabs are closed
  • 1.57.0 (Linux): does not launch anymore
  • 1.57.0 (macOS): window behaves different now (fullscreen & priority issues)
  • "Open New External Terminal" doesn't work if no terminal settings are present
  • Entire settings file got erased on new latest update. Just FYI

New in Visual Studio Code 1.56.2 (May 13, 2021)

  • C# syntax highlighting incorrect in 1.56
  • Use shell/shellArgs over defaultProfile if specified
  • HTML files now require an extension to run
  • The default Monokai highlight color is displayed incorrectly
  • No longer scaling toolbar icon
  • On PC 'Delete' key not working on insiders for approx last week
  • Version control icons became minuscule with latest update

New in Visual Studio Code 1.56.1 (May 12, 2021)

  • The update addresses these security issues:
  • Do not invoke resolveWithInteraction over terminal settings
  • Change grunt, gulp and jake task auto detection to be off by default

New in Visual Studio Code 1.56.0 (May 6, 2021)

  • Improved hover feedback - Helps you quickly find clickable editor actions.
  • Terminal profile improvements - Create a custom default terminal profile.
  • Debugger inline values - Display variable values inline during debugging sessions.
  • Notebook KaTeX support - Math support in notebook Markdown cells.
  • Remote - Containers Volume view - Manage mounted volumes within Docker containers.
  • winget installation - VS Code is available via the Windows Package Manager.
  • New introductory videos - Videos for getting started with VS Code as well as working with C++.
  • Terminal tabs preview - Get a first look at managing open terminals with the new tabs view.

New in Visual Studio Code 1.55.2 (Apr 14, 2021)

  • The update addresses these security issues:
  • Limit set of allowed remote CLI commands bug important
  • command: links should be only selectively enabled bug important
  • Spawning php should use its complete disk path bug important
  • Spawning npm should use its complete disk path bug important
  • CSS should use variables when using editor.fontFamily bug important
  • The http.proxy setting should use machine or application scope bug important

New in Visual Studio Code 1.55.1 (Apr 9, 2021)

  • The update addresses these issues:
  • Proxy agent is hijacking requests and redirecting them to localhost
  • Remote extensions are not installed automatically from devcontainer.json
  • ECONNREFUSED debugging browsers in WSL2

New in Visual Studio Code 1.55 (Apr 9, 2021)

  • There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Accessibility improvements - Multi-cursor support and increased line limit.
  • Updated icons for macOS Big Sur - Brand icons that match the visual style of Big Sur.
  • Improvements to breakpoints - Inline breakpoints menu, and more.
  • Editor status decorations - Editor tab status decorations are on by default.
  • Customize keyboard shortcuts editor - Resize columns in the keyboard shortcuts editor.
  • Improved remote ports management - Port forwarding autodetection, regex naming, and more.
  • Terminal profiles - Define profiles in terminal to conveniently launch non-default shells.
  • Notebook improvements - Multiple cell selection, and more customizable diff editor.
  • VS Code on Raspberry Pi - New topic explaining how to install VS Code on Raspberry Pi devices.

New in Visual Studio Code 1.54.3 (Mar 16, 2021)

  • The update addresses this issue:
  • February Recovery 3
  • VS Code is unable to activate a debugger extension because of path casing discrepancies

New in Visual Studio Code 1.54.2 (Mar 12, 2021)

  • The update addresses these issues:
  • Listener leak in Ports view
  • Close terminal warning shows even if no terminal is open
  • Command "View: Join all editor groups" not working after update
  • Pick up TS 4.2.3
  • Cannot find module 'worker_threads' using js debugger auto attach
  • Completed tiles of "Getting Started" don't reopen
  • List focus background needs proper migration
  • Renaming a folder adds it to history
  • FileSystemProvider extension: throwing a FileSystemError in readFile does not report to user
  • Hide pty host unresponsive notification when it becomes responsive again
  • Terminal pty host unresponsive after closing a VS Code window
  • Prevent env var relaunch from extension owned terminals

New in Visual Studio Code 1.54.1 (Mar 7, 2021)

  • Update 1.54.1:
  • The update addresses an issue with an extension dependency:
  • Jupyter Extension cannot use Proposed API in Stable VS Code

New in Visual Studio Code 1.53.2 (Feb 12, 2021)

  • The update addresses these issues:
  • January 2021 Endgame Recovery 2
  • TS Server fatal error: Cannot read property 'indexOf' of undefined
  • <<RENDER ERROR>> in all files
  • Minimap keeps disappearing
  • Fresh install won't open any windows or allow me to open any windows
  • First call to activeDebugConsole.appendLine() while debugging JavaScript doesn't appear in the debug console
  • Cannot unset StatusBarItem background from errorBackground
  • tasks.json npm script does not work with arguments since 1.53
  • v1.53 creates debug.log automatically
  • The default extension for untitled files is not .txt
  • Emmet suggestions bug in SASS files
  • VSCode emmet SASS snippets
  • IME ON at Alt+` key, Focus ALT Menu

New in Visual Studio Code 1.53.1 (Feb 10, 2021)

  • Security issues:
  • Bundle TypeScript 4.1.4
  • Dragging files from explorer to terminal may execute a command
  • Pick up new distro version and bump version

New in Visual Studio Code 1.53.0 (Feb 4, 2021)

  • Welcome to the January 2021 release of Visual Studio Code. There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Wrap tabs - Wrap editor tabs in the workbench instead of having a scrollbar.
  • Configure tab decorations - Add editor tab status decorations.
  • Customize search mode - Use the Search view or open a new Search editor.
  • JavaScript debugging - Support for conditional exception breakpoints and Node.js worker_threads.
  • Notebook UX updates - Outline view for Notebook cells, and breadcrumbs for improved navigation.
  • Markdown preview image auto update - Preview automatically updates when images change.
  • Emmet improvements - Faster performance and supporting the latest features.
  • Extension guidelines - Documented best practices for extension authors.
  • Remote Development video series - Learn to create and configure container-based environments.

New in Visual Studio Code 1.52.1 (Dec 17, 2020)

  • Update 1.52.1: The update addresses these issues:
  • November 2020 Recovery Endgame
  • Check for all possible localhost string when checking if a tunnel already exists
  • Can not set breakpoint in PHP files
  • notebook status bar icon colors missing

New in Visual Studio Code 1.51.1 (Nov 12, 2020)

  • The update addresses these issues:
  • "Reveal In Side Bar" does not work if the file is opened from external apps
  • New ThemeIcon color in tree views can pollute other nodes

New in Visual Studio Code 1.51.0 (Nov 6, 2020)

  • Workbench:
  • More prominent pinned tabs:
  • Pinned tabs will now always show their pin icon, even while inactive, to make them easier to identify. If an editor is both pinned and contains unsaved changes, the icon reflects both states.
  • Extension trees use custom hover:
  • Instead of using the native tooltip in extension tree views, we now use a custom hover that is consistent cross-platform and fits better with the overall UX.
  • Install an extension without synchronizing:
  • You can now install an extension without synchronizing it while settings sync is enabled.
  • Install an extension from Explorer:
  • VS Code now supports installing an extension VSIX file from the Explorer by right-clicking on a VSIX file and choosing the Install Extension VSIX context menu item.
  • Input blur command:
  • A new internal workbench.action.blur command is now available, which removes focus from any focusable input. You can assign a keyboard shortcut for this command in the Keyboard Shortcuts Preferences
  • Integrated Terminal:
  • Local Echo:
  • Making modifications in the terminal traditionally requires information to be sent to the terminal process, processed, and returned to VS Code in order to be affected. This can be slow when working on a poor or distant connection to an SSH server or Codespace.
  • This release adds a "local echo" mode to the terminal, which attempts to predict modifications and cursor movements made locally and show them in the UI without requiring a round trip to the server. By default, predicted characters show as "dimmed"
  • There are two settings you can use to configure this:
  • terminal.integrated.localEchoLatencyThreshold configures the detected delay threshold, in milliseconds, at which local echo will activate. This can be set to 0 to turn on the feature all the time, or -1 to disable it. Defaults to 30.
  • terminal.integrated.localEchoStyle configures the style or color of local character, defaults to dim
  • IntelliSense:
  • Resizable suggestions:
  • This milestone, we've made several improvements to the suggestions UI. First and foremost, it can now be resized. Drag the sides or corners to resize the control.
  • The size of the suggestions list will be saved and restored across sessions. The size of the details pane is only saved per session, since that size tends to be more variable. Also, the editor.suggest.maxVisibleSuggestions setting has become obsolete
  • Status bar for suggestions:
  • The suggestions control can now also show its own status bar at the bottom of the window. Enable it using the editor.suggestStatusBar.enable setting. It makes toggling details simpler, and shows if a completion supports inserting, replacing, or both.
  • Move cursor to select suggestions:
  • Last but not least, you can now move the cursor while suggestions are showing. For instance, you can trigger suggestions at the end of a word, move left to see more suggestions, and then use replace to overwrite the word.
  • Emmet:
  • Custom snippets in Emmet are back. Additionally, snippets now automatically refresh upon saving the snippets file or updating the emmet.extensionsPath setting
  • Source Control:
  • Source Control input box saves commit message history:
  • This addresses a feature request to navigate SCM commit history. Press Up and Down to display the prior and next commits, respectively. To move directly to the first and last position of the input box, press Alt in conjunction with the corresponding arrow key.
  • Git: Tag commands in submenu:
  • Tag related Git commands have been added to the ... Git menu.
  • Git: Rebase command:
  • A new Git: Rebase branch... command has been added which lets you rebase a branch using the UI.
  • Git: Recursive clone command:
  • With the Git: Clone (Recursive) command, you can now recursively clone Git repositories, including its nested Git submodules.
  • Timeline: Emoji shortcode rendering:
  • We now render emoji shortcodes, such as :smile:, in the Timeline View.
  • Languages:
  • Markdown smart select:
  • Expand and shrink selection in Markdown documents using the following new commands:
  • Expand: Shift+Alt+Right
  • Shrink: Shift+Alt+Left
  • Selection applies to the following, and follows a traditional hierarchical pattern:
  • Headers
  • Lists
  • Block quotes
  • Fenced code blocks
  • Html code blocks
  • Paragraphs
  • Empty brace formatting option for JavaScript and TypeScript:
  • The new javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces and typescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces formatting configuration option controls if spaces are inserted between empty braces. The default value for these settings is true
  • Browser support:
  • Download folders (Edge, Chrome):
  • Leveraging the new File System Access API, VS Code running in a browser can now offer a download action for folders from the File Explorer to download all files and folders to disk
  • Open Workspace notification:
  • If you open a folder that contains .code-workspace files at the top level, you'll now see a notification asking you to open it. This was always the case in VS Code for desktop, and will now work in the browser too.
  • Prevent accidental close:
  • A new setting window.confirmBeforeClose was added to show a confirmation dialog before closing or leaving the workbench.
  • Possible values are:
  • keyboardOnly The confirmation will only be shown when you use a keybinding to close (for example, Ctrl+W). (default)
  • always: The confirmation dialog will always be shown, even if you close from a mouse gesture.
  • never: The confirmation will never be shown.
  • Contributions to extensions:
  • GitHub Pull Requests and Issues:
  • Work continues on the GitHub Pull Requests and Issues extension, which allows you to work on, create, and manage pull requests and issues.
  • To learn about all the new features and updates, you can see the full changelog for the 0.22.0 release of the extension.
  • Remote Development:
  • Work continues on the Remote Development extensions, which allow you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment.
  • Feature highlights in 1.51 include:
  • Ability to persist/reconnect to terminal sessions.
  • Improved port forwarding experience.
  • 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:
  • Settings sync now synchronizes extensions' global state. Extensions will have to provide the state to sync using the newly introduced setKeysForSync API.
  • Remember proxy credentials:
  • We are overhauling the login dialog that shows when a network connection requires authentication with a proxy. A new setting, window.enableExperimentalProxyLoginDialog: true, will enable this new experience that we plan to make the default in a future release.
  • he dialog will appear inside the VS Code window and offer a way to remember the credentials so that you do not have to provide them each time you start VS Code. Credentials will be stored in the OS standard credential store (keychain on macOS, Windows Credential Manager on Windows, and gnome keyring on Linux).
  • We still only show this dialog once per session, but might revisit this decision in the future. You will see the dialog appear again in case the credentials you selected to be remembered are not valid. Providing them again allows you to change them.
  • Please enable this option and let us know if something does not work as expected through our issue tracker
  • TypeScript 4.1 beta support:
  • VS Code supports the TypeScript 4.1 beta and nightly builds. The 4.1 update brings some new TypeScript language features, such as support for recursive conditional types, as well as tooling improvements. One focus area has been adding initial support for @see tags in JSDoc comments.
  • To start using the TypeScript 4.1 nightly builds, just install the TypeScript Nightly extension. Please share feedback and let us know if you run into any bugs with TypeScript 4.1.
  • Extension authoring:
  • Updated extension samples:
  • We've updated some of our extension samples to include VS Code default styles that are hooked up to our color theme tokens. This means that common elements (text, buttons, inputs) will be themeable and match the default styles in the product. Below are the extensions that include this:
  • custom-editor-sample
  • webview-sample
  • webview-view-sample
  • Codicon colors in trees:
  • With the finalization of the ThemeIcon color API, extension authors can use theme colors on codicons in custom tree views.
  • Sync Global State:
  • Extensions can now sync their global state by providing the keys, whose values should be synchronized when Settings Sync is enabled, using the newly introduced setKeysForSync API in globalState memento.
  • Comment thread reply button visibility:
  • Comment extensions can now control the visibility of the reply button in a comment thread with a new property, CommentThread#canReply. When it's set to false, users will not see the reply button or comment box in the comment thread
  • Proposed extension APIs:
  • Every milestone comes with new proposed APIs and extension authors can try them out. As always, we want 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.json file of your extension: "enableProposedApi": true.
  • Copy the latest version of the vscode.proposed.d.ts file into your project's source location.
  • 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.
  • Folding range providers change event:
  • Folding range providers can signal to the editor that folding ranges need to be updated using the onDidChangeFoldingRanges event.
  • For more details and to provide feedback, please use issue #108929.
  • Password APIs:
  • As part of continued work on Authentication Providers, we have introduced API for storing and retrieving sensitive information. Internally, this acts as a wrapper of the keytar library that VS Code uses for storing secrets.
  • Engineering:
  • Making VS Code Trusted Types compliant:
  • We have continued the effort to make VS Code "Trusted Types" compliant. The goal is to prevent DOM-based cross site scripting vulnerabilities. You can learn more about trusted types at the web.dev Trusted Types site and follow our progress in issue #103699
  • Documentation:
  • Getting started:
  • We are focusing on ways to make getting started with the editor easier. We've created a new "Learn to Code" landing page on our website with coding packs and new content geared towards folks who are new to coding.
  • Partner extensions:
  • Coding Pack for Python (Windows):
  • The Coding Pack for Python installs Python 3.8, specific Python libraries, VS Code, and essential extensions like Python and LiveShare, making it easy for new coders to get started. It is currently available for Windows
  • New commands:
  • unassigned Focus Left Editor Group (do not wrap around) workbench.action.focusLeftGroupWithoutWrap
  • unassigned Focus Right Editor Group (do not wrap around) workbench.action.focusRightGroupWithoutWrap
  • unassigned Focus Above Editor Group (do not wrap around) workbench.action.focusAboveGroupWithoutWrap
  • unassigned Focus Below Editor Group (do not wrap around) workbench.action.focusBelowGroupWithoutWrap
  • unassigned Focus Activity Bar workbench.action.focusActivityBar
  • Notable fixes:
  • 43819: Windows: when deleting a folder with files that are in use, then there is no error message shown
  • 71315: Should maintain row focus after deleting a file
  • 96522: User input variables not working for launch configuration in multi-root workspace
  • 100255: Moving a file should load the model directly with the contents it had before
  • 108578: Extensions with a onDebugDynamicConfigurations are eagerly activated at startup in v1.50
  • 109088: Send vscode.workspace.onWillCreateFiles/onDidCreateFiles events for folders
  • 109226: Debug hover moves while expanding/collapsing

New in Visual Studio Code 1.50.1 (Oct 15, 2020)

  • Update 1.50.1: The update addresses these issues:
  • macOS: high CPU from file watcher in presence of cyclic symbolic links in workspace
  • relativeFileDirname` gives empty string when the Dirname equals to current working directory
  • Multiple prompt to grant access to login keychain

New in Visual Studio Code 1.50.0 (Oct 8, 2020)

  • Accessible settings editor - Interact with the settings list like any other list in VS Code.
  • Pinned tabs improvements - Resize pinned tabs, unpin with one click, and more.
  • Linux ARM builds - VS Code is now available for both Linux ARMv7 and ARM64.
  • Improved debugging experience - Improved hover and filtering in debug console.
  • New JS debugger features - Toggle auto attach flows and see performance in real-time.
  • Panel layout improvements - New panel maximization settings and bottom panel size.
  • Webview Views support - Build extensions with webview views in the sidebar and panel.
  • Updated "Create a Dev Container" tutorial - Get started with Development Containers.

New in Visual Studio Code 1.49.3 (Oct 2, 2020)

  • A Recovery Endgame 3 endgame-plan
  • (Assumed) Fix for CVE-2020-16881 can be bypassed

New in Visual Studio Code 1.49.2 (Sep 24, 2020)

  • August Recovery Endgame 2
  • V1.49 creates debug.log automatically

New in Visual Studio Code 1.49.1 (Sep 18, 2020)

  • The update addresses these issues:
  • August 2020 Recovery Endgame
  • Completions which use spaces are broken after updating from July to August version
  • EPIPE write failure while debugging after upgrading to 1.49
  • proxy authentication does not work on 1.49

New in Visual Studio Code 1.49.0 (Sep 10, 2020)

  • There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Format modified text - Limit formatting to just the code you've changed.
  • Change casing on Search and Replace - Change text casing during global Search and Replace.
  • Source Control repositories view - Display pending changes per repository.
  • Filter Debug Console output - Quickly filter and find debugging output.
  • Improved JS debugger Auto Attach - "Smart" Auto Attach to Node.js scripts or test runners.
  • TypeScript optional chaining refactoring - Convert multiple checks to a concise optional chain.
  • JSDoc @deprecated tag support - IntelliSense clearly shows APIs marked as deprecated.
  • Notebook UX updates - Cell Status bar contributions, enhanced notebook diff editor.

New in Visual Studio Code 1.48.2 (Aug 25, 2020)

  • The update addresses these issues:
  • avoid lookups to api.npms.io for invalid package names
  • July 2020 Recovery 2 Endgame
  • Client should retry the request when receiving 409
  • Unable to open editor: Unexpected token JSON at position

New in Visual Studio Code 1.48.1 (Aug 21, 2020)

  • The update addresses these issues:
  • Correct wording of the WSL recommendation
  • July Recovery Endgame
  • Right Click on Extension Search > Peek causes freeze
  • Run Build Task List Not Sorting
  • Cannot overwrite read only files anymore
  • [v1.48] [Breaking] Cannot authenticate proxies
  • There is no way to show the NPM scripts explorer when there is no top level package.json
  • "IPersistFile::Save failed" during installation of VS Code Insiders
  • Error while starting Sync: d is not iterable
  • Saving untitled file always defaults to .txt

New in Visual Studio Code 1.48.0 (Aug 13, 2020)

  • There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Settings Sync to Stable - Settings Sync is now available for preview in stable.
  • Updated Extensions view menu - Simplified menu with additional filtering options.
  • New Git View submenus - Refactored overflow menu for Git in the Source Control view.
  • Updated in-browser debugging - Debug in the browser without writing a launch configuration.
  • Publish a public repository - Choose whether to publish to a public or private GitHub repository.
  • Notebook UX updates - New Cell menu, enhanced drag and drop.
  • New Remote Container topics - Learn how to attach to a container and create a new dev container.
  • Java lightweight mode - Start working with your Java source files more quickly.

New in Visual Studio Code 1.47.3 (Jul 27, 2020)

  • The update addresses these issues:
  • June 2020 Recovery 3 Engame
  • ERR_INVALID_ARG_TYPE when testing extension on 1.47.1
  • Uninstall hook not executing

New in Visual Studio Code 1.47.2 (Jul 16, 2020)

  • The update addresses these issues:
  • June 2020 Recovery 2 Engame
  • Menus: Dropdown menu gets tiny when opened near the edge of the workbench
  • SCM: View becomes empty, with errors in dev tools
  • Snippets | Clipboard is not working
  • "Proposed API is only available..." error in v1.47
  • "Duplicate Workspace in New Window" just creates new window and opens workspace.json file
  • Output channel Log (Window) does not appear until window reload for the first time
  • Creating files will add 2 times BOM (UTF-8, 16)
  • Reading from stdin via tmp file and pipe raise an exception
  • Extensions issues after update to vscode 1.47.0
  • [node-debugger] Debugger spams "Could not read sourcemaps" messages
  • Node version detection causes issues with old Electron versions + Node >=12 on the PATH
  • Double pasting in a webview with latest insiders
  • Can't debug node application

New in Visual Studio Code 1.47.1 (Jul 15, 2020)

  • Security Fix:
  • CVE-2020-1416 | Visual Studio and Visual Studio Code Elevation of Privilege Vulnerability:
  • An elevation of privilege vulnerability exists in Visual Studio and Visual Studio Code when they load software dependencies. A local attacker who successfully exploited the vulnerability could inject arbitrary code to run in the context of the current user. If the current user is logged on with administrative user rights, an attacker could take control of the affected system. An attacker could then install programs; view, change, or delete data; or create new accounts with full user rights.
  • To exploit this vulnerability, a local attacker would need to plant malicious content on an affected computer and wait for another user to launch Visual Studio or Visual Studio Code.
  • The update address the vulnerability by modifying the way Visual Studio and Visual Studio Code load software dependencies.

New in Visual Studio Code 1.47.0 (Jul 9, 2020)

  • There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Accessibility improvements - New screen reader capabilities.
  • Windows ARM builds - Windows on ARM is now available in stable.
  • New JavaScript debugger - Debug in the terminal, profiling support.
  • Source Control unified view - All repositories displayed in a single view.
  • View and sort pending changes - View files as a tree or list, sort by name, path, or status.
  • Edit complex settings - Edit object settings from the Settings editor.
  • New HexEditor extension - Edit files in hexadecimal format from within VS Code.
  • Notebook UI updates - Improved UX and undo/redo support.
  • Remote Development tutorials - Learn to develop over SSH, inside Containers, and in WSL.
  • Java Pack Installer for macOS - Get set up to develop in Java with VS Code on macOS.

New in Visual Studio Code 1.46.1 (Jun 19, 2020)

  • The update addresses these issues:
  • [regression in 1.46] noDebug:true is lost when calling debug.startDebugging()
  • Action bar has broken accessibility
  • VS Code runs stale persisted launch configs
  • New file/window menu items not functional with no window open
  • Markdown tables are not rendered on Hover
  • Left/Right Arrows Not Working in Custom Menu Bar
  • Regression: Codicons in hovers are broken
  • Default build task does not start

New in Visual Studio Code 1.46.0 (Jun 11, 2020)

  • Accessibility improvements - Status bar navigation, easier keyboard text selection.
  • Flexible view and panel layout - Move and group views in the Side Bar and Panel.
  • Pinned editor tabs - Pin editors in the title bar to keep frequently used files handy.
  • Add GitHub remotes - Add GitHub remotes to your local repository.
  • Automatic debugger configuration - Save and modify generated debug configurations.
  • JavaScript CommonJS auto imports - Auto imports will now use require for CommonJS modules.
  • JS/TS refactorings preserve newlines - Formatting is preserved during refactoring operations.
  • Settings Sync preview - New Synced Machines and Data views to manage your preferences.
  • GitHub Issue Notebooks - Run GitHub issue queries and display results in a custom Notebook.
  • Windows ARM64 support - New VS Code Insiders ARM64 builds are available.
  • VS Code at Build 2020 - Talks on Tips&Tricks, Remote Development, and The History of VS Code.

New in Visual Studio Code 1.45.0 (May 14, 2020)

  • Accessibility improvements - Focus commands to navigate the workbench, status bar accessibility.
  • Switch editor tabs via mouse wheel - Quickly switch files in the editor using your mouse wheel.
  • Faster syntax highlighting - Programming language colorization is up to 3 times faster.
  • Custom semantic colors - Change semantic token colors through your user settings.
  • GitHub authentication support - Automatic GitHub authentication for GitHub repositories.
  • GitHub Issues integration - Inline hovers and suggestions for GitHub issues and users.
  • Remote Development - Container configuration recommendations, WSL 2 support.
  • JavaScript debugger preview - CPU profiling, improved Auto Attach to Node.js processes.
  • New Docker Compose topic - Learn how to use Docker Compose to work with multiple containers.

New in Visual Studio Code 1.44.2 (Apr 17, 2020)

  • The update addresses these issues:
  • Show notification when extensionHostProcess.js is missing on disk
  • Can't search in workspace that includes folder using a FileSystemProvider
  • Git on network drive broken after upgrade to 1.44.0
  • Can't select recently visited file using arrow keys
  • Using spaces in symbol (editor, workspace) picker can confuse results
  • Action "merge all windows" gone after update to 1.44
  • Possible regression: As of 1.44 cannot open multiple files from "Go to file..." menu
  • '${workspaceFolder}' can not be resolved in a multi folder workspace
  • Editor stays blurred when moving panels

New in Visual Studio Code 1.44.1 (Apr 14, 2020)

  • The update addresses this security issue:
  • Prompt users when opening vscode://file/... URIs

New in Visual Studio Code 1.44.0 (Apr 9, 2020)

  • There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Accessibility improvements - Easier diff view navigation, clearer role designations for UI controls.
  • Timeline view - See time-series events like Git commit history from within VS Code.
  • Better Quick Open for files - Navigate smoothly from files to symbols, filter files by folder name.
  • Extension Pack display - Quickly see what is bundled in an Extension Pack.
  • Persisted Undo/Redo stack - Undo/Redo stack preserved for reopened files.
  • Remote Development - Directly check out Pull Requests into containers, support for Kubernetes.
  • Settings Sync preview - Settings Sync now lets you share snippets and UI state across machines.
  • New Python tutorials - Tutorials for creating Python containers and building Data Science models.

New in Visual Studio Code 1.43.2 (Mar 24, 2020)

  • The update addresses these issues:
  • February 2020 Recovery 2 Endgame
  • The specified task cannot be tracked
  • [Meta] Crash with webview after updated to 1.43.0

New in Visual Studio Code 1.43.1 (Mar 18, 2020)

  • The update addresses these issues:
  • February 2020 Recovery Endgame
  • Prelaunch tasks without a command don't work the second time
  • Semantic highlighting improvements for 1.43.1
  • [web] Welcome views: links trigger unload
  • [semantic highlighting] functions in josef.rouge-theme get wrong color
  • [less] color info missing
  • VSCode since 1.43 freezes on deleting line in c++ file
  • When relaunching for 1.43.0 update, vscode tries to open ~80 old workspaces

New in Visual Studio Code 1.43.0 (Mar 10, 2020)

  • There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Search Editors - Search and save your global search results in a full-sized editor.
  • Draggable sash corners - Easily change the editor layout by dragging sash corners.
  • Linux screen reader support - VS Code now supports the Orca screen reader.
  • Minimap sizing options - New options to fit or fill the minimap vertical layout.
  • Column selection mode - Column mode toggle lets you quickly select blocks of text.
  • Display whitespace on selection - Render whitespace characters only in selected text.
  • Convert to template string - Convert concatenations to JavaScript/TypeScript template strings.
  • JS/TS Call Hierarchy view - Review all calls to or from a function and drill into callers of callers.
  • Remote Development - Support for Windows and macOS SSH hosts, SSH connection sharing.
  • Settings Sync preview - Settings Sync lets you share settings and keybindings across machines.

New in Visual Studio Code 1.42.1 (Feb 14, 2020)

  • The update addresses these issues:
  • Order of entries in Quick View
  • Git API log formatting error
  • Language specific settings are behind proposed API flag

New in Visual Studio Code 1.42.0 (Feb 14, 2020)

  • Welcome to the January 2020 release of Visual Studio Code. There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Rename preview - See pending renames in a diff view and easily accept or reject changes.
  • Open editors limit - Set the maximum number of editors open at one time.
  • Panel placement - Move the panel (Output, Terminal) to the left, right, or below the editor.
  • Folded code highlighting - Quickly find folded regions with new background highlight.
  • Debug Console improvements - Syntax highlighting, bracket matching, input history.
  • Define global tasks - Per user tasks can be used across all your folders and workspaces.
  • Java extension updates - Java support for Data Breakpoints and Call Hierarchy view.
  • Remote Development - New Forwarded Ports view for mapping SSH and Containers ports.
  • New Containers tutorials - Learn how to create and deploy Docker containers.
  • Preview features - First looks at the Timeline view, Search editor, semantic highlighting, and more.

New in Visual Studio Code 1.41.1 (Dec 20, 2019)

  • The update addresses these issues:
  • Panel tabs disappear on "Problems" click if there are no problems
  • postfix completion reports incorrect position
  • References codelens for every plain object property since TypeScript 3.7
  • [Insiders-Regression] zsh:1: command not found: tsc The terminal process terminated with exit code: 127

New in Visual Studio Code 1.41.0 (Dec 12, 2019)

  • Compact folders in Explorer - Single child folders collapsed by default.
  • Edit left side of diff views - You can now edit both files in a difference view.
  • Update search results while typing - Global search results update while you type.
  • Problems panel improvements - Filter by problem type and limit output to the active file.
  • Minimap highlights errors and content changes - Quickly locate problems and changes in your file.
  • Terminal minimum contrast ratio - Set preferred contrast ratio for increased visibility.
  • HTML mirror cursor in tags - Automatic multi-cursor in matching HTML tags.
  • Optional chaining in JS/TS - Use the ?. operator to simplify working with nested structures.
  • Extract interface refactoring - Quickly extract an inline type to a TypeScript interface.
  • Remote - Containers extension - Better support for opening repositories in Docker containers.
  • Visual Studio Online - Create and connect to cloud-based development environments.

New in Visual Studio Code 1.40.2 (Nov 26, 2019)

  • The update addresses these issues:
  • Insider build always starts language server with debug options
  • Occluded windows just went blank
  • Port 9229 in use by VS Code
  • "Save Workspace As..." does not save with correct extension
  • Extension Host broken
  • Touch bar mac disabled on focus file
  • Child_process results in ENOMEM error with empty options.env
  • MacOS: File > Open no longer adds files to recently opened
  • 1.40.0 has rendering lag and flickers when minimize/maximize window with custom title
  • Leaving Full Screen or Zen Mode leads to wrong window dimensions
  • Maximize button not working properly with auto-hide taskbar enabled
  • WebViewPanel created with preserveFocus: true suffers from a focus problem.

New in Visual Studio Code 1.40.1 (Nov 14, 2019)

  • The update addresses these issues:
  • Code Editor text rendering is using grayscale
  • The 'Additional Views' overflow action only shows up on hover
  • Outline tree flashing at every character written
  • October 2019 Recovery Endgame
  • vs code won't size right on multiple monitors
  • [meta issue] 1.40 update: Font/Color rendering degradation (macOS, Linux, Windows)
  • terminal.integrated.windowsEnableConpty is not being respected
  • Can't get out of 'Recording Keys'
  • TreeError [CustomView] Data tree node not found
  • SCM: decorations are getting lost at random

New in Visual Studio Code 1.40.0 (Nov 7, 2019)

  • Workbench:
  • Activity Bar indicator:
  • We've introduced a new indicator for the active item in Activity Bar to make it stand out better and increase readability. We also tuned the inactive foreground colors for a stronger contrast with the active element.
  • You can control the active indicator via the new color token, activityBar.activeBorder. We also introduced an optional background color for the active element, activityBar.activeBackground
  • Themable window border:
  • We've introduced two new theme colors, window.activeBorder and window.inactiveBorder, for providing a border around the VS Code window. The window.activeBorder applies to the active (focused) window, while the window.inactiveBorder applies to inactive (unfocused) windows. These new colors do not inherit from any color, so they must either be provided by the theme or by the workbench.colorCustomizations setting. If only one color is specified, a border with that color will be applied to both active and inactive windows.
  • List and tree keyboard scrolling:
  • You can now press Ctrl+Up and Ctrl+Down to scroll lists and trees using the keyboard. If horizontal scrolling is enabled, Ctrl+Left and Ctrl+Right will also scroll horizontally.
  • Fewer notifications in Zen mode:
  • While using Zen mode, notification toasts will no longer distract you unless they inform about errors. You can control this behavior with the new zenMode.silentNotifications setting. You can always access all notifications from the status bar by clicking on the notification icon in the bottom-right corner.
  • Type filters for outline and breadcrumbs:
  • There are new settings to configure what symbols are displayed in the Outline view and breadcrumb navigation. The settings are called outline.show{symbol type} and breadcrumbs.show{symbol type}. For example, outline.showVariables, outline.showFunctions, etc.
  • The screen shot above shows the Outline view configured to not show local variables and you can see that the variable hidden isn't shown.
  • Note that it's up to the language extension to assign the type of a symbol. You can hover over the symbol label in the Outline view to see which symbol type is being used (shown in parentheses).
  • Control the sizing behavior when splitting editors:
  • A new setting workbench.editor.splitSizing controls the layout of editors when splitting them. By default, the size will be distributed evenly among all editors
  • Change this setting to split for the current editor to be split in half and not affect the size of other editors
  • Disable GPU acceleration:
  • We have heard issue reports from users that seem related to how the GPU is used to render VS Code's UI. These users have a much better experience when running VS Code with the additional --disable-gpu command-line argument. Running with this argument will disable the GPU hardware acceleration and fall back to a software renderer.
  • To make life easier, you can add this flag as a setting so that it does not have to be passed on the command line each time.
  • EDITOR:
  • files.eol per language:
  • The files.eol setting can now be set per language. For example, you could define that all files of 'mylanguage' language identifier use n as the default end-of-line sequence for all new files.
  • The end-of-line sequence is used for new files. For existing files, the current end-of-line sequence is always preserved. To change the end-of-line sequence for an existing file, use the Change End Of Line Sequence command.
  • Using a files.eol language setting, the default end-of-line sequence for 'shellscript' is now defined as n.
  • Minimap scaling and improved font rendering:
  • A new setting editor.minimap.scale configures the minimap's size to one of several constant values, particularly useful for high DPI or ultra-wide displays. Also, the rendering of the minimap's font is now smoother and clearer.
  • Definition Preview Hover from the keyboard:
  • There is a new command Show Definition Preview Hover for better accessibility of the definition preview hover widget, which can be triggered by hovering a symbol with the mouse and pressing a modifier key dependent on the platform and configuration. Previously, only the command Show Hover was provided, which is equivalent to hovering the mouse cursor over a symbol. Now, with Show Definition Preview Hover, the detailed hover information can be shown via the keyboard.
  • Improvements to bracket matching:
  • Previously, VS Code would only highlight matching brackets when the cursor was next to a bracket character. Now VS Code will always highlight enclosing brackets if they exist. We have also adjusted our Go to Bracket and Select to Bracket actions to use enclosing brackets.
  • Duplicate selection:
  • We have added a new action named Duplicate Selection. When executed, the current selection will be duplicated and the result will be selected. When there is no selection, the current line will be duplicated, all without writing to the system clipboard.
  • Font feature settings:
  • There is now more fine grained control over the font features. When configuring "editor.fontLigatures": true, VS Code would turn on liga and calt. But some fonts have more settings, such as stylistic sets used by Fira Code.
  • The above settings configure the editor to use the Fira Code font family, turn on font ligatures for all languages, and in JavaScript files enable the 'Horizontal Bar' ('ss02') and the 'Dotted zero' ('ss19') font feature settings. These make the >= ligature render with a horizontal bar and the 0 render with a dot inside it in JavaScript.
  • Better handling for Unicode combining characters:
  • We have made improvements around handling of Unicode combining characters and we treat such sequences as atomic characters (in cursor movement, editing operations, or in block cursor rendering). This is best demonstrated using the block cursor style and a before/after animation
  • Cursor Redo:
  • The Soft Undo command has been renamed to Cursor Undo. This action is useful, for example when using Ctrl+D to select the next match and going one time too far, as it undoes only the last cursor state change. Additionally, we now have added Cursor Redo, which redoes the previously undone cursor state change.
  • Diff editor improvements:
  • The built-in diff computation used to have a hard-coded timeout of 5 seconds, after which it would give up and return a non-minimal diff. You can now configure this timeout using "diffEditor.maxComputationTime" and setting the timeout to 0 will always compute a minimal diff, no matter how long that would take. Additionally, the diff editor now renders a progress bar when the computation takes longer than one second.
  • A source of confusion when using the diff editor was when comparing files with only leading or trailing whitespace differences and the diff editor was configured to ignore trim whitespace. This would result in Source Control showing the files as modified, while the diff editor would render no diffs. VS Code now displays a Show Whitespace Differences button when it detects this case to help you quickly show diffs in whitespace. This can be toggled using the Show/Ignore Trim Trailing Whitespace Difference command at the top of the diff editor.
  • INTEGRATED TERMINAL:
  • Chords are now supported by default:
  • The new setting terminal.integrated.allowChords (default true) allows keybindings that are part of a chord keybinding to skip the terminal for evaluation and instead get handled by VS Code (bypassing the terminal.integrated.commandsToSkipShell allow list).
  • Note that the same limitations around keybindings in the terminal still apply; the chord keybinding with the highest priority will be considered when making this evaluation.
  • Fast scroll support:
  • The terminal now supports Alt with mouse wheel to scroll faster based on the multiplier defined in the editor.fastScrollSensitivity setting.
  • New "paste" option for right-click behavior:
  • A new option has been added to the rightClickBehavior setting to always paste in the terminal on right-click.
  • Double-click to select word uses more separator characters:
  • The characters ,, :, and ; are now counted as word separators when double-clicking to select a word(s) in the terminal.
  • Symlink cwds are no longer resolved:
  • If a terminal's initial working directory is set to a symlink, the symlink will now be preserved in the terminal.
  • Command navigation now works from the scroll position:
  • Command navigation enables navigating between or selecting between commands that have been run in the terminal. This now takes the scroll position of the terminal into account so you can scroll, find the previous command, and the terminal will scroll up from the terminal's viewport (previously it would scroll from the bottom).
  • Command navigation is only bound on macOS by default as Cmd + Up/Down and command selection as Cmd + Shift + Up/Down.
  • TASKS:
  • Task Quick Pick lists:
  • The Tasks: Configure Task command now always skips the Quick Pick list of tasks if you only have one task defined. To extend this behavior to Tasks: Run Task and other task Quick Picks, you can set the task.quickOpen.skip setting to true.
  • The new setting task.quickOpen.history controls how many tasks are shown in the task Quick Pick as recently used tasks. Set task.quickOpen.history to 0 to disable the recent tasks section of the tasks Quick Pick.
  • Tasks that have a detail property will now show it in some task lists. You can turn off details in the task Quick Pick by setting task.quickOpen.detail to false.
  • Option to run NPM scripts for a folder.
  • Disable task autodetection:
  • If all the tasks you care about are defined in a tasks.json file, then you might want to disable all extension task providers to improve performance when you run tasks. It is good practice for individual extensions to provide a setting to disable their task providers, but you can now disable all task providers setting task.autoDetect to off.
  • Problem matcher prompt:
  • In the past, any task without a problem matcher would need to have an empty problem matcher set in tasks.json to skip the problem matcher prompt. Now, you can use task.problemMatchers.neverPrompt to disable the problem matcher prompt for all tasks or for specific task types. There's also a new option in the problem matcher prompt to disable the prompt.
  • When the setting npm.enableRunFromFolder is enabled, the File Explorer's context menu shows the command Run NPM Script in Folder... when a folder is selected. The command shows a Quick Pick list of the NPM scripts contained in this folder and you can select the script to be executed as a task.
  • Slow task provider warning:
  • When a task provider is running slowly, we now show a warning offering suggestions for how to avoid the slowdown. The warning can be disabled for individual task types, or it can be disabled for all tasks by setting task.slowProviderWarning to false.
  • SOURCE CONTROL:
  • Highlight file on active editor change:
  • The Source Control view will now automatically highlight the active editor file in its tree/list view
  • Git: Improved untracked files management:
  • You can now manage untracked files separately by using the Git: Untracked Changes setting. Choose the separate option, if you'd like to see untracked files in a separate group in the Source Control view. Choose hidden if you'd like to never see them. The default commit action will adjust itself to this setting and will only include untracked changes in a commit when using the mixed setting value.
  • Git: Automatic commit message on merge commits:
  • Whenever VS Code detects you're in a middle of a git merge commit, it will automatically populate the commit input box with Git's default commit message.
  • Git: Reveal in Explorer:
  • There's now a context menu action Reveal in Explorer to reveal files in the File Explorer, from a Git repository in the Source Control view.
  • Git: Clone progress:
  • The clone operation now supports displaying progress in the bottom-right corner notification
  • DEBUGGING:
  • Breakpoints can be shown in overview ruler:
  • To make life easier when working with breakpoints in large files, you can now show breakpoints in the editor's overview ruler by enabling the new setting debug.showBreakpointsInOverviewRuler.
  • PreLaunch tasks for compound debug configurations:
  • Today every debug configuration can specify a task to be run before the debug session is started via the preLaunchTask attribute. This works well when debugging a single program, but it gets unwieldy when using compound configurations where multiple programs are involved.
  • In this milestone, we've added support for a preLaunchTask per compound debug configuration. With this addition, a single task can build all debug targets before the individual debug sessions are started. In case of a build error, no session is started.
  • LANGUAGES:
  • CSS media query symbols:
  • In CSS/SCSS/Less files, media query symbols are now shown in the Outline view, the breadcrumb path, and the Go to Symbols in File list
  • typescript.tsserver.maxTsServerMemory:
  • If you are working with a large TypeScript project containing thousands of files, the new typescript.tsserver.maxTsServerMemory setting lets you increase the maximum memory usage for the TypeScript server that powers IntelliSense
  • EXTENSION AUTHORING:
  • vscode.env.uiKind:
  • A new API vscode.env.uiKind was added so that an extension can know in which kind of UI is it running. To support running VS Code in a browser, the possible values are UIKind.Web and UIKind.Desktop.
  • Call Hierarchy Provider API:
  • We have finalized the call hierarchy provider API: CallHierarchyProvider. It supports the Peek Call Hierarchy feature, which finds callers to and calls from functions, methods, etc.
  • Task CustomExecution:
  • The CustomExecution task type API has been finalized. If a shell or process task isn't suitable for your task, you can use a CustomExecution task to execute a callback in your extension. Learn more in the task provider extension guide.
  • Debug API: "consoleMode" option for "startDebugging" request:
  • In the last milestone, we had introduced a new proposed API for controlling whether a hierarchy of debug sessions shares a single Debug Console or use individual consoles. This API is now official so you can use it in extensions published on the Marketplace.
  • Icon color tokens:
  • We're excited to finally introduce new color tokens for our icons. We're slowly adding these for certain areas, below is the first batch.
  • Symbols:
  • These icons appear in the Outline view, breadcrumb navigation, and suggest widget.
  • symbolIcon.arrayForeground
  • symbolIcon.booleanForeground
  • symbolIcon.classForeground
  • symbolIcon.colorForeground
  • symbolIcon.constructorForeground
  • symbolIcon.constantForeground
  • symbolIcon.enumeratorForeground
  • symbolIcon.enumeratorMemberForeground
  • symbolIcon.eventForeground
  • symbolIcon.fieldForeground
  • symbolIcon.fileForeground
  • symbolIcon.folderForeground
  • symbolIcon.functionForeground
  • symbolIcon.interfaceForeground
  • symbolIcon.keyForeground
  • symbolIcon.keywordForeground
  • symbolIcon.methodForeground
  • symbolIcon.moduleForeground
  • symbolIcon.namespaceForeground
  • symbolIcon.nullForeground
  • symbolIcon.numberForeground
  • symbolIcon.objectForeground
  • symbolIcon.operatorForeground
  • symbolIcon.packageForeground
  • symbolIcon.propertyForeground
  • symbolIcon.referenceForeground
  • symbolIcon.snippetForeground
  • symbolIcon.stringForeground
  • symbolIcon.structForeground
  • symbolIcon.textForeground
  • symbolIcon.typeParameterForeground
  • symbolIcon.unitForeground
  • symbolIcon.variableForeground
  • Problems and Notifications:
  • We've set the default colors for the problems and notifications icons to inherit from the editor foreground colors, so if you change those colors, it will inherit to the other areas
  • You can also explicitly set the icon colors for the Problems panel and Notifications:
  • problemsErrorIcon.foreground
  • problemsWarningIcon.foreground
  • problemsInfoIcon.foreground
  • notificationsErrorIcon.foreground
  • notificationsInfoIcon.foreground
  • notificationsWarningIcon.foreground
  • Lightbulb:
  • The lightbulb icons are also themable:
  • editorLightBulb.foreground
  • editorLightBulbAutoFix.foreground
  • vscode.env.asExternalUri:
  • The vscode.env.asExternalUri API allows an extension to resolve an external URI - such as a http: or https: URI - from where the extension is running to a URI for the same resource on the client machine. This is a companion to the vscode.env.openExternal API, except instead of opening the resolved URI using an external program, it returns the result to extensions.
  • For http: and https: URIs, asExternalUri is a no-op if the extension is running on the client machine. However, if the extension is running remotely, vscode.env.asExternalUri automatically establishes a port forwarding tunnel from the local machine to target on the remote and returns a local URI to the tunnel.
  • If asExternalUri is called with a vscode.env.uriScheme URI, then it returns a URI that - if opened in a browser (for example via openExternal) - will result in the registered URI handler being triggered.
  • Removal of experimental Custom Data settings and Contribution Points:
  • [html/css].experimental.customData settings and contributes.[html/css].experimental.customData Contribution Points were deprecated in 1.38 and now removed. You can use the stable Custom Data settings and Contribution Points instead. To read more about the Custom Data Format, see the microsoft/vscode-custom-data repository.
  • extensionKind can be an array:
  • In package.json, the extensionKind property could have the value "ui" or "workspace" to indicate where an extension should run in the remote case. With this release, extensionKind can now be an array. For example, ["ui", "workspace"] would indicate that an extension can run both on the "ui" and "workspace" side, with a preference to running on the "ui" side, if installed there
  • 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.json file of your extension: "enableProposedApi": true.
  • Copy the latest version of the vscode.proposed.d.ts file 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.
  • Support IntelliSense replace mode:
  • We are working on a feature that allows users to decide if suggestions should replace existing text or just be inserted. For example, accepting console inside con|st can result in console (replace) or consolest (insert). Both modes have merit and it eventually depends on the current context and user preference. For this feature to work best, we need extensions to tell us what to do. Therefore we are proposing to add a new type to the CompletionItem#range property
  • The range continues to be optional or be a simple range but it can also be two ranges: one for insert and one for replace. See Issue #10266 for more details.
  • Task detail:
  • There is a new property on Task that task providers can use to add a detail to the task when it is shown in UI. You can also use the detail property in tasks.json. The built-in npm extension uses the task detail to show which npm script will run.
  • Support for passing WebviewPanelOptions to Custom Editors:
  • We continued our work on the Custom Editor API proposal this iteration. Now the proposed registerWebviewEditorProvider function takes a set of options that lets you enable retainContextWhenHidden and other features in custom editor webviews
  • ENGINEERING:
  • Run VS Code Web out of sources:
  • There is now a minimal version of VS Code that can run in a browser that is available for development and testing. The Web version is still missing some features and is under active development.
  • In your local fork of the vscode repository, execute yarn web from the command line and access http://localhost:8080/. For more details about cloning and building the vscode repo, see the setup instructions.
  • Note: Do not use this test version for any development. The intent is to allow the community to contribute changes back to VS Code Web to improve the overall experience in the browser.
  • Building VS Code with TypeScript 3.7:
  • VS Code is now built using TypeScript 3.7. This is an exciting update as it lets us use optional chaining (?.) in our codebase (as well as bringing many other improvements).
  • You can start using TypeScript 3.7 features in VS Code today by installing the JavaScript and TypeScript Nightly extension.
  • Electron 6.0 Update:
  • In this milestone, we finished the exploration of bundling Electron 6 into VS Code, making it the first time this Electron version ships with stable. This is a major Electron release and comes with Chromium 76.0.3809.146 and Node.js 12.4.0 (a major leap forward from our current version with Chromium 69 and Node.js 10.11.0).
  • We have started to explore updating to Electron 7, which we hope to push to Insiders soon.
  • NOTABLE FIXES:
  • 78634: Terminal content goes missing when resizing (powershell/conpty)
  • 25854: Can't drag Markdown preview to start a new editor group
  • 81824: Webview editor doesn't appear in Open Previous Editor From History command

New in Visual Studio Code 1.38.1 (Sep 12, 2019)

  • Code.sh: remove wsl2 workaround
  • Cannot insert a < div >, automatically corrects to < /div >
  • Markdown Hover images broken
  • Statusbar border no longer appears [statusbar.border]
  • Gap in right side of window
  • Grouping quick open entries is broken

New in Visual Studio Code 1.38 (Sep 4, 2019)

  • Feature highlights in 1.38 include:
  • VS Code Stable preview support for Alpine Linux Containers, Alpine WSL distributions, and ARMv7l / AArch32 SSH hosts.
  • VS Code Insiders experimental support for ARMv8l / AArch64 SSH hosts.
  • Improvements to Remote - Containers including a new container explorer!
  • You can learn about new extension features and bug fixes in the Remote Development release notes.
  • Extension authoring
  • VS Code icon repository
  • We've published a repository of all of the VS Code icons for use by extension authors. There are dark/light versions of each icon, and we also linked to our Figma design file.
  • VS Code icons
  • Webview.asWebviewUri and Webview.cspSource
  • There are two new properties on webviews:
  • Webview.asWebviewUri - Convert a URI for the local file system to one that can be used inside webviews.
  • For desktop VS Code, this will convert file: URIs into vscode-resource: URIs.
  • Webview.cspSource - The content security policy source for webview resources.
  • For desktop VS Code, this would be the string vscode-resource:.
  • const panel = vscode.window.createWebviewPanel(CatCodingPanel.viewType, 'Cat Coding', vscode.ViewColumn.One, {
  • // Restrict the webview to only loading local content from our extension's `media` directory.
  • localResourceRoots: [vscode.Uri.file(path.join(extensionPath, 'media'))]
  • });
  • const imagePath = vscode.Uri.file(path.join(extensionPath, 'media'));
  • panel.html = `<!DOCTYPE html>
  • <html lang="en">
  • <head>
  • <meta charset="UTF-8">
  • <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${panel.webview.cspSource} https:;">
  • <meta name="viewport" content="width=device-width, initial-scale=1.0">
  • <title>Cat Coding</title>
  • </head>
  • <body>
  • <img src="${panel.webview.asWebviewUri(imagePath)}/cat.gif" width="300" />
  • </body>
  • </html>`
  • Warning when creating webview without a Content Security Policy
  • While developing an extension that uses the Webview API, we now log a warning when you create a webview that does not set a Content Security Policy.
  • Debug warning for a webview that lacks a CSP
  • All webviews (even very simple ones) should set a content security policy. This helps limit the potential impact of content injections and is generally a good measure for defense in depth. We've documented how to add a content security policy to VS Code webviews in the Webview extension guide.
  • Machine-specific overridable settings
  • You can now define a machine specific setting that can be overridable at workspace and folder level using the scope machine-overridable.
  • "configuration": {
  • "title": "My Extension Settings",
  • "properties": {
  • "myextension.libPath": {
  • "type": [
  • "string",
  • "null"
  • "markdownDescription": "Specify the path to the library.",
  • "default": null,
  • "scope": "machine-overridable"
  • Multi-select in custom tree view
  • Trees contributed through createTreeView can now add the canSelectMany option to the TreeViewOptions<T>. This enables multi-select in the contributed tree view and causes commands that are run on tree elements to receive all the selected tree elements as an array in the second command argument.
  • markdown.api.render
  • The new markdown.api.render command from VS Code's built-in Markdown extension takes a string of Markdown or a vscode.TextDocument and returns the rendered Markdown as HTML:
  • import * as vscode from 'vscode';
  • export function activate(context: vscode.ExtensionContext) {
  • vscode.commands.executeCommand('markdown.api.render', '# Hello Markdown').then(result => {
  • console.log(`rendered markdown: ${result}`);
  • });
  • Logs:
  • rendered markdown: <h1 id="hello-markdown" data-line="0" class="code-line">Hello Markdown</h1>
  • Custom Data marked as Stable
  • The custom data format introduced as experimental feature in the January 2019 1.31 release is now marked as Stable.
  • html.experimental.customData - This setting is deprecated and superseded by html.customData.
  • css.experimental.customData - This setting is deprecated and superseded by css.customData.
  • contributes.html.experimental.customData - This Contribution Point is deprecated and superseded by contributes.html.customData.
  • contributes.css.experimental.customData - This Contribution Point is deprecated and superseded by contributes.css.customData.
  • You can learn more about how to use the custom data format to enhance VS Code's HTML/CSS language support in the documentation and samples at microsoft/vscode-custom-data.
  • Deprecated workspace.rootPath
  • Quite a while ago, we added support for multi-root workspaces and deprecated the API workspace.rootPath in favor of workspace.workspaceFolders and workspace.getWorkspaceFolder. We have noticed that many extensions still use this API, even though it won't work properly in multi-root workspaces. If you own an extension that uses this API, please update it as we may want to get rid of this API in the future. You can find more details about moving away from rootPath on the Adopting-Multi-Root-Workspace-APIs wiki page.
  • Language Server Protocol
  • Streaming and progress reporting support has been added to the next version of the language server protocol. Proposed implementations for the server and client are available as [email protected] and [email protected] respectively.
  • Debug Adapter Protocol
  • Improvements for completion proposals
  • A debug adapter can now use the new capability completionTriggerCharacters for announcing the characters that a frontend UI should use to trigger the completion proposals UI in a REPL or debug console. If none is specified, the frontend UI should use the '.' character to trigger the proposal UI.
  • In addition, we've added an optional sortText attribute to the CompletionItem type. With this attribute, a debug adapter can control how the frontend UI sorts the completion proposals returned by the adapter. If the attribute is missing, the frontend may sort items based on the label attribute.
  • Fixed a type issue in DAP's JSON schema
  • In the Debug Adapter Protocol JSON schema, we've changed the use of the type specifier number to integer in those places where a float type makes no sense, for example for IDs.
  • 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.json file of your extension: "enableProposedApi": true.
  • Copy the latest version of the vscode.proposed.d.ts file into your project.
  • Note that you cannot publish an extension that uses a proposed API. We may likely make breaking changes in the next release and we never want to break existing extensions.
  • Deprecation tags for symbols and completions
  • The API for completions and document/workspace symbols now supports marking items as deprecated. Completions and symbols have a new, optional property tags that is a set of CompletionItemTags or SymbolTags. Today, only deprecation is supported but there are plans to add more tags, for example tags for access modifiers and other modifiers.
  • The snippet below shows a minimal completion item provider that renders an item that's marked as deprecated.
  • vscode.languages.registerCompletionItemProvider('plaintext', {
  • provideCompletionItems() {
  • const item = new vscode.CompletionItem("deprecated_completion");
  • item.tags = [vscode.CompletionItemTag.Deprecated];
  • return [item];
  • });
  • When showing deprecated completions or symbols a strikeout is rendered across the names, items are slightly dimmed, and highlights aren't shown:
  • Deprecated items in smart completions
  • Pseudoterminal.onDidClose now accepts a number
  • The proposed Pseudoterminal.onDidClose has changed from an Event<void> to an Event<void | number>, allowing extension authors to indicate that the terminal or CustomExecution2 task failed.
  • Deprecated proposed terminal APIs removed
  • The deprecated TerminalOptions.runInBackground and createTerminalRenderer APIs have been removed. If you need to migrate off of these, you should use TerminalOptions.hideFromUser (stable) and ExtensionTerminalOptions (proposed) respectively.
  • 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
  • Enter Find Next Result in Editor editor.action.nextMatchFindAction
  • Shift+Enter Find Previous Result in Editor editor.action.previousMatchFindAction
  • F3 Find Next Result in Integrated Terminal workbench.action.terminal.findNext
  • Shift+F3 Find Previous Result in Integrated Terminal workbench.action.terminal.findPrevious
  • Enter Find Next Result in Extension Details View editor.action.extensioneditor.findNext
  • Shift+Enter Find Previous Result in Extension Details View editor.action.extensioneditor.findPrevious
  • Enter Find Previous Result in Webview editor.action.webvieweditor.findNext
  • Shift+Enter Find Previous Result in Webview editor.action.webvieweditor.findPrevious
  • Notable fixes
  • 26012: Automatic insertion of parens doesn't interact nicely with completions, results in duplicated characters
  • 47292: Diagnostics created by tasks aren't accessible to extensions
  • 73884: Linux: opening files from FTP connection show up empty
  • 75054: macOS simple fullscreen is working again
  • 77293: Respect the CancelationToken in provideDebugConfigurations and resolveDebugConfigurations to cancel debugging
  • 77735: workspace.applyEdit drops the TextEdit if there is a RenameFile later
  • 77747: file name with $(xx) displayed incorrectly in folder view
  • 77990: Starting with a TS/JS file is significantly file slower than opening other files
  • 77996: File > Save As moves cursor to beginning of file
  • 78147: Configure task action should reveal the newly added task and position the cursor there
  • 78179: Invoking 'tasks.fetchTask()' with a type filter fetches all tasks
  • 79478: Highlight custom html tags in markdown files
  • 79704: Support @example <caption> in JSDoc
  • 79763: Editors: can close all editors, even if dirty
  • 79798: Editors: group not activated with workbench.editor.revealIfOpen: true
  • 78046: SCM: Support staging selected changes for new files too, thanks to Darrien Singleton (@OneThatWalks) from PR #78562
  • 79625: Provide code completion for the "preLaunchTask" structure

New in Visual Studio Code 1.37.1 (Aug 16, 2019)

  • Recovery build has wrong icon for release notes
  • July 2019 Recovery Release Endgame
  • Pasting in a Windows->Linux remote window adds additional new line characters
  • 1.37 breaks the fsprovider-sample extension
  • Broken vscode.ProcessExecution in Tasks API in v1.37
  • Alt+click in terminal resets scroll position and prevents click-on-link
  • Certain C++ files completely freeze VSCode
  • 1.37 Explorer not showing any files or folders
  • Diagnostics show empty parentheses if no code specified for error (regression)

New in Visual Studio Code 1.37.0 (Aug 10, 2019)

  • Update cache salt

New in Visual Studio Code 1.36.1 (Jul 9, 2019)

  • Hide/show status bar items - Only display your preferred status bar items.
  • Indent guides in explorers - Clearly highlights your project's folder structure.
  • Better terminal shell selector - Easily select the default shell to use in the Integrated Terminal.
  • Sequential task execution - Control the order of task and subtask execution.
  • Jump to cursor debugging - Skip code execution as you jump to a new location.
  • Disable debug console word wrap - Lets you keep debugging output to one line.
  • JavaScript/TypeScript nightly builds - New extension integrates JS/TS nightly builds.
  • New Java installer - Installs VS Code, the Java extension pack, and required Java dependencies.
  • Remote Development (Preview) improvements - Save to local file system, drag and drop files to remotes, and more.

New in Visual Studio Code 1.36.0 (Jul 4, 2019)

  • Hide/show status bar items - Only display your preferred status bar items.
  • Indent guides in explorers - Clearly highlights your project's folder structure.
  • Better terminal shell selector - Easily select the default shell to use in the Integrated Terminal.
  • Sequential task execution - Control the order of task and subtask execution.
  • Jump to cursor debugging - Skip code execution as you jump to a new location.
  • Disable debug console word wrap - Lets you keep debugging output to one line.
  • JavaScript/TypeScript nightly builds - New extension integrates JS/TS nightly builds.
  • New Java installer - Installs VS Code, the Java extension pack, and required Java dependencies.
  • Remote Development (Preview) improvements - Save to local file system, drag and drop files to remotes, and more.

New in Visual Studio Code 1.35.1 (Jun 13, 2019)

  • Notable improvements:
  • Collapse All list and tree command with Ctrl+Left keyboard shortcut.
  • The history of the References view can now be cleared.
  • When running the Format With... command, the default formatter is now pre-selected.
  • When debugging is paused on a line, the whole line is read out by the screen reader.
  • Multiple item paste in the Explorer is run in parallel for improved performance.
  • The Open Folder button in an empty File Explorer is scoped to folder even on macOS.
  • Notable fixes:
  • 15749: Potential data loss for files that changed on disk meanwhile after a backup was made
  • 17115: Preserve picked language for files across restarts
  • 74446: Completion providers with resolve methods leak memory
  • 74457: URI: Should invalidate cached _fsPath when crossing platforms
  • 73783: Make workbench.dialogs.useSimplified a real setting
  • 68793: Clicking anywhere on the "debug console" pane should "focus" on input box
  • 73457: Breakpoint lines are not correct when saving the source file after modifying the file
  • 68812: Typescript task detection is now cross-platform

New in Visual Studio Code 1.35.0 (Jun 6, 2019)

  • Welcome to the May 2019 release of Visual Studio Code. There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Updated Visual Studio Code icon - The product logo got a refresh. We hope you like it.
  • Go to Definition improvements - Faster navigation through multiple definitions.
  • Breadcrumb navigation displayed by default - Quickly go to files and symbols via breadcrumbs.
  • Smart selection for JavaScript/TypeScript - Expand text selection based on language semantics.
  • Extract to type alias TypeScript refactoring - Extract part type into its own type alias.
  • Integrated terminal supports true color - Correctly renders true color (24-bit) escape sequences.
  • Better merge conflict display - See merge conflict changes within surrounding source code.
  • Collapse All command for lists and explorers - One of many small but handy improvements.
  • Remote Development (Preview) available in Stable - You can now use the Remote Development extensions in Stable.
  • If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
  • Insiders: Want to see new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available. And for the latest Visual Studio Code news, updates, and content, follow us on Twitter @code!
  • Updated Visual Studio Code icon
  • Over the past two months, we've been working on updating the VS Code product logo. We've taken feedback from the community (thank you to everyone who responded) and we are happy to release the new logos for Stable and Insiders. We are also using same logo on all platforms.
  • Note: Depending on your platform, you may still see the earlier logo due to the operating system caching the application icon. If you do encounter caching issues, follow these steps to clear your icon cache.
  • Editor:
  • Go to Definition improvements
  • We have polished the Go to Definition action and its friends, Go to Declaration, Go to Type Definition, and Go to Implementation.
  • Earlier, we added the editor.gotoLocation.multiple: goto option to disable showing a Peek view when a symbol has multiple definitions. However, it would only show the first definition and ignore the rest. This is now much better, as multiple results are shown in the Status bar and pressing F12 jumps to each definition.
  • Go to Definition, no Peek view
  • Go to Definition now honors the workbench.editor.revealIfOpen setting. This means that an editor that is already open in another group can be reused (or not) when going to a symbol. Note that the old, hard-coded behavior was to reuse the current editor and the default for revealIfOpen is not to reuse.
  • The Peek view now supports search and filter, like the results tree, to allow you to quickly narrow down on a result.
  • Last but not least, you can now cancel long running requests for definitions by pressing Escape.
  • Breadcrumbs displayed
  • Breadcrumbs for quick file and symbol navigation are now on by default. This can be toggled in the View menu View > Toggle Breadcrumbs command.
  • breadcrumb navigation on by default
  • Languages:
  • TypeScript 3.5
  • VS Code now ships with TypeScript 3.5.1. This update brings TypeScript language improvements, along with tooling enhancements for both JavaScript and TypeScript. It also fixes a number of important bugs, including fixes for performance issues that some users were seeing when working with styled-components.
  • Smart selection for JavaScript and TypeScript
  • JavaScript and TypeScript now support smart selection. This feature uses semantic knowledge to intelligently expand selections for expressions, types, statements, classes, and imports:
  • Smart selection in a TypeScript file
  • Extract to type alias refactoring for TypeScript
  • Use the new Extract to type alias refactoring for TypeScript to quickly extract part type into its own type alias:
  • Extracting part of complex type to a type alias
  • The Extract to type alias refactoring has a kind of refactor.extract.type. You can configure a single keybinding that extracts either constants or type aliases using:
  • "key": "shift+ctrl+e",
  • "command": "editor.action.codeAction",
  • "args": {
  • "kind": "refactor.extract",
  • "preferred": true
  • See the Code Action documentation for more information on configuring keybindings for refactorings.
  • JavaScript and TypeScript suggestion sorting
  • We've tuned our suggestion sorting for JavaScript and TypeScript to more heavily prioritize suggestions for local variables over suggestions for globals or auto-imports:
  • As shown in the image below, if you create a function called setTimOut, VS Code will now suggest it first instead of assuming you mean setTimeout.
  • Suggest user defined setTimOut function first
  • Integrated Terminal:
  • True color support
  • The terminal now supports programs that use true color (24-bit) escape sequences, rendering the correct color instead of the previous approximation of it.
  • Before:
  • Integrated Terminal 256 color approximation
  • After:
  • Integrated Terminal true color
  • Improved surfacing of shell selector on Windows
  • For some time, there has been a command to select the default shell on Windows. This release makes the command more discoverable as a shortcut available in the terminal selector dropdown.
  • Integrated Terminal shell selector
  • Source control:
  • Compare merge conflicts with complete context
  • A new setting merge-conflict.diffViewPosition allows you to open the diff view in a new editor group when you compare merge conflicts. In addition, the new view shows the complete diff view of the changed file, which provides better context for the merge conflicts.
  • Compare merge conflicts in a new editor group
  • Contributions to extensions:
  • Remote Development (Preview)
  • The Remote Development extensions are now available for VS Code Stable and allow you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment. The extensions run in the context of the remote workspace while you work with VS Code just as you would in a local workspace.
  • Remote development architecture
  • You can learn about new extension features and bug fixes in the Remote Development release notes.
  • Extension authoring:
  • Command enablement
  • Contributed commands can now control their enabled state using a new enablement property. Its value is a when clause, similar to keybindings and menu contributions.
  • The sample below shows how to add a Hello Enablement command to the editor's context menu and have its enabled state depend on whether text is selected in an editor.
  • "commands": [{
  • "command": "extension.sayHello",
  • "title": "Hello Enablement",
  • "enablement": "editorHasSelection"
  • }],
  • "menus": {
  • "editor/context": [{
  • "command": "extension.sayHello",
  • Disabled commands are shown as grayed-out in menus:
  • Disabled contributed command
  • Note that certain menu implementations, like the Command Palette, don't show commands that are disabled. There is also some semantic overlap between enablement of commands and the when clause of menu items. The enablement clause defines the enabled state for all representations of a command while the when clause defines when a command should be included in a menu. For instance, an explorer context menu item might only make sense for certain file types, such as TypeScript files, while enabling that command might depend on another condition, for example "TypeScript server running". You can learn more about commands and menus in the Command Extension Guide.
  • Updated Octicons:
  • We have added new icons to the Octicon library:
  • New Octicons icons:
  • $(error) $(info) $(info-outline) $(smiley) $(smiley-outline) $(warning)
  • We have also updated existing icons to be a consistent size:
  • Updated Octicons icons:
  • $(beaker) $(bell) $(info-outline) $(tools)
  • Note: We also changed the default for $(info) $(smiley) to be a solid version and the previous Octicons were renamed to $(info-outline) $(smiley-outline).
  • New theme color for active tab of an inactive editor group
  • A new color tab.unfocusedActiveBackground allows you to control the background color of the active tab in an editor group that does not have focus. This color inherits from the tab.activeBackground color.
  • Webviews that set retainContextWhenHidden can now receive messages when in the background
  • Webviews that set retainContextWhenHidden can now receive messages even if they are not visible. Previously, only visible webviews could receive messages using .postMessage.
  • Keep in mind that for a good user experience, webviews should not perform complex operations such as DOM manipulation or network requests while in the background.
  • Comments API
  • We have finalized the Comments API for extensions to provide commenting support within VS Code. For example, the GitHub Pull Request extension uses the Comments API to create and update comments for open pull requests directly in the editor and a dedicated Comments Panel.
  • You can play with the comment sample extension to get a better understanding of the API or take a deep look at the GitHub Pull Request extension repository.
  • Uninstall extension command
  • There is a new command, workbench.extensions.uninstallExtension, to programmatically uninstall an installed extension.
  • vscode.commands.executeCommand('workbench.extensions.uninstallExtension', 'ms-python.python');
  • Debug Adapter Protocol
  • Thanks to Andrew Crawley, the Debug Adapter Protocol better supports hardware-oriented debuggers that need to surface processor registers and memory contents. Both additions are optional, and new and existing debug adapters are not affected. However, if a debug adapter is interested in showing registers and/or memory contents, it can opt into these features. Note that the debugger frontend also needs to add support: Visual Studio plans to support both and we have not yet decided for Visual Studio Code.
  • Support for reading registers:
  • Register support for DAP has been retrofitted to the existing "Scope" mechanism: a debug adapter can return a set of CPU registers to the frontend as an additional scope in the scopes request. To mark a scope as a "register" scope, a new optional presentationHint attribute and a value registers has been added to the Scopes type. Using this hint is all that is needed to opt into the feature; there is no corresponding capability.
  • Support for memory access and disassembly:
  • This feature centers around "memory references." A memory reference is an opaque identifier that can be used (along with an optional byte offset) to identify a single location in memory. A debug adapter has the option of providing a memory reference on DAP responses that represent things a debugger frontend might want to display in a memory view or use as the starting point for disassembly, for example EvaluateResponse and Variable. Providing memory references could be expensive for a debug adapter, so the frontend announces that it can actually use memory references by sending a supportsMemoryReferences capability in the initialize request.
  • With a_memory reference in hand, a debugger frontend can read memory via a new readMemory request and can disassemble source code via a new disassemble request. If a debug adapter implements these requests, it announces this via the two capabilities, supportsReadMemoryRequest and supportsDisassembleRequest.
  • 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.json file of your extension: "enableProposedApi": true.
  • Copy the latest version of the vscode.proposed.d.ts file into your project.
  • Note that you cannot publish an extension that uses a proposed API. We may likely make breaking changes in the next release and we never want to break existing extensions.
  • DocumentLink.tooltip:
  • The proposed DocumentLink.tooltip property allows a DocumentLinkProvider to customize the text displayed when a user hovers over a document link:
  • Custom hover text displayed for a Markdown link
  • VS Code includes instructions on how to activate the link (Cmd+click to in this example) along with the tooltip text.
  • Background terminals:
  • The new proposed runInBackground terminal option lets extension authors create terminals but not surface them through the UI. Background terminals will become regular terminals visible to the user once Terminal.show() is called for the first time.
  • // Create a background terminal
  • const terminal = window.createTerminal({ runInBackground: true });
  • // Show the terminal in the panel
  • terminal.show();
  • This is useful if you need an interactive terminal session but don't want to display it to the user unless something goes wrong.
  • New documentation
  • Remote Development topics
  • The VS Code Remote Development extensions are still in preview but there is extensive documentation to help you get started.
  • There are specific topics for each Remote Development extension:
  • Remote - SSH - Connect to any location by opening folders on a remote machine/VM using SSH.
  • Remote - Containers - Work with a sandboxed toolchain or container-based application inside (or mounted into) a container.
  • Remote - WSL - Get a Linux-powered development experience in the Windows Subsystem for Linux.
  • Under the Remote table of contents, you will also find a Tips and Tricks guide as well as FAQ.
  • Notable improvements:
  • Collapse All list and tree command with Ctrl+Left keyboard shortcut.
  • The history of the References view can now be cleared.
  • When running the Format With... command, the default formatter is now pre-selected.
  • When debugging is paused on a line, the whole line is read out by the screen reader.
  • Multiple item paste in the Explorer is run in parallel for improved performance.
  • The Open Folder button in an empty File Explorer is scoped to folder even on macOS.
  • Notable fixes
  • 15749: Potential data loss for files that changed on disk meanwhile after a backup was made
  • 17115: Preserve picked language for files across restarts
  • 74446: Completion providers with resolve methods leak memory
  • 74457: URI: Should invalidate cached _fsPath when crossing platforms
  • 73783: Make workbench.dialogs.useSimplified a real setting
  • 68793: Clicking anywhere on the "debug console" pane should "focus" on input box
  • 73457: Breakpoint lines are not correct when saving the source file after modifying the file
  • 68812: Typescript task detection is now cross-platform

New in Visual Studio Code 1.34.0 (May 17, 2019)

  • Editor:
  • Stable CodeLens:
  • VS Code now optimistically caches CodeLens locations and restores them immediately after switching editors. This fixes an issue where CodeLens lines would shift slightly when switching between editors.
  • Languages:
  • Lower rank for CSS property values with vendor prefix:
  • CSS property values prefixed with dash '-' (such as -moz-grid or -ms-grid), now come after grid in auto completion.
  • Debugging:
  • debug.showSubSessionsInToolBar
  • We have introduced the setting debug.showSubSessionsInToolBar which controls whether the debug sub-sessions are shown in the debug tool bar. When this setting is false, the stop command on a sub-session will also stop the parent session. This setting default is false.
  • Tasks:
  • Terminate all tasks:
  • The Tasks: Terminate Task command has a new option to terminal all tasks if there are multiple tasks running. If this is an action you do often, you can create a keyboard shortcut for the command with the terminateAll argument.
  • Automatically show Problems panel:
  • The new revealProblems task property allows you to automatically show the Problems panel. The property values are always, never, and onProblem.
  • Contributions to extensions:
  • Preview: Remote Development:
  • Note: The Remote Development extensions require Visual Studio Code Insiders.
  • Visual Studio Code Remote Development allows you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment.
  • The extensions in the Remote Development extension pack run in the context of the remote workspace while VS Code feels like it does when you run locally.
  • Vetur:
  • The Vetur extension now offers semantic diagnostics, hover information, jump to definition, and find references for the JavaScript expression inside Vue's template interpolation region
  • Other improvements include reduced memory usage and import path completion. You can learn more about them in the Vetur changelog.
  • Extension authoring:
  • Multi-extension debugging:
  • In this milestone, we've added support for debugging more than one extension at a time. This is useful if you are developing a set of tightly coupled or interdependent extensions.
  • Previously this feature was only surfaced via the command-line interface of VS Code, now the argument --extensionDevelopmentPath can be specified more than once. Typically --extensionDevelopmentPath is used in the launch configuration of an extension. When developing more than one extension, we recommend combining the individual extension projects into a multi-folder workspace and create a new launch configuration (stored in the workspace .code-workspace file) that uses multiple --extensionDevelopmentPath arguments for the individual extensions.
  • Please note that in this release, it is not possible to create a preLaunchTask that builds both extensions by combining the preLaunchTasks of the individual extension projects.
  • Command links in notifications:
  • It was always possible to include links in notification messages via the syntax [link name](http://link), but this only worked for links that open in a browser. Now you can also invoke a command from a link with the syntax [link name](command:<command id>). The command with the provided identifier will be triggered when the user clicks the link.
  • Links in notifications allow for title:
  • You can now add a title to links in notifications that will be shown when the user hovers over the link. The syntax is [link name](link "<the title>").
  • 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.json file of your extension: "enableProposedApi": true.
  • Copy the latest version of the vscode.proposed.d.ts file into your project.
  • Note that you cannot publish an extension that uses a proposed API. We may likely make breaking changes in the next release and we never want to break existing extensions.
  • vscode.workspace.workspaceFile:
  • There is a new workspace property returning the location of the workspace file. For example: file:///Users/name/Development/myProject.code-workspace or untitled:1555503116870 for a workspace that is untitled and not yet saved.
  • Depending on the workspace that is opened, the value will be:
  • undefined when no workspace or a single folder is opened.
  • The path of the workspace file as Uri.
  • If the workspace is untitled, the returned URI will use the untitled: scheme.
  • One use of the workspace file location is to call the vscode.openFolder command to open the workspace again after it has been closed:
  • vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);
  • Note: It is not recommended using the workspace.workspaceFile location to write configuration data directly into the file. You can use workspace.getConfiguration().update() which will work both when a single folder is opened as well as an untitled or saved workspace.
  • Machine-specific settings
  • If you have settings that allow users to customize an executable path and if these paths need to be scoped to the machine they are running on, you can now classify such settings as machine scoped. Extension authors set the scope property when contributing to the configuration extension point. Machine-specific settings can only be configured for User settings.
  • Engineering:
  • Rewritten filesystem provider for local files:
  • Extensions ave been able to provide their own filesystem implementations for custom resources (read more here). However, VS Code's own implementation for local files was not implemented with the same extension APIs. This resulted in subtle differences when dealing with local file resources compared to resources coming from extensions. Over the last two milestones, we rewrote our local file system provider to use the extension APIs for consistency.
  • New documentation:
  • Python Azure Functions:
  • There is a new Deploy Python to Azure Functions tutorial that describes how to create and deploy Python serverless Azure Functions.
  • Miscellaneous:
  • Language Server Protocol:
  • The Language Server Protocol has proposed support for the following new features:
  • Selection ranges: to compute selection ranges for an array of positions. Sent from client to server.
  • Call hierarchy: to compute a call hierarchy for a given symbol. Sent from client to server.
  • Progress: to initiate progress reporting from the server. Sent from server to client.
  • The new features are available in the next versions of the vscode-languageclient and vscode-languageserver npm modules.
  • Notable fixes:
  • Explorer Respects Trash Capability from FileSystemProvider
  • Call Stack "Paused On Breakpoint" UI not visible for long thread names
  • Terminal window crashes in Mac OS
  • Debug Console render newlines unnecessary
  • Scrolling in debug window is behaving strange
  • Error revealing files in the explorer
  • Report issue’ button on ‘Running extensions’ causes tens of duplicate issues

New in Visual Studio Code 1.33.1 (Apr 12, 2019)

  • Fixed:
  • Evironment variables not expanding in tasks
  • New and delete keywords no longer highlighted in C++ file
  • Formatter Settings UI shows strange default
  • Adopt TypeScript 3.4.3
  • Unable to select first formatter in picker
  • "name" property of OutputChannel has gone
  • Recent update of INSIDERS Edition made COG Wheel completely disappear
  • Prettier formatting causes document to jump with insiders

New in Visual Studio Code 1.33.0 (Apr 5, 2019)

  • Welcome to the March 2019 release of Visual Studio Code. There are a number of updates in this version that we hope you will like, some of the key highlights include:
  • Easy Display Language selection - Quick Pick to choose between installed locales.
  • Configurable IntelliSense display - Filter out elements like keywords or remove displayed icons.
  • Choose default formatter - Set default document formatter by project and language.
  • Go to Definition locations - Open Peek view and/or navigate to primary location.
  • Convert to destructured parameters - New TS refactoring to use named parameter objects.
  • Debugging support for subsessions - See subprocesses displayed under main debug session.
  • Launch URI with debug session - Automatically open a browser when debugging web server code.
  • Install missing extension dependencies - Detect and offer to install missing dependencies.
  • "Remote Debugging for Node.js" topic - Learn how to attach to Node.js apps running on Azure.
  • If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
  • The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:
  • Workbench - Improved Source Control view, easier list navigation with screen readers.
  • Integrated Terminal - ConPTY on by default on Windows, rendering performance improvements.
  • Languages - Disable CSS property value completions, TS improved inference and const assertions.
  • Extension Authoring - Finalized smart selection API, install extension command.
  • Engineering - Official Linux snap package, faster OSS builds with NPM package caching.
  • Insiders: Want to see new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available. And for the latest Visual Studio Code news, updates, and content, follow us on Twitter @code!
  • Workbench:
  • Easier Display Language configuration
  • Running the Configure Display Language command will now open a Quick Pick listing the available locales based on the Language Packs you have installed, instead of only opening the locale.json file. When you make a selection, the locale will be automatically updated and you'll be prompted to restart VS Code for the change to take effect.
  • Configure Display Language Quick Pick:
  • Improved Source Control view:
  • The Source Control view has been aligned to behave like other views, such as the File Explorer, Debug view, etc. Repositories can now be made visible or hidden using context menu actions. Their order and sizing is now preserved. You can also show or hide the Source Control Providers view with context menu actions.
  • Source Control view context menu:
  • The Source Control view also now behaves like the Open Editors view and resizes itself up to a certain number of source control providers. If you'd like to disable the automatic resizing and prefer to resize it manually, set the newly introduced scm.providers.visible setting to 0.
  • List simple keyboard navigation when screen reader detected
  • When VS Code detects that a screen reader is being used, it automatically turns on simple keyboard navigation for lists. This makes the list keyboard navigation easier for users with a screen reader since each key stroke will navigate to the corresponding item. This behavior applies for all lists and trees in the workbench, for example the File Explorer, Open Editors, and Debug views.
  • Editor:
  • IntelliSense customization:
  • There are new settings that control the IntelliSense display:
  • editor.suggest.filteredTypes - Filter specific types from IntelliSense, for instance keywords are filtered with: { "keyword": false }.
  • editor.suggest.maxVisibleSuggestions - Control the number of items IntelliSense shows at once.
  • editor.suggest.showIcons - Enable or disable displaying icons in IntelliSense.
  • Below is an example of TypeScript IntelliSense with keywords filtered out, no icons, and limited to eight suggestions:
  • IntelliSense: no keywords, no icons, only eight entries
  • Default formatter selection:
  • Many of our users work on different projects and often different projects use different document formatters. This has been hard to configure and we have added a new setting to help, editor.defaultFormatter. Now, when there are multiple formatters available, you can define one as the default. In fact, VS Code will encourage you to pick a default formatter.
  • Pick Default Formatter:
  • This will update your configuration (as shown below) so that for subsequent save operations, VS Code knows what formatter to pick. We also encourage you to set this value in your project's configuration. For example, if your project team agrees on a formatter, then it should be spelled out in the project settings file.
  • "[javascript]": {
  • "editor.defaultFormatter": "HookyQR.beautify"
  • Defining a default formatter does not remove alternative formatters. We have added the Format Document With... command, which still allows you to pick a formatter before formatting a document. If needed, you can also reconfigure the default formatter from the dropdown.
  • Go To Definition customization
  • Some programming languages allow you to define a symbol in multiple locations. This means that a feature like Go to Definition must go to multiple locations at once. VS Code supports this by showing a Peek view with all locations. This behavior can now be fine-tuned with a new setting, editor.gotoLocation.multiple.
  • It can be set to these values:
  • peek - Open Peek view at the current location. This is the default.
  • gotoAndPeek - Open the primary location (as defined by the extension) and also show a Peek view.
  • goto - Only open the primary location.
  • Snippet variable $WORKSPACE_NAME
  • There is a new snippet variable that resolves to the name of the opened workspace/folder: $WORKSPACE_NAME.
  • Use it as shown in the snippet below:
  • "header": {
  • "scope": "javascript,typescript",
  • "prefix": "workspace",
  • "body": ["// the ${WORKSPACE_NAME}-project"],
  • "description": "Log output to console"
  • Integrated Terminal
  • ConPTY turned on by default on Windows build 18309+
  • For supporting versions of Windows 10 Insiders, the new terminal back-end ConPTY will be turned on by default. This should result in a more stable experience closer to the native terminal and adds 256 color support. If you experience issues, please let us or the Windows Console team know. You can always opt out with this setting:
  • "terminal.integrated.windowsEnableConpty": false
  • Data parsing capped to 12 ms
  • Previously, the amount of data parsed by the terminal was not being capped properly. This meant that on less powerful hardware, the amount of time parsing data and rendering would far exceed the ideal time to render a frame, resulting in laggy UI or a full lock up for commands that generated a lot of output. There is now a cap in place, which prevents this from exceeding approximately 12 ms, which should avoid these issues.
  • Languages:
  • TypeScript 3.4
  • VS Code now ships with TypeScript 3.4.1. This update adds support for some new TypeScript language features—such as improved inference and new const assertions—as well as bringing tooling improvements and bug fixes.
  • Convert to destructured parameters refactoring
  • The new Convert to named parameters refactoring for TypeScript lets you quickly organize long function parameter lists by converting the function to take a single named parameter object.
  • Cleaning up a long parameter list:
  • Option to disable CSS property value completion:
  • A new setting, css.completion.triggerPropertyValueCompletion, allows you to disable property value completion. For example, if you choose position from p and have this setting set to false, VS Code will not trigger the static | absolute | sticky | ... completions for the property value.
  • This is useful if you would like to use Tab/Shift + Tab to select previous and next completion items.
  • Debugging:
  • Support for subsessions
  • In this milestone, we have added support to display debug sessions as a tree in the debugger UI. Previously debug session were displayed as a flat list, which made it difficult to grasp that sessions were related.
  • Since this functionality is available via a new extension API, it requires adoption by debugger extensions. In this milestone, the only debugger that makes use of hierarchical debug sessions is VS Code's Node.js debugger.
  • In Node.js cluster debugging, all subprocesses of a cluster are registered under the main debug session:
  • Node.js subprocesses under main debug session
  • In the "server-ready feature" (see below), an automatically launched Chrome browser session is registered as a child of the server debug session.
  • Automatically open a URI:
  • The last milestone had a preview version of the "server ready" feature, which allows you to open a URL in a web browser automatically as soon as a specific program output message is detected. This feature is useful for debugging web server source code because the URL opened in the browser can make the server hit a breakpoint as soon as the server is ready (and this all with a single F5 key press).
  • In this milestone, we've moved the feature out of preview. VS Code looks for the trigger message not only in the Debug Console but also in the Integrated Terminal. In addition, we've also improved the error handling.
  • Note that for technical reasons, it is not possible to support the "server ready" feature in external terminals.
  • Extensions:
  • Install missing dependencies
  • We've improved the extension activation failure notification when VS Code detects a missing extension dependency and now provide an action to install the missing dependency.
  • Extension missing dependency warning:
  • You can also install all missing dependencies using the new Extensions: Install Missing Dependencies command.
  • Network proxy support for extensions:
  • We now load the SSL/TLS certificates from the operating system and include them when validating https requests initiated by extensions. This supports proxies using their own SSL/TLS certificates and other setups with custom certificates.
  • In addition, http/https requests from extensions now honor the NO_PROXY environment variable, which lists the domain names separated by commas for which all proxy settings should be ignored.
  • 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.
  • Call Hierarchy:
  • A call hierarchy view shows all calls from or to a function and allows you to drill into callers of callers and calls of calls. The image below shows that function foo is being called by bar and bang, then bar is being called by bang and fib.
  • Call Hierarchy view
  • This is a preview feature and there aren't any extensions currently providing real data for it. However, if you are an extension author, we invite you to validate our proposed API. If you are interested, there is a sample extension for testing: https://github.com/jrieken/demo-callhierarchy.
  • Extension authoring:
  • Smart select API:
  • We have finalized the smart select API used with the Expand Selection (Shift+Alt+Right) and Shrink Selection (Shift+Alt+Left) commands. With this API, extensions can define the ranges that get selected in the editor.
  • Install extension command:
  • A new command workbench.extensions.installExtension was introduced to install an extension from the Marketplace or a VSIX.
  • To install an extension from the Marketplace, you provide its identifier.
  • vscode.commands.executeCommand('workbench.extensions.installExtension', 'ms-python.python');
  • To install via a VSIX, you provide its location URI.
  • vscode.commands.executeCommand('workbench.extensions.installExtension', vscode.Uri.file('path-to-vsix'));
  • Debug toolbar contributions support positioning
  • It is now possible to position the contributed debug commands in any order in the Debug toolbar. The default debug commands are using the group navigation so if you would like your contributed commands to be mixed with the default ones, use the same group. More information about sorting inside groups can be found here.
  • For consistency, we are deprecating the menu ID debug/toolbar in favor of debug/toolBar. In the March release, we will support both menu IDs, but in April, support for the debug/toolbar menu ID will be removed.
  • "sidebarVisible" context renamed to "sideBarVisible"
  • For consistency, we are deprecating the context sidebarVisible in favor of sideBarVisible. In the March release, both contexts will be supported, but in the April release, support for sidebarVisible will be dropped.
  • TerminalOptions.shellArgs now accepts strings on Windows
  • Previously TerminalOptions.shellArgs only supported a list of arguments in the form string[]. This could cause issues on Windows as the string array needs to be converted into the command-line format and the conversion could go wrong or be hard to get right for complicated cases. You can now bypass this conversion process on Windows by using a string in command-line format directly.
  • Hierarchical debug sessions:
  • In order to support hierarchical debug sessions, we've added an optional argument parentSession to the vscode.debug.startDebugging API. If specified, VS Code shows the debug session resulting from startDebugging in a tree-like way as a child of the parent session.
  • Removing the vscode.previewHtml command:
  • The vscode.previewHtml command was used to render HTML pages in the editor before the webview API was introduced last year. However the vscode.previewHtml command suffered from some important security and compatibility issues that we determined could not be fixed without breaking existing users of the command. So instead of trying to fix vscode.previewHtml, we have opted to remove the command entirely in VS Code 1.33.
  • We've tried to give all extensions that use the vscode.previewHtml command ample warning so that they can upgrade to use the webview API. However, there may still be a few extensions that are still using the vscode.previewHtml command and will therefore no longer work. If you are using one of these extensions, please file an issue against it or, even better, submit a PR with the fix.
  • Proposed extension APIs:
  • Every milestone comes with new proposed APIs and extension authors can try them out. As always, we welcome 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.json file of your extension: "enableProposedApi": true.
  • Copy the latest version of the vscode.proposed.d.ts file into your project.
  • Note that you cannot publish an extension that uses a proposed API. We may likely make breaking changes in the next release and we never want to break existing extensions.
  • Custom task execution:
  • In addition to ProcessExecution and ShellExecution tasks, there is now a CustomExecution task. Instead of launching a process or running a script, it executes a callback provided by the extension.
  • let execution = new vscode.CustomExecution((terminalRenderer, cancellationToken, args): Thenable<number> => {
  • return new Promise<number>(resolve => {
  • // This is the custom task callback!
  • resolve(0);
  • });
  • });
  • const taskName = "First custom task";
  • let task = new vscode.Task2(kind, vscode.TaskScope.Workspace, taskName, taskType, execution);
  • This will give an extension provided task more flexibility for maintaining state when the task is run. It also provides access to the input and output for a task. For a complete example, see the test item.
  • Commenting API:
  • We did large refactoring around Commenting related features during the last two months, based on the lessons and experience we learned from the GitHub Pull Requests extension and feedback from the community. The newly designed Commenting API is generic and powerful enough for different types of usage. The GitHub Pull Requests extension has already moved to the new Commenting API.
  • The new interface is available in VS Code Insiders and we will use the April milestone to tune and tweak the API. The old Commenting API will also be removed in April. You can play with the sample extension to get a better understanding of the API or take a deep look at GitHub Pull Requests.
  • WebviewOptions.portMapping
  • The proposed WebviewOptions.portMapping setting allows extensions to transparently define how localhost ports are resolved inside of webviews.
  • const panel = vscode.window.createWebviewPanel('dog', "Dog Doodling", vscode.ViewColumn.One, {
  • portMapping: [
  • // Map localhost:3000 in the webview to localhost:4000 externally
  • { port: 3000, resolvedPort: 4000 }
  • });
  • panel.webview.html = `<!DOCTYPE html>
  • <html lang="en">
  • <head>
  • <title>Dog Doodling</title>
  • </head>
  • <body>
  • <!--
  • With the above port mapping, this image will actually be resolved
  • to localhost:4000 on the local machine
  • -->
  • <img src="http://localhost:3000/canvas.png">
  • </body>
  • </html>`;
  • It is considered good practice to start services like live servers on a random port. With port mapping, a webview's HTML content can use a hard-coded port that is mapped to the dynamically opened port that the service is really running on.
  • Call Hierarchy Provider:
  • There is a proposed API for a CallHierarchyItemProvider supporting the call hierarchy feature. Try it out, leave feedback, and help us make this good API.
  • Engineering:
  • Official Linux snap package
  • We now fully support distributing Visual Studio Code as a snap package. Snaps work across many different Linux distributions, provide reliable execution environments for a much stabler VS Code, and support background updates. Yes, that's right, you now get in-product automatic updates for Linux just as the Windows and macOS users do. 🎉
  • Snap store:
  • Installing the snap package is as easy as:
  • sudo snap install code --classic
  • Are you an insider? Come on and jump over to the Insiders snap package, and get daily updates without any extra work:
  • sudo snap install code-insiders --classic
  • Caching NPM packages
  • Thanks to our friends over at Microsoft DevLabs, we were able to speed up our OSS builds using an Azure Pipelines extension, which caches NPM packages and speeds up the entire npm install process. If you'd like to know more about this, you can read this blog post by Ethan Dennis.
  • Strict null checking of VS Code:
  • We made a final big push this iteration to enable TypeScript's strict null checking for the core VS Code codebase. Strict null checks help to catch some common programming mistakes and make our codebase more maintainable, so that we can keep moving quickly yet safely.
  • Enabling strict null checks for core VS Code was a six-month effort that involved at least 40 contributors and touched tens of thousands of lines of source code. You can read about how we went about incrementally enabling strict null checking here.
  • Contributions to extensions:
  • GitHub Pull Requests
  • This milestone we continued working on improvements to the GitHub Pull Requests extension.
  • Below are some of the new features:
  • New workbench.action.addComment and workbench.action.submitComment commands to customize the keyboard shortcuts for adding and submitting comments.
  • Polished rendering of GitHub todo lists in the description page.
  • Adoption of the new Commenting API.
  • Vetur
  • The Vetur extension now supports any workspace version of TypeScript > 2.8, so that users get more consistent language support between *.vue, *.js, and *.ts files.
  • Other than making available the new TypeScript language features and bug fixes, Vetur also improved its integration with TypeScript to bring grayed-out unused variables, code actions (autofixes), and auto import to *.vue files.
  • Vetur TypeScript features:
  • Read more on these features in the Vetur Changelog.
  • New documentation
  • Node remote debugging
  • The new Remote Debugging for Node.js topic explains how you can connect the VS Code debugger to your Node.js applications running on Azure with the Azure App Service extension.
  • Azure App Service extension:
  • Notable fixes
  • 27636: Quick commands fuzzy search doesn't work for text in brackets
  • 66632: Terminal link underlines on lines that start with t are offset
  • 70962: Console.WriteLine() does not result in an empty line anymore
  • 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 our issue tracking. Please see our Community Issue Tracking page, if you want to help us manage incoming issues:
  • Alexander (@usernamehw)
  • Simon Chan (@yume-chan)
  • Danny Tuppeny (@DanTup)
  • John Murray (@gjsjohnmurray)
  • Progracientist (@beastdestroyer)
  • Contributions to vscode:
  • Adam Tajti (@adamtajti): Cleanup: Remove duplicate configuration from outline.contribution.ts PR #69861
  • Hyun-seok Oh (@algoshipda): Fix comment typo handker -> handler PR #70150
  • Jimmy Merrild Krag (@beruic): Change icon name on Linux for icon theme compatibility PR #62650
  • @dekkonot: Fix spelling of 'accessible' in task.json group enum PR #70145
  • David Lechner (@dlech)
  • Remove comment that shellArgs parameter of createTerminal does work in Windows PR #71127
  • Make the default value of renderFinalNewline the same on all platforms PR #70127
  • ExE Boss (@ExE-Boss): feat(coffeescript): Add .iced extension PR #70686
  • Martin Wimpress (@flexiondotorg): Snapcraft update. Fixes #63194 Fixes #57019 PR #70884
  • Phil Marshall (@flurmbo): debugger console recognizes italic ansi code PR #67511
  • Gabriel DeBacker (@GabeDeBacker): User/gabrield/extension callback as task PR #66819
  • Gunay Mert Karadogan (@gmertk): Add workspace name variable for snippets #68261 PR #68653
  • Timur Guzairov (@gtim108): Initialize viewletService in Workbench PR #70010
  • Ian Sanders (@iansan5653): Correctly handle succeeding ANSI color codes (fix #70416) PR #70502
  • Jean Pierre (@jeanp413)
  • Create panel part after editor part in workbench PR #70356
  • Fix terminal rename PR #68489
  • Krish De Souza (@Kedstar99)
  • Removed Snap related code from updateService.linux.ts PR #69979
  • Fixes #69583 PR #69722
  • Omkar Manjrekar (@manjrekarom): Support for remote management in git PR #60640
  • Karthikayan (@ParkourKarthik): git: Open File command fix on clean tree PR #60426
  • @pawelurbanski: Fixing IntelliSense verbosity with screen readers PR #67155
  • Alasdair McLeay (@penx): Update .nvmrc PR #70701
  • Ryan A. Pavlik (@rpavlik): Fix typo in spelling of Preferences. PR #69807
  • Scott Craig (@scottymcraig): Fixes Git Clone Problem with Spaces PR #60573
  • Benas Svipas (@svipas)
  • Add showIcons and maxSuggestionsToShow settings PR #69942
  • Add css.completion.triggerPropertyValueCompletion setting PR #70090
  • Takashi Tamura (@tamuratak): Make an error message easier to understand PR #69701
  • Contributions to vscode-css-languageservice:
  • Benas Svipas (@svipas): Implement CSS triggerPropertyValueCompletion setting PR #149
  • Contributions to node-jsonc-parser:
  • Jakub Rożek (@P0lip): add line and column information to scanner and visitor PR #17 Contributions to language-server-protocol:
  • Louis Roché (@Khady): fix typo in WorkspaceEdit description PR #691
  • Konrad Borowski (@xfix): List Perl 5 and Perl 6 identifiers separately PR #694
  • Arjun Attam (@arjun27): Fix number of references example in LSIF spec PR #695
  • Louis Roché (@Khady): Fix typo PR #698
  • Remy Suen (@rcjsuen): Add missing declarationProvider field into server's capabilities PR #701
  • Contributions to inno-updater:
  • Sayan Nandan (@sntdevco): Improve tests for filerec PR #9
  • Contributions to debug-adapter-protocol:
  • 大表哥 (@Aaaaash): Add Cloud Studio among the Dev Tools PR #31
  • Jens Fischer (@Gama11): Add debug adapters from the Haxe ecosystem PR #34
  • Gregg Miskelly (@gregg-miskelly): Add link to Visual Studio Debug Adapter Host repo PR #37
  • Contributions to localization:
  • There are over 700 Cloud + AI Localization community members using the Microsoft Localization Community Platform (MLCP), with over about 100 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.
  • Bosnian: Ismar Bašanović.
  • Bulgarian: Любомир Василев.
  • Czech: Jakub Stibůrek, David Jareš, Samuel Tulach, Jan Brudný.
  • Danish: Lasse Stilvang, Alexander Matzen, Johan Fagerberg, Allan Kimmer Jensen.
  • Dutch: Jos Verlinde, Hans Zoons, Eric Algera, Sujith Quintelier.
  • English (United Kingdom): YASHU MITTAL, Mohammad Idrees, Chris Dias.
  • Finnish: Petri Niinimäki, Riku Riikonen,Valtteri Vatanen.
  • French: Corwin D'Ambre, Mohamed Sahbi, Antoine Griffard, Maxime Coquerel, Cédric M., Steven Dugois, franto.
  • German: Frank Lindecke, Dejan Dinic, Jakob von der Haar, Mario Koschischek, Florian Berger, Hans Meiser, Carsten Kneip, Thorsten Hans, Sebastian Seidl.
  • Greek: Jim Spentzos, Stratos Kourtzanidis, John D, Δημήτρης Παπαϊωάννου.
  • Hebrew: Shalom Craimer, Snir Broshi, Kyle Orin.
  • Hindi: Satish Yadav, Amit Gusain, Ashok Kumar Rathore, nirav adatiya, Rajeev Desai, shaswat rungta, Kumar Vaibhav, Jagjeet Singh, Pratishek PII, Chethana S, Dhanvi Kapila.
  • Chinese Simplified: Tingting Yi, 斌 项, feiyun0112 feiyun0112, 刘瑞恒 刘瑞恒, 建东 薛, YITING ZHU, Joel Yang, Junzhe Liu, Dave Young, 昊宇 周, Tony Xia, Yu Zhang, XIANG ZUO, 彦佐 刘, Edi Wang, 少民 谈, Zhiqiang Li, 福永 叶, G.Y. Z, Hao Hu, Pluwen, meng shao, Xiangrui Kong, Liam Kennedy, 松阳 樊, Young Bige, Justin Liu, Jessica Zhang, Licheng Ren, 驰 雷, sun qing, xiong Fu, Fan Su, Lynne Dong, 吉姆 舒, zhao yu, 游 尤, 剑秋 陶, Hanlin Yang, bh wu, Hanyu ZHANG, Y F, WangCG duoduobear, Jiang LI, 越 郑, ziqiang sun, 正元 刘, peng wei, 瑜 周, Simon Chan, 仁松 陈, 翼 张, Wang Weixuan, Ludi Fang, 九鼎 谭.
  • Chinese Traditional: 謝政廷, 奕濬 潘, Winnie Lin, 小克.
  • Hungarian: Péter Nagy, Levente Hallai Seiler, Richard Borcsik, Dániel Tar.
  • Indonesian: Laurensius Dede Suhardiman, Franky So, Rachmat Wahidi, Afnizar Nur Ghifari, Pradipta Hendri, Azhe Kun.
  • Italian: Alessandro Alpi, Bruni Luca, Andrea Dottor, Riccardo Cappello, Aldo Donetti, Michael Longo.
  • Japanese: nh, EbXpJ6bp -, Hasefumi, Masakazu TENMYO, torisoup, Takayuki Fuwa, Yosuke Sano, Makoto Sakaguchi, 裕子 知念, Rie Moriguchi, Koichi Makino, Fujio Kojima, Kazuya Ujihara, Yasuaki Matsuda.
  • Korean: Jong Heun Shin, Kyunghee Ko, Jae Yong Kum, SeungJin Jeong.
  • Latvian: kaspars bergs.
  • Norwegian: Andreas Rødland, Cookius Monsterius, Stephan Eriksen.
  • Polish: Grzegorz Miros, Tomasz Świstak, Michal Szulc, Bartek PL, Szymon Seliga, Tomasz Chojnacki, Marcin Weksznejder, Piotr Grędowski, Artur Pelczar, Marcin Floryan, Jakub Jedryszek.
  • Portuguese (Brazil): Marcondes Alexandre, Albert Tanure, Marcelo Fernandes, Junior Galvão - MVP, Roberto Fonseca, Ray Carneiro, Renan Miguel, Lucas Miranda, Eduardo Moura, Bruno Talanski, Bruno Sonnino, Jucinei Pereira dos Santos, Emmanuel Gomes Brandão, Flávio Albuquerque Camilo, Pablo Garcia, José Rafael de Santana, Douglas Ivatiuk Martim, Giuliano Reginatto, Marcos Dias, Alan William, Lucas Nunes, Gabriel Schade, arthurdenner ., Mauricio Lima, Gabriel Barbosa, Victor Cavalcante, Letticia Nicoli, Fernando Val, Milton Camara, Felipe Scuissiatto, Alessandro Fragnani, Gustavo Bezerra, Cynthia Zanoni, Marcelo Guerra, Jhonathan Soares, Rafael Laranja, Swellington Soares.
  • Portuguese(Portugal): Vitor Barbosa, João Carvalho.
  • Romanian: Mihai Marinescu.
  • Russian: Andrey Veselov, michael v, Иван Лещенко.
  • Serbian: Milos Zivkovic.
  • Spanish: Andy Gonzalez, Engel Aguilar, Alvaro Enrique Ruano, Carlos Mendible, José María Aguilar, julian3xl, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta, Jorge Serrano Pérez.
  • Tamil: Mani M, Krishna Pravin, Jeffin R P, Vetri ..
  • Turkish: Hüseyin Fahri Uzun, Okan Çetin, Muhammed Emin TİFTİKÇİ.
  • Ukrainian: Dmytro Kutianskyi, Did Kokos.
  • Vietnamese: Belikhun, Việt Anh Nguyễn.

New in Visual Studio Code 1.32.3 (Mar 15, 2019)

  • Fixed:
  • Slow startup opening a large workspace over the network candidate file-explorer freeze-slow-crash important verified
  • Fix #70045 by reverting some of #67269

New in Visual Studio Code 1.32.2 (Mar 14, 2019)

  • Preview and apply color themes - Install and apply new theme extensions without reloading.
  • Keyboard shortcuts editor improvements - Modify keybinding 'when' conditions in the editor.
  • Problems panel hover commands - Apply Quick Fixes or open a Peek window directly from hovers.
  • Preferred Code Actions - Preferred (mostly likely) Code Actions support auto fixing common issues.
  • Debug Console customization - Modify font size, font family, and line height of the Debug Console.
  • Better IntelliSense for ARIA attributes - More detailed descriptions for HTML accessibility attributes.
  • Vue.js interpolations IntelliSense - The Vetur extension now supports smart completions in Vue.js interpolations.
  • New "Bundling Extensions" topic - Use webpack to improve your extension's load time.
  • If you'd like to read these release notes online, go to Updates on code.visualstudio.com.

New in Visual Studio Code 1.31.1 (Feb 13, 2019)

  • No reload on extension install - No interruptions when you install new extensions.
  • Tree UI improvements - Improved Explorer navigation and filtering, horizontal scrolling.
  • Main menu updates - Redesigned Go actions menu, Edit menu Cut command.
  • Multiline Problems output - See full multiline issue details in the Problems panel.
  • Find All References history - Quickly rerun previous reference searches.
  • Semantic selection for HTML, CSS, and JSON - Expand/shrink selection based on language semantics.
  • Integrated Terminal reflow support - Terminal text automatically reflows as panel width changes.
  • Command-based user input variables - Custom user input for task and debug configuration.
  • Updated Extension API documentation - Completely rewritten with extension guides.

New in Visual Studio Code 1.31.0 (Feb 7, 2019)

  • No reload on extension install - No interruptions when you install new extensions.
  • Tree UI improvements - Improved Explorer navigation and filtering, horizontal scrolling.
  • Main menu updates - Redesigned Go actions menu, Edit menu Cut command.
  • Multiline Problems output - See full multiline issue details in the Problems panel.
  • Find All References history - Quickly rerun previous reference searches.
  • Semantic selection for HTML, CSS, and JSON - Expand/shrink selection based on language semantics.
  • Integrated Terminal reflow support - Terminal text automatically reflows as panel width changes.
  • Command-based user input variables - Custom user input for task and debug configuration.
  • Updated Extension API documentation - Completely rewritten with extension guides.

New in Visual Studio Code 1.30.1 (Dec 19, 2018)

  • Fixes:
  • Search view breaks after starting a search while the previous search is still running
  • Can't search CRLF files with non-regex multiline search
  • Fix search CRLF files with non-regex multiline search
  • HTML editor not working fully bug candidate html
  • Peek editor tree color tokens are broken bug candidate editor-symbols regression tree
  • Can't trigger "Load more Stack Frames" with keyboard
  • treeResourceNavigator: fire onSelection also for keyboard events
  • "Start Debugging" asks to choose environment when triggered from main menu

New in Visual Studio Code 1.30.0 (Dec 13, 2018)

  • Multiline search improvements - Easily create multiline search patterns without using regex.
  • Custom title bar on Linux - The custom title and menu bar is now the default on Linux.
  • References view - Find All References view includes history of recent searches.
  • Snippet comment variables - Snippet variables insert correct comment per language.
  • JS/TS callback display - Now you can see the context of anonymous callbacks.
  • JSDoc Markdown highlighting - Including syntax highlighting for Markdown code blocks in JSDoc.
  • Simplified debug configuration - Better defaults and Quick Pick UI for initial launch configuration.
  • Run tasks on folder open - Configure tasks to run when you first open a project folder.
  • Choose extension version - Install earlier versions of Marketplace extensions.
  • Workbench - Menu scrolling and improved overflow handling, one click to open settings.json.
  • Languages - JS/TS renames now handle destructuring, add missing 'new' Quick Fix.
  • Debugging - Delete debug consoles, debug directly from the VS Code Process Explorer.
  • Tasks - Clear task terminal, user input for task variables, rerun last task command.
  • Extension Authoring - Go to Declaration support, new Signature Help context.

New in Visual Studio Code 1.29 (Nov 13, 2018)

  • Multiline search - Search across files with regex multiline expressions.
  • File icons in IntelliSense - Quickly distinguish file types in IntelliSense.
  • Better macOS support - Full screen mode control and Mojave Dark Mode support.
  • Collapsible stack frames - Collapse uninteresting stack frames to clearly see your code.
  • Improved Loaded Scripts view - Displays related resources such as original source files.
  • Updated extension samples - Uniform style and structure, README, and API usage.
  • CI recipe for extensions - Azure Pipelines build recipe for extensions.
  • Preview: List All References - List All References view shows reference search results.
  • If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
  • You can also check out this 1.29 release highlights video from Cloud Developer Advocate Brian Clark.
  • The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:
  • Workbench - Platform specific end-of-line characters, highlight modified file tabs.
  • Integrated Terminal - Split terminal cwd options, Cmd+Backspace to delete to start of line.
  • Languages - Display CSS Specificity on hover, handle unknown CSS properties.
  • Debugging - Multiple debug consoles, start with stop on entry, style console.log messages.
  • Extension Authoring - Active terminal API, more control over custom views.
  • Insiders: Want to see new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available. And for the latest Visual Studio Code news, updates, and content, follow us on Twitter @code!
  • Search
  • Multiline search
  • VS Code now supports multiline search! Same as in the editor, a regex search executes in multiline mode only if it contains a n literal. The Search view shows a hint next to each multiline match, with the number of additional match lines.
  • Multiline search
  • This feature is possible thanks to the work done in the ripgrep tool to implement multiline search.
  • Backreferences and lookahead in search
  • It is also now possible to use backreferences and lookahead assertions in regex searches, by setting "search.usePCRE2": true. This configures ripgrep to use the PCRE2 regex engine. While PCRE2 supports many other features, we only support regex expressions that are still valid in JavaScript, because open editors are still searched using the editor's JavaScript-based search.
  • Fancy regex search
  • If you are still missing lookbehind assertions, don't worry! That feature is just recently supported by JavaScript and should come to VS Code in a later Electron shell update.
  • Show line numbers in search
  • We've added a setting search.showLineNumbers which will display the line number for each match in the Search view.
  • Disable search and replace preview
  • There is a new setting search.useReplacePreview which allows you to disable the preview diff that appears when doing a search/replace in the Search view.
  • line numbers
  • Use global .gitignore file in search
  • Git allows you to configure a global gitignore file using the core.excludesfile config property. By default, search does not respect the global gitignore file, but you can now change this by enabling the new setting search.useGlobalIgnoreFiles.
  • Workbench
  • macOS Mojave Dark Mode support
  • The macOS Mojave Dark Mode is now better supported in VS Code. Previously, VS Code menus and dialogs would show with the default light theme, even if macOS was running in dark theme. Now, all native UI elements will show with the Dark Mode if enabled.
  • macOS Mojave Dark Mode
  • macOS full screen support
  • A new setting window.nativeFullScreen was introduced that, if set to false, will enable full screen mode for VS Code that does not use the native macOS full screen feature. This has the advantage that entering full screen mode will not create a macOS space on the desktop. By default, VS Code will still use macOS native full screen.
  • New default for files.eol: auto
  • The files.eol end of line setting now has a new default value auto. When set to auto, the end of line character for new files is specific to the operating system. It is rn on Windows and n on macOS and Linux. You can also still explicitly set file.eol to n or rn.
  • Highlight modified tabs
  • A new setting workbench.editor.highlightModifiedTabs displays a thick border at the top of editor tabs whenever the editor is dirty (has unsaved changes). This makes it easier to find files that need to be saved. The color of the border can be customized (see below).
  • Highlight modified tabs
  • Centered editor layout auto resize
  • Centered layout view will now automatically resize to max width when more than 1 editor group is open. This should make centered layout easier to use and require less manual toggling. This behavior is controlled by a new setting workbench.editor.centeredLayoutAutoResize which is enable by default.
  • Symbol order in Breadcrumbs
  • There is a new setting that controls how symbols in the Breadcrumbs picker are ordered: breadcrumbs.symbolSortOrder.
  • Allowed values are:
  • position - position in the file (default)
  • name - alphabetical order
  • type - symbol type order
  • The example below shows the Breadcrumbs symbol list ordered by name:
  • Breadcrumb picker ordered by name
  • Breadcrumbs and preview editors
  • When middle clicking items in the Breadcrumbs navigation, they now open in a new editor and don't reuse the preview editor. This behavior now matches middle clicking files in the Explorer.
  • Notifications automatically hide even when showing buttons
  • Previously, VS Code would never hide notifications if they included buttons. This resulted in the potential for notifications to pile up in the lower right corner and cover parts of the editor. With this release, notifications are hidden after a timeout even if they show buttons.
  • There are two exceptions:
  • Notifications with error severity will not be hidden on the assumption that the user needs to take some action.
  • A few specific notifications from VS Code will remain open. For example, the notification that asks if you'd like to install an extension after browsing the VS Code Marketplace.
  • Note: Even if notifications are hidden, you can always access all notifications from the Notification Center, either by clicking on the little bell icon in the Status bar or via the Show Notifications (notifications.toggleList) command.
  • Panel position button to context menu
  • In order to preserve horizontal space and reduce clutter, we removed the toggle Panel position button (Move to Right, Move to Bottom) from the Panel title area. The action is now available in the Panel title area context menu and also in View > Appearance > Toggle Panel Position main menu. Another reason for removing this button was that we believe users set their layout once and don't normally toggle back and forth.
  • Move panel
  • Updated file icons per file type
  • In the previous release, we added custom icons for common VS Code file types. We now added those icons to smaller views so they will appear in a list view.
  • Updated file icons
  • Settings editor "Modified in" hint is now a link
  • In the Settings editor, we show a hint when a setting is configured in a scope (User, Workspace) other than the currently selected scope. The other scope hint is now a link that will take you to the setting in the other scope.
  • modified in link
  • Tree widget performance
  • The VS Code tree widget control is used in many places in the VS Code UI but was hitting performance limits in some specific use cases (Problems panel, Outline view). We have been working on faster virtual tree widget implementations which can accommodate different levels of performance versus API convenience. You can read here to learn more.
  • The new ObjectTree widget is now being used in the Problems panel and we've already seen significant improvements. We were able to dramatically raise the number of problem items the workbench can handle as well as increase the speed of certain operations (such as Collapse All) and advanced filtering scenarios. These improvements now make it feasible to work with larger collection sizes.
  • Workbench navigation commands
  • Four commands are added to improve workbench navigation:
  • workbench.action.nextSideBarView: Go to next view in Side Bar.
  • workbench.action.previousSideBarView: Go to previous view in Side Bar.
  • workbench.action.nextPanelView: Go to next Panel.
  • workbench.action.previousPanelView: Go to previous Panel.
  • By default, the commands do not have keyboard shortcuts.
  • Two context keys, sideBarFocus and panelFocus were also added. This allows using the same keybinding for different commands in different Workbench areas:
  • { "key": "cmd+]", "command": "workbench.action.nextEditor" },
  • { "key": "cmd+[", "command": "workbench.action.previousEditor" },
  • "key": "cmd+]",
  • "command": "workbench.action.nextSideBarView",
  • "when": "sideBarFocus"
  • "key": "cmd+[",
  • "command": "workbench.action.previousSideBarView",
  • "when": "sideBarFocus"
  • "key": "cmd+]",
  • "command": "workbench.action.nextPanelView",
  • "when": "panelFocus"
  • "key": "cmd+[",
  • "command": "workbench.action.previousPanelView",
  • "when": "panelFocus"
  • workbench-navigation
  • Show view group parent
  • The Open View command (view in Quick Open) now shows each view group's parent to better represent the view hierarchy. For example, the Explorer group now show as Side Bar / Explorer, and Terminal group as Panel / Terminal.
  • structured-view
  • Editor
  • File and folder icons in IntelliSense
  • The IntelliSense widget now shows file and folder icons for file completions based on your File Icon theme. This provides a unified look and helps you quickly identify different file types.
  • File Icons in IntelliSense
  • Format Selection
  • To speed up small formatting operations, the Format Selection command without an editor selection will now format the current line.
  • Show error codes
  • The editor now shows the error code of a problem if an error code is defined. The error code is displayed at the end of the line in square brackets.
  • Below you can see that TypeScript is displaying the error code '2339':
  • error codes
  • Integrated Terminal
  • Split terminal can inherit working directory
  • A setting terminal.integrated.splitCwd was added to control the current working directory (cwd) of the new terminal when a terminal is split:
  • workspaceRoot - The previous behavior; a new split terminal will use the workspace root as the working directory. In a multi-root workspace, a choice for which root folder to use is offered.
  • initial - A new split terminal will use the working directory that the parent terminal started with.
  • inherited - On macOS and Linux, a new split terminal will use the working directory of the parent terminal. On Windows, this behaves the same as initial.
  • Cmd+Backspace to delete to the start of the line
  • A new keybinding was added on macOS for Cmd+Backspace which sends u0015 (Ctrl+U) to the terminal. In bash, this deletes from the cursor to the start of the line, in zsh, it deletes the whole line.
  • Experimental buffer improvements
  • A new setting terminal.integrated.experimentalBufferLineImpl allows changing how the terminal stores its buffer to a TypedArray/ArrayBuffer-based implementation. If you would like to opt-in, you can expect performance improvements across the board, including reduced memory usage and garbage collection, and an overall increase to the throughput of the terminal.
  • "terminal.integrated.experimentalBufferImpl": "TypedArray"
  • This is just the beginning, we're expecting further improvements to throughput and memory usage over the next couple of releases before making this the default implementation. A special thanks to @jerch from the xterm.js team, who has been the main driving force behind this multi-month project.
  • Tasks
  • Clear terminal before executing task
  • A new property clear was added to the task presentation configuration. Set the clear property to true to clear the terminal before the task is run.
  • Debugging
  • Collapsible stack frames
  • Sometimes call stacks in the debugger contain stack frames which are not interesting to the user (external code, skipped files etc...). To reduce clutter and save on vertical space, we now render those uninteresting stack frames as collapsed.
  • stack frames
  • Improved Loaded Scripts view
  • In this milestone, we updated the Loaded Scripts view to support file icons and added the capability to show related resources as child elements. Debug extensions can use this feature to show the source file(s) that were transpiled into a script.
  • The following picture from the Node.js debugger shows the TypeScript source for JavaScript files (as available in source maps):
  • loaded scripts view
  • Please note that the related resources feature requires opt-in by debug extensions. In the October release, only node-debug has experimental support for this feature for Node.js versions < 8.0 (aka "legacy").
  • Multiple debug consoles
  • When debugging multiple debug sessions, we now show their output in different debug consoles. This makes it easier to distinguish which debug session is responsible for which output and evaluation.
  • multiple debug consoles
  • Start debugging with stop on entry
  • For Node.js debugging, we have added a new command Debug: Start Debugging and Stop On Entry (extension.node-debug.startWithStopOnEntry). Use this command if you would like to start debugging and immediately stop on the entry of your program. The default keybinding is F10. Note that is command is only available if your selected launch configuration is of type node.
  • Node debugging supports console.log styling
  • When debugging Node.js (or Chrome using the "Debugger for Chrome" extension), you can now style messages from console.log using %c, similar to what Chrome DevTools supports. Supported properties are color, background, font-weight: bold, and text-decoration: underline.
  • console styles
  • Breakpoint widget expands to multiple lines
  • The Breakpoint widget can now expand to multiple lines, use Shift+Enter to insert an additional line, or simply paste a multiline condition or log message. This should help when editing more complex conditions and log messages.
  • breakpoint widget
  • Languages
  • TypeScript 3.1.4
  • This release includes TypeScript 3.1.4, a small update that fixes a few important bugs.
  • Markdown snippet improvements
  • The built-in Markdown snippets, such as those for links and code blocks, now use the currently selected text by default. This allows you to create keybindings that turn the currently selected text into a link or header:
  • "key": "cmd+k",
  • "command": "editor.action.insertSnippet",
  • "when": "editorTextFocus",
  • "args": {
  • "langId": "markdown",
  • "name": "Insert link"
  • CSS Specificity in hover message
  • The CSS hover now shows you the CSS Specificity.
  • css-specificity
  • Handle unknown CSS properties
  • With CSS pre-processors such as PostCSS, you might use invalid properties that are compiled to valid properties during development time. The [css/less/scss].lint.validProperties setting prevents VS Code from marking those invalid properties as erroneous.
  • Improved CSS zero unit warning
  • CSS now lints zero units used in CSS shorthand property values. For example, 0px will now cause a warning:
  • .foo {
  • outline: black 0px solid;
  • Graceful handling of JSON schema loading error
  • If VS Code is unable to download a JSON schema used for IntelliSense or error-checking JSON files, a warning will be shown in the Status Bar:
  • json-schema-loading
  • In the past, you would have seen an error in the editor.
  • Engineering
  • Continued Electron 3.0 exploration
  • During this milestone, we continued to explore bundling Electron 3.0.0 into VS Code. This is a major Electron release and comes with Chrome 66 and Node.js 10.x (a major leap forward compared to our current version that has Chrome 61 and Node.js 8.x). We plan to push out the update to our Insiders users in the near future to gather additional feedback. If you are interested in helping out, make sure to install VS Code Insiders.
  • Strict null checking core VS Code
  • This milestone, we also started work to enable TypeScript's strict null checks in the core VS Code source. Strict null checks help catch many common programming mistakes and make the intent of the programmer more explicit. We've seen clear benefits using strict null checks for VS Code's built-in extensions.
  • Since VS Code's core source contains several thousand files, we are adopting strict null checking incrementally. We started by strict null checking files that have no imports and are now iteratively enabling strict null checks in files that only import other strict null checked files. This will continue until the entire code base is converted.
  • Enabling strict null checks is a major engineering effort but we think the payoff in terms of source code and product quality will be worth it. You can track our strict null checking progress here.
  • Miscellaneous
  • Low contrast menu bar
  • If you are using Ubuntu 18.10 or a GTK theme that mixes light or dark context menus with the opposite theming for the application menu bar, you may experience a low contrast menu bar that is difficult to read.
  • There are two possible workarounds for this:
  • Try out the VS Code custom title bar style by configuring the setting window.titleBarStyle to custom.
  • Change your GTK theme. You can do this by installing the Gnome Tweaks application and using the previous default theme Adwaita.
  • Information on this issue can be tracked in issue 62593.
  • Electron update
  • In this release, we updated from Electron 2.0.9 to 2.0.12.
  • 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.
  • References View
  • There is a new command List All References, which displays a dedicated Side Bar view showing reference search results. This complements the existing Peek view presentation and provides a more stable list of references. In the context menu, select List All References (Shift+Alt+F12) and references are shown in a separate view, just like search results.
  • References View
  • Results are stable and individual results can be cleared, which is great if you use the view as a To Do list. You can use F4 and Shift+F4 to navigate through results without taking your hands off the keyboard.
  • Let us know what you think and we'll be refining the experience in our next update.
  • Extension Authoring
  • Normalized extension samples
  • The VS Code extension samples at vscode-extension-samples have been updated for consistency.
  • Each extension sample now includes:
  • Uniform coding style and structure.
  • A README that explains the sample's functionality with a short animation.
  • A listing of the vscode API or Contribution Points used in each sample.
  • Bundling extensions
  • Bundled extensions load faster. We therefore created a sample that shows how to webpack an extension.
  • Develop extensions without requiring a publisher
  • In an effort to simplify initial extension development, the publisher field was removed from the Yeoman Extension Generator template. For extensions without a publisher identifier, VS Code now loads them with undefined_publisher as their publisher. However, the vsce publishing tool will warn you if you are missing a valid publisher when attempting to publish extensions to the Marketplace.
  • Active terminal APIs
  • The proposed APIs that give access to the active terminal, window.activeTerminal and window.onDidChangeActiveTerminal, are now stable.
  • Notifications with buttons hide after a timeout
  • If your extension is using the showInformationMessage or showWarningMessage API with the non-modal option and buttons, note that these notifications will now hide after a certain timeout. Only notifications triggered via showErrorMessage and having buttons will stay open as before. If you must get immediate input from the user or need to show a message prominently, you can still use modal: true as an option. This will bring up a modal dialog that blocks the user from doing anything until dismissed. We do however discourage overuse of this option because it interrupts the user.
  • Custom views: Expand revealed elements
  • You can now expand an element to reveal using the expand option in the reveal API. It also supports recursively expanding child elements by passing the number of levels.
  • NOTE: You can only expand to a maximum of 3 levels.
  • /**
  • * Reveals the given element in the tree view.
  • * If the tree view is not visible then the tree view is shown and element is revealed.
  • * By default revealed element is selected.
  • * In order to not to select, set the option `select` to `false`.
  • * In order to focus, set the option `focus` to `true`.
  • * In order to expand the revealed element, set the option `expand` to `true`. To expand recursively set `expand` to the number of levels to expand.
  • * **NOTE:** You can expand only to 3 levels maximum.
  • * **NOTE:** [TreeDataProvider](#_TreeDataProvider) is required to implement [getParent](#_TreeDataProvider.getParent) method to access this API.
  • reveal(element: T, options?: { select?: boolean, focus?: boolean, expand?: boolean | number }): Thenable<void>;
  • New theme colors
  • There are new theme colors:
  • tab.activeModifiedBorder: Border on the top of modified (dirty) active tabs in an active group.
  • tab.inactiveModifiedBorder: Border on the top of modified (dirty) inactive tabs in an active group.
  • tab.unfocusedActiveModifiedBorder: Border on the top of modified (dirty) active tabs in an unfocused group.
  • tab.unfocusedInactiveModifiedBorder: Border on the top of modified (dirty) inactive tabs in an unfocused group.
  • editor.stackFrameHighlightBackground: Background color of the top debug stack frame highlight in the editor. By default this color is yellow.
  • editor.focusedStackFrameHighlightBackground: Background color of the focused debug stack frame highlight in the editor. By default this color is green.
  • Git extension API additions
  • The Git extension API has been updated to expose details on the actual changes each repository has.
  • Additionally, the following methods have been exposed:
  • push
  • detectObjectType
  • buffer
  • clean
  • Using Azure Pipelines for extension CI
  • We've updated our documentation on how to setup a continuous integration solution for your extension using Azure Pipelines. The new guide provides a configuration with which you can run your extension tests simultaneously on Windows, macOS and Linux.
  • Azure Pipelines CI results
  • 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.json file of your extension: "enableProposedApi": true.
  • Copy the latest version of the vscode.proposed.d.ts file into your project.
  • Note that you cannot publish an extension that uses a proposed API. We may likely make breaking changes in the next release and we never want to break existing extensions.
  • Clipboard API
  • We have a proposed API to access the clipboard. It follows the up-coming browser Clipboard API and currently allows reading and writing of text:
  • export interface Clipboard {
  • readText(): Thenable<string>;
  • writeText(value: string): Thenable<void>;
  • export namespace env {
  • const clipboard: Clipboard;
  • Completion text insert rules
  • There is a new proposed API to modify the insert behavior of completion items. By default, multiline completions get 're-formatted' to match in the indentation of the current line. Sometimes this indentation is unwanted and the new proposed API allows a completion to turn it off. CompletionItemInsertTextRule is a bitmask that has a KeepWhitespace rule that a completion can set.
  • Custom views
  • Collapse All action
  • You can add Collapse All action to your view by just setting showCollapseAll option to true while creating the TreeView.
  • /**
  • * Options for creating a [TreeView](#_TreeView]
  • export interface TreeViewOptions<T> {
  • /**
  • * A data provider that provides tree data.
  • treeDataProvider: TreeDataProvider<T>;
  • /**
  • * Whether to show collapse all action or not.
  • showCollapseAll?: boolean;
  • namespace window {
  • export function createTreeView<T>(viewId: string, options: TreeViewOptions<T>): TreeView<T>;
  • VS Code provides the Collapse All functionality and shows it with same icon and location for all opted-in views.
  • Collapse All
  • TreeItem label highlights
  • You can highlight the TreeItem label by providing ranges using the highlights option. Since it is a proposed API, you have to use TreeItem2 to update highlights.
  • /**
  • * Label describing the [Tree item](#_TreeItem)
  • export interface TreeItemLabel {
  • /**
  • * A human-readable string describing the [Tree item](#_TreeItem).
  • label: string;
  • /**
  • * Ranges in the label to highlight. A range is defined as a tuple of two number where the
  • * first is the inclusive start index and the second the exclusive end index
  • highlights?: [number, number][];
  • export class TreeItem2 extends TreeItem {
  • /**
  • * Label describing this item. When `falsy`, it is derived from [resourceUri](#_TreeItem.resourceUri).
  • label?: string | TreeItemLabel | /* for compilation */ any;
  • /**
  • * @param label Label describing this item
  • * @param collapsibleState [TreeItemCollapsibleState](#_TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#_TreeItemCollapsibleState.None)
  • constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
  • Label highlights
  • Hide Source Control input box
  • There is a new proposed API property on SourceControlInputBox instances which will let you hide the input box at the top of a source control provider UI view.
  • export interface SourceControlInputBox {
  • /**
  • * Controls whether the input box is visible (default is true`).
  • visible: boolean;
  • SignatureHelpContext
  • The proposed SignatureHelpContext gives SignatureHelpProviders additional information about why signature help was requested:
  • export interface SignatureHelpProvider {
  • provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>;
  • The SignatureHelpContext includes:
  • What action caused signature help to be triggered
  • The trigger character (if any)
  • Was this was a re-trigger? (signature help was already showing)
  • /**
  • * Contains additional information about the context in which a
  • * [signature help provider](#_SignatureHelpProvider.provideSignatureHelp) is triggered.
  • export interface SignatureHelpContext {
  • /**
  • * Action that caused signature help to be requested.
  • readonly triggerReason: SignatureHelpTriggerReason;
  • /**
  • * Character that caused signature help to be requested.
  • * This is `undefined` when signature help is not triggered by typing, such as when invoking signature help
  • * or when moving the cursor.
  • readonly triggerCharacter?: string;
  • /**
  • * Whether or not signature help was previously showing when triggered.
  • * Retriggers occur when the signature help is already active and can be caused by typing a trigger character
  • * or by a cursor move.
  • readonly isRetrigger: boolean;
  • /**
  • * How a [Signature provider](#_SignatureHelpProvider) was triggered
  • export enum SignatureHelpTriggerReason {
  • /**
  • * Signature help was invoked manually by the user or by a command.
  • Invoke = 1,
  • /**
  • * Signature help was triggered by a trigger character.
  • TriggerCharacter = 2,
  • /**
  • * Signature help was triggered by the cursor moving or by the document content changing.
  • ContentChange = 3,
  • Additionally, the proposal allows SignatureHelpProvider to be registered with a set of triggerCharacters and a distinct set of retriggerCharacters:
  • export interface SignatureHelpProviderMetadata {
  • readonly triggerCharacters: ReadonlyArray<string>;
  • readonly retriggerCharacters: ReadonlyArray<string>;
  • namespace languages {
  • export function registerSignatureHelpProvider(
  • selector: DocumentSelector,
  • provider: SignatureHelpProvider,
  • metadata: SignatureHelpProviderMetadata
  • ): Disposable;
  • retriggerCharacters only cause a signature help provider to be invoked if signature help is already showing.
  • Contributions to Extensions
  • Our team maintains or contributes to a number of VS Code extensions. Most notably this month:
  • Below are some of the key features the Go extension now supports when you use the new Go modules in Go 1.11:
  • Code navigation (Go to Definition, Signature Help, Symbol info on hover)
  • Code completion
  • Code coverage
  • Code diagnostics
  • Package related commands like Go: Add Import and Go: Browse Packages
  • For more details, please read the wiki on the Go modules support in Visual Studio Code.
  • Other notable features in the Go extension are:
  • Language Server from Sourcegraph is now supported in Windows as well.
  • The auto completion widget now shows documentation for the suggested symbols. Press Ctrl+Space to expand/collapse the details section of the auto-completion widget.
  • Auto-completion is now supported when cross-compiling. This is especially helpful when you are trying out the new WebAssembly support in Go 1.11.
  • Context menu with Copy Value, Copy as expression and Add to Watch options are now available in the Variables pane of the Debug view.
  • Option to lint just the current file on file save.
  • TypeScript TSLint plugin
  • The new TypeScript TSLint plugin enables TSLint as a TypeScript language service plugin. These plugins work in any editor that uses the TypeScript language service including VS Code, Visual Studio, Atom, and Sublime Text.
  • We've also shipped an extension that bundles the TypeScript TSLint plugin so that you don't have to configure the plugin in your workspace.
  • GitHub Pull Requests
  • This milestone we worked on improvements to the GitHub Pull Requests extension. The extension now supports editing and deleting comments, both within the editor and on the description page, and has better caching for comments that are not yet submitted. You can read the full release notes for the extension here.
  • New Documentation
  • Deploy Python tutorials
  • There are two new Python tutorials showing how to deploy Python web applications with VS Code.
  • Deploy Python using Docker containers
  • Deploy Python using Azure App Service
  • Debugging recipes
  • There are new VS Code debugging recipes for PHP, Python, and Ruby on Rails.
  • Notable Fixes
  • 54214: startDebugging method in vscode still return true even when the build fails
  • 57289: Settings UI should remember its search on reload
  • 57321: Show "Clear Search" and "Clear Filters" buttons when settings search returns no results
  • 59305: Show a "Open Workspace" button in .code-workspace files
  • 59430: Can no longer break in node internals files
  • 61711: All breakpoints are unverified
  • 62085: PauseRequest not being received by the debugAdapter
  • 62346: Can't cancel a debug session while it's initializing
  • 62354: Remote debugging issues after Node 10.12

New in Visual Studio Code 1.28.2 (Oct 18, 2018)

  • Fixed issues:
  • September 2018 Recovery 2 Endgame
  • Keep spawning powershell.exe and conhost.exe
  • VSCode frequently crashes when ctrl+P searching after 1.28
  • debug: on restart, make sure to first disconnect and only then run the prelaunch tasks
  • “Remove from recent opened” takes no effect
  • Restarting the debug process fails
  • Apply selection even when the items don't change
  • Auto import not being placed correctly
  • Code completion for import suggestion stopped working
  • Intellisense - Import suggestions show up but are not inserted/loaded?

New in Visual Studio Code 1.28.1 (Oct 12, 2018)

  • Release highlights:
  • Custom file icons - VS Code file icons reflect file type in your OS explorer.
  • Project level snippets - Tune your snippet collection per workspace.
  • Editor Tab completion - Use Tab to easily cycle through IntelliSense suggestions.
  • Jump to last edit - New command to go to the location of your last edit.
  • Save without formatting - Save a file without changing the existing formatting.
  • Git improvements - Better delete conflict handling, new rebase on sync option.
  • Rename via import path - Rename a JS/TS file through its import path.
  • Convert to async refactoring - Quickly update a function to use async and await.
  • Better Markdown folding - Collapse code blocks, multi-line lists, and embedded HTML.
  • Toggle panel changes
  • We decided to revisit the behavior of our commands for toggling panels (Terminal, Output, Problems, Debug Console). You can follow issue 19400 for the background on the change.
  • The old behavior was:
  • Panel shows if not visible.
  • Panel hides if visible.
  • The new behavior is:
  • Panel shows if not visible.
  • Panel hides if having keyboard focus.
  • Panel gets focused when visible but not focused.

New in Visual Studio Code 1.28.0 (Oct 9, 2018)

  • Notable Fixes:
  • 48051: After formatting you need to scroll left
  • 31619: Must tab through deleted tab stops in snippets
  • 58327: Debug toolbar buttons disabled
  • 35935: "Clear Recently Opened" should also clear editor quick pick history
  • 58799: Reveal untitled file when saving
  • 29553: Preserve quick open input on Escape
  • 58222: UriDisplayService is missing remote share path name
  • 54213: Mechanism to abort the debug launch without showing launch.json
  • 52511: Debug Hover Widget - Enable the widget resizing for long items whose overflow is hidden
  • 50569: Conditional breakpoint prompt should offer to enable breakpoints if breakpoint is already disabled
  • 42737: Extensions: allow to right click to bring up gear menu
  • 58434: Use --force arg to prevent prompts while installing extensions from CLI.

New in Visual Studio Code 1.27.2 (Sep 14, 2018)

  • Fixed:
  • August Recovery Endgame
  • Regex search and group replace
  • TreeItem.iconPath with non-file Uri can be encoded incorrectly
  • Breadcrumb selection is broken
  • removeFromRecentlyOpened Command Broken
  • [html] jquery completions no longer work
  • Cannot click relative paths in terminal
  • August Recovery Endgame
  • VS Code doesn't work after update
  • Incorrect new settings (UI) behavior after nothing was found

New in Visual Studio Code 1.27.0 (Sep 6, 2018)

  • Welcome to the August 2018 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:
  • Settings editor - New Settings editor UI to discover, search, and modify VS Code settings.
  • Custom menu bar - Fully themable title and menu bars on Windows and Linux.
  • Breadcrumbs improvements - Symbols highlighted when navigating with breadcrumbs.
  • New Terminal menu - Combined menu for creating terminals and managing tasks.
  • Platform specific keyboard shortcuts - Share the same keybindings.json file across different OSs.
  • CSS @import path completion - Import path suggestions while you type in CSS, SCSS, and Less.
  • JSON conditional evaluation - Support for 'if', 'then', and 'else' schema keywords.
  • Built-in Loaded Scripts view - Loaded Scripts Explorer now available for debug extensions.

New in Visual Studio Code 1.26.1 (Aug 17, 2018)

  • Addresses these issues
  • Extension host terminated unexpectedly after 1.26.0 update
  • Problem entries loops
  • Problem Tab is all corrupted with Typescript Problems
  • RG 700% CPU usage
  • Opened files are not searched until file tab is clicked
  • Built-in git extension disabled
  • VS Code Hangs When Opening Specific PowerShell File
  • VSCode hangs when opening python file
  • File paths in Open Recent Menu starts with / and lower case drive letter
  • Editor layout is called on every config change

New in Visual Studio Code 1.26.0 (Aug 17, 2018)

  • highlights:
  • Breadcrumbs - Breadcrumb navigation lets you jump to symbols and files in your workspace.
  • Quick Fixes from Problems panel - Apply code fixes while reviewing warnings and errors.
  • User setup on Windows - Elevation no longer required during Windows setup.
  • Terminal column selection - Alt+click to select blocks of text in the integrated terminal.
  • Add all missing imports - Single action to add all missing imports in a JavaScript/TypeScript file.
  • JSX tag completion - Work with JSX tags in JavaScript/TypeScript just like you do in HTML.
  • Better JS/TS error reporting - Concise, clear messages with relevant source code links.
  • Improved extension search - Filter Marketplace queries to find the extensions you want.
  • Extension Pack management - Manage Extension Packs as a single unit or by individual extension.
  • Preview: Settings editor - Rich settings description display, "Table of Contents" tracks scrolling.
  • Workbench - New View menu layout, copy relative path action, offline mode.
  • Integrated Terminal - Improved multi-line support, rendering improvements.
  • Languages - Convert named imports to namespace imports, JSX folding.
  • Debugging - Improved stop session and smart step debugging.
  • Preview Features - Themable custom tool and menu bar for Windows and Linux.
  • Extension Authoring - QuickInput API, extensionPack declaration, webview titlebar icons.

New in Visual Studio Code 1.25.1 (Jul 13, 2018)

  • Fixed issues:
  • June Recovery Endgame
  • Recommended Extensions shows already installed extensions
  • executeTask Cannot read property _key of undefined
  • Allow task without task definitions. Treat all properties as mandantory
  • Error while invoking command `Developer: Reinstall Extension`
  • Unverified breakpoint error with build 1.25
  • Portable Mode creates cache files in %APPDATA%

New in Visual Studio Code 1.24.0 (Jun 6, 2018)

  • Some of the key highlights include:
  • Unused variable detection - Unused variables are greyed-out in your JavaScript/TypeScript files.
  • Move to new file refactoring - Easily pull classes and functions into their own files.
  • Update imports on move/rename - Automatically update import paths in JavaScript/TypeScript.
  • Duplicate workspace in new window - Great for expanding over multi-mon setups.
  • IntelliSense for predefined variables - Variable suggestions in debug and task configuration files.
  • Preview: Outline view - Symbol tree outline and navigation for your projects.
  • Preview: Settings Editor - New GUI to discover and modify VS Code settings.
  • Preview: Debug toolbar location - Float, dock or hide the debug toolbar.
  • Preview: Grid editor layout - Custom vertical/horizontal layout, coming soon to Insiders.
  • Working with Docker and MongoDB - Learn about Docker and MongoDB integration in VS Code.
  • Here are some further updates:
  • Editor - Zoom font size independent of your workbench, syntax highlighting for deleted lines.
  • Integrated Terminal - Smart fallback to DOM renderer, italic and line spacing support.
  • Debugging - Switch to debug view on break, Go to Next/Previous Breakpoint.
  • Languages - JavaScript/TypeScript getter/setter refactoring, SCSS @-keyword completions.
  • Extension Authoring - Expanded custom views API, Task API to stable, new theme colors.

New in Visual Studio Code 1.23.1 (May 11, 2018)

  • April Recovery Endgame endgame-plan
  • Extension update events are not being reported using telemetry bug extensions verified
  • instanceof doesn't work for FileSystemError api bug candidate remote verified
  • Enable cascade to overwrite language features api bug debt verified
  • Add undefined check to Quick Input command code path bug candidate verified
  • Clear Terminal stops working after upgrading to v1.23.0 bug candidate integrated-terminal verified
  • Windows key omitted from menu shortcut hint bug candidate verified

New in Visual Studio Code 1.23.0 (May 3, 2018)

  • This milestone the VS Code team has been focused on API work to support extension authors, but there are still plenty of updates in this version that we hope you will like. Some of the key highlights include:
  • Highlighted indent guides - Helps visualize source code indenting.
  • Run Code Actions on save - Run actions like Organize Imports when you save.
  • NPM script explorer - Quickly find, run, and debug NPM scripts in your project.
  • Problems view filtering - Choose which files will display errors and warnings.
  • Middle mouse button column selection - Middle mouse button with drag for fast column selection.
  • CSS region folding - Create regions in your CSS/SCSS/Less code for helpful code folding.
  • Improved CSS new property support - Smart suggestions for CSS experimental properties.
  • Markdown header search - Search for Markdown headers across your entire workspace.
  • Custom Activity Bar views - Extension authors can create their own Activity Bar items.
  • New deploy website tutorial - Learn how to deploy a static website to Azure Storage.

New in Visual Studio Code 1.22.2 (Apr 13, 2018)

  • Syntax aware code folding - Adds improved folding for CSS, HTML, JSON, and Markdown files.
  • Cross file error, warning and reference navigation - Move quickly around your workspace.
  • New Hint suggestions - Makes it easy to spot suggested fixes or refactorings in the editor.
  • Convert to ES6 refactoring - New Code Actions to convert to ES6 classes and modules.
  • Auto attach to process - Automatically attach the debugger to running Node.js processes.
  • Logpoints - Inject logging without changing source code or restarting your debug session.
  • Better large file support - Faster syntax highlighting and easily increase memory for very large files.
  • Multi-line links in the terminal - Paths and URLs can span lines in the Integrated Terminal.
  • Emmet wrap preview - Live preview for Emmet's wrap with abbreviation functionality.
  • Improved updates on Windows - Automatically updates in the background for less downtime.
  • Preview: Organize JS/TS imports - Remove unused and sort remaining imports.

New in Visual Studio Code 1.22.0 Insiders (Apr 5, 2018)

  • There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
  • Syntax aware code folding - Adds improved folding for CSS, HTML, JSON, and Markdown files.
  • Cross file error, warning and reference navigation - Move quickly around your workspace.
  • New Hint suggestions - Makes it easy to spot suggested fixes or refactorings in the editor.
  • Convert to ES6 refactoring - New Code Actions to convert to ES6 classes and modules.
  • Auto attach to process - Automatically attach the debugger to running Node.js processes.
  • Logpoints - Inject logging without changing source code or restarting your debug session.
  • Better large file support - Faster syntax highlighting and easily increase memory for very large files.
  • Multi-line links in the terminal - Paths and URLs can span lines in the Integrated Terminal.
  • Emmet wrap preview - Live preview for Emmet's wrap with abbreviation functionality.
  • Improved updates on Windows - Automatically updates in the background for less downtime.
  • Preview: Organize JS/TS imports - Remove unused and sort remaining imports.

New in Visual Studio Code 1.21.1 (Mar 15, 2018)

  • The update addresses these issues:
  • [Language Pack] tr is not supported to load "Turkish Language Pack"
  • Dirty Code prompt deletes changes regardless of what you choose
  • IntelliSense gets out of it's position when list gets shorter at the end of the file with docs not expanded
  • Hit breakpoint does not turn yellow
  • Markdown extension resources not loading on windows
  • Markdown relative image in preview not shown on windows

New in Visual Studio Code 1.21.0 (Mar 7, 2018)

  • Some of the key highlights include:
  • New Notifications UI - Easily manage and review VS Code notifications.
  • Integrated Terminal splitting - Work with multiple open terminals at once.
  • Markdown preview scrolling - Markdown preview now supports bidirectional scrolling.
  • Improved large file support - Text buffer optimizations for large files.
  • Centered editor layout - Maximize your code viewing screen real estate.
  • Drag & drop, copy & paste across windows - Move files across open VS Code windows.
  • HTML path completion - IntelliSense for file paths in common HTML elements.
  • Language Packs in the Marketplace - Install new display languages from the Marketplace.
  • Deploy Azure Functions tutorial - Learn how to create and deploy serverless Azure Functions.
  • PREVIEW: Horizontal search results - You can now view search results in a horizontal panel.

New in Visual Studio Code 1.19.2 (Jan 10, 2018)

  • 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

New in Visual Studio Code 1.19.1 (Dec 20, 2017)

  • 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

New in Visual Studio Code 1.19.0 (Dec 14, 2017)

  • Bug fixes as well as community PRs still resulted in a great list of updates. Here are some of the release highlights:
  • Performance - Faster startup and other performance improvements.
  • Serviceability/Diagnostics - 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.

New in Visual Studio Code 1.18.1 (Nov 17, 2017)

  • The update addresses these issues:
  • 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

New in Visual Studio Code 1.18.0 (Nov 9, 2017)

  • The highlights include:
  • 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

New in Visual Studio Code 1.17.2 (Oct 18, 2017)

  • The update addresses these issues:
  • Windows-mutex is missing from our windows builds
  • VSCode window not given focus when invoking with -r from command line
  • Adding "base" to files.exclude breaks VS Code
  • Terminal not painting until resize
  • Attempting to use window.onDidChangeWindowState causes proposed api error
  • Differences in Terminal and Editor font rendering on Windows

New in Visual Studio Code 1.17.1 (Oct 11, 2017)

  • Source code folding improvements - Collapse region markers and off-side language blocks.
  • Integrated Terminal performance - Terminal rendering is up to 45 times faster.
  • Automatic import suggestions - See module and path import suggestions while coding.
  • Debugging shows source location - Easily navigate from the Debug Console to source code.
  • Better colorization of regex and format strings - Helps with parsing and identifying errors.
  • Improved multiple SCM support - New UI to view changes in multiple source control repositories.
  • New online documentation - Java language, 'Tips and Tricks', and Debugging Recipes topics.
  • Preview: Multi-root workspaces - No reload on workspace updates, combined view of available tasks.
  • Multi-root guide for extension authors - To help extenders be ready for multi-root workspaces.

New in Visual Studio Code 1.17.0 (Oct 5, 2017)

  • WORKBENCH:
  • 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.
  • EDITOR:
  • 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.
  • INTEGRATED TERMINAL:
  • 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.
  • DEBUGGING:
  • 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.
  • NOTE DEBUGGING:
  • 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
  • TASKS:
  • 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.
  • LANGUAGES:
  • 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.
  • SOURCE CONTROL:
  • 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.
  • NEW DOCUMENTATION:
  • 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).
  • EXTENSION AUTHORING:
  • 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.
  • CompletionContext:
  • 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
  • PREVIEW: REMOTE FILE SYSTEM API:
  • 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.
  • ENGINEERING:
  • 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:
  • 27285: Cannot open a folder under my OneDrive folder
  • 25934: VS Code flickers when running on a high DPI external monitor
  • 35148: VS Code opens off-screen
  • 22696: Cmd-A doesn't select all text in the save dialog save-as field

New in Visual Studio Code 1.16.1 (Sep 14, 2017)

  • The update addresses these issues:
  • 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

New in Visual Studio Code 1.16.0 (Sep 8, 2017)

  • 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.
  • Workbench:
  • 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.
  • Editor:
  • 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.
  • Snippets:
  • 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=<port>-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:
  • CSS
  • Sass (SCSS)
  • Less
  • JSON
  • HTML
  • 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

New in Visual Studio Code 1.15.1 (Aug 17, 2017)

  • 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

New in Visual Studio Code 1.15.0 (Aug 11, 2017)

  • 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.

New in Visual Studio Code 1.14.2 (Jul 21, 2017)

  • This update addresses the following issues:
  • 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

New in Visual Studio Code 1.14.1 (Jul 14, 2017)

  • 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

New in Visual Studio Code 1.14.0 (Jul 12, 2017)

  • 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.

New in Visual Studio Code 1.13.1 (Jun 15, 2017)

  • 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

New in Visual Studio Code 1.13.0 (Jun 9, 2017)

  • 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.

New in Visual Studio Code 1.12.1 (May 5, 2017)

  • Fixes an issue with .NET debugging.

New in Visual Studio Code 1.11.2 / 1.12.0 Insiders (Apr 14, 2017)

  • We are releasing a 1.11.2 update to add the 1.11 translations and address a handful of issues

New in Visual Studio Code 1.11.1 (Apr 7, 2017)

  • 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 now provide custom tasks and problem matchers.
  • Extension Authoring - Debug extension improvements, increased extension size limit.
  • Tip: Want to see new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.
  • WORKBENCH:
  • Preview: Workbench theming:
  • The first results of the effort on workbench theming are now visible. The built-in themes Abyss, Quiet Light, and Solarized Dark take advantage of new color theming capabilities.
  • Abyss theme with more colors:
  • There are still several gaps and we have not finalized the new theme file format. For that reason, there's no documentation and we ask theme authors to not use the new theme format yet.
  • However, if you want to play around with new colors, use the setting workbench.experimental.colorCustomizations to customize the currently selected theme.
  • color customization:
  • Keyboard shortcuts editor:
  • With this release, VS Code provides a rich and easy keyboard shortcuts editing experience using a new Keyboard Shortcuts editor. You can now find a command and change/remove/reset its key binding easily. Most importantly, you can see key bindings according to your keyboard layout, instead of mapping keys in the earlier json-based key bindings editor to your keyboard layout. The dialog to enter key bindings will assign the correct and desired key binding as per your keyboard layout.
  • Keyboard Shortcuts:
  • NOTE: For more advanced customizations like editing when clause context of a key binding, you can open the keybindings.json file just like before and edit.
  • Improved keyboard layout support
  • On Windows and OSX, we now detect when the keyboard layout has been switched while VS Code is running and will update all keyboard shortcuts appropriately.
  • On Linux and OSX, we have made significant changes in how keyboard shortcuts are dispatched; we have switched to using the brand new KeyboardEvent.code. This new dispatching logic will result in changes in default keyboard shortcuts for non-US standard keyboard layouts. Unfortunately, due to the indeterminate nature of KeyboardEvent.keyCode on these platforms, we cannot be sure in each case the exact changed keybindings and present a list. In most cases, we expect the impact to be limited to the following built-in actions:
  • Toggle Integrated Terminal
  • Create New Integrated Terminal
  • Zoom in, Zoom out
  • Indent Line, Outdent Line
  • Fold, Unfold
  • Split Editor
  • Toggle Line Comment
  • You can read more in our wiki or in the plan item.
  • Text search improvements:
  • Search is now powered by the excellent tool ripgrep, from Andrew Gallant (@BurntSushi), and searching should now be significantly faster. If you encounter an issue and need to revert to the previous search experience, you can set the option "search.useRipgrep": false.
  • Our ripgrep-based search can now respect .gitignore files as well. Enable it with the new Use Ignore Files button in the Search view, or by default with "search.useIgnoreFilesByDefault": true.
  • gitignore:
  • The gear icon next to it is also new, and toggles whether search will ignore the patterns specified in the files.exclude and search.exclude settings.
  • Maximize and restore the panel size
  • We have added a maximize/restore button to the panel title area:
  • Panel:
  • New setting to keep editor open even when file is deleted
  • There is a new setting workbench.editor.closeOnFileDelete that can be set to false to keep editors open even if the file was deleted on disk. Editors will indicate if the file was deleted on disk with their label.
  • Deleted File:
  • Note: Files that get deleted via the Explorer will still cause the editor to close.
  • Join editors of two groups
  • A new command (workbench.action.joinTwoGroups) was added to join the editors of one group with the one to the left. This allows to quickly reduce the number of opened editor groups without losing any of the editors inside.
  • Navigate between views:
  • New commands have been added to navigate between the visible views of the application. For example, when focus is inside the first editor group, workbench.action.navigateLeft will bring you to the Side Bar. Similar, workbench.action.navigateDown would move focus to the panel.
  • Resize a view with keyboard:
  • New commands are available to resize the currently focused view with the keyboard. Use workbench.action.increaseViewSize and workbench.action.decreaseViewSize to change the view size in increments.
  • New setting to reveal editor if opened:
  • A new setting workbench.editor.revealIfOpen can be enabled to prevent opening the same file in another group if the file was already opened. One common scenario is the file picker (Quick Open): by default, it will open a file in the current active Editor Group. Changing this setting will prefer to open the file in any of the other groups in case the file is already opened there.
  • Note: There are still ways that the same editor will open in multiple groups, for example when you click the split editor action.
  • EDITOR:
  • Drag and drop improvements:
  • You can now copy selected text instead of moving it when you drag and drop. The experience is the same as you have on your platform. On macOS, press and hold the Option key while you drag and drop. Press the Ctrl key on Windows and press the Alt key on Linux.
  • When you drag and drop with or without copying the text, the style of the mouse pointer will change accordingly. You will see a + (plus) image when copying.
  • Turn off occurrences highlight:
  • There is a new option, editor.occurrencesHighlight that can be set to false to turn off highlighting of the selected word or word under cursor in cases where these highlights are computed by a rich language service.
  • Auto guess encoding of files:
  • You can now let VS Code guess the encoding of a file automatically via the new files.autoGuessEncoding setting which is disabled by default. Once enabled, we will do an attempt at guessing the encoding from the file and use that information if there is a suitable encoding detected.
  • Note: there are cases where the encoding is detected wrongly or not at all. To have full control over the encoding in the workspace, use the files.encoding setting instead.
  • On top of that, if you select the encoding picker on a file to change its encoding, we will now present you the guessed encoding (if any) to the top of that list, making it very easy to pick the right encoding in case the file contents are not showing correctly and we can detect the encoding from the contents:
  • encoding:
  • Note: The encoding is guessed, and can be wrong. There is no 100% accurate way to find the encoding from the contents of a file. The only exception is using a BOM (byte order mark) for UTF-8 or UTF-16 files.
  • More Fuzzy Matching:
  • We have improved the filtering and scoring of suggestions. In addition to prefix and camel-case matching continuous substring matching is supported.
  • IntelliSense in comments:
  • There is no more eager IntelliSense when typing in comments or strings! You can still request completions with Ctrl+Space but quick suggestions, AKA "24x7 IntelliSense", are disabled by default in comments and strings. To tune the suggestions behavior to your needs, we now allow more control over the editor.quickSuggestions setting:
  • "editor.quickSuggestions": {
  • "comments": false, // <- no 24x7 IntelliSense in comments
  • "strings": true, // but in strings and the other parts of source files
  • "other": true,
  • Set the default language for new files:
  • A new setting files.defaultLanguage can be used to set the language mode for new files that are untitled and not saved yet. This setting avoids having to pick the language each time you open a new file if you are often working on the same file type.
  • INTEGRATED TERMAL:
  • Link improvements:
  • The terminal links feature that was introduced last month got some more polish this version. The experience is now aligned with the editor, requiring Ctrl or Cmd to be held depending on your platform.
  • Terminal link hints:
  • Also all links are now validated so only links that actually go somewhere will react to user action.
  • Improved start experience on Windows:
  • Unlike on macOS and Linux with their SHELL environment variable, Windows doesn't really have a reliable alternative. There is COMSPEC but unfortunately it always defaults to the 32-bit variant of Command Prompt and it's seldom modified. To work around this, we've introduced a message when the terminal is first launched on Windows that allows users to select from a set of shells detected on the machine.
  • Terminal shell selector:
  • Custom workspace shell settings
  • In VS Code v1.9, we disallowed workspace settings from configuring the terminal shell as it could have potentially been exploited maliciously. We are now re-allowing this but requiring an explicit user opt-in for each workspace before the settings will be picked up.
  • Terminal workspace settings warning:
  • Warn when closing window with active terminal sessions
  • The new setting terminal.integrated.confirmOnExit has been added that presents a confirmation dialog when the window is closing with active terminal sessions. This is disabled by default.
  • Resizing horizontally no longer discards data:
  • Thanks to an upstream PR from Lucian Buzzo, data is no longer discarded when resizing the terminal prompt horizontally.
  • TASKS:
  • In this release, we opened up tasks for contributions from extensions. They can contribute problem patterns and problem matchers via the extension's package.json file. These contributions work in both the output panel runner and in the new (not yet the default) terminal runner. Below an example to contribute a problem matcher for the gcc compiler in an extension.
  • We also now allow extensions to contribute tasks to the Run Task Quick Pick list programmatically. This opens VS Code up for use cases where an extension wants to add support for a specific build system and wants to contribute corresponding tasks. An example is the npm extension that can now contribute scripts defined in the package.json as tasks to VS Code programmatically.
  • Please note the following limitations:
  • Contributed tasks can only be executed in the new terminal runner. To enable the terminal runner, add "version": "2.0.0" to your tasks.json file.
  • The task API is currently in proposed state.
  • For an example of how to use the API, please refer to VS Code's gulp extension or the proposed API file
  • LANGUAGES:
  • TypeScript 2.2.2:
  • VS Code now ships with TypeScript 2.2.2. This release includes a number of important bug fixes and performance improvements. You can find a complete list of changes here.
  • Implementation CodeLens for TypeScript:
  • We now include a CodeLens that shows the number of implementers of interfaces and abstract classes in TypeScript code.
  • TypeScript Implementations CodeLens:
  • Clicking on the CodeLens will display a list of all implementations.
  • TypeScript Implementations CodeLens:
  • This feature is disabled by default and requires TypeScript 2.2.1+. To enable it, simply add "typescript.implementationsCodeLens.enabled": true to your settings.
  • Simplified TypeScript server log collection:
  • Added a new "typescript.tsserver.log" setting to simplify the collection of logs from the TypeScript server that powers VS Code's TypeScript and JavaScript language support. These logs can be used to debug issues with JS and TS language support, and make it easier for users to provide these logs during issue investigations.
  • The new logging experience is supported with TypeScript 2.2.2+. Simply set "typescript.tsserver.log": "verbose" and reload VS Code to enable logging to a file. Use the "TypeScript: Open TS Server log" command to open the log file in the editor.
  • Improved support for Objective C++:
  • VS Code now includes an objective-cpp language mode for working with Objective-C++. Previously, .mm files were treated as regular C++. This release also improves syntax coloring of Objective-C++ files.
  • DEBUGGING:
  • Debug Menu:
  • We have added a top level debug menu with the most common debug commands:
  • Debug Menu:
  • Note: There is a new command (Install Additional Debuggers...) to bring up the Extension view to search for debugger extensions.
  • Column Breakpoints Improvements:
  • It is now possible to edit multiple breakpoints on a line directly from the glyph margin context menu. Apart from this, there were issues with multiple breakpoints on a line which are now fixed.
  • Editable Column Breakpoints:
  • More detailed exception experience
  • The editor's "Peek UI" has been enhanced to show additional information for thrown exceptions, For example, VS Code's built-in Node.js debugging now shows the stack trace:
  • Exception Peek UI show Stack Trace:
  • Since this feature requires some adoption effort by debugger extensions, do not expect to see additional exception information in other debugger extensions immediately.
  • NODE DEBUGGING:
  • Transitioning to the "inspector" protocol:
  • In the February milestone, we folded the two Node.js debuggers ('node' and 'node2') into a single Node.js debugging experience and introduced a new launch configuration attribute protocol to control which protocol to use (for details see the section in the February release notes.
  • In this milestone, we've changed the default value for protocol from legacy to auto. So if you don't specify the protocol explicitly in your launch configuration, VS Code Node.js debugging will now try to detect the protocol used by the targeted runtime automatically. Since we do not want to switch users to the new "inspector" protocol too aggressively, we will use the new protocol only for 8.x versions of Node.js.
  • If you experience problems with this automatic protocol switching, you can get back to the old behavior by explicitly setting protocol to legacy.
  • Async call stacks:
  • When debugging async JavaScript in Node.js or Chrome, we now show the async frames that led to the current call stack across async calls. This is currently only supported when debugging with the inspector protocol via "protocol": "inspector". It can be disabled by setting "showAsyncStacks": false in the launch config.
  • Async Frames in Call Stack:
  • But with the async call stacks, we can see the full call stack that produced the async call:
  • Async Frames in Call Stack:
  • Access Loaded Scripts:
  • It is now possible to access the loaded scripts of a JavaScript runtime. This is useful if you need to set a breakpoint in a script that is not part of your workspace and therefore cannot be easily located and opened through normal VS Code file browsing. A typical scenario for this is a remote debugging session: you attach to a remote Node.js program and have no code available locally. See issue #20355 for other scenarios that drove this enhancement.
  • The Debug: Open Loaded Script action (Ctrl+F4) gives you access to loaded scripts while a debug session is active. In the Quick Pick, you can filter and select the script to open. The script is then loaded into a read-only editor where you can set breakpoints. These breakpoints are remembered across debug sessions but you only have access to the script content while a debug session is running.
  • Opening Loaded Script with Quick Pick
  • EXTENSION AUTHORING:
  • Source Control:
  • A stable Source Control API was released this month which lets you create source control extensions integrated within VS Code. You can learn all about it in the Source Control in VS Code documentation page.
  • Some extension developers have already started adopting it:
  • Visual Studio Team Services Extension for VS Code
  • vscode-perforce
  • API IMPROVEMENTS:
  • The end of line sequence a document uses (crlf or lf) is now exposed via TextDocument#eol. Also, the TextEdit allows you to change EOL-sequence of a document.
  • We added these new completion item kinds: Constant, Struct, and EnumMember completing the existing Enum kind.
  • DEBUG EXTENSIONS:
  • ExceptionInfoRequest now used by VS Code
  • If a debug adapter returns a non-falsy supportsExceptionInfoRequest capability, VS Code will now use the ExceptionInfoRequest to obtain additional information for the exception. Currently the attributes exceptionId, exception, breakMode, and details.stackTrace are displayed in VS Code's exception Peek UI.
  • Server mode for debug adapters:
  • VS Code always supported running debug adapters in server mode. However this was only officially supported for developing debug adapters, not for running them in production. With this release, we are starting to support the "server mode" as an official "run mode" for debug adapters. Please find the details for how to use this feature in the original feature request.
  • Changed semantics of StoppedEvent.reason:
  • The semantics of the reason attribute of StoppedEvent has been changed slightly. Previously, it was specified that the reason attribute is shown in the UI (which has the consequence that the value needs to be translated to different languages). This makes it impossible for VS Code to interpret the reason attribute in a robust way. Starting with this release, VS Code uses the new attribute description when the "stopped" reason needs to be shown in the UI and uses the reason attribute to interpret the reason. If description is missing, VS Code falls back to the previous behavior.
  • New attribute presentationHint for StackFrame type:
  • A new optional attribute presentationHint has been added to the StackFrame type which can be used to control how the client renders a stack frame in the UI.
  • Usage example for exception configuration API:
  • The VS Code Mono debugger extension has been enhanced to use the recently introduced exceptionOptions attribute on the SetExceptionBreakpointsRequest for configuring exception catchpoints.
  • Configuring Exceptions:
  • The implementation can serve as an example for how to use the debug adapter protocol (DAP) from an extension to add specific functionality that is not provided by the generic VS Code debugger UI.
  • Increase Extension Size Limit:
  • In a collaboration with the Visual Studio Marketplace, we've increased the size limit of extensions in the Marketplace from 20MB to 100MB. You'll need to update to [email protected] to benefit from this.
  • MISCELLANEOUS:
  • Startup profiling for everyone:
  • We have added a new command line option that allows you to profile the startup of VS Code. Run code like this code --prof-startup and it will create profiles for the main and renderer process. These profiles are stored in your home directory and we encourage you to share them with us. Often performance out in the wild is vastly different from our machines and getting more insights from you will help us improve VS Code.
  • Coming Soon: Support for community localization
  • VS Code ships currently ships with support for 9 languages: French, Italian, German, Spanish, Russian, Traditional and Simplified Chinese, Japanese, and Korean. In the March release, we started moving the current internal localization process to support the open translation platform called Transifex.
  • Once this work is done, we will be able to accept translations from the community directly instead of having to submit a bug and wait for us to localize the string(s). Even more exciting though, this work enables VS Code to be localized by the community into additional languages such as Portuguese and Polish. In fact, we're opening up translations into 8 additional languages: Czech, Dutch, Hungarian, Polish, Portuguese (Brazil and Portugal), Swedish, and Turkish.
  • If you are passionate about having a high quality VS Code in your native language, please come and help us! Learn more at the Visual Studio Code Community Localization Project.
  • New Commands:
  • Key Command Command id
  • Ctrl+, Open User Settings openGlobalSettings
  • unassigned Revert and Close Active Editor workbench.action.revertAndCloseActiveEditor
  • unassigned Join Editors of Two Groups workbench.action.joinTwoGroups
  • unassigned Move to the View Part Above workbench.action.navigateUp
  • unassigned Move to the View Part Below workbench.action.navigateDown
  • unassigned Move to the View Part to the Left workbench.action.navigateLeft
  • unassigned Move to the View Part to the Right workbench.action.navigateRight
  • unassigned Increase View Size workbench.action.increaseViewSize
  • unassigned Decrease View Size workbench.action.decreaseViewSize
  • NOTEBLE CHANGES:
  • 12077: File does not reload in editor when quickly changed externally after making modifications
  • 13001: Keep scroll position stable when closing a tab
  • 13665: Improve VS Code when working with network drives
  • 19841: Node debug Step Over/Into hangs in 1.9
  • 20074: VS Code default language extensions override custom language extensions
  • 21948: Auto save no longer works
  • 22900: CPU usage even when idle (due to cursor rendering)
  • 22971: Run the terminal as a login shell by default on macOS
  • 22997: Execute Node.js application in external terminal throws error
  • 23494: Debugger does not work with electron v1.6.x
  • These are the closed bugs and these are the closed feature requests for the 1.11 update.
  • CONTRIBUTIONS TO EXTENSION:
  • Our team maintains or contributes to a number of VS Code extensions. Most notably:
  • TSLint
  • ESLint
  • Docker
  • Debugger for Chrome
  • Mono Debug
  • VSCodeVim

New in Visual Studio Code 1.10.2 (Mar 8, 2017)

  • We are releasing a 1.10.2 update to add the 1.10 translations and address a handful of issues:
  • "Start Debugging" is auto-saving open files even for unchanged files
  • Rename common.machineId in main process
  • editorScroll has regressed in VSCode 1.10
  • tryListenOnPipe can be slow
  • Empty foreground in TM themes get parsed as red
  • User settings reset/lost on upgrade
  • Write backup file when updating settings
  • Add Windows keyboard shortcut for Save All back
  • Saving on format adds newline in style tags with multiple classes
  • Pull in latest translations
  • Show Reinstall VSCode Error Message when our Bundled tsserver.js is Missing
  • Add Instructions For Missing Bundled TSServer.js File
  • old variable command syntax ${command.xxx} is not substituted
  • " - OSS" in Windows context menu

New in Visual Studio Code 1.10.1 (2017-03-02) (Mar 2, 2017)

  • We quickly published an update after we found a few late breaking issues affecting key extensions.

New in Visual Studio Code 1.10.0 (2017-03-01) (Mar 2, 2017)

  • Preview: Minimap:
  • Get a 10,000 foot view of your code with Minimap.
  • Preview: Drag and Drop in the editor:
  • Easily drag and drop text around the editor.
  • Copy text with formatting:
  • Copy code examples with full syntax highlighting.
  • Auto generate JSDoc:
  • Simply type /** to generate JSDoc comments for your functions.
  • File Explorer key bindings:
  • You can now create shortcuts for the Explorer and other list/tree UI.
  • Official Linux repositories:
  • VS Code supports auto-updating packages on Linux.
  • Improved Exception view:
  • Easily view exception details in the debugger.
  • Column breakpoints:
  • Set multiple breakpoints on the same line of source code.
  • Links in the Terminal:
  • Integrated Terminal output links streamline the workflow between editor and commands.
  • Keybinding support for tasks:
  • Assign keyboard shortcuts to commonly used tasks.
  • HTML DOM navigation:
  • Quickly navigate to DOM elements by id and class name.
  • Language specific default settings:
  • Appropriate default settings for Go, Make, YAML and Markdown.

New in Visual Studio Code 1.9.0 (2017-02-02) (Feb 2, 2017)

  • There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
  • New Welcome page - Whether you are a new or returning user, the Welcome page helps get you started quickly.
  • Interactive Playground - Try out VS Code's advanced editing features without creating files or a project.
  • Synchronized Markdown Preview - Coupled view of a Markdown preview and its editor.
  • Format on Paste - Format source code as soon as you bring it into your project.
  • Language specific settings - Customize your settings for specific languages.
  • TypeScript references CodeLens - VS Code ships with TypeScript 2.1.5 and now includes References CodeLens.
  • Single file debugging - Debug without a configuration file to enable quick debugging of single files.
  • Inline variables display - See variable values inline while debugging.
  • Expanded Node.js debugging configurations - Easily debug Mocha tests, gulp tasks and even Yeoman generators.
  • Improved task running support - Run multiple commands from the same task.
  • Faster Integrated Terminal - We improved the integrated terminal's performance and Windows support.
  • The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:
  • Workbench - New settings to control new windows, improved Tabbed headings, Zen Mode customization.
  • Editor - Add keyboard shortcutkeys for snippets, Go to Implementation, fast search navigation.
  • Languages - Emmet abbreviations from external files, HTML format settings, Markdown editing improvements.
  • Extensions - Create Extension Packs through the VS Code Yeoman generator.
  • Debugging - User level launch.json, copy callstack action.
  • Node.js Debugging - Just My Code improvements, restart support for launch configurations.
  • Extension Authoring - New insertSnippet API, openTextDocument can now take language.

New in Visual Studio Code 1.8.1 (2016-12-19) (Dec 20, 2016)

  • Fixed scrolling in large minified files (#17208)
  • Resolved an issue with Copy command in certain contexts (#17232)
  • Fixed an issue with saving files on a mounted drive (#17345)
  • Fixed Quick Outline in Default Keyboard Shortcuts (#17376)
  • Removed 'Focus Default Settings' command from Command Palette (#17468)

New in Visual Studio Code 1.8.0 (2016-12-13) (Dec 14, 2016)

  • Hot Exit:
  • Switch context quickly and never lose your changes.
  • Focus on Your Code:
  • Enhancements like Zen Mode, configurable Activity Bar, and more.
  • Settings improvements:
  • New experience for configuring VS Code.
  • New Selection menu:
  • Easily discover and use the editor selection commands.
  • Faster Text Search:
  • Find the code you're looking for fast no matter how large your project.
  • Snippet authoring:
  • Use variables in your code snippets.
  • Keyboard shortcuts:
  • Create custom shortcuts with command arguments, find popular Keymaps.
  • JavaScript IntelliSense in HTML:
  • Get full JavaScript language support in HTML files.
  • UI for Multitarget Debugging:
  • Launch simultaneous debug sessions.
  • TypeScript 2.1:
  • Improved language support with the latest TypeScript update.
  • JavaScript:
  • Support for Object Rest/Spread.

New in Visual Studio Code 1.7.2 (2016-11-23) (Nov 23, 2016)

  • We are releasing 1.7.2 today which includes a new version of the TypeScript Server (to 2.0.10). The update to the server will re-enable the Automatic Type Acquisition (ATA) feature by default for JavaScript users. This feature greatly improves the IntelliSense in JavaScript projects and removes the need to manually install TypeScript declaration files (.d.ts files). This feature is powered by a query to the npmjs service to retrieve relevant declaration files for used modules
  • The 1.7.2 release also adds the final 1.7 translations and fixes several important issues.
  • Notable Changes:
  • 929: Windows 10: focus is not put to window but taskbar blinks
  • 2814: Windows: Reveal in Explorer feature no longer bring the explorer window in front of vscode
  • 6466: Open in Command Prompt doesn't open cwd when using cmder
  • 10210: Can't copy the values of debugging elements such as exception messages
  • 11334 & 13229: Improvements to terminal IME support
  • 11431: RPM package lacks shortcut in PATH
  • 12036: VS Code is very laggy when used on a system with touchscreens
  • 12260: Not enough storage is available to process this command in terminal
  • 12969: HTML: comments inside a script tag no longer sensitive to script language
  • 13554: Integrated terminal occasionally wraps some lines
  • 14102: Fold the default settings by default and remember editor state
  • Better JavaScript IntelliSense:
  • VS Code uses the TypeScript language server to provide IntelliSense in JavaScript files. In the past, you had to create a jsconfig.json file. You also had to manually install typings (Type Declaration) files for all the modules and libraries you were using. That's not an easy chore, particularly when you are a pure JavaScript developer.
  • We talked with our friends on the TypeScript team and they came up with "Automatic Type Acquisition". ATA makes typings files almost invisible. A TypeScript language server that has ATA enabled watches your package.json files and automatically installs the typings files of all dependencies in a cache on your file system. It does the same when it finds references to well known client-side libraries. When you then invoke IntelliSense, the TypeScript server uses the typings files in the cache. The cache is shared between all your workspaces. Without a jsconfig.json file the TypeScript server assumes that everything in your workspace belongs to the same project.
  • We think this is so cool that we wanted you to get your hands on it as soon as possible. Our integration of ATA is still rough around the edges, but we decided to enable it by default. Should you experience issues, you can switch it off by setting typescript.disableAutomaticTypeAcquisition to true in your user settings.
  • Here are a few points you should be aware of when using ATA:
  • ATA is backward compatible. If you have a typings folder or you installed typings using npm, then those take precedence over the automatically acquired typings files.
  • ATA acquires the latest available version of the typings files. If you depend on an older version of a library or module then there can be discrepancies between the actual API exposed by the library or module and the API described in the typings file. If you require a specific version of a typings files, you can install it manually: npm install @types/@x.y.z.
  • An increasing number of npm modules bundle their typings files, meaning the only way to acquire the typings is by installing the module. ATA does not install npm modules for you, so you have to do it yourself.
  • There is a short delay between when a change is made to the dependencies in a package.json file and when the corresponding typings file is acquired and available for IntelliSense.
  • In the implementation, the ATA feature first queries npmjs for a module that includes a list of known declaration files. If your project includes any of these modules, their declaration files will be pulled down and added to the global cache.
  • CSS completions in HTML:
  • You can now see CSS language features like code completion, validation and color annotation for CSS styles embedded within your HTML.
  • Improved TypeScript and JavaScript Grammar:
  • TypeScript and JavaScript syntax highlighting is based on the TypeScript textmate grammar authored by the TypeScript team. In the recent months the grammar has been completly rewritten.
  • The main goal was to tackle as many of reported issues as possible. Additionally, we wanted to provide a better experience with existing color themes by generating scopes closer to what other popular JavaScript grammars such as the Atom grammar do, while still supporting features like the JavaScript React syntax.
  • As a result of the effort, over 100 issues has been fixed, including the request to report variable and function references. We decided to take advantage of the new scopes and now also colorize variable and function references in our Default Dark and Light Plus themes. We hope you like it!
  • Linter Extensions:
  • The vscode-eslint and vscode-tslint extensions now provide settings to automatically correct fixable warnings on save.
  • Keymaps category:
  • Keyboard shortcuts are vital to productivity and changing keyboarding habits can be tough. To help with this, we added two new extensions and introduced a new category Keymaps to the Marketplace. The purpose is to make it easier to switch between editors by removing the need to learn new keyboard shortcuts.
  • We built an extension for Atom and Sublime Text. We found some of the most popular keyboard shortcuts and would like your feedback on what we're missing. If we missed a keyboard shortcut, please open an issue or make a PR in the repo.
  • Keymaps:
  • Additionally, you can create your own keymap extension using the keybindings contribution point and adding it to the Keymaps category.
  • Formatters category:
  • Many extensions exist that contribute source code formatting functionality. Some of the most popular formatters have more than 100K installs! We wanted to make it easier for you to find formatters so we added a new category to the Marketplace called, naturally, Formatters. Search on the Marketplace and install a Formatter today.
  • Here are a couple of our favorites:
  • beautify
  • XML Tools
  • Clang-Format
  • PHP Formatter
  • Stylesheet Formatter
  • Disable extensions:
  • Often you have more than one workspace and various extensions installed to support these workspaces. Most of the times, these extensions are exclusive to a single workspace and not needed for others. For example, if you have JavaScript and Go language workspaces, you do not need the JavaScript linting extension in a Go workspace and vice-versa. With this release, you can now run only those extensions which you think are necessary for a workspace and disable rest of them. You can also disable extensions for the complete VS Code application, if you do not want to uninstall them and do not want them to run.
  • You can also disable or enable all extensions with few clicks from VS Code.
  • Node Debugging:
  • Simplified launch configuration:
  • In order to make setting up Node.js debugging as easy as possible, we've tried to simplify the initial 'launch.json' experience:
  • Required but rarely changed attributes are now rendered in gray to make it more obvious that there is no need to change them for the most common scenarios.
  • Less frequently used attributes (with good default values) were removed from the initial configurations to reduce the 'noise'. These attributes are still easily discoverable using IntelliSense.
  • Comments and a link to online documentation were added.
  • Online debugging documentation has been rewritten and improved.
  • Hit count conditional breakpoints:
  • VS Code now supports setting a 'hit count condition' for a breakpoint (in addition to the 'expression condition' introduced some time ago). The 'hit count condition' controls how many times a breakpoint needs to be hit before it will 'break' execution.
  • HitCount:
  • Whether a 'hit count condition' is respected and how the exact syntax of the expression looks like depends on the debugger extension used. In this milestone, only the built-in Node.js debugger supports hit counts (but we hope other debugger extensions will follow soon).
  • The hit count syntax supported by the Node.js debugger is either an integer or one of the operators =, % followed by an integer.
  • Multiple target debugging:
  • The October release contains an early implementation of 'multi target debugging', that is multiple debug sessions can be active at the same time within a single instance of VS Code (and a single project folder).
  • This feature helps with the following scenarios:
  • Debug an extension and its debug adapter and/or language server at the same time.
  • Debug a client and a server from a single project folder.
  • Debug a clustered program.
  • After launching the composite configuration, the individual sessions show up as top level elements in the CALL STACK view. Actions (e.g. all actions in the floating debug widget) are always performed on the currently selected session in the CALL STACK view.
  • multiDebug:
  • Debug settings:
  • We have introduced the following new settings:
  • debug.allowBreakpointsEverywhere - Allows breakpoints to be set in any file (and not only in those which are explicitly registered). This is useful if you want to debug a new (transpiled) language with an existing debugger (for example, the Node.js debugger).
  • debug.openExplorerOnEnd - Controls if the Explorer should be automatically opened at the end of a debug session.
  • Extension Authoring:
  • Breaking Change: MarkedString[] semantics
  • API related implementations which return MarkedString | MarkedString[] have changed semantics. Each MarkedString will be visually separated from the others with a horizontal line. Both the HoverProvider and Decoration APIs are affected by this.
  • Changelogs:
  • You can now display your extension's CHANGELOG.md directly in the extension details view.
  • We recommend extension authors move any existing changelogs from their extension's README.md to a separate CHANGELOG.md file. Similar to README.md, if the CHANGELOG.md is placed in the extension's workspace root, it will be automatically included by the vsce publishing tool.
  • Provide menu entries for the editor tab context menu:
  • We added an additional place where extensions can contribute menu entries, the context menu of an editor tab (this also works when tabs are disabled). The related menu path for contributing here is editor/title/context.
  • We added an onDidChangeVisibleTextEditors event which fires whenever the list of visible editors changes.

New in Visual Studio Code 1.7.1 (2016-11-03) (Nov 3, 2016)

  • Horizontal layout - Organize your editors in either vertical or horizontal groups.
  • Keyboard Shortcuts Reference - New printable keyboard shortcuts PDF cheat sheet.
  • CSS autocompletion within HTML - Get rich auto completions for CSS embedded in your HTML.
  • Debug hit count control - Set breakpoint hit count conditions.
  • Simplified Node.js debugging - Easily configure your Node.js debugging sessions.
  • Keymaps for Sublime and Atom - You can now use these well-known keyboard shortcuts in VS Code.
  • Disable extensions - Quickly disable an Extension globally or for a specific workspace.
  • Improved TypeScript and JavaScript Grammar - The Dark+ themes now colorize variable and function references.
  • Extension Packs - View dependencies of an extension pack right in the extension details.

New in Visual Studio Code 1.6.1 (2016-10-13) (Oct 14, 2016)

  • Recovery build to add the final 1.6 translations and fix several important issues:
  • HTML word definition changed
  • Import translations into 1.6 release branch
  • "editor.snippetSuggestions": "top" Stopped working as intended
  • The sidebar is throwing errors like crazy in VSCode 1.6.0
  • libXScrnSaver package does not exist on openSUSE bug
  • Built-in extensions lose their translations during build

New in Visual Studio Code 1.6.0 (2016-10-10) (Oct 11, 2016)

  • There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
  • TypeScript 2.0 - Language improvements for JavaScript and TypeScript as well as extension authoring.
  • Format on Save - Keep your code looking great by running a formatter when you save.
  • Switch Windows - Move quickly between VS Code windows (instances) via the Command Palette.
  • Search term history - Easily reuse past search terms in the Search box.
  • Launch script support - It's now possible to launch an NPM script before debugging.
  • Workspace recommendations - Provide extension recommendations for other members of your team to use.
  • API for Settings - It's now possible to programmatically change settings. This allows new options like persistent Auto Save and File Associations.
  • VIM style relative line numbers - Display line numbers relative to the current cursor position.
  • Node 6.3+ Debugger - An experimental extension is available to support the V8 Inspector Protocol.
  • PREVIEW Extensions Packs - Bundle a set of extensions into a single download from the Marketplace.
  • PREVIEW TS/JS Grammar - A new colorizer for TS/JS with over 200 fixes. We will include it in the next release.

New in Visual Studio Code 1.5.2 (2016-09-12) (Sep 12, 2016)

  • We are releasing a 1.5.2 recovery build to fix several important issues:
  • 11702: Unable to bypass ssl verification any more for corp firewall
  • 11714: Terminal focus key binding is not working correctly after update to 1.5
  • 11742: Bug in cursor location within user snippets
  • 11754: ShowQuickPick does not fulfil the promises

New in Visual Studio Code 1.5.1 (Sep 12, 2016)

  • To fix an issue when the editor.fontSize is set to 0, we're releasing a 1.5.1 recovery build.

New in Visual Studio Code 1.5 (Sep 12, 2016)

  • Workbench: Bring the File Explorer to life with File Icon Themes. VS Code ships with two icon themes with more available on the Marketplace.
  • Debugging: The console [REPL] just got a whole lot more usable with IntelliSense for Node.js as well as debug protocol additions to support IntelliSense by other debug extensions. We also added support for multi-line input.
  • Extensions:
  • You can now quickly see an extension's contributions (commands, settings, languages). Both for your installed extensions and those on the Marketplace.
  • Sort your Marketplace extension searches by installation count and ratings.
  • Turn on auto update or use Update All for your installed extensions.
  • Editor: New settings to control word wrap and auto save.
  • Quick Open: Performance improvements with Quick Open for large projects.
  • Extension Authoring: Expanded editor command API to support VIM emulation.

New in Visual Studio Code 1.4.0 (2016-08-04) (Sep 12, 2016)

  • Workbench: Editor actions such as Open Preview and Switch to Changes View are back on the title bar. IME and Copy/Paste support in the Integrated Terminal.
  • Editor: Better snippet and suggestions control. New Insert Snippet command with dedicated UI.
  • Debugging: Restart Frame action to rerun a specific stack frame. 'Variable paging' feature moved into VS Code and available to all debug extensions.
  • Extension Authoring: New 'move' commands to better support VIM gestures. Custom link behavior with the DocumentLinkProvider API. Expanded Debug Protocol.

New in Visual Studio Code 1.3.0 (Jul 8, 2016)

  • Tabs:
  • Tabbed editor panes allow you to quickly navigate to your files and organize your workbench.
  • Extensions:
  • New in-product Extensions View to quickly find, install and manage your extensions.
  • Workbench:
  • Enhanced Drag and Drop, Preview Editors to conserve your editor panes, and multiple Integrated Terminals.
  • Editor:
  • Global Search and Replace, Indent Guides, Problems panel to view errors and warnings.
  • Languages:
  • Better, more complete Emmet support, Atom JavaScript grammar extension.
  • Debugging:
  • Lots of improvements including support for attaching to running Node.js processes and changing variable values during a debug session.
  • Extension Authoring:
  • A new contribution point for menu bars and context menus. New APIs to open non-text resources and add editor decorator attachments.

New in Visual Studio Code 1.2.0 (Jun 8, 2016)

  • Editor:
  • Trim auto whitespace:
  • The editor automatically inserts whitespace when you add a new line, based on indenting rules and the previous line's content. Over time, this can result in unnecessary whitespace being persisted in the file. Thanks to PR #5423, the new editor.trimAutoWhitespace setting causes the editor to track the automatic whitespace it inserted and remove it if it no longer is needed, for example by typing somewhere else. Please note, this new setting is on by default.
  • Select all find matches:
  • You can now immediately select all find results by pressing Alt+Enter. This is much quicker than doing a find and replace and leverages VS Code's multi-cursor support. Thanks for PR #5715!
  • Configure Word Based Suggestion:
  • When a language service isn't able to compute semantic completion (suggestions), VS Code defaults to word based completions. This is why for some languages you see an IntelliSense list with every word in the file. Some folks would prefer to not see this list at all so you can now disable word based completions with the editor.wordBasedSuggestions setting.
  • Resizable Peek View:
  • The Peek view editor that shows for reference search and for previewing declarations can now be resized!
  • Workbench:
  • Tabs:
  • Note: Support for Tabs is not in the 1.2.0 (May 2016) Stable release. You can preview the experiences below by using the Insiders Release of VS Code.
  • Tab support is the number one User Voice request. While the full implementation will take multiple iterations to fully deliver, we wanted to share progress made during the May iteration.
  • During this milestone, we focused on managing stacks of open editors. In the picture below, you can see that the left pane has two editors open, the center pane has four, and the right pane has two more. Files listed in italics are preview files, they allow you to single click and browse files without cluttering the list of open editors and eventually tabs.
  • When you close an editor the last opened editor in the stack is restored, instead of closing the pane as it does today. In addition, we held a number of UX studies that have resulted in further improvements to the design, including:
  • Redesign of the overflow icon
  • Ability to specify if files from Quick Open are pinned or previewed
  • Added a command to turn a previewed file into a pinned file
  • This work has been checked into master and you can preview it using the Insiders Release.
  • Integrated terminal:
  • Number two on User Voice is the request for an integrated terminal, issue #143. It can be convenient to have a terminal embedded directly in the tool, initially scoped to the workspace you are working in. You don't have to switch windows or alter the state of an existing terminal for a quick task.
  • With the May release, we are rolling out the initial version of an integrated terminal. You can open the terminal using Ctrl+`, from the View | Toggle Integrated Terminal menu, or from the View > Toggle Integrated Terminal command in the Command Palette.
  • The shell that is used defaults to $SHELL on Linux and OS X, and %COMSPEC% on Windows. These can be overridden manually by setting terminal.integrated.shell.* in settings. It should act just like the terminal you're familiar with.
  • Terminal:
  • Please note, this is an early version of what we want to deliver. Currently VS Code only supports a single terminal and there still are missing features like copying and pasting with the keyboard. Windows 10 users may experience problems getting cmd.exe to work. If so, please try enabling the legacy terminal as described in #143. The full list of current bugs and feature requests can be found here.
  • Note: The Toggle Integrated Terminal key binding Ctrl+` had previously been bound to the Cycle Between Open Editors command. You can customize the key bindings and change the behavior back if desired.
  • Removing a specific key binding rule:
  • It is now possible to write a key binding rule that targets the removal of a specific default key binding. With the keybindings.json, it was always possible to redefine all the key bindings of VS Code, but it can be very difficult to make a small tweak, especially around overloaded keys, such as Tab or Escape. From now on, simply add a - to the command and the rule will be a removal rule.
  • Languages:
  • CSS Variables:
  • Variable support in CSS is a new standards proposal currently in draft form. VS Code now supports rich code completion (IntelliSense) for CSS variables as well as Go To Definition, Peek Definition, and Find All Occurrences for variables in the same file.
  • Linters:
  • ESLint:
  • The ESLint extension now supports a "fix all problems" command. You can bind the eslint.fixAllProblems command to a keyboard shortcut.
  • TSLint:
  • The TSLint extension now supports excluding files from linting (PR #47) as well as quick fixes for a set of TSLint warnings (PR #40). Thanks for the pull requests!
  • Debugging:
  • Control opening the Debug Console:
  • To provide greater control over how the internal Debug Console is revealed VS Code, we are introducing the internalConsoleOptions setting in launch.json (see #6159). This is especially useful if you are using an external terminal while debugging and you want to keep VS Code focused on your code. The possible values are:
  • neverOpen - VS Code will never open the debug console
  • openOnFirstSessionStart - VS Code will open the debug console on the first debug session
  • openOnSessionStart - VS Code will open the debug console on every debug session
  • Node.js Improved Stepping Performance:
  • We want VS Code to remain lightweight and fast so to improve the stepping experience for programs with a large number of local variables per scope, we've made the following adjustments for Node.js debugging:
  • If a scope has more than 100 local variables, VS Code no longer automatically auto expands that scope
  • After you expand the scope manually, only the first 100 local variables are shown
  • The scope header will reflect that only the first 100 local variables are being displayed.
  • To track a variable that is not within the first 100 you must add it as a Watch expression or evaluate it in the Debug Console.
  • Extension Authoring:
  • Debug extension API:
  • We have exposed a vscode.startDebug command as an extension API for the VS Code debugger component. With this, a debug session can be started programmatically either by passing the name of a launch configuration file or a complete launch configuration object.
  • TextMate grammar injections:
  • Extensions can now contribute TextMate grammars that inject new rules into the existing grammars used for syntax highlighting. This makes it possible to add colorization inside string literals or comments, such as highlighting of URLs or TODO markers across multiple languages.
  • Comparing files:
  • We have added a new API command that allows you to use the diff-editor on two arbitrary resources like so: commands.executeCommand('vscode.diff', uri1, uri2)
  • Updated extension samples
  • There is a new rich extension sample that walks you through virtual documents, eventing, and using language features as commands. Also, the preview html sample was updated.
  • Debug Adapter:
  • Support a 'One' or 'All' mode of operation for controlling threads:
  • In a previous revision of the VS Code Debug Protocol, we had introduced a allThreadsStopped attribute on the StoppedEvent. With this attribute, a debug adapter can report back to the frontend whether only a single thread or all threads have stopped. Thanks to developer feedback, we learned that a similar attribute is necessary for the ContinueRequest too.
  • In the version 1.9.0 of the VS Code Debug Protocol, a boolean attribute allThreadsContinued has been added to the response from the ContinueRequest. Using this attribute, a debug adapter can report back to the UI whether only a single thread or all threads are continuing. More details can be found here.
  • Language Server Protocol:
  • The Language Service Protocol now offers support for telemetry notifications. Message tracing support has been implemented in the node client library to help tracking down problems in the server. It can be enabled via a settings ${clientName}.trace.server where client name is the name passed when creating the LanguageClient instance. For example eslint.trace.server for the ESLint linter service.
  • Command Line Extension Management:
  • To make it easier to automate and configure VS Code, it is now possible to list, install, and uninstall extensions from the command line.
  • The Monaco Editor:
  • At the heart of VS Code is the "Monaco" code editor. You can find the "Monaco" editor across many Microsoft properties such as OneDrive, VSTS, Azure, the TypeScript playground, and even in the F12 tools in IE and Edge.
  • Our goal is to enable anyone to consume the "Monaco" editor and host it in any browser. The challenge we have today is that the editor is embedded in the vscode repository and the language service extensions have dependencies on client (non browser) technologies.
  • The first step towards releasing the editor is an exploration where the TypeScript language service has been extracted from VS Code's sources and can run on top of the standalone editor API.
  • In the upcoming weeks we will continue to refine the API and automate the packaging with the goal of making the "Monaco" editor public with the June release of VS Code.
  • Notable Bug Fixes:
  • 959: Fonts become fuzzy after zooming and scrolling
  • 1000: Slow response when system is offline
  • 2717: "Define Keybindings" is invalidating keybindings.json
  • 4541: Problem typing in Korean
  • 5645: Slow call stack response for TS repository
  • 5780: Come up with better external terminal defaults on Linux
  • 6029: debug doesn't work on node v6
  • 6151: The border of scroll bar is ugly, and unclear under high dpi
  • 6432: Unity desktop entry not installed immediately after installation
  • 6525: Linux CLI fails to open files with spaces in filename
  • 6530: source maps don't work if drive letter case does not match
  • 6593: Two desktop entries appear on Ubuntu sometimes
  • 6609: Change keybinding for 'fold all' / 'unfold all'
  • 6878, 6916: Freeze/Crash when dealing with minified js files

New in Visual Studio Code 1.1.1 (May 17, 2016)

  • The 1.1.1 release addresses an issue with multi-threaded debugging and an issue with the editor API.

New in Visual Studio Code 1.1.0 (May 10, 2016)

  • Here is a overview of some of the updates contained in this release:
  • Double-click editor resizing
  • Debugging performance improvements and better Node.js support
  • Configure the external shell to use from VS Code
  • Extension authors will be especially happy with this release, as we've:
  • Updated the Language Server protocol
  • Added Debug Adapter test support
  • Added several new APIs (open folder, add JSON schema validation, onDebug activation)

New in Visual Studio Code 1.0.0 (Apr 15, 2016)

  • Added 9 localized display languages.
  • Improved JavaScript support with new TypeScript language service, codename "Salsa".
  • Simplified jsconfig.json and tasks.json file creation.
  • Support adding new file extensions to existing languages.
  • Implemented editor column text selection.

New in Visual Studio Code 0.10.11 (Mar 15, 2016)

  • Handlebars:
  • Curly braces edit issuess
  • folding:
  • sections are still folded when disabled in preferences
  • js:
  • syntax highlight for 'var' and 'function' not working in Default VS theme
  • Smoke Test:
  • Don't get cross file intellisense in JS

New in Visual Studio Code 0.10.10 (Mar 8, 2016)

  • Salsa is now the default JavaScript language service.
  • Folding, the most requested feature, is now available.
  • There is support for localization and accessibility.
  • In addition, we continued to listen to your issues and feature requests.
  • Languages - JavaScript:
  • The Salsa JavaScript language service was available as preview in January and it is now the default language service for JavaScript in the February update.
  • Improvements:
  • The JSDoc comment format is now understood and used to improve IntelliSense proposals and parameter hints.
  • You now get IntelliSense proposals for properties in 'ECMAScript 3 style classes'.
  • IntelliSense offers both inferred proposals and the global identifiers of the project. The inferred symbols are presented first, followed by the global identifiers (with the document icon), as you can see in the image above.
  • The commonjs support has been improved as well.
  • There is now support for JSX/React.
  • React/JSX Support:
  • Tip: To get IntelliSense for React/JSX, install the typings for react-global by running tsd install react-global or typings install --ambient react-global from the terminal.
  • Tip: When you use eslint for linting (see below) and you used eslint --init to create an eslint configuration and you answered yes to "Do you use React?", then the setting experimentalObjectRestSpread is enabled. Support for ObjectRestSpread is not yet provided by Salsa but it is on the roadmap (see #2103).
  • There is now support for React Native:
  • Tip: To get IntelliSense for React Native, install the typings for react-native by running tsd install react-native or typings install --ambient react-native from the terminal. Or even better... if you also want debugging support then install the preview of the React Native extension.
  • Tip: There is a known issue in that Salsa Doesn't Provide IntelliSense When Using Import Statements.
  • It is now possible to have mixed TypeScript and JavaScript projects. To enable JavaScript inside a TypeScript project, you can set the allowJs property to true in the tsconfig.json.
  • Tip: The tsc compiler does not detect the presence of a jsconfig.json file automatically. Use the –p argument to make tsc use your jsconfig.json file, e.g. tsc -p jsconfig.json.
  • Finally, the TypeScript compiler tsc can down-level compile JavaScript files from ES6 to another language level.
  • Migration Notes:
  • The following sections describe a few of VS Code's features that have changed with the move to Salsa and provide information about maintaining previous behaviors.
  • Linters
  • Previously the JavaScript language support provided some linting options enabled by the javascript.validate.lint.* settings. With jshint and eslint, there are powerful linters for JavaScript available. Also, there are now extensions for VS Code available that integrate these linters. Therefore, we have decided to deprecate the built-in linter and Salsa now reports syntax errors only. We strongly recommend that you install and configure a JavaScript linter if your project hasn't done so already.
  • In particular, the previous JavaScript infrastructure provided an implicit lint rule which warned about undeclared variables unless they are mentioned in a /*global*/ comment block. This rule is no longer active and needs to be configured in your linter of choice.
  • Here are the steps to set up eslint:
  • npm install -g eslint
  • install the VS Code eslint extension.
  • use eslint --init to create an initial eslint configuration by answering questions or by picking a popular configuration.
  • Tip: If you use JSON as the format of the eslint configuration file, then VS Code can provide you with IntelliSense when you edit the .eslintrc.json file.
  • This .eslintrc.json corresponds roughly to the lint settings of the old JavaScript infrastructure.
  • Changes in jsconfig.json
  • exclude lists
  • The previous JavaScript language service had a built-in list for folders that should be excluded from the project context. This list included the folders: node_modules, bower_components, jspm_packages, tmp, and temp. This implicit behavior has changed in favor of an explicit list defined by the user. Therefore if you use...
  • node exclude the node_modules folder
  • bower exclude the bower_components folder
  • ember exclude the tmp and temp folder
  • jspm exclude the jspm_packages folder
  • webpack then exclude the output folder, e.g., dist.
  • Tip: After editing the jsconfig.json, do not forget to run the Reload JavaScript command to ensure that everything is up to date.
  • Defaults
  • If you do not have a jsconfig.json in your workspace then the following defaults are used:
  • the exclude list includes the node_modules folder and the folder defined by the out attribute.
  • What has not changed, but that you should be aware of, is that if you have no jsconfig.json defined to mark the root of your project, then each JavaScript file is considered an island by Salsa.
  • js-is-jsx extension deprecation
  • The js-is-jsx extension is no longer needed since Salsa gives you coloring for JSX constructs inside .js files out of the box. We recommend you uninstall this extension.
  • No longer supported
  • Salsa undoubtedly provides a much better experience writing JavaScript applications in VS Code. By moving to Salsa, we give up a few features previously available with our old JavaScript language service:
  • The source language level is now always ECMAScript 6. Previously, there was support to define a lower level using the target attribute inside jsconfig.json. This support has been removed and the target attribute is now only used by tsc to define the target version when a JavaScript file is compiled to a lower ECMAScript version.
  • The previous JavaScript infrastructure attempted to resolve references for AMD modules. This hasn't worked in all cases and support for AMD to resolve references across files is currently no longer supported.
  • There is no longer support for IntelliSense in script sections inside HTML documents.
  • The javascript.validate.* settings are no longer supported and are ignored (see above).
  • The previous JavaScript infrastructure provided quick fixes to add an undefined variable as a global and to fetch a type definition from definitely typed. These quick fixes are no longer available.
  • A file without a .js suffix that VS Code identifies as a JavaScript file is now treated as a .ts file and you get unexpected type errors (#issue 7291).
  • Languages - TypeScript:
  • VS Code now ships with the latest TypeScript 1.8.2 version.
  • Languages - C#:
  • C# language support is now an optional install from the Marketplace. You can install it from within VS Code by searching for 'C#':
  • Installing C# extension:
  • or if you already have a project with C# files, VS Code will prompt you to install the extension as soon as you open a C# file.
  • Editor:
  • Source Code Folding:
  • The editor now contains a first implementation of code folding. You can turn the feature on and off with the editor.folding configuration setting (File > Preferences > User Settings or Workspace Settings). Once enabled, you can collapse and expand code regions using the folding icons next to the line numbers. Regions that can be folded are shown with a - icon, regions that are already folded with the + icon. The - icon only shows when the mouse is over the gutter.
  • Additionally you can use the following commands from the commands menu (F1) or with keyboard shortcuts:
  • Fold (Ctrl+Shift+[) folds the innermost uncollapsed region at the cursor
  • Unfold (Ctrl+Shift+]) unfolds the collapsed region at the cursor
  • Fold All (Ctrl+Shift+Alt+[) folds all region in the editor
  • Unfold All (Ctrl+Shift+Alt+]) unfolds all regions in the editor
  • The folding regions are evaluated solely based on the indentation of each line. This first version does not yet support language agnostic folding regions, or folding markers. This is in discussion for an upcoming release (see issue #3422).
  • IntelliSense Performance
  • The IntelliSense widget underwent a full rewrite to address some performance problems. It now handles lists of 20,000 extensions in milliseconds, compared to the previous ~10 seconds of lag.
  • Indentation:
  • Initiated by user request #1228, we have added indentation status in the editor to help with 'tabs to spaces' conversion and vice versa. The Status Bar shows whether the Tab key will insert spaces or tabs and the current indentation size in characters.
  • You can adjust the indentation size and toggle between tabs and spaces with three new actions:
  • Ruler Settings:
  • There is a new setting editor.rulers available. For example, setting it to [80, 120] will display two vertical rulers in the editor, one after the 80th character and one after the 120th character.
  • Default End of Line Sequence
  • A new setting files.eol controls the default new line character when creating new files. It defaults to \r\n on Windows and to \n on Linux and OS X.
  • Word navigation and word separators
  • Word navigation and word deletion commands updated and now honor a new setting, editor.wordSeparators, when deciding what is a word, regardless of the current language of the file.
  • Improved usage of web workers
  • With the adoption of the Salsa JavaScript language service as the default, we could streamline our usage of web workers and now have a dedicated web worker that is language agnostic, which we use for diff computation, link detection or simple textual completions. This reduces the latency of these computations and is memory friendly, as it automatically shuts down when not needed.
  • Workbench
  • Open Definition to the Side
  • There is now an action to open a definition to the side in the Command Palette (Ctrl+K F12).
  • Close Other Files:
  • There is now an action to close all other files, in the Working Files' context menu (Ctrl+K Ctrl+Shift+W).
  • Switch to a working file from Quick Open:
  • It's now possible to open a file in the Working Files list from the Quick Open box by prefixing it with ~.
  • Extension Recommendations:
  • There is a new command Extensions: Show Extension Recommendations for displaying suggested extensions based on your use of VS Code. You can reach this by typing ext recommend (trailing space) in the Quick Open box.
  • Extension Gallery Performance Improvement:
  • The performance of the in-product Extension Gallery (via the Extensions: Install Extension command) has been greatly improved. We introduced a server-side cache which speeds up the request considerably.
  • Debugging
  • VS Code no longer 'fixes' Relative Paths in Launch Configurations
  • In the January milestone, we deprecated the use of relative paths in launch configurations (but still continued to convert relative in absolute paths). With this milestone, we've dropped this automatic fixing in favor of a more transparent strategy: VS Code no longer modifies launch configuration paths when sending them to the debug adapter. This is now the same treatment of paths as for task configurations.
  • If you haven't already fixed your launch configuration paths for the January release, then you will now see this (or similar) errors when starting a debug session:
  • Just prefixing the relative path with a ${workspaceRoot}/ should fix the problem.
  • Pre Launch Task Improvements:
  • We have improved the preLaunchTask based on user feedback and feature requests:
  • If preLaunchTask produces an error, debugging does not start and a message with an option to continue debugging despite the error is shown.
  • If a preLaunchTask is a watching task, debugging does not start before the watching task becomes inactive.
  • If a tasks.json is missing and a preLaunchTask is set, we offer to create a tasks.json for the user.
  • Support for Node.js 'nodemon' Development Setup:
  • The VS Code Node.js debugger now supports an automatic restart mode for the 'attach' launch configuration. This feature is useful if you use nodemon to restart Node.js on file changes. Setting the launch configuration attribute restart to true makes node-debug automatically try to re-attach to Node.js after a debug session has ended.
  • On the command line, start your Node.js program server.js:
  • nodemon --debug server.js
  • In VS Code, create an 'attach' launch configuration:
  • "name": "Attach",
  • "type": "node",
  • "request": "attach",
  • "port": 5858,
  • "restart": true
  • Tip: Pressing the Stop button stops the debug session and disconnects from Node.js, but nodemon (and Node.js) will continue to run. So to stop nodemon you will have to kill it from the command line.
  • Tip: In case of syntax errors, nodemon will not be able to start Node.js successfully until the error has been fixed. In this case VS Code will continue trying to attach to Node.js but eventually give up (after 10 seconds). To avoid this you can increase the timeout by adding a timeout attribute with a larger value (in milliseconds).
  • Function Breakpoints:
  • Instead of placing breakpoints directly in the code, the VS Code Node.js debugger now supports creating breakpoints by specifying a function name. This is useful in situations where source is not available but a function name is known.
  • A 'function breakpoint' is created by pressing the '+' button in the Breakpoints view header.
  • Please note: Node.js support for function breakpoints is limited because:
  • function breakpoints only work for global, non-native functions and
  • function breakpoints can only be created if the function has been defined (seen by Node.js).
  • Mono Debugging is now an Optional Install:
  • Since C# support in VS Code has been turned into an optional install, we have done the same with the Mono debugger. The Mono debugger has now become 'Mono Debug' on the Visual Studio Marketplace.
  • You can either install the Mono Debug extension with the VS Code Extensions: Install Extension command or if you already have a Mono based project with a mono launch configuration, simply by starting a debug session. VS Code will then suggest to download and install Mono Debug automatically:
  • install-mono-debug-help
  • Tasks:
  • The eslint-stylish problem matcher changed to use absolute file paths by default. We made this breaking change because the stylish reporter integrated into eslint reports absolute paths by default. If you are using an older version of eslint with the external stylish reporter that reports relative file paths, you can tweak the problemMatcher in a tasks.json file as below to make this combination work:
  • "problemMatcher": {
  • "base": "$eslint-stylish",
  • "fileLocation": "relative"
  • Setup:
  • OS X Shell Command
  • In OS X, two new commands were added to install the VS Code shell command in the $PATH environment variable list. This makes the previous alias in ~/.bash_profile deprecated and we recommend you to remove it and use this command instead.
  • OS X Shell Commands
  • Telemetry Opt Out:
  • Users now can opt out of usage telemetry via the telemetry.enableTelemetry setting.
  • Improved Command Line Interaction:
  • The command line interface for code has been unified across all platforms and now supports a few arguments such as --help and --version.
  • Accessibility:
  • Accessibility has been a constant theme over the past milestones and in February VS Code has been improved across the feature space.
  • High Contrast Theme:
  • As a part of the accessibility work, the High Contrast theme, which was only available for Windows users, is now enabled for all 3 platforms.
  • Screen reading:
  • We have turned on by default a new strategy for screen readers in the editor, one that is based on paging the text. From our testing, this is the best option in terms of trade-off between good screen reader support and performance when dealing with very large files.
  • The Go to Next/Previous Error or Warning actions (F8 and Shift+F8) now allow screen readers to announce the error or warning messages.
  • Improved Debugger Accessibility
  • Based on user feedback, we have improved debugger accessibility:
  • Changes in debug state are read out (e.g. 'started', 'breakpoint hit', 'terminated', ...)
  • All debug actions are keyboard accessible
  • Focus intuitively moves inside the Debug View and Debug Console
  • Debug hover is keyboard accessible (Ctrl+K Ctrl+I)
  • Localization:
  • Support has been added to localize package.json files for extensions and CommonJS code. For localizing CommonJS code, we've published a new npm module vscode-nls which helps you with localizing strings in your VS Code extension.
  • Extension Authoring
  • Always install a compatible version of the extension if possible
  • VS Code will now fallback to installing the latest compatible version of an extension with its own version, in case the latest extension version isn't compatible. This prevents users from installing extensions that could fail to activate.
  • Debug Adapter
  • We now support more OS types for the debuggers contribution point (see #1696 for details). In addition to win, linux, and osx, adapters can now use winx86 in their package.json to specify options specific to a 32-bit Windows:
  • "debuggers": [{
  • "type": "gdb",
  • "win": {
  • "program": "./bin/gdbDebug.exe",
  • "winx86": {
  • "program": "./bin/gdbDebug_x86.exe",
  • Debug Protocol Changes:
  • We have changed the debug protocol in the following (backward compatible) ways:
  • Feature negotiation:
  • A boolean supportsConditionalBreakpoints in Capabilities indicates whether the debug adapter supports conditional breakpoints. If a debug adapter does not support conditional breakpoints, a breakpoint which has a condition set is shown with an exclamation mark.
  • A boolean supportsFunctionBreakpoints in Capabilities indicates whether the debug adapter implements function breakpoints. VS Code will only use the new function breakpoint request of the debug protocol if this feature is enabled.
  • A boolean supportsEvaluateForHovers indicates whether the debug adapter supports a side effect free EvaluateRequest. If this feature is enabled, VS Code will use the evaluate request to populate the hover with information about the object under the mouse pointer. If it is disabled, VS Code uses the information from the Variables viewlet.
  • An optional exceptionBreakpointFilters capability that lists the filters available for the setExceptionBreakpoints request. With this, a debug adapter can contribute the options shown in the breakpoint viewlet.
  • An optional restart attribute has been added to the TerminatedEvent which a debug adapter can use to request a session restart.
  • Notable Bug Fixes:
  • 105: Enable code folding and collapsing
  • 439: ext install is slow
  • 1228: Add option to convert tabs to spaces
  • 2490: Improve IntelliSense perf
  • 3127: code . opens the current directory, code .. also opens the current directory - not the parent

New in Visual Studio Code 0.10.8 (Feb 24, 2016)

  • JavaScript - Salsa Preview:
  • The JavaScript language service in VS Code has always been powered by TypeScript. We are migrating to a new JavaScript language service implementation called Salsa. Salsa will become available with TypeScript 1.8 but for the January update, we are providing way to preview Salsa in VS Code.
  • Salsa Improvements
  • Salsa provides important improvements over the existing JavaScript language service.
  • The JSDoc comment format is now understood and used to improve IntelliSense proposals and parameter hints
  • You now get IntelliSense proposals for properties in 'ECMAScript 3 style classes'
  • IntelliSense offers both inferred proposals and the global identifiers of the project. The inferred symbols are presented first, followed by the global identifiers (with the document icon), as you can see in the image above.
  • The commonjs support has been improved as well
  • Tip: When using commonjs, exclude the node_modules folder using the exclude property in jsconfig.json. This is due to issue 6673 which is fixed but not yet in typescript@next.
  • There is now support for JSX.
  • Tip: To get IntelliSense for React/JSX, install the typings for react-global by running tsd install react-global from the terminal.
  • Salsa also understands JSX constructs inside JavaScript (.js) files to support React Native development. We haven't updated the grammar for .js files yet but you can enable JSX syntax coloring for JS using the js-is-jsx extension. This extension tell VS Code to treat .js files as .jsx files so that the JSX syntax coloring is used.
  • It is now possible to have mixed TypeScript and JavaScript projects. To enable JavaScript inside a TypeScript project, you can set the allowJs property to true in the tsconfig.json.
  • Tip: The tsc compiler does not detect the presence of a jsconfig.json file automatically. Use the –p argument to make tsc use your jsconfig.json file, e.g. tsc -p jsconfig.json.
  • Finally, the TypeScript compiler tsc can down-level compile JavaScript files from ES6 to another language level.
  • Changes from the existing VS Code JavaScript support:
  • Salsa will undoubtedly provide a much better experience writing JavaScript applications in VS Code. By moving to this new service, we give up a few features previously available with our custom JavaScript language service.
  • When using Salsa, the language level is always ECMAScript 6. In the existing JavaScript language service, the default level was ES6 but there was support to define a lower level using the target attribute inside jsconfig.json. This support has been removed and the target attribute is now only used by tsc to define the target version when a JavaScript file is compiled to a lower ECMAScript version.
  • The existing JavaScript language service implicitly excluded some folders from the project, see the JavaScript topic. This is no longer the case and you must exclude these folders explicitly in your jsconfig.json file.
  • Salsa flags syntax errors but the JavaScript linting options javascript.validate.lint.* defined in the user settings are no longer supported. To get these linting options back, we recommend that you use a linter combined with a VS Code linter extension like ESLint or JSHint.
  • Salsa doesn't support the AMD module system.
  • Enabling Salsa:
  • Set the environment variable VSCODE_TSJS. On OS X, it is recommended that you change this in your .bash_profile using export VSCODE_TSJS=1. That way the environment variable is persisted.
  • Salsa requires TypeScript 1.8 but the final 1.8 release isn't available yet. Therefore, you need to install the nightly TypeScript build. You have two options:
  • Install TypeScript locally into your workspace using npm install typescript@next. VS Code will pick up the TypeScript version from there.
  • Install TypeScript globally to share the installation across workspaces. In this case, you install it using npm install -g typescript@next. You then have to tell VS Code the install location using the typescript.tsdk setting. Set typescript.tsdk to the path of the lib folder containing the tsserver.js file of the installed TypeScript module.
  • Please note, the TypeScript nightly is continually being updated. During our testing, we have been very successful using [email protected].
  • You can verify that you have Salsa enabled and you have an installed TypeScript version that supports Salsa by checking the status indicator in the Status Bar. This shows that all is OK.
  • When the TypeScript version doesn't support Salsa, you will see the indicator below. If you hover over the status indicator, you will see the path to the TypeScript installation that you have configured.
  • Editor:
  • New Default Themes:
  • The Light and Dark themes have been in the center of attention recently as colors were added and removed again. More colors became visible with the switch to TextMate tokenizers in November. In December, we decided to remove some of the newly added colors again to stay compatible with the classic Visual Studio Light and Dark themes.
  • From the feedback in GitHub issues 1270, 1470, and others, we learned that there are fans of both the classic Visual Studio Light and Dark themes as well as the more colorful versions. So for the January release, we decided to bring the colors back with two new built-in themes: 'Light+' and 'Dark+'. If you installed the theme preview as an extension, you can now uninstall it.
  • In addition to the 4 major colors in the Visual Studio themes (comments, strings, numbers and keywords), the 'plus' themes add colors for:
  • control flow keywords
  • type names
  • function names
  • variable and parameter names
  • New installations will get the new Dark+ theme as the default. Existing installations using the previous Light or Dark themes can switch to the new Dark+ or Light+ theme using Color Theme command.
  • Keyboard Accessibility:
  • You will find that VS Code provides an exhaustive list of commands in the Command Palette (F1) so that you can run VS Code without using the mouse. However, some parts of the UI could not be operated without using the mouse. We made a pass over these locations and added support to use the Tab key to jump between UI controls that you can interact with. Using Tab or Shift+Tab to jump between elements with actions in the UI is a very common pattern for keyboard accessibility. In addition to that, we now also draw an indicator around the UI element once the element gains focus.
  • Some areas where you can now jump to using keyboard only:
  • View switcher
  • Header of collapsible sections in a view to expand/collapse
  • Actions in views and sections
  • Actions for items in the tree
  • This is just the beginning of our journey to become more keyboard accessible, expect more areas to follow in the future!
  • Experimental screen reader support in the editor:
  • We have added an experimental mode that can be enabled with the editor.experimentalScreenReader key in settings or for the current session with Ctrl+Shift+R. This causes the editor to place all the current text in the opened file inside the we use for user input. We have done our initial testing with the NVDA screen reader on Windows and have uncovered some serious performance issues and glitches caused by Chromium which we continue to work on. We have also added Alt+F1 that presents a tooltip explaining how to toggle this mode on and off. We have also improved keyboard navigation around Tab, specifically all read-only editors no longer trap the Tab key. Also, Ctrl+M continues to act as a toggle for trapping Tab.
  • Localization:
  • We also started work on localizing VS Code for different locales. We put tooling in place to externalize strings and to create language bundles. The screen shot below shows VS Code running under a German locale.
  • Please note that the translation effort for VS Code has not been completed yet and it will still take a while until we ship VS Code for languages other than English.
  • Ligatures for VS Code:
  • VS Code now supports fonts with programming ligatures, like Hasklig and Fira Code. Those fonts provide compositions for character sequences commonly used in programming, as =>, >=, != etc. Enable ligatures with new editor.fontLigatures setting and pick a font with programming ligatures. Special thanks to @mattblagden for initiating this.
  • Find Widget Improvements:
  • The Find widget was updated to make all of its functions work regardless of the number of results. It is now possible to Find, Replace, etc. well beyond the first 1000 find matches. For performance reasons, the Find widget still only highlights the first 1000 matches. We have also improved the tab order in the widget.
  • The refactoring allowed us to introduce the "X of Y" display, such that now you can tell in a glance how many results and where you are in that list.
  • We also added two new actions, "Find Next Selection" (Ctrl+F3) and "Find Previous Selection" (Ctrl+Shift+F3), that allow you to jump to the next or previous matches without losing editor focus. Thanks to @ajkerrigan, there are now key bindings for the "Replace" and "Replace all" actions.
  • Input Handling:
  • We changed input handling in the editor to allow software such as UniKey (used for Vietnamese input) or AutoHotKey (used for keyboard automation) to work with VS Code.
  • Configurable Cursor Style:
  • We added a new editor option editor.cursorStyle that can be set to "block". Special thanks to @markrendle for his pull request.
  • Auto Save:
  • VS Code always supported automatically saving dirty files after one second (File | Auto Save). We received a lot of feedback that users want more control over when VS Code should save dirty files. The setting is now in the settings.json configuration file and provides more options:
  • files.autoSave: Can be off to disable auto save, afterDelay to save files after a configured delay and onFocusChange to save files when focus moves out of the editor of the dirty file.
  • files.autoSaveDelay: Configures the delay in milliseconds when files.autoSave is configured to afterDelay.
  • This setting can be configured either globally for the user or per workspace through the workspace settings (Preferences | Workspace Settings).
  • Note: If you had Auto Save enabled previously, we will migrate your setting into the settings.json file automatically. You will not see any dirty indicators in the UI if you configure auto save for 1 second or below. In all other cases, you will see the dirty indicators throughout the UI.
  • File Picker:
  • Some useful changes around the file picker (Ctrl+P) include:
  • Fuzzy matching is now enabled by default and the previously introduced setting filePicker.alternateFileNameMatching is no longer needed.
  • You can open any file (including line/column pattern at the end) that exists on disk by typing the full path or full workspace relative path even if your exclude settings hide it otherwise.
  • Full IntelliSense Documentation:
  • We improved the interaction and rendering of IntelliSense suggestions which have more complete documentation. A blue icon will appear on the right of the suggestion's documentation:
  • Clicking it will display the full documentation for that suggestion. It's also possible trigger IntelliSense a second time to enter this mode (Ctrl+Space):
  • Workbench:
  • Hide the Menu Bar (Windows, Linux):
  • We added a new action to hide the menu bar on Windows and Linux (View | Toggle Menu Bar). You can still access the menu pressing the Alt key.
  • Horizontal panel:
  • We now show the output and debug consoles horizontally.
  • Debugging:
  • Rich Object Hover:
  • We are now using a tree in the debug hover to allow better rich object inspection:
  • Conditional Breakpoints:
  • We now support setting conditional breakpoints that are hit only when the specified condition is true. Please note, the underlying debug target, such as Node.js, must support conditional breakpoints for this feature to work.
  • Changed Variable Indication:
  • We now indicate in the Debug and Watch views which variables have changed values between step events.
  • Node.js Debugging:
  • Source Maps with Inlined Source:
  • Node.js debugging now supports source maps with "inlined source" in addition to "inlined source maps" which were already supported. To avoid confusion, here is a brief explanation of these two source map options. "Inlined source" and "inlined source maps" are orthogonal features and VS Code supports both either alone or in combination:
  • Inlined source maps: The contents of the source map does not live in a file but is a data URL at the end of the generated file.
  • Inlined source: The contents of the original source file does not live in a file but is included in the source map.
  • The strategy for which situations VS Code will use "inlined source" is as follows:
  • VS Code always tries to locate the source on disk first.
  • If it cannot find the source (e.g. because there is none in the VS Code workspace or because the paths in the source maps are broken), VS Code will use the "inlined source" if available.
  • If there is no inlined source, VS Code will fall back to get the file contents from Node.js itself.
  • Whenever the editor contents is not loaded from the file system but comes from the debugger backend, the editor will be in read-only mode and the "origin" of the editor contents is shown in the editor title like this:
  • Remote Debugging:
  • The followings improvements enable VS Code to support remote debugging, includes debugging into a Docker container:
  • The attach launch configuration now supports an address attribute where a remote host can be specified. Please note that remote debugging is only supported on recent versions of Node.js (>= 4.x).
  • The attach launch configuration now supports a localRoot and a remoteRoot attribute that can be used to map paths between a local VS Code project and a (remote) Node.js folder. This works even locally on the same system or across different operating systems. Whenever a code path needs to be converted from the remote Node.js to a local VS Code path, the remoteRoot path is stripped off the path and replaced by localRoot. For the reverse conversion, the localRoot path is replaced by the remoteRoot.
  • launch.json relative paths not automatically converted to absolute ones:
  • In order to achieve consistency across our configuration files, we plan for the February release to no longer automatically convert certain paths from relative to absolute in launch.json. We recommend that for the program, cwd, outDir, and runtimeExecutable attributes, you prefix your relative paths with the ${workspaceRoot} variable as soon as possible. To make it easier for you to find the affected paths that need this treatment, we highlight them with a green squigglies for the January release. (Please note: since we continue to automatically convert paths for the January release, your launch configurations will continue to work).
  • "--nolazy" option not automatically added:
  • In order to make sure that breakpoints are hit reliably, VS Code automatically added the --nolazy option when launching Node.js. With the advent of Node.js alternatives that do not support this option (e.g. Chakra), we've removed this automatic behavior. If you see that breakpoints are not hit reliably in Node.js applications, please verify that your launch configuration sets the --nolazy option explicitly via the runtimeArgs attribute.
  • Mono debugging:
  • Support for VS Code Debug Console:
  • For VS Code Mono debugging support, we've added an externalConsole attribute, which controls whether the Mono target application is launched in an external console or in the built-in Debug Console (the default). Please note that the built-in Debug Console does not support keyboard input for your application.
  • Extension Authoring:
  • API Consumption:
  • When you write an extension for VS Code, you are developing it against a set of APIs that we define through a file called vscode.d.ts. You can see this file in our repository here. This file is picked up from our TypeScript and JavaScript language service to provide you with rich validation and IntelliSense while you develop your extension.
  • As we make changes to the VS Code API between versions, vscode.d.ts changes and is updated and tagged from release to release. Previously, we stored the vscode.d.ts file within the vscode npm module that all extensions automatically depend on. So to update to our latest API, you would just install a newer version of the vscode npm module in your extension by typing npm update vscode.
  • We found that this approach has many issues:
  • The vscode npm module needs to be updated and versioned independent from VS Code versions because it contains API unrelated code (e.g. for test running)
  • The engine field of the package.json in your extension should be the only place that drives the decision which API to develop against.
  • To solve these issues, we made the following changes:
  • The vscode.d.ts is no longer shipping within the vscode npm module.
  • The value of the engine field in your extension is used to determine which version of vscode.d.ts to use.
  • It is still very easy to update to a newer API via basic npm commands.
  • Since this is a breaking change for existing extensions, we increased the vscode npm module version to 0.11.0. We encourage all extension writers to update their devDependency to vscode in their package.json to this new version (^0.11.x) to benefit from future updates to tooling for extensions.
  • The process of installing a specific version of the API into your extension is still very simple:
  • Set the minimal version of VS Code that your extension requires in the engine field of the package.json. For example, when you want to upgrade to the 0.10.8 version of the VS Code API then define
  • "engines": {
  • "vscode": "^0.10.7"
  • Make sure your devDependency for the vscode module is at least 0.11.0.
  • Add a postinstall script to your package.json like this:
  • "scripts": {
  • "postinstall": "node ./node_modules/vscode/bin/install"
  • Type npm install from the root of your extension.
  • The vscode module will download the appropriate version of vscode.d.ts based on the version in engines field you declared in the package.json.
  • Go back to VS Code and see how the API for the specific version you chose appears in IntelliSense and validation.
  • Extension API additions:
  • We added a few new APIs to enable writing even more awesome extensions.
  • Quick Pick and Input:
  • You can now validate user input, get called when an item is focused in Quick Pick, and Quick Pick now has room for additional details. Also Quick Pick now supports GitHub Octicons like the Status Bar.
  • Virtual Documents:
  • We have introduced the concept of virtual documents. These are textual documents that don't have a representation on disk, but are generated at runtime. For example, HTML generated from Markdown or source code from debug symbols.
  • Combine virtual documents with the new vscode.previewHtml command and you can come up with some creative experiences.
  • New Extension APIs:
  • There is now support for glob-patterns when associating files with a language.
  • You can determine the current editor ViewColumn.
  • There is a new MarkedString to display Markdown content in various UI elements.
  • Debug Protocol Changes:
  • We have changed the debug protocol in the following (backward compatible) ways:
  • Feature negotiation: the response of the InitializeRequest now returns information about the capabilities of the debug adapter. The VS Code debugger uses this information to enable or configure features which only exist for certain debug adapters.
  • New request ConfigurationDoneRequest: VS Code sends this request to indicate that the configuration (e.g. registering stored breakpoints and exception options) of the debug session has finished and that debugging is about to start. For backward compatibility, VS Code will send this request only if the debug adapter returns a value of true for the supportsConfigurationDoneRequest capability.
  • Additional attributes for Source type:
  • an optional origin attribute to provide additional information about the source in the debug UI.
  • an optional adapterData attribute that the VS Code debug UI will transparently persist for breakpoints.
  • New type SourceBreakpoint: an array of SourceBreakpoint is an alternate means to specify the individual breakpoints for the SetBreakpointsRequest. The SourceBreakpoint allows for specifying column and condition information for a breakpoint (in addition to the line).
  • Test Suite for Debug Adapters:
  • With the January release, we've started to simplify the process of writing automated tests for a debug adapter. The basic idea is to provide a toolkit with Promise-based building blocks for individual protocol requests (e.g. stepInRequest) and for common request sequences (e.g. hitBreakpoint). These building blocks can be easily configured for a specific adapter and combined to form complex scenarios.
  • Here are three example Mocha tests:
  • var dc: DebugClient = ...;
  • test('should run program to the end', () => {
  • return Promise.all([
  • dc.configurationSequence(),
  • dc.launch({ program: "main.js" }),
  • dc.waitForEvent('terminated')
  • ]);
  • });
  • test('should stop on entry', () => {
  • return Promise.all([
  • dc.configurationSequence(),
  • dc.launch({ program: "main.js", stopOnEntry: true }),
  • dc.assertStoppedLocation('entry', 1)
  • ]);
  • });
  • test('should set a breakpoint and stop on it', () => {
  • return dc.hitBreakpoint({ program: "main.js" }, "test.js", 15);
  • });
  • More examples can be found in these debug adapter projects on GitHub:
  • Microsoft/vscode-node-debug
  • Microsoft/vscode-mock-debug
  • Microsoft/vscode-mono-debug
  • You can see the Promise-based API in DebugClient.ts and an initial set of tests in adapter.test.ts. We plan to make this API available as an npm module in February.
  • JSON mode is now an extension:
  • From a user's perspective, nothing has really changed when editing JSON, but under the hood, the JSON language support has been refactored. JSON language support drives the smartness when editing JSON files, from validation based on schemes to code completion and formatting. JSON is now a regular extension, using the same VS Code extension APIs as everyone else. The implementation is based on the language server infrastructure, which makes it easy to run in a separate process. Read here for more on the language server.
  • Notable Bug Fixes:
  • 69: Proxy support for extension gallery
  • 1032: Please don't lock the tsconfig.json file
  • 1485: Windows 7: Deleting always fails with error message
  • 1687: VSC 10.6 does not allow to attach debugger to running Electron app
  • 1923: IntelliSense filtering has become slow again in huge lists
  • 1962: Debugger fails when offline

New in Visual Studio Code 0.10.5 (Dec 19, 2015)

  • Editor - Find/Replace improvements:
  • In regex mode:
  • Can now search for ^, $ or ^$ thanks to a community contribution.
  • Can now replace with \n or \t.
  • Keyboard shortcuts:
  • New Find settings commands: toggle case-sensitive (Alt+C), toggle regex (Alt+R) and toggle whole word (Alt+W)
  • Ctrl+F puts focus in the Find input field.
  • Ctrl+H puts focus in the Replace input field.
  • When focus is in the Find widget input fields, Ctrl+Down put focus in the editor.
  • Changed defaults and key bindings:
  • Changed the defaults for editor.insertSpaces to true and editor.tabSize to 4. To get the previous behavior, you can change both settings back to "auto"
  • Changed the default key bindings on Linux for Insert Cursor Below (Ctrl+Alt+Down), Insert Cursor Above (Ctrl+Alt+Up), Move Line Down (Alt+Down) and Move Line Up (Alt+Up)
  • Editor - Cursor Blinking Options:
  • New setting to configure cursor blinking: editor.cursorBlinking with values blink, visible and hidden thanks to community contribution.
  • Editor - Select Current Line Command:
  • New select current line command (Ctrl+I) thanks to a community contribution.
  • Editor - Scroll Viewport Commands:
  • Thanks to a community contribution, VS Code has improved editor scroll support:
  • Scroll by one line up (Ctrl+Up) / down (Ctrl+Down)
  • Scroll by one page up (Ctrl+PageUp) / down (Ctrl+PageDown)
  • Key Bindings for Numeric Keypad:
  • Added support for function keys f13-f19 and for the numeric keypad keys:
  • numpad0-numpad9
  • numpad_multiply
  • numpad_add
  • numpad_separator
  • numpad_subtract
  • numpad_decimal
  • numpad_divide
  • Improvements for non US standard keyboard layouts:
  • VS Code dispatches key bindings based on [keyboard codes](https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85). In keybindings.json and in all the UI, we used to render the key codes with the produced characters under the US standard keyboard layout. We received feedback that this was very confusing, therefore, we created a new Node.js module native-keymap that is used in VS Code to render the key bindings using the system's current keyboard layout. For example, Split Editor when using a French (France) keyboard layout is now rendered as Ctrl+*.
  • When editing keybindings.json, we now highlight misleading key bindings - those that are represented in the file with the character produced under the standard US keyboard layout, but which need pressing keys with different labels under the current system's keyboard layout.
  • Finally, we added a new widget that helps input the key binding rule when editing keybindings.json. To launch the Define Keybinding widget, press Ctrl+K Ctrl+K. The widget listens for key presses and renders the serialized JSON representation in the text box and below it, the keys that VS Code has detected under your current keyboard layout. Once you've typed the key combination you want you can press Enter and a rule snippet will be inserted.
  • key binding widget.
  • ES6 is the new default:
  • We have made ES6 the default for JavaScript files. This means you don't need to create jsconfig.json files to enable new syntax and by default you get suggestions for ES6-types, like Promise, Set, Map, String.startsWith and much more. Thanks to a community contribution.
  • At the same time, the grammar used to colorize JavaScript was also updated to support the ES6 syntax.
  • TypeScript Update:
  • The TypeScript language service was updated to version 1.7.5
  • JSX Support:
  • To improve the JavaScript and JSX support, the plan is to adopt Salsa. There is good progress on the Salsa project, but until VS Code has switched over to Salsa, we can only offer a workaround for using VS Code with JSX.
  • Install the vscode-eslint extension and configure JSX support. This will provide you with validation in JSX files
  • If you are using React constructs inside .js files then you can install the js-is-jsx extension which changes the file mapping so that .js files are treated as .jsx files. Be aware that if you install this extension, you lose the existing language support for .js files.
  • The grammars used to colorize JS and JSX are now aligned.
  • Extension Debugging:
  • We improved extension debugging when connecting the debugger to the extension. The debugger will no longer try to reconnect to the extension when you close the 'Extension Host`. In addition, the debugger will connect faster to your extension.
  • Extensions Show Outdated Extensions:
  • Thanks to a community contribution, there is now a Show Outdated Extensions command, that shows all outdated extensions and lets you quickly install their updates.
  • Installed Extension Issues:
  • If VS Code identifies an issue with an installed extension, it will display an issues prompt on the Status Bar. Click on the issues prompt to see the extension issue details and have the option to uninstall the extension.
  • Extension Gallery:
  • There is now proxy support for the extension gallery
  • Extension Deactivation:
  • If an extension exports a function named deactivate(), VS Code now calls it on shutdown
  • File Picker improvements and fuzzy search:
  • The file picker ("Quick Open") is now able to search on file paths when you include slash (Mac/Linux) or backslash (Windows) in the search term. This allows you to list all the files of a directory easily.
  • A new setting filePicker.alternateFileNameMatching enables fuzzy searching for the file picker. Once enabled, the search term will match on the full path of the file by default, without having to include path separators in the query. In addition, a search term will match in a more fuzzy way on the path compared to the default. For example, a search for fb will match a file foobar because the filename contains f and b. We also added a new sorter for the picker when fuzzy searching is enabled which tries to put the most relevant results to the top. Please try out this feature and give us feedback so that we can tune the experience.
  • Persisted Zoom Level:
  • A new setting window.zoomLevel allows you to change and persist the zoom level of the window. The default value is 0 and each increment increases the zoom level by 20% similar to the effect of the View menu Zoom in command. Unlike the zoom level set with the Zoom in and Zoom out commands, the window.zoomLevel is a setting persisted across VS Code sessions
  • window.openFileInNewWindow:
  • The setting window.openInNewWindow was renamed to window.openFilesInNewWindow to clarify its purpose. You can still use the old setting but we ask you to update to the new name
  • Themes:
  • Various fixes to the default light and dark theme. Due to the move to TextMate tokenizers in the last release, there were changes in the appearance of the default light and dark theme. Some themes got far more colorful, in particular JavaScript, while other languages lost colors, e.g. Jade and XML. The goal was to stay as close as possible to what we had in the 0.9.0 release so we use a few major colors: blue for keywords, green for comments and red for strings.
  • Emmet:
  • Emmet is now supported in JSX and TSX files.
  • Scoped Git Services:
  • It is now possible to open a sub-directory of a Git repository in VS Code. VS Code's Git services will still work as usual, showing all changes within the repository, but file changes outside of the scoped directory are shaded and have a tool tip indicating the file is located outside the current workspace.
  • Git Status Bar Actions:
  • There is now a Synchronize action in the Status Bar, next to the branch indicator, when the current checked out branch has an upstream branch configured.
  • If there is no upstream branch configured and the Git repository has remotes set up, a new Publish action is enabled. This will let you publish the current branch to remote.
  • Debug Console Wraps Text:
  • We now wrap long text in the debug console
  • Debug Breakpoints Polish:
  • We now show breakpoints in a more intuitive way:
  • A red filled circle represents an active breakpoint.
  • A gray filled circle represents a disabled breakpoint.
  • A gray hollow circle represents a breakpoint which could not be successfully registered with the debugger. For languages that are transpiled to JavaScript, this could mean that source maps are missing or invalid.
  • JSON Schema Contributions:
  • Extensions can now contribute JSON schema associations. The jsonValidation contribution point takes a file pattern and the URL of the JSON schema. Alternatively, extensions can also give the path to a schema file in the extension folder.
  • Language Server Extensions:
  • The language server protocol now supports all available language features. Please see the Language Server example for details on how to implement a language server.
  • Debug Adapter Development:
  • For Node.js based debug adapter development, we've made the VS Code Debug Protocol and an adapter default implementation available as npm modules: vscode-debugprotocol, vscode-debugadapter. The source for these modules lives in the GitHub repository vscode-debugadapter-node. Both mock-debug and node-debug have been updated to use the npm modules.
  • Engineering:
  • he VS Code GitHub repository supports continued integration for branches and pull requests - AppVeyor. During this first iteration of VS Code being open source, we tuned and documented more of our development workflows. We updated Electron to version 0.34.5. This includes a bug fix for the issue on Linux where the editor font was showing blurry on certain high DPI displays.
  • Notable Bug Fixes:
  • Submitted pull request to atom/node-oniguruma in order to improve performance when colorizing long lines with multi-byte characters.

New in Visual Studio Code 0.10.3 (Dec 2, 2015)

  • The 0.10.3 release includes a fix for a severe startup performance regression introduced in v0.10.1.

New in Visual Studio Code 0.10.2 (Nov 28, 2015)

  • includes some critical fixes for the Beta release that have been reported by the community

New in Visual Studio Code 0.10.1 (Nov 18, 2015)

  • VS Code Supports Extensions
  • Extension Gallery
  • Extension samples
  • VS Code is Open Source
  • Add TextMate Snippets
  • Improved Syntax Highlighting
  • Environment Variable Substitution
  • New Difference View Settings
  • Language:
  • PHP
  • Extensibility SDK:
  • Yo Code Extension Scaffolding
  • Extension Publishing
  • Languages:
  • Workspace relative TypeScript version
  • Debugging:
  • Debug Console Improvements
  • Easy Variable Selection
  • Debug environment configuration
  • Hover
  • Node.js

New in Visual Studio Code 0.9.2 (Oct 27, 2015)

  • Persistent (update to update) location for Customizations:
  • Previously we did not have a location we respected across updates. It's true that we did have a location for user settings but as we get closer to our final update story we added a new location. In the future, we will (gracefully) move all user settings here. The new location is .vscode/extensions under your user directory. As this location is under your user directory, the content is persisted across VS Code updates. This is just the start and we plan to use this location more in future updates.
  • Yo Code - Streamlined Customizations for VS Code:
  • We re-purposed the Yeoman generator we used for the VS Code Node.js sample generator-code and we are now using this to make creating common customizations easier.
  • Customization - Adding Language Colorization & Bracket Matching:
  • Using the 'code' Yeoman generator you can add TextMate language specification files (.tmLanguage) to your VS Code installation to get syntax highlighting and bracket matching
  • A good place to look for existing TextMate .tmLanguage files is on GitHub. Search for a TextMate bundle for the language you are interested in and then navigate to the Syntaxes folder. The 'code' Yeoman generator can handle either .tmLanguage or .plist files. When prompted for the URL or file location, pass the raw path to the .tmLanguage file.
  • The generator will prompt you for other information such a unique name (this should be unique to avoid clashing with other customizations) and the language name, aliases and file extensions.
  • When the generator is finished, copy the complete output folder to a new folder under .vscode/extensions. When you restart VS Code, your new language will be visible in the language specifier dropdown and you'll get full colorization and bracket/tag matching for files matching the language's file extension.
  • Customization - Adding Themes:
  • You can also add new TextMate theme files (.tmTheme) to your VS Code installation.
  • ColorSublime has hundreds of existing TextMate themes to choose from. Pick a theme you like and copy the Download link to use in the Yeoman generator. The 'code' generator will prompt you for the URL or file location of the .tmTheme file, the theme name as well as other information for the theme.
  • Copy the generated theme folder to a new folder under .vscode/extensions and restart VS Code.
  • Open the Color Theme picker theme with File | Preferences | Color Theme and you can see your theme in the dropdown. Arrow up and down to see a live preview of your theme. While building this, the VS Code team contributed a Pull Request to node-oniguruma that results in a nice performance improvement when colorizing/tokenizing. Both the Atom and VS Code IDEs profit from this improvement.
  • Debugging - Performance:
  • We improved stepping performance by loading the scopes and variables of stack frames lazily. This improvement is based on a protocol change that affects all debug adapters.
  • Debugging - Pre-Launch Task:
  • In a project's launch configurations (launch.json), you can now use the preLaunchTask attribute to specify a task to run before a debug session starts.
  • For example, with this option you could make sure that your project is built before it is launched in the debugger. If the task results in errors, an error message warns you and you can decide to either fix the errors or continue launching the debugger.
  • Debugging - Debug Console:
  • We have made many improvements to the Debug Console:
  • Text selection is now supported
  • Better colors for improved visibility
  • Richer context menus
  • Expansion of elements is preserved between sessions
  • Languages - C#:
  • The status of the OmniSharp server is now using a new language status indicator in the lower right corner. This makes it much easier to see the context OmniSharp is running under and any issues.
  • Languages - TypeScript:
  • We now ship with TypeScript 1.6.2. You can learn more about the latest release of TypeScript at Announcing TypeScript 1.6.
  • We simplified defining a task to run the TypeScript compiler in watch mode.
  • Languages - Markdown Preview:
  • Markdown preview was improved so that embedded code stands out more clearly and the overall font sizes and spacing were optimized. In addition there is a new action to quickly open the Markdown preview to the side (Markdown: Open Preview to the Side).
  • Runtimes - Unity:
  • We've added colorization for Unity shader files.
  • Files - New Settings:
  • We added two new configuration options to control how files open and folders reopen between sessions.
  • The window.openInNewWindow setting controls if files should open in a new window instead of reusing an existing VS Code instance. By default, VS Code will open a new window, e.g. when you double-click on a file outside VS Code or open a file from the command line. Set this to false to reuse the last active instance of VS Code and open files in there.
  • The window.reopenFolders setting tells VS Code how to restore the opened windows of your previous session. By default, VS Code will reopen the last opened folder you worked on (setting: one). Change this setting to none to never reopen any folders and always start with an empty VS Code instance. Change it to all to restore all folders you worked on. This will reopen all the windows with folders of your previous session.
  • Notable Bug Fixes:
  • 18998: newly added files not honored by tsconfig.json
  • 18692: Changes to tsconfig.json not updated immediately
  • 19239: Detaching from Unity Results in a Unity Crash
  • JSON schemas support external references.
  • The CSS tooling now supports CSS3 identifier escaping.
  • Node.js Debugger: In 0.9.0, we focused on fixing the problems that resulted from the introduction of a new implementation of the Node.js debugger in VS Code 0.8.0. You should no longer see empty CALL STACK, VARIABLES and WATCH views.

New in Visual Studio Code 0.8.0 (Sep 10, 2015)

  • New Windows Setup- new installation and update framework for Windows based on Inno Setup. This fixes many Windows integration issues and streamlines the update story.
  • Renamed VS Code Settings Folder - renamed the top level .settings folder to .vscode to make it clear that this folder contains VS Code specific configurations and to avoid conflicts with other IDEs who may also use a folder named .settings (e.g. Eclipse).
  • When you update to version 0.8.0, VS Code will rename the folder to the new name and inform you if you had any files in a .settings folder.
  • Additional Themes - VS Code is now able to apply TextMate syntax color themes (.tmTheme). Open the Color Theme picker with File | Preferences | Color Theme and use the up and down keys to change the selection and preview the themes.
  • Debugging - No Mono Dependancy for Node - ported the implementation of the Node.js debugging support from C#/Mono to TypeScript/Node.js, eliminating our Mono dependency for debugging Node applications on OSX and Linux.
  • Debugging - Debug Console
  • Languages - JavaScript Linting as you Type - VS Code now provides support for ESlint and JSHint. If enabled the Javascipt code is validated as you type and reported problems can be navigated to and fixed inside VS Code.
  • Languages - TypeScript 1.6 Support
  • Languages - TSX - support for colorizing TSX (TypeScript JSX) files.
  • Languages - JSX Colorization
  • Languages - C# on Omnisharp 1.1.1
  • Git - Undo Last Commit - there is a new Undo Last Commit action which will let you undo your previous commit, keeping the changes in the working folder.
  • Tasks - echoCommand Property - if set to true, the executed command is echoed to the task's output view.
  • Notable bug fixes:
  • C# IntelliSense suggestions only come up after error checking, making them slow over time
  • Cannot control installation location
  • Duplicate icon on Windows 10
  • Cannot open a file with spaces in its name from command line

New in Visual Studio Code 0.7.10 (Aug 18, 2015)

  • FIXED: There is an issue with the 0.7.0 setup on Windows where VS Code will not properly load if you have non-ASCII characters in your installation path, normally your user name. This issue has been resolved in 0.7.10 for Windows.

New in Visual Studio Code 0.7.0 (Aug 13, 2015)

  • IMPROVED DOCUMENTATION:
  • With this release we updated almost all of our documentation to help you get more out of VS Code
  • We broke down the content into four sections
  • Overview - A quick summary of all the documentation including a video overview
  • Editor - An introduction to VS Code itself from editing all the way to debugging and tasks
  • Languages - Walkthroughs on how to get the best out of VS Code when using specific languages e.g. JavaScript
  • Runtimes - Walkthoughs on how to use VS Code with specific runtimes e.g. Node.js
  • Editor Settings and Configuration:
  • Since VS Code was released there have been a large number of questions around how to configure and customize the product. In part this was due to the fact we had not adequately listed out the available options in our documentation. To help address this we've included the contents of the settings.json file in the Customization topic and separated out key bindings into their own topic area
  • DEBUGGING:
  • node.js: Large data structure improvements:
  • In previous versions of VS Code, debugging would stall (and timeout) when stepping through code that used large Arrays or Buffers. In this version the VS Code debugger treats large data structures (Arrays and Buffers) in a more scalable way and should no longer timeout. The same should be true for drilling into large data structures in the variables or watches view section.
  • As a consequence, the debugger now renders the contents of Arrays and Buffers in chunks.
  • node.js: Stable breakpoints:
  • For performance reasons node.js parses the functions inside JavaScript files lazily on first access. As a consequence, breakpoints don't work in source code that hasn't been seen (parsed) by node.js.
  • Since this behavior is not ideal for debugging, VS Code now passes the --nolazy option to node.js automatically. This prevents the delayed parsing and ensures that breakpoints can be validated before running the code (so they should no longer 'jump').
  • Variable suppport in launch.json:
  • VS Code now supports variables in the launch.json file in the same way as in tasks.json (see Tasks).
  • Run to cursor:
  • You can now run up to the cursor location with a new action included in the context menu.
  • TASKS:
  • We did a significant review of the Tasks documentation with this update and have included several examples of using tasks.
  • We also now support automatic detection of tasks in a gruntfile. This works the same as our support for the Gulp and Jake task runners (see Tasks).
  • MARKDOWN:
  • We added a full overview of how to use VS Code with Markdown files. We now show you how to:
  • leverage built-in snippets
  • configure preview with custom CSS
  • use autosave for live updates
  • use tasks to compile to HTML
  • JAVASCRIPT:
  • In our JavaScript documentation we've added topics covering:
  • JavaScript projects with jsconfig.json
  • ES6 support
  • Configuring linters such as JSHint and ESHint
  • Rich Editing Support
  • IntelliSense
  • We also updated the quick fix code action. Add /// reference for typing file was renamed because /// references are no longer needed to get IntelliSense from .d.ts files. The action is now called Download type definition for some typing file and it downloads the .d.ts file only.
  • We added the ability to exclude files and folders from a project via the addition of an exclude property in the jsconfig.json. This is useful when you want to exclude folders with generated JavaScript code.
  • Finally, one key bug we fixed in this update was unlocking the ability to work with Ember.js/ES6/AMD projects - previously VS Code would crash with these large projects.
  • HMTL:
  • We improved our HTML formatter in this release and updated the HTML documentation.
  • JSON:
  • We improved the JSON formatter, specifically formatting with comments and formatting ranges. In the JSON documentation we now include examples of:
  • Working with JSON comments
  • Intellisense and Schema validation
  • Quick navigation
  • Hovers and Toggle Values
  • Configuring JSON Schemas
  • CSS, LESS AND SASS:
  • We updated our CSS, Less and Sass documentation to provide examples of how to work with CSS in VS Code. This includes sections on:
  • CSS Intellisense
  • Emmet Snippet support
  • Syntax highlighting and Color preview
  • Goto symbol & Hover support
  • Goto declaration & Find references
  • Using tasks to transpile Sass and Less into CSS
  • Customizing CSS settings
  • PHP:
  • We added a set of common snippets for PHP. To access these hit Ctrl+Space to get a context specific list.
  • C#:
  • We have moved to the latest OmniSharp version 1.1.0. We also added in early support for quick fixes (aka. lightbulbs) via Roslyn and NRefactory. Quick fixes are automatically computed when you put the cursor onto a marker; they can also be requested by pressing kb('editor.action.quickFix').
  • DOCKERFILE:
  • We added a new document that covers our Docker Support. Our Docker support includes:
  • Dockerfile - Hovering over instructions
  • Docker-compose.yml - Hovering over keys and images, rule completion, image name completion
  • SWIFT:
  • We added syntax coloring and a set of common snippets.
  • GROOVY:
  • We added syntax coloring and a set of common snippets.
  • NOTABLE BUG FIXES:
  • 17915: VS Code crashes with large emberjs/es6/amd project
  • 17427: Git cannot be found if installed into a non-default location
  • 17947: Open with encoding Windows 866 doesn't work
  • 18094: Wrong "duplicate identifier" error in node files when using "exports"*

New in Visual Studio Code 0.5.0 (Jul 13, 2015)

  • Files:
  • New command line options: -r and -g - forces opening a file or folder in the last active window. This is useful in cases where you want to quickly send a file from the command line into your workspace, without having to manage new windows each time
  • The -g (or --goto) command line option lets you open files at a specific line and column number. This is useful if you're using another tool in your workflow and want VS Code to open an exact position within a file.
  • Additional command line changes:
  • When you pass multiple file paths to VS Code, they will all open in the same instance now. If some of the paths point to files that don't exist, VS Code will open new files as dirty.
  • When you pass in command line arguments for the path to a folder, and also a file name, VS Code will open both the folder and file in a single VS Code instance. Previously we would open two (or more) VS Code instances. The usage case is that you want to open a specific file in a folder while still opening the folder in the side bar.
  • Note that you can use absolute paths or relative paths for the folder argument and the file argument. If you use a relative path for the file argument, it is relative to where you start VS Code (not relative to the folder argument).
  • You can now open files and folders by dropping them to VS Code, even if it is not yet running. In addition, when you drop multiple files on the dock while VS Code is already running, VS Code will not start separate instances for each, but instead will try to open them in one instance.
  • Editor options
  • Added more configuration options for files, explorer and search. Access them from File | Preferences.
  • Patterns syntax:
  • To support several of the new Search and Editor options, we've introduced a lightweight pattern matcher. With a simplified set of patterns we support for specifying match patterns, you can use:
  • * to match one or more characters in a path segment
  • ? to match on one character in a path segment
  • ** to match any number of path segments ,including none
  • {} to group conditions (e.g. {**/*.html,**/*.txt} matches all html and txt files)
  • [] to declare a range of characters to match (e.g., example.[0-9] to match on example.0, example.1, …
  • Automatically trim trailing whitespace:
  • Added the files.trimTrailingWhitespace setting that allows you to trim trailing whitespace whenever you save.
  • Configure the size and behavior of Working Files
  • Two new settings:
  • The explorer.workingFiles.maxVisible setting allows you to configure the number of visible working files before a scrollbar appears (the default is 9).
  • The explorer.workingFiles.dynamicHeight setting lets you configure whether working files should dynamically adjust its height based on the number of elements inside. Set this to false if you don’t want the explorer jumping down when you add new working files. The default is true.
  • Hiding files and folders:
  • The files.exclude setting lets you define patterns to hide files and folders from several places in VS Code like the explorer and search. Once defined, files and folders matching any of the patterns will be hidden.
  • Hide derived resources:
  • If you use a language that compiles to another file at the same location of the source file, like TypeScript does to JavaScript, you often don’t want to see the files in the explorer or include them in search results. With the new filtering capabilities, you can easily set an expression to hide those derived files:
  • "**/*.js": { "when": "$(basename).ts"}
  • Such a pattern will match on any JavaScript file (**/*.js), but only if a sibling file with the same name and extension, *.ts in this example, is present. The result being Explorer will no longer show derived resources for JavaScript if they are compiled to the same location. All you have to do is configure this in the files.exclude setting. While we've used JavaScript for this example, the same technique can be used for other transpiled languages, like Coffee Script or Less/Sass, too.
  • Here's an example of how JavaScript files are hidden using the "**/*.js": { "when": "$(basename).ts"} expression.
  • Exclude files and folders from search:
  • The search.exclude setting lets you configure additional files and folders to exclude from full text searches and from quick open, besides the file.exclude setting. This uses the patterns syntax (discussed below).
  • Search leveraging patterns:
  • To let you define powerful patterns for includes and excludes when you run searches, we added glob pattern support to the search box too. You can enable glob pattern search by clicking on the little icon in the include and exclude box.
  • Once you click on the pattern icon, you have access to the pattern reference.
  • Search patterns:
  • Note: You can still use wildcards without enabling glob pattern support. Things like *.js to search in all JavaScript files still work. Once you enable glob pattern syntax, keep in mind that you need to use **/*.js to search across all directories of your project!
  • Breaking Changes:
  • A change like this comes with a few breaking changes: We deprecated some advanced configuration settings: validate.scope, validate.baseUrl, validate.target, validate.module, validate.noLib. We're providing support for jsconfig.json to offset these settings no longer being supported.
  • Support for ES6:
  • A popular request since our launch has been support for ES6 (ECMAScript 6, the latest update of JavaScript targeting ratification in June 2015). You can expect VS Code to understand the new ES6 syntax elements and their semantics.
  • Projects - jsconfig.json
  • You can create a JavaScript project by dropping in a jsconfig.json file. It's a subset of tsconfig.json, and it allows you to define what files are part of a project, and what compiler options to use. Same as in tsconfig.json if no "files" property is present in a jsconfig.json, we default to including all files in the containing directory and subdirectories. When a "files" property is specified, only those files are included.
  • This means you don’t need to use /// references anymore. As the project defines the file set, VS Code just knows what files and symbols are part of your project. As an example, you can just drop a new .d.ts file into your project folder and VS Code will pick it up automatically.
  • Shebang coloring:
  • We improved colorization for shebang #!, as shown in the first line here:
  • Snippets:
  • VS Code launched with snippet support, and we've added some notable enhancements in this release.
  • User-defined snippets:
  • To add your own code snippets, use the newly added User Snippet action available by File | Preferences. This action opens a language selection dialog. Selecting a language will open the snippets for the file language. Enter your snippets directly in the editor.
  • We have also added some more snippets out of the box for Dockerfiles, Python, and Rust.
  • Git
  • We updated our Git support by delivering several of the most requested features.
  • redential prompt
  • Many users have reported that the Git tools can be non-responsive. This is typically a result of the Git action being blocked by an authentication prompt. With this update, when Git requires credentials you will see a pop-up, prompting you to enter the required credentials.
  • Credential prompt
  • Tip: If you don’t want to always enter your credentials, consider using a credential helper.
  • Multi-line commit
  • Previously, commit messages in VS Code supported only a single line of text. We now support multiple lines of text in your commit message. (Type Ctrl+Enter to finish the commit message, or Enter to add a new line to the message.)
  • Multiline commit message
  • Multiple file selection
  • Multiple selection is now enabled in the git viewlet, meaning you can stage/unstage or commit multiple files at the same time.
  • Select multiple files
  • Auto fetch control
  • There is now an action to enable/disable git auto fetch in the dropdown menu of the git viewlet. This is handy if you don’t have a credential helper and don’t want to get prompted for authentication all the time.
  • Debugging
  • Debugging is core to the workflow enabled by VS Code, and with this release we support several additional scenarios.
  • Improved launch.json generation
  • We are now consulting package.json for a main attribute when generating launch.json. The result is the generated launch.json is more precise.
  • Watch expressions
  • We added a new debug pane for watch expressions.
  • Watch expressions
  • Ability to edit during debug:
  • The workbench is no longer in read-only mode when debugging. However, VS Code does not yet support 'hot code replacement', so edited code is not automatically picked up by the debugger but a new 'Restart Session' action helps to improve the experience.
  • Improved Node breakpoint handling:
  • Node does not parse source files completely on load, rather it delays parsing of closures (e.g. callbacks) until their code is first hit. As a consequence, breakpoints set on callbacks are sometimes not registered for the line requested but instead register for the next possible line in already-parsed code. To avoid confusion, we now show breakpoints at the location where node thinks the breakpoint is. In the breakpoint view, these breakpoints are shown with this notation:
  • Activate / deactivate breakpoints
  • You can now toggle the active breakpoints.
  • Toggle active breakpoints
  • JavaScript source maps
  • If generated (transpiled) JavaScript files do not live next to their source, you can help the VS Code debugger locate them by specifying the outDir directory in the launch configuration. Whenever you set a breakpoint in the original source, VS Code tries to find the generated source, and the associated source map, in the outDir directory.
  • In-lined source maps (a source map where the content is stored as a data url instead of a separate file) are now supported, although in-lined source is not yet supported.
  • Minified debugging
  • Debugging minified/uglified JavaScript is now supported.
  • Other stuff
  • Output toggling
  • A new action was added that allows to toggle the output window. When output is not showing, it will just show output. But when output is showing, it will restore the previous editor you'd been using. This allows to quickly check the output and then quickly return to the work you did before. The action replaces the previous "Show Output" action, so by default the keybinding for output toggling is Ctrl+Shift+U (Cmd+Shift+U on Mac).
  • Auto-update enabled for OS X and Windows
  • With this update, future updates will be automatic for OS X and Windows users. If you want to opt out of auto-updates, see instructions here.
  • Proxy Support
  • Http requests for package/project/bower.json IntelliSense as well as fetching schemas and for Send-a-Smile now can go through a proxy server.
  • To configure a proxy either:
  • Set the http_proxy and the https_proxy environment variables before starting VS Code.
  • Set the http.proxy user setting.
  • Note: VS Code supports http and https proxies, but not SOCKS proxies.
  • Notable Bug Fixes
  • 16480: Git push/pull not working
  • 16782: Fonts Are Blurry
  • 17223: SourceMap debugging doesn't work with inlined source map
  • 17079: OS X Poor Scrolling in Explore Sidebar

New in Visual Studio Code 0.3.0 (Jul 13, 2015)

  • Keybindings
  • The native File Open dialog has been restored to Ctrl+O.
  • The Code File Open dialog is now accessible via Ctrl+P.
  • Go To Definition is now F12 (formerly Ctrl+F12 on Windows). Visual Studio users suggested to align Go To Definition with Visual Studio. This wasn’t an option in the past when the VS Code editor was running inside the browser, since F12 was opening the developer tools.
  • Cmd+Up and Cmd+Down now work as expected on the Mac by jumping to the beginning and end of the file.
  • Format code is now Shift+Alt+F
  • Command line args:
  • You can now create a new file from the command line. For a file that doesn't exist yet, append the file path to create it. VS Code will open it as a dirty (modified but not yet saved) file in the editor.
  • code mynewfile.js:
  • You can open multiple folders and/or files from the command line. Just append multiple folder and/or file paths to open multiple sessions of VS Code.
  • code c:\myfolder1 c:\myfolder2 c:\myapp\program.cs
  • You can also open a new session instead of restoring the previous session. Use a new switch, -n or --new-window, if you want to start VS Code without restoring the previous session.
  • Multi-cursor improvements:
  • Ctrl+D selects the word at the cursor, or the next occurrence of the current selection.
  • Ctrl+K Ctrl+D moves the last added cursor to next occurrence of the current selection.
  • The two actions pick up the matchCase and matchWholeWord settings of the find widget.
  • Ctrl+U undoes the last cursor action, so if you added one cursor too many or made a mistake, press Ctrl+U to return to the previous cursor state.
  • Insert cursor above (Ctrl+Alt+Up) and insert cursor below (Ctrl+Alt+Down) now reveals the last added cursor, making it easier to work with multi-cursors spanning more than one screen height (i.e., working with 300 lines while only 80 fit in the screen).
  • Added:
  • Ctrl+K Ctrl+C now forces adding line comments.
  • Ctrl+K Ctrl+U now forces uncommenting lines. (If multiple lines are selected, and not all of them have a line comment, the line comments will still be removed).
  • Ctrl+/ toggles line comment as before, but now inserts the line comment tokens aligned with the indentation of the selected code. It also will leave empty or whitespace-only lines untouched. Ctrl+/ is also more forgiving with regards to selection state when toggling comments in languages which only support block comments, such as CSS or HTML.
  • Toggle block comment (Shift+Alt+A) is also more forgiving related to selection state when toggling block comments.
  • Pressing Tab on an empty line will indent as much as needed to place the cursor at the correct starting position (i.e., not just insert a single indentation).
  • Shrink/expand selection
  • Quickly shrink or expand the current selection (applies to all languages). Trigger it with Shift+Alt+Left and Shift+Alt+Right
  • To improve readability, you can now control how long lines are wrapped and indented with a new setting, editor.wrappingIndent, in settings.json. The following values are available for editor.wrappingIndent:
  • none: When a line wraps, subsequent lines start at column 1.
  • WrappingIndent set to none
  • When a line wraps, subsequent lines start at the same column used by the original line.
  • WrappingIndent set to none
  • indent: When a line wraps, subsequent lines are indented once relative to the original line.
  • WrappingIndent set to indent
  • Debugging:
  • In launch configurations, you can now use the runtimeArgs attribute. This is useful if you need to pass command line arguments to Node or Mono (not to the program being debugged).
  • Starting a debug session on Linux now opens a terminal with support for input/output.
  • TypeScript debugging now supports JavaScript source maps. Enable this by setting the sourceMaps attribute to true in the launch configuration. In addition, you can specify a TypeScript file with the program attribute. To generate source maps for your TypeScript files, compile with the --sourcemap option. Debugging is now supported in folder-less workspaces For example, you can debug when if a folder is not active (e.g., when you choose File, Close Folder or File, New Window). VS Code displays a purple status bar when you are in folder-less debug mode.
  • For exceptions thrown, via the code line marked in red, and for breakpoints, via the status bar.
  • Debugging UI:
  • Debugging changes:
  • A icon to collapse all variables has been added to the Variables tree.
  • You can now copy a variable's value to the clipboard from the Variables tree.
  • Environment variables now work on all platforms.
  • VS Code no longer inadvertently hijacks an arbitrary terminal on OS X when starting a launch session. Only a terminal previously used for debugging is reused for a new session.
  • Arguments passed to the runtime or program being debugged can now contain spaces.
  • F9 and F11 work again.
  • Debugging works with UNC paths.
  • Better error messages are provided if Mono or Node is missing.
  • Support has been added for F# debugging on Mono on OS X and Linux
  • Tasks:
  • We have defined three new problem matchers:
  • $jshint-stylish: To detect jshint problems produced by the stylish reporter.
  • $eshint-compact: To detect eslint problems produced by the compact reporter.
  • $eslint-stylish: To detect eslint problems produced by the stylish reporter.
  • Multiline problem matchers have been added to the task system to capture stylish output from several linting tools. You can see an example in Tasks.
  • You can now consistently redefine global properties per operating system and per explicit task. See operating specific values and task specific values for details.
  • A new property, suppressTaskName, can be specified globally, per operating system, or per task, to indicate whether the task name is added to the arguments when a task command is executed. See more details in the Appendix of Tasks.
  • Languages
  • Rust
  • Rust has been added as a supported language for colorization and bracket matching.
  • TypeScript
  • The TypeScript language service has been updated to TypeScript version 1.5.
  • JavaScript
  • New options allow you to turn off all semantic and syntax checks, useful if you prefer JSHint instead of the VS Code JavaScript validator.
  • javascript.validate.semanticValidation=[true|false] Use true to have VS Code report semantic errors (unassigned variables, etc. and all lint checks)
  • javascript.validate.syntaxValidation=[true|false] Use false to have VS Code report syntaX errors (missing brackets, etc.).
  • HTML:
  • HTML auto closing of tags has now been removed and replaced with smarter IntelliSense on