This commit is contained in:
Greg Van Liew 2016-12-13 14:48:00 -08:00
Родитель efd2dc28b6
Коммит 229872bee2
1 изменённых файлов: 148 добавлений и 156 удалений

Просмотреть файл

@ -10,25 +10,27 @@ MetaSocialImage: 1_8_release-highlights.png
Welcome to the November 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:
* **[Hot Exit](#hot-exit)** - VS Code now remembers the contents of unsaved files.
* **[Zen Mode](#zen-mode)** - Remove distractions when looking at your files by putting VS Code into Zen Mode.
* **[Configurable Activity Bar](#configurable-activity-bar)** - Arrange the Activity Bar icons to your liking.
* **[Settings improvements](#settings-improvements)** - Easily configure VS Code with global and workspace settings.
* **[Git clone](#git-clone)** - Clone your repo from within VS Code.
* **[Hot Exit](#hot-exit)** - Switch context quickly and never lose your changes.
* **[Focus on Your Code](#focus-on-your-code)** - Enhancements like [Zen Mode](#zen-mode), [Configurable Activity Bar](#configurable-activity-bar), and more.
* **[Settings improvements](#settings)** - New experience for configuring VS Code.
* **[New Selection menu](#selection-menu)** - Easily discover and use the editor selection commands.
* **[TypeScript 2.1](#typescript-2.1)** - Improved language support TypeScript.
* **[JavaScript](#javascript)** - Support for Object Rest/Spread.
* **[Text Search Performance](#text-search-performance)** - Find the code you're looking for fast no matter how large your project.
* **[Snippet improvements](#snippets)** - Use variables in your code snippets.
* **[Keyboard shortcuts](#keyboard-shortcuts)** - Customize keyboard shortcuts with command arguments, find popular Keymap extensions.
* **[JavaScript IntelliSense in HTML](#javascript-language-support-in-html)** - Get full JavaScript language support in HTML files.
* **[UI for Multitarget Debugging](#multitarget-debugging)** - Launch simultaneous debug sessions.
* **[TypeScript 2.1](#typescript-update)** - Improved language support with the latest TypeScript update.
* **[JavaScript](#javascript)** - Support for Object Rest/Spread.
The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:
* **[Workbench](#workbench)** - View picker, new workbench configuration settings.
* **[Editor](#editor)** - TBD details not mentioned in highlights.
* **[Languages](#languages)** - Markdown preview settings.
* **[Extensions](#extensions)** - TBD details not mentioned in highlights.
* **[Workbench](#workbench)** - New View picker, Integreted Terminal improvements, macOS themed title.
* **[Settings](#settings)** - Search and easily edit settings, find Keymap extensions.
* **[Editor](#editor)** - Git Clone, new editor settings, Sublime Text compatibility.
* **[Languages](#languages)** - CSS apply rule, Markdown preview customization, TSLint and ESLint extension updates.
* **[Debugging](#debugging)** - Add launch configurations easily as snippets through IntelliSense.
* **[Extension Authoring](#extension-authoring)** - TBD details not mentioned in highlights.
* **[Node.js Debugging](#node-debugging)** - Just My Code, load environment variables from files, help for sourcemaps.
* **[Extension Authoring](#extension-authoring)** - Strict Null checks, snippet completions, debugger extension updates.
## Workbench
@ -37,14 +39,39 @@ The release notes are arranged in the following sections related to VS Code focu
VS Code now remembers your unsaved changes when you exit. Hot Exit will be triggered under the following cases:
- All windows (instances) are closed.
- The last window is closed, this does not apply on Mac as the application will still be running.
- On Mac, when you finally quit the application.
- Window reload, no more saving to reload extensions!
When VS Code is next launched after a Hot Exit, all workspaces/files that are backed up will be restored. This also brings with it the ability to restore files if VS Code crashes, regardless of whether Hot Exit is enabled or disabled (via the `files.hotExit` setting). You can read more about how Hot Exit works, the design decisions behind the implementation, and what's next for the feature on [our blog](http://code.visualstudio.com/blogs/2016/11/30/hot-exit-in-insiders).
### View Picker
A new picker is added that shows Views, Panels, Output channels and Terminals and allows for easy opening of those. You can open it via the **Open View** command or by typing `view` followed by a `space` into **Quick Open**.
![View Picker](images/1_8/view-picker.png)
On Windows and Mac, you can press `kbstyle(Ctrl+Q)` to bring up the picker. On Linux, you can reassign the key binding if you want (`kbstyle(Ctrl+Q)` is assigned to quitting on Linux). Pressing `kbstyle(Ctrl+Q)` and holding the `kbstyle(Ctrl)` key while pressing the `kbstyle(Q)` allows you to jump to an entry from the list and open it after you release the keys.
### Terminal improvements
Several improvements were made to the Integrated Terminal:
- Terminal copy and paste key bindings on Windows have changed to `kbstyle(Ctrl+C)` (when text is selected) and `kbstyle(Ctrl+V)` respectively.
- The terminal will no longer scroll to the bottom when it receives output if you have scrolled up
- `kbstyle(Cmd+K)` now clears the terminal when it has focus
- A new setting `terminal.integrated.scrollback` enables changing the number of lines the terminal will remember before discarding
### Mac: Custom themed title
On macOS, we are now drawing our own custom title instead of the native one to allow for the theme color to be picked up. This behavior can be changed with the new `window.titleBarStyle` setting. The new default is `custom` but you can set the value to `native` to go back to the old behavior after a restart.
## Focus on your code
This release we've added features to help you focus on your highest priority, your source code.
### Zen Mode
Per [user requests](https://github.com/Microsoft/vscode/issues/12940), we have added Zen Mode to VS Code. Zen Mode lets you focus on your code by hiding all UI except the editor (no Activity Bar, Status Bar, Sidebar and Panel) and going to full screen. Zen mode can be toggled using the View menu, Command Palette or by the shortcut `kb(workbench.action.toggleZenMode)`. The transition to full screen can be disabled via `workbench.fullScreenZenMode`. Double `kb(Esc)` exits Zen Mode.
Per [user requests](https://github.com/Microsoft/vscode/issues/12940), we have added Zen Mode to VS Code. Zen Mode lets you focus on your code by hiding all UI except the editor (no Activity Bar, Status Bar, Sidebar and Panel) and going to full screen. Zen mode can be toggled using the **View** menu, **Command Palette** or by the shortcut `kb(workbench.action.toggleZenMode)`. If you prefer not to transition to full screen, that can be disabled via `workbench.fullScreenZenMode`. Double `kb(Esc)` exits Zen Mode.
### Configurable Activity Bar
@ -60,52 +87,6 @@ Finally, if the window gets small enough so that all view icons cannot show, a n
![Scalable Activity Bar](images/1_8/overflow.png)
### View Picker
A new picker is added that shows Views, Panels, Output channels and Terminals and allows for easy opening of those. You can open it via the **Open View** command or by typing `view` followed by a `space` into **Quick Open**.
![View Picker](images/1_8/view-picker.gif)
On Windows and Mac, you can press `kbstyle(Ctrl+Q)` to bring up the picker. On Linux, you can reassign the key binding if you want (`kbstyle(Ctrl+Q)` is assigned to quitting on Linux). Pressing `kbstyle(Ctrl+Q)` and holding the `kbstyle(Ctrl)` key while pressing the `kbstyle(Q)` allows you to jump to an entry from the list and open it after you release the keys.
### Settings improvements
Given that VS Code is an editor, we provide settings in the form of `settings.json` file to configure VS Code behavior by editing. To discover existing settings, in addition to IntelliSense, we show `Default Settings` in a separate editor, when user opens settings. There was feedback that settings were still not still easily discoverable and configurable, which was also confirmed from our user studies. In this release, we did some explorations to improve discoverability and user experience for settings and this resulted into following improvements to our Settings story.
#### Search settings
One of the big reasons for showing default settings is to let users search and discover settings. To facilitate this, the Default Settings editor now comes with a big Search bar where you can easily search for the settings you are looking for. In addition to showing and highlighting settings matching your search criteria, this will also filter out those settings which are not matching. This makes finding settings quick and easy.
![Search Settings](images/1_8/search-settings.gif)
#### Settings groups
We enhanced visual representation of Default Settings groups to make settings navigation more user friendly. We also introduced a new group of most commonly used settings.
![Settings Groups](images/1_8/settings-groups.png)
#### Quick Edit
We introduced actions inside Default Settings and Settings editors which will help you in quickly copying or updating a setting.
![Settings Groups](images/1_8/quick-edit-settings.gif)
#### One Side by Side Settings editor
Last but not least, we grouped Default Settings and Settings editors into one side by side editor. This addresses the issue of managing two editors for settings.
Explorations and improvements continue... Stay tuned to our next release plan.
### Git clone
There is now a new lightweight command to clone a Git repository into your machine and open it with VS Code. You can execute it from the **Command Palette** and searching for `Git: Clone`.
### Mac: Custom themed title
On macOS, we are now drawing our own custom title instead of the native one to allow for the theme color to be picked up. This behavior can be changed with the new `window.titleBarStyle` setting. The new default is `custom` but you can set the value to `native` to go back to the old behavior after a restart.
![Custom Title](images/1_8/custom-title.png)
### Hide the Activity Bar
A new setting `workbench.activityBar.visible` lets you hide the Activity Bar to the side of the view area.
@ -114,38 +95,55 @@ A new setting `workbench.activityBar.visible` lets you hide the Activity Bar to
We also added a related entry to the **View** menu as well as in **Command Palette**. The related command has the id `workbench.action.toggleActivityBarVisibility`.
### New setting to show full path in Window title
We added a new setting `window.showFullPath` that will show the full path to an opened file in the window title instead of the workspace relative one.
### New setting to hide Close buttons on Tabs
We added a new setting `workbench.editor.showTabCloseButton` that will hide the Close buttons on tabs. Dirty indications are still visible at the same location but you will not accidentally close tabs with the mouse once enabled.
### Text search performance
## Settings
We improved the performance of full text search by running our search code in multiple processes in parallel. Your searches should complete much faster, especially in large workspaces.
VS Code's customization model is very simple in the form of a `settings.json` file which you edit to configure VS Code's behavior. To discover available settings, we show **Default Settings** in a separate editor as well as provide IntelliSense in your opened global or workspace settings. From user feedback and usability studies, we learned that people were still having trouble working with their settings. In this release, we did some explorations to improve discoverability and the user experience for modifying settings and this resulted in the following improvements.
### Terminal improvements
### Search settings
Several improvements were made to the Integrated Terminal:
One of the big reasons for showing default settings is to let users search and discover settings. To facilitate this, the Default Settings editor now comes with a big Search bar where you can easily search for the settings you are looking for. In addition to showing and highlighting settings matching your search criteria, this will also filter out those settings which are not matching. This makes finding settings quick and easy.
- Terminal copy and paste key bindings on Windows have changed to `kbstyle(Ctrl+C)` (when text is selected) and `kbstyle(Ctrl+V)` respectively.
- The terminal will no longer scroll to the bottom when it receives output if you have scrolled up
- `kbstyle(Cmd+K)` now clears the terminal when it has focus
- A new setting `terminal.integrated.scrollback` enables changing the number of lines the terminal will remember before discarding
![Search Settings](images/1_8/search-settings.gif)
### Watermark improvements
### Settings groups
The watermark was updated to show commands that are most relevant to the current context.
We enhanced visual representation of Default Settings groups to make settings navigation more user friendly. We also introduced a new group of most commonly used settings.
Workbench opened without folder:
![Settings Groups](images/1_8/settings-groups.png)
![Workbench opened without folder](images/1_8/workbench-without-folder.png)
### Quick Edit
Workbench opened with folder:
We introduced actions inside Default Settings and Settings editors which will help you in quickly copying or updating a setting.
![Workbench opened with folder](images/1_8/workbench-with-folder.png)
![Settings Groups](images/1_8/quick-edit-settings.gif)
### One Side by Side Settings editor
Last but not least, we grouped Default Settings and Settings editors into one side by side editor. This addresses the issue of managing two editors for settings.
Explorations and improvements continue... Stay tuned to our next release plan.
## Keyboard shortcuts
### Key binding command arguments
We added support to invoke commands with arguments to the `keybindings.json` configuration file. This is useful if you often perform the same operation on a specific file or folder. Simply add a custom keyboard shortcut to do exactly what you want.
The following is an example of this by overriding the Enter key to print some text:
`{ "key": "enter", "command": "type", "args": { "text": "Hello World"}, "when": "editorTextFocus" }`
The type command will receive `{ "text": "Hello World"}` as first argument and add "Hello World" to the file instead of producing the default command.
### Recommended keymap extensions
We have added a list of the most popular keymap extensions that come with a full set of keybindings for a popular editor or IDE (**File** > **Preferences** > **Keymap Extensions**):
![Recommended keymap extensions](images/1_8/recommended-keymap-extensions.png)
## Editor
@ -155,9 +153,50 @@ We have added a Selection menu to the menu bar giving access to the most common
![Selection menu](images/1_8/selection-menu.png)
### Text search performance
We improved the [performance](https://github.com/Microsoft/vscode/issues/15384) of full text search by running our search code in multiple processes in parallel. Your searches should complete much faster, especially in large workspaces.
### Git clone
There is now a new lightweight command to clone a Git repository into your machine and open it with VS Code. You can execute it from the **Command Palette** and searching for `Git: Clone`.
### New editor settings
`window.showFullPath` - show the full path to an opened file in the window title instead of the workspace relative one.
`files.insertFinalNewline` - automatically add a newline at the end of files when saving.
The `editor.renderLineHighlight` setting has been updated to support new options:
* `line` - Highlight the current line in the editor.
* `gutter` - Highlight the line number in the gutter to the left of the current line.
* `all` - Both gutter and line highlight.
* `none` - No current line highlighting.
![render line highlight](images/1_8/render-line-highlight.png)
### Accessibility improvements of diff editor
We enhanced the accessibility of the diff editor by adding `+` and `-` indicators for modifications in the diff editor. The feature is enabled by default and can be disabled by setting `diffEditor.renderIndicators` to `false`.
![diff indicators](images/1_8/diff-indicators.png)
### Sublime Text compatibility
We added four new commands which users from Sublime Text are familiar with:
- Join Lines - `editor.action.joinLines`
- Transpose characters around the cursor - `editor.action.transpose`
- Transform to Uppercase - `editor.action.transformToUppercase`
- Transform to Lowercase - `editor.action.transformToLowercase`
These commands are not bound to any keyboard shortcuts by default.
## Snippets
### Snippet Variables
In snippets you can now use variables. The syntax for variables is `$name` for simple variables and `${name:default}` for variables with a default value. Variables evaluate to their value, the empty string, or, if present, their default value. When a variable is unknown we insert it as a placeholder.
In your custom snippets, you can now use variables. The syntax for variables is `$name` for simple variables and `${name:default}` for variables with a default value. Variables evaluate to their value, the empty string, or, if present, their default value. When a variable is unknown, we insert it as a placeholder.
The following variables can be used:
@ -179,67 +218,19 @@ The following is an example of a snippet that surrounds the selected text with s
}
```
### New setting to insert final newline into files
### Snippets in JSON schemas
We added a new setting `files.insertFinalNewline` to automatically add a newline at the end of files when saving.
### Key binding commands can now define arguments
We added support to invoke commands with arguments to the `keybindings.json` configuration file. The following is an example of this by overriding the Enter key to print some text:
`{ "key": "enter", "command": "type", "args": { "text": "Hello World"}, "when": "editorTextFocus" }`
The type command will receive `{ "text": "Hello World"}` as first argument and add "Hello World" to the file instead of producing the default command.
### Accessibility improvements of diff editor
We enhanced the accessibility of the diff editor by adding `+` and `-` indicators for modifications in the diff editor. The feature is enabled by default and can be disabled by setting `diffEditor.renderIndicators` to `false`.
![diff indicators](images/1_8/diff-indicators.png)
### Improvements to renderLineHighlight setting
The `editor.renderLineHighlight` setting has been updated to support new options:
* `line` - Highlight the current line in the editor.
* `gutter` - Highlight the line number in the gutter to the left of the current line.
* `all` - Both gutter and line highlight.
* `none` - No current line highlighting.
![render line highlight](images/1_8/render-line-highlight.png)
### Sublime Text compatibility
We added four new commands which users from Sublime Text are familiar with:
- Join Lines - `editor.action.joinLines`
- Transpose characters around the cursor - `editor.action.transpose`
- Transform to Uppercase - `editor.action.transformToUppercase`
- Transform to Lowercase - `editor.action.transformToLowercase`
These commands are not bound to any keyboard shortcuts by default.
The JSON language service uses JSON schemas to validate JSON documents as well as to provide completions. As a VS code specific extension to JSON schemas, you can now also specify snippets proposals in the schema for a richer experience. The snippet proposals are shown as additional completion proposals and use the snippet syntax to specify placeholders.
See the [JSON documentation](https://code.visualstudio.com/docs/languages/json#_json-schemas-settings) for more information.
## Languages
### TypeScript 2.1
We now use [TypeScript 2.1](https://blogs.msdn.microsoft.com/typescript/2016/12/07/announcing-typescript-2-1/) for JavaScript and TypeScript language support. TypeScript 2.1 brings a number of new language and tooling features. [Read about what's new in TypeScript 2.1](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#typescript-21).
### JavaScript language support in HTML
Coding assistance for JavaScript embedded in HTML is back! You get code completions and signature help for DOM and JQuery APIs, validation, hovers, Find References and Go To Definition, symbol highlighting and outline (Ctrl + Shift + o) and format. Note that the language support doesn't follow script includes, it only knows about definitions made in the same file.
![JavaScript editing in HTML](images/1_8/javascript-in-html.gif)
### JavaScript
The JavaScript in VS Code is powered by TypeScript and the TypeScript version bundled with VS Code has been updated to version 2.1.0.
This brings several improvements for JavaScript support:
* [Support for Object Rest and Spread](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#object-spread-and-rest). This was a heavily requested feature request by JS developers working with React. Now you no longer need to disable JavaScript validation when using Object Spread/Rest.
* [Configuration inheritance](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#configuration-inheritance) for `jsconfig.json` files.
* IntelliSense for paths in `import` and `require`.
### CSS improvements
The CSS language support can now handle the new [@apply rule](https://tabatkins.github.io/specs/css-apply-rule/).
@ -248,10 +239,17 @@ CSS in HTML was also improved, in particular for styles defined in attributes:
![CSS in HTML attributes](images/1_8/css-in-html.png)
### Snippets in JSON schemas
### TypeScript Update
The JSON language service uses JSON schemas to validate JSON documents as well as to provide completions. As a VS code specific extension to JSON schemas, you can now also specify snippets proposals in the schema for a richer experience. The snippet proposals are shown as additional completion proposals and use the snippet syntax to specify placeholders.
See the [JSON documentation](https://code.visualstudio.com/docs/languages/json#_json-schemas-settings) for more information.
We now use [TypeScript 2.1](https://blogs.msdn.microsoft.com/typescript/2016/12/07/announcing-typescript-2-1/) for JavaScript and TypeScript language support. TypeScript 2.1 brings a number of new language and tooling features. [Read about what's new in TypeScript 2.1](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#typescript-21).
### JavaScript
The JavaScript in VS Code is powered by TypeScript and the new TypeScript version bundled with VS Code brings several improvements for JavaScript support:
* [Support for Object Rest and Spread](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#object-spread-and-rest). This was a heavily requested feature request by JS developers working with React. Now you no longer need to disable JavaScript validation when using Object Spread/Rest.
* [Configuration inheritance](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#configuration-inheritance) for `jsconfig.json` files.
* IntelliSense for paths in `import` and `require`.
### Markdown preview improvements
@ -278,21 +276,9 @@ The `vscode-eslint` extension now supports validating file types other than Java
- configure ESLint with an additional plugin to do the actual validation. For example to validate HTML files install `eslint-plugin-html` using `npm install eslint-plugin-html` and update the eslint configuration (e.g. `.eslintrc.json` file) with `"plugin": [ "html" ]`.
- add the corresponding language identifier to the `eslint.validate` setting. Something like `"eslint.validate": [ "javascript", "javascriptreact", "html" ]`. If the setting is missing it defaults to `["javascript", "javascriptreact"]`
## Extensions
### Recommended keymap extensions
We have added a list of the most popular keymap extensions that come with a full set of keybindings for a popular editor or IDE (**File** > **Preferences** > **Keymap Extensions**):
![Recommended keymap extensions](images/1_8/recommended-keymap-extensions.png)
### Improved Marketplace Performance
Throughout November, there were many performance enhancements and fixes to the extension Marketplace. Most notably are the improvements in certain locations, such as China, in which extension download times improved an order of magnitude.
## Debugging
### Multi-target debugging
### Multitarget debugging
A first glimpse of _multi-target debugging_ was already available in the previous milestone. In this milestone, we've added the user interface for it. With this release, _multi-target debugging_ is no longer experimental.
@ -378,7 +364,9 @@ For example using:
]
```
all code in the 'node_modules' and 'lib' folders will be skipped. The exact rules are as follows:
all code in the `node_modules` and `lib` folders will be skipped.
The exact rules are as follows:
* If you step into a skipped file, you won't stop there - you will stop on the next executed line that is not in a skipped file.
* If you have set the option to break on thrown exceptions, then you won't break on exceptions thrown from skipped files.
@ -386,7 +374,9 @@ all code in the 'node_modules' and 'lib' folders will be skipped. The exact rule
This feature is available in the `node`, `node2`, and [Chrome](https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome) debuggers.
>**Note:** the old debugger (`node`) supports negative glob patterns, but they must **follow** a positive pattern: positive patterns add to the set of skipped files, while negative patterns subtract from that set. In the following example all but a 'math' module is skipped:
>**Note:** The old debugger (`node`) supports negative glob patterns, but they must **follow** a positive pattern: positive patterns add to the set of skipped files, while negative patterns subtract from that set.
In the following example all but a 'math' module is skipped:
```typescript
"skipFiles": [
@ -428,7 +418,7 @@ lines="foo\nbar"
### Diagnostics for Source Map Problems (`node2`)
When debugging a Node app, you may have seen breakpoints turn gray with the message "Source map problem?". The new `node2` debug adapter has two new features which make it easier to understand these issues.
When debugging a Node.js app, you may have seen breakpoints turn gray with the message "Source map problem?". The new `node2` debug adapter has two new features which make it easier to understand these issues.
Typing `.scripts` in the debug console during a debugging session will cause the adapter to print out all the information it has about loaded scripts and their sourcemaps.
@ -436,12 +426,12 @@ And the `sourceMapPathOverrides` option in the launch config allows you to rewri
### Back in time Debugging (`node`)
This UI appears automatically for Chakra based Node.js runtimes. For details see this [blog](https://blogs.windows.com/msedgedev/2016/11/29/node-chakracore-vm-neutrality/#cr7wJLzUhp37TVcI.97).
The _Back In Time Debugging_ support of the `node` debugger has been extended by a `Reverse Continue` action:
![Reverse Continue](images/1_8/reverse-continue.png)
This UI appears automatically for Chakra based node runtimes. For details see this [blog](https://blogs.windows.com/msedgedev/2016/11/29/node-chakracore-vm-neutrality/#cr7wJLzUhp37TVcI.97).
## Extension Authoring
### Strict Null Checks supported
@ -460,15 +450,17 @@ With the new [`inspect`](https://github.com/Microsoft/vscode/blob/master/src/vs/
Ever since the text document allows to ask for a [word-range](https://github.com/Microsoft/vscode/blob/master/src/vs/vscode.d.ts#L221) at a given position. To know what a word is VS Code uses the [word-pattern](https://github.com/Microsoft/vscode/blob/master/src/vs/vscode.d.ts#L2714) of the respective language. That's not always good enough and therefore you can now provide a regular expression that will be used instead.
## Debugger Extension Authoring
### Debugger Extension Authoring
- In the `launch.json` the top level `debugServer` attribute has been deprecated (and support for it will be removed in the February milestone). Instead the `debugServer` attribute has to be specified per launch configuration. More details can be found [here](https://github.com/Microsoft/vscode/issues/13783).
- Debugger extensions can now contribute launch configuration snippets which will get surfaced in `launch.json` as explained in section "Adding Individual Launch Configurations". This can be done using the regular syntax for contributing snippets to VS Code, but as a `configurationSnippets` attribute inside the `debuggers` section of the `package.json`. An example of how Mock Debug is contributing debug configuration snippets can be found [here](https://github.com/Microsoft/vscode-mock-debug/blob/master/package.json#L71).
In the `launch.json`, the top level `debugServer` attribute has been deprecated (and support for it will be removed in the February milestone). Instead the `debugServer` attribute has to be specified per launch configuration. More details can be found [here](https://github.com/Microsoft/vscode/issues/13783).
Debugger extensions can now contribute launch configuration snippets which will get surfaced in `launch.json` as explained in section "Adding Individual Launch Configurations". This can be done using the regular syntax for contributing snippets to VS Code, but as a `configurationSnippets` attribute inside the `debuggers` section of the `package.json`. An example of how Mock Debug is contributing debug configuration snippets can be found [here](https://github.com/Microsoft/vscode-mock-debug/blob/master/package.json#L71).
### VS Code Debug Protocol
- The `OutputEvent` type now supports to send structured objects to the debug console and VS Code renders them as expandable objects. More details can be found [here](https://github.com/Microsoft/vscode-debugadapter-node/issues/79).
- A new `RestartRequest` has been added to the debug protocol. If a debug adapter opts into this, the VS Code debugger UI no longer implements the `Restart` action by terminating and restarting the debug adapter but instead sends a `RestartRequest` to the adapter. More details can be found [here](https://github.com/Microsoft/vscode/issues/14189).
The `OutputEvent` type now supports to send structured objects to the debug console and VS Code renders them as expandable objects. More details can be found [here](https://github.com/Microsoft/vscode-debugadapter-node/issues/79).
A new `RestartRequest` has been added to the debug protocol. If a debug adapter opts into this, the VS Code debugger UI no longer implements the `Restart` action by terminating and restarting the debug adapter but instead sends a `RestartRequest` to the adapter. More details can be found [here](https://github.com/Microsoft/vscode/issues/14189).
## Miscellaneous