diff --git a/.pipelines/templates/jobs/build.yml b/.pipelines/templates/jobs/build.yml index a87fb33d2d..c69658e404 100644 --- a/.pipelines/templates/jobs/build.yml +++ b/.pipelines/templates/jobs/build.yml @@ -28,9 +28,9 @@ jobs: displayName: Copy ${{ parameters.artifactName }} - task: NodeTool@0 - displayName: Use Node 12.22.9 + displayName: Use Node 14.19.3 inputs: - versionSpec: 12.22.9 + versionSpec: 14.19.3 checkLatest: true - task: Npm@0 diff --git a/api/references/theme-color.md b/api/references/theme-color.md index 04f2431293..0a9bad0903 100644 --- a/api/references/theme-color.md +++ b/api/references/theme-color.md @@ -86,6 +86,7 @@ A set of colors for button widgets such as **Open Folder** button in the Explore - `button.background`: Button background color. - `button.foreground`: Button foreground color. - `button.border`: Button border color. +- `button.separator`: Button separator color. - `button.hoverBackground`: Button background color when hovering. - `button.secondaryForeground`: Secondary button foreground color. - `button.secondaryBackground`: Secondary button background color. diff --git a/api/references/vscode-api.template b/api/references/vscode-api.template index 79af225769..966dac2ba3 100644 --- a/api/references/vscode-api.template +++ b/api/references/vscode-api.template @@ -3,8 +3,8 @@ ContentId: 8CEBCDF8-4F0A-4C81-A904-3DEA43480EA6 DateApproved: 7/7/2022 -VSCodeCommitHash: 354e1a05958e51c25bab1df108c722c8105ebaca -VSCodeVersion: 1.69.0 +VSCodeCommitHash: cc098faebd320a2eea3da6ae154b7e2e1347a4b9 +VSCodeVersion: 1.70.0 # Summarize the whole topic in less than 300 characters for SEO purpose MetaDescription: Visual Studio Code extensions (plug-in) API Reference. diff --git a/api/references/when-clause-contexts.md b/api/references/when-clause-contexts.md index b4c9fdf38a..5844e56b7b 100644 --- a/api/references/when-clause-contexts.md +++ b/api/references/when-clause-contexts.md @@ -209,9 +209,9 @@ vscode.commands.executeCommand('setContext', 'myExtension.showMyCommand', true); vscode.commands.executeCommand('setContext', 'myExtension.numberOfCoolOpenThings', 4); ``` -## 'in' conditional operator +## 'in' and 'not in' conditional operators -The `in` operator for `when` clauses allows for a dynamic lookup of a context key's value within another context key's value. For example, if you wanted to add a context menu command to folders that contain a certain type of file (or something that can't be statically known), you can now use the `in` operator to achieve it. +The `in` operator for `when` clauses allows for a dynamic lookup of a context key's value within another context key's value. For example, if you wanted to add a context menu command to folders that contain a certain type of file (or something that can't be statically known), you can now use the `in` operator to achieve it. You can use the `not in` operator to check the opposite condition. First, determine which folders should support the command, and the folder name to an array. Then, use the `setContext` command to turn the array into a context key: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f334c9278e..2409351459 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -41,9 +41,9 @@ jobs: path: vscode-website/dist persistCredentials: true - task: NodeTool@0 - displayName: Use Node 12.22.9 + displayName: Use Node 14.19.3 inputs: - versionSpec: 12.22.9 + versionSpec: 14.19.3 checkLatest: true - task: Npm@0 displayName: npm install yarn diff --git a/build/keybindings/doc.keybindings.linux.json b/build/keybindings/doc.keybindings.linux.json index e1d0b31d97..7304d06daa 100644 --- a/build/keybindings/doc.keybindings.linux.json +++ b/build/keybindings/doc.keybindings.linux.json @@ -291,6 +291,8 @@ "when": "editorTextFocus && hasWordHighlights" }, { "key": "escape", "command": "editor.cancelOperation", "when": "cancellableOperation" }, +{ "key": "ctrl+k ctrl+,", "command": "editor.createFoldingRangeFromSelection", + "when": "editorTextFocus && foldingEnabled" }, { "key": "escape", "command": "editor.debug.action.closeExceptionWidget", "when": "exceptionWidgetVisible" }, { "key": "ctrl+k ctrl+i", "command": "editor.debug.action.showDebugHover", @@ -329,6 +331,8 @@ "when": "hasSymbols" }, { "key": "escape", "command": "editor.gotoNextSymbolFromResult.cancel", "when": "hasSymbols" }, +{ "key": "ctrl+k ctrl+.", "command": "editor.removeManualFoldingRanges", + "when": "editorTextFocus && foldingEnabled" }, { "key": "ctrl+k ctrl+l", "command": "editor.toggleFold", "when": "editorTextFocus && foldingEnabled" }, { "key": "ctrl+shift+]", "command": "editor.unfold", @@ -462,13 +466,17 @@ { "key": "up", "command": "showPrevParameterHint", "when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible" }, { "key": "shift+tab", "command": "acceptAlternativeSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "shift+enter", "command": "acceptAlternativeSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "tab", "command": "acceptSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "enter", "command": "acceptSelectedSuggestion", - "when": "acceptSuggestionOnEnter && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus" }, + "when": "acceptSuggestionOnEnter && suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus" }, +{ "key": "shift+escape", "command": "hideCodeActionMenuWidget", + "when": "CodeActionMenuVisible" }, +{ "key": "escape", "command": "hideCodeActionMenuWidget", + "when": "CodeActionMenuVisible" }, { "key": "shift+escape", "command": "hideSuggestWidget", "when": "suggestWidgetVisible && textInputFocus" }, { "key": "escape", "command": "hideSuggestWidget", @@ -627,6 +635,8 @@ "when": "inKeybindings" }, { "key": "escape", "command": "list.clear", "when": "listFocus && listHasSelectionOrFocus && !inputFocus" }, +{ "key": "escape", "command": "list.closeFind", + "when": "listFocus && treeFindOpen" }, { "key": "left", "command": "list.collapse", "when": "listFocus && treeElementCanCollapse && !inputFocus || listFocus && treeElementHasParent && !inputFocus" }, { "key": "ctrl+left", "command": "list.collapseAll", @@ -637,6 +647,10 @@ "when": "listFocus && listSupportsMultiselect && !inputFocus" }, { "key": "shift+up", "command": "list.expandSelectionUp", "when": "listFocus && listSupportsMultiselect && !inputFocus" }, +{ "key": "f3", "command": "list.find", + "when": "listFocus && treeSupportsFind" }, +{ "key": "ctrl+f", "command": "list.find", + "when": "listFocus && treeSupportsFind" }, { "key": "down", "command": "list.focusDown", "when": "listFocus && !inputFocus" }, { "key": "home", "command": "list.focusFirst", @@ -1022,7 +1036,8 @@ { "key": "ctrl+k ctrl+shift+\\", "command": "workbench.action.splitEditorInGroup", "when": "activeEditorCanSplitInGroup" }, { "key": "ctrl+k ctrl+\\", "command": "workbench.action.splitEditorOrthogonal" }, -{ "key": "ctrl+shift+b", "command": "workbench.action.tasks.build" }, +{ "key": "ctrl+shift+b", "command": "workbench.action.tasks.build", + "when": "taskCommandsRegistered" }, { "key": "escape", "command": "workbench.action.terminal.clearSelection", "when": "terminalFocus && terminalHasBeenCreated && terminalTextSelected && !terminalFindVisible || terminalFocus && terminalProcessSupported && terminalTextSelected && !terminalFindVisible" }, { "key": "ctrl+shift+c", "command": "workbench.action.terminal.copySelection", @@ -1298,5 +1313,19 @@ { "key": "shift+f4", "command": "references-view.prev", "when": "reference-list.hasResult && references-view.canNavigate" }, { "key": "shift+alt+h", "command": "references-view.showCallHierarchy", - "when": "editorHasCallHierarchyProvider" } + "when": "editorHasCallHierarchyProvider" }, +{ "key": "ctrl+down", "command": "focusNextCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "down", "command": "focusNextCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "ctrl+up", "command": "focusPreviousCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "up", "command": "focusPreviousCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "shift+tab", "command": "onEnterSelectCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "enter", "command": "onEnterSelectCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "ctrl+enter", "command": "onEnterSelectCodeActionWithPreview", + "when": "CodeActionMenuVisible" } ] \ No newline at end of file diff --git a/build/keybindings/doc.keybindings.osx.json b/build/keybindings/doc.keybindings.osx.json index 62e6da63d9..86e923bcb3 100644 --- a/build/keybindings/doc.keybindings.osx.json +++ b/build/keybindings/doc.keybindings.osx.json @@ -380,6 +380,8 @@ "when": "editorTextFocus && hasWordHighlights" }, { "key": "escape", "command": "editor.cancelOperation", "when": "cancellableOperation" }, + { "key": "cmd+k cmd+,", "command": "editor.createFoldingRangeFromSelection", + "when": "editorTextFocus && foldingEnabled" }, { "key": "escape", "command": "editor.debug.action.closeExceptionWidget", "when": "exceptionWidgetVisible" }, { "key": "cmd+k cmd+i", "command": "editor.debug.action.showDebugHover", @@ -418,6 +420,8 @@ "when": "hasSymbols" }, { "key": "escape", "command": "editor.gotoNextSymbolFromResult.cancel", "when": "hasSymbols" }, + { "key": "cmd+k cmd+.", "command": "editor.removeManualFoldingRanges", + "when": "editorTextFocus && foldingEnabled" }, { "key": "cmd+k cmd+l", "command": "editor.toggleFold", "when": "editorTextFocus && foldingEnabled" }, { "key": "alt+cmd+]", "command": "editor.unfold", @@ -557,13 +561,17 @@ { "key": "up", "command": "showPrevParameterHint", "when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible" }, { "key": "shift+tab", "command": "acceptAlternativeSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "shift+enter", "command": "acceptAlternativeSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "tab", "command": "acceptSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "enter", "command": "acceptSelectedSuggestion", - "when": "acceptSuggestionOnEnter && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus" }, + "when": "acceptSuggestionOnEnter && suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus" }, + { "key": "shift+escape", "command": "hideCodeActionMenuWidget", + "when": "CodeActionMenuVisible" }, + { "key": "escape", "command": "hideCodeActionMenuWidget", + "when": "CodeActionMenuVisible" }, { "key": "shift+escape", "command": "hideSuggestWidget", "when": "suggestWidgetVisible && textInputFocus" }, { "key": "escape", "command": "hideSuggestWidget", @@ -726,6 +734,8 @@ "when": "inKeybindings" }, { "key": "escape", "command": "list.clear", "when": "listFocus && listHasSelectionOrFocus && !inputFocus" }, + { "key": "escape", "command": "list.closeFind", + "when": "listFocus && treeFindOpen" }, { "key": "cmd+up", "command": "list.collapse", "when": "listFocus && treeElementCanCollapse && !inputFocus || listFocus && treeElementHasParent && !inputFocus" }, { "key": "left", "command": "list.collapse", @@ -740,6 +750,10 @@ "when": "listFocus && listSupportsMultiselect && !inputFocus" }, { "key": "shift+up", "command": "list.expandSelectionUp", "when": "listFocus && listSupportsMultiselect && !inputFocus" }, + { "key": "f3", "command": "list.find", + "when": "listFocus && treeSupportsFind" }, + { "key": "cmd+f", "command": "list.find", + "when": "listFocus && treeSupportsFind" }, { "key": "ctrl+n", "command": "list.focusDown", "when": "listFocus && !inputFocus" }, { "key": "down", "command": "list.focusDown", @@ -1139,7 +1153,8 @@ "when": "activeEditorCanSplitInGroup" }, { "key": "cmd+k cmd+\\", "command": "workbench.action.splitEditorOrthogonal" }, { "key": "ctrl+w", "command": "workbench.action.switchWindow" }, - { "key": "shift+cmd+b", "command": "workbench.action.tasks.build" }, + { "key": "shift+cmd+b", "command": "workbench.action.tasks.build", + "when": "taskCommandsRegistered" }, { "key": "escape", "command": "workbench.action.terminal.clearSelection", "when": "terminalFocus && terminalHasBeenCreated && terminalTextSelected && !terminalFindVisible || terminalFocus && terminalProcessSupported && terminalTextSelected && !terminalFindVisible" }, { "key": "cmd+c", "command": "workbench.action.terminal.copySelection", @@ -1440,5 +1455,19 @@ { "key": "shift+f4", "command": "references-view.prev", "when": "reference-list.hasResult && references-view.canNavigate" }, { "key": "shift+alt+h", "command": "references-view.showCallHierarchy", - "when": "editorHasCallHierarchyProvider" } + "when": "editorHasCallHierarchyProvider" }, + { "key": "cmd+down", "command": "focusNextCodeAction", + "when": "CodeActionMenuVisible" }, + { "key": "down", "command": "focusNextCodeAction", + "when": "CodeActionMenuVisible" }, + { "key": "cmd+up", "command": "focusPreviousCodeAction", + "when": "CodeActionMenuVisible" }, + { "key": "up", "command": "focusPreviousCodeAction", + "when": "CodeActionMenuVisible" }, + { "key": "shift+tab", "command": "onEnterSelectCodeAction", + "when": "CodeActionMenuVisible" }, + { "key": "enter", "command": "onEnterSelectCodeAction", + "when": "CodeActionMenuVisible" }, + { "key": "cmd+enter", "command": "onEnterSelectCodeActionWithPreview", + "when": "CodeActionMenuVisible" } ] \ No newline at end of file diff --git a/build/keybindings/doc.keybindings.win.json b/build/keybindings/doc.keybindings.win.json index 2a88096a5b..8dc5385e22 100644 --- a/build/keybindings/doc.keybindings.win.json +++ b/build/keybindings/doc.keybindings.win.json @@ -304,6 +304,8 @@ "when": "editorTextFocus && hasWordHighlights" }, { "key": "escape", "command": "editor.cancelOperation", "when": "cancellableOperation" }, +{ "key": "ctrl+k ctrl+,", "command": "editor.createFoldingRangeFromSelection", + "when": "editorTextFocus && foldingEnabled" }, { "key": "escape", "command": "editor.debug.action.closeExceptionWidget", "when": "exceptionWidgetVisible" }, { "key": "ctrl+k ctrl+i", "command": "editor.debug.action.showDebugHover", @@ -342,6 +344,8 @@ "when": "hasSymbols" }, { "key": "escape", "command": "editor.gotoNextSymbolFromResult.cancel", "when": "hasSymbols" }, +{ "key": "ctrl+k ctrl+.", "command": "editor.removeManualFoldingRanges", + "when": "editorTextFocus && foldingEnabled" }, { "key": "ctrl+k ctrl+l", "command": "editor.toggleFold", "when": "editorTextFocus && foldingEnabled" }, { "key": "ctrl+shift+]", "command": "editor.unfold", @@ -475,13 +479,17 @@ { "key": "up", "command": "showPrevParameterHint", "when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible" }, { "key": "shift+tab", "command": "acceptAlternativeSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "shift+enter", "command": "acceptAlternativeSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "tab", "command": "acceptSelectedSuggestion", - "when": "suggestWidgetVisible && textInputFocus" }, + "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus" }, { "key": "enter", "command": "acceptSelectedSuggestion", - "when": "acceptSuggestionOnEnter && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus" }, + "when": "acceptSuggestionOnEnter && suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus" }, +{ "key": "shift+escape", "command": "hideCodeActionMenuWidget", + "when": "CodeActionMenuVisible" }, +{ "key": "escape", "command": "hideCodeActionMenuWidget", + "when": "CodeActionMenuVisible" }, { "key": "shift+escape", "command": "hideSuggestWidget", "when": "suggestWidgetVisible && textInputFocus" }, { "key": "escape", "command": "hideSuggestWidget", @@ -640,6 +648,8 @@ "when": "inKeybindings" }, { "key": "escape", "command": "list.clear", "when": "listFocus && listHasSelectionOrFocus && !inputFocus" }, +{ "key": "escape", "command": "list.closeFind", + "when": "listFocus && treeFindOpen" }, { "key": "left", "command": "list.collapse", "when": "listFocus && treeElementCanCollapse && !inputFocus || listFocus && treeElementHasParent && !inputFocus" }, { "key": "ctrl+left", "command": "list.collapseAll", @@ -650,6 +660,10 @@ "when": "listFocus && listSupportsMultiselect && !inputFocus" }, { "key": "shift+up", "command": "list.expandSelectionUp", "when": "listFocus && listSupportsMultiselect && !inputFocus" }, +{ "key": "f3", "command": "list.find", + "when": "listFocus" }, +{ "key": "ctrl+f", "command": "list.find", + "when": "listFocus" }, { "key": "down", "command": "list.focusDown", "when": "listFocus && !inputFocus" }, { "key": "home", "command": "list.focusFirst", @@ -1039,7 +1053,8 @@ { "key": "ctrl+k ctrl+shift+\\", "command": "workbench.action.splitEditorInGroup", "when": "activeEditorCanSplitInGroup" }, { "key": "ctrl+k ctrl+\\", "command": "workbench.action.splitEditorOrthogonal" }, -{ "key": "ctrl+shift+b", "command": "workbench.action.tasks.build" }, +{ "key": "ctrl+shift+b", "command": "workbench.action.tasks.build", + "when": "taskCommandsRegistered" }, { "key": "escape", "command": "workbench.action.terminal.clearSelection", "when": "terminalFocus && terminalHasBeenCreated && terminalTextSelected && !terminalFindVisible || terminalFocus && terminalProcessSupported && terminalTextSelected && !terminalFindVisible" }, { "key": "ctrl+shift+c", "command": "workbench.action.terminal.copySelection", @@ -1320,5 +1335,19 @@ { "key": "shift+f4", "command": "references-view.prev", "when": "reference-list.hasResult && references-view.canNavigate" }, { "key": "shift+alt+h", "command": "references-view.showCallHierarchy", - "when": "editorHasCallHierarchyProvider" } + "when": "editorHasCallHierarchyProvider" }, +{ "key": "ctrl+down", "command": "focusNextCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "down", "command": "focusNextCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "ctrl+up", "command": "focusPreviousCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "up", "command": "focusPreviousCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "shift+tab", "command": "onEnterSelectCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "enter", "command": "onEnterSelectCodeAction", + "when": "CodeActionMenuVisible" }, +{ "key": "ctrl+enter", "command": "onEnterSelectCodeActionWithPreview", + "when": "CodeActionMenuVisible" } ] \ No newline at end of file diff --git a/docs/editor/codebasics.md b/docs/editor/codebasics.md index dbd95386ee..03b0fa282d 100644 --- a/docs/editor/codebasics.md +++ b/docs/editor/codebasics.md @@ -310,7 +310,7 @@ You can also use the following actions: Folding regions are by default evaluated based on the indentation of lines. A folding region starts when a line has a smaller indent than one or more following lines, and ends when there is a line with the same or smaller indent. -Since the 1.22 release, folding regions can also be computed based on syntax tokens of the editor's configured language. The following languages already provide syntax aware folding: Markdown, HTML, CSS, LESS, SCSS, and JSON. +Folding regions can also be computed based on syntax tokens of the editor's configured language. The following languages already provide syntax aware folding: Markdown, HTML, CSS, LESS, SCSS, and JSON. If you prefer to switch back to indentation-based folding for one (or all) of the languages above, use: @@ -344,6 +344,9 @@ To fold and unfold only the regions defined by markers use: * Fold Marker Regions (`kb(editor.foldAllMarkerRegions)`) folds all marker regions. * Unfold Marker Regions (`kb(editor.unfoldAllMarkerRegions)`) unfolds all marker regions. +The command `Create Manual Folding Ranges from Selection` allows to create a folding range from the currently selected lines and collapses it. That range is called a *manual* folding range that goes on top of the ranges computed by folding providers. +Manual folding ranges can be removed again with the command `Remove Manual Folding Ranges`. + ## Indentation VS Code lets you control text indentation and whether you'd like to use spaces or tab stops. By default, VS Code inserts spaces and uses 4 spaces per `kbstyle(Tab)` key. If you'd like to use another default, you can modify the `editor.insertSpaces` and `editor.tabSize` [settings](/docs/getstarted/settings.md). diff --git a/docs/getstarted/settings.md b/docs/getstarted/settings.md index d170b37042..ab8cb8a654 100644 --- a/docs/getstarted/settings.md +++ b/docs/getstarted/settings.md @@ -367,7 +367,7 @@ Below are the Visual Studio Code default settings and their values. You can also // - inherit: Lines will wrap according to the `editor.wordWrap` setting. "diffEditor.wordWrap": "inherit", - // Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character. + // Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`; `) can be a commit character that accepts a suggestion and types that character. "editor.acceptSuggestionOnCommitCharacter": true, // Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions. @@ -488,6 +488,9 @@ Below are the Visual Studio Code default settings and their values. You can also // Controls whether the editor should allow moving selections via drag and drop. "editor.dragAndDrop": true, + // Controls whether you can drag and drop a file into a text editor by holding down `shift` (instead of opening the file in an editor). + "editor.dropIntoEditor.enabled": true, + // Controls whether copying without a selection copies the current line. "editor.emptySelectionClipboard": true, @@ -861,6 +864,7 @@ Below are the Visual Studio Code default settings and their values. You can also // Controls when the folding controls on the gutter are shown. // - always: Always show the folding controls. + // - never: Never show the folding controls and reduce the gutter size. // - mouseover: Only show the folding controls when the mouse is over the gutter. "editor.showFoldingControls": "mouseover", @@ -873,6 +877,9 @@ Below are the Visual Studio Code default settings and their values. You can also // Controls whether the editor will scroll using an animation. "editor.smoothScrolling": false, + // Controls if surround-with-snippets or file template snippets show as Code Actions. + "editor.snippets.codeActions.enabled": true, + // Controls whether snippets are shown with other suggestions and how they are sorted. // - top: Show snippet suggestions on top of other suggestions. // - bottom: Show snippet suggestions below other suggestions. @@ -1238,7 +1245,8 @@ Below are the Visual Studio Code default settings and their values. You can also // If an editor matching one of the listed types is opened as the first in an editor group and more than one group is open, the group is automatically locked. Locked groups will only be used for opening editors when explicitly chosen by user gesture (e.g. drag and drop), but not by default. Consequently the active editor in a locked group is less likely to be replaced accidentally with a different editor. "workbench.editor.autoLockGroups": { "default": false, - "workbench.input.interactive": false, + "mergeEditor.Input": false, + "vscode-interactive-input": false, "interactive": false, "workbench.editorinputs.searchEditorInput": false, "imagePreview.previewEditor": false, @@ -1424,8 +1432,10 @@ Below are the Visual Studio Code default settings and their values. You can also // - both: Shows both the dropdown and toggle buttons. "workbench.layoutControl.type": "both", - // Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut. - "workbench.list.automaticKeyboardNavigation": true, + // Controls the default find mode for lists and trees in the workbench. + // - highlight: Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements. + // - filter: Filter elements when searching. + "workbench.list.defaultFindMode": "highlight", // Scrolling speed multiplier when pressing `Alt`. "workbench.list.fastScrollSensitivity": 5, @@ -1433,12 +1443,6 @@ Below are the Visual Studio Code default settings and their values. You can also // Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication. "workbench.list.horizontalScrolling": false, - // Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter. - // - simple: Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes. - // - highlight: Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements. - // - filter: Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input. - "workbench.list.keyboardNavigation": "highlight", - // A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events. "workbench.list.mouseWheelScrollSensitivity": 1, @@ -2242,6 +2246,9 @@ Below are the Visual Studio Code default settings and their values. You can also // Enable/disable default JSON formatter "json.format.enable": true, + // Keep all existing new lines when formatting. + "json.format.keepLines": false, + // The maximum number of outline symbols and folding regions computed (limited for performance reasons). "json.maxItemsComputed": 5000, @@ -2306,7 +2313,7 @@ Below are the Visual Studio Code default settings and their values. You can also "markdown.suggest.paths.enabled": true, // Enable debug logging for the Markdown extension. - "markdown.trace": "off", + "markdown.trace.extension": "off", // PHP @@ -3128,9 +3135,6 @@ Below are the Visual Studio Code default settings and their values. You can also // Notebooks - // Automatically scroll the interactive window to show the output of the last statement executed. If this value is false, the window will only scroll if the last cell was already the one scrolled to. - "interactiveWindow.alwaysScrollOnNewCell": true, - // Controls whether code cells in the interactive window are collapsed by default. "interactiveWindow.collapseCellInputCode": "fromEditor", @@ -3206,7 +3210,7 @@ Below are the Visual Studio Code default settings and their values. You can also // The font family for the output text for notebook cells. When set to empty, the `editor.fontFamily` is used. "notebook.outputFontFamily": "", - // Font size for the output text for notebook cells. When set to 0 `editor.fontSize` is used. + // Font size for the output text for notebook cells. When set to 0, `editor.fontSize` is used. "notebook.outputFontSize": 0, // Line height of the output text for notebook cells. @@ -3222,12 +3226,16 @@ Below are the Visual Studio Code default settings and their values. You can also // Controls when the Markdown header folding arrow is shown. // - always: The folding controls are always visible. + // - never: Never show the folding controls and reduce the gutter size. // - mouseover: The folding controls are visible only on mouseover. "notebook.showFoldingControls": "mouseover", // Whether to use separate undo/redo stack for each cell. "notebook.undoRedoPerCell": true, + // Automatically scroll the interactive window to show the output of the last statement executed. If this value is false, the window will only scroll if the last cell was already the one scrolled to. + "interactiveWindow.alwaysScrollOnNewCell": true, + // Terminal // When opening a file from the Explorer in a terminal, determines what kind of terminal will be launched @@ -3251,19 +3259,19 @@ Below are the Visual Studio Code default settings and their values. You can also // Whether or not to allow chord keybindings in the terminal. Note that when this is true and the keystroke results in a chord it will bypass `terminal.integrated.commandsToSkipShell`, setting this to false is particularly useful when you want ctrl+k to go to your shell (not VS Code). "terminal.integrated.allowChords": true, - // Whether to allow menubar mnemonics (eg. alt+f) to trigger the open of the menubar. Note that this will cause all alt keystrokes to skip the shell when true. This does nothing on macOS. + // Whether to allow menubar mnemonics (for example, Alt+F) to trigger the open of the menubar. Note that this will cause all alt keystrokes to skip the shell when true. This does nothing on macOS. "terminal.integrated.allowMnemonics": false, // If enabled, alt/option + click will reposition the prompt cursor to underneath the mouse when `editor.multiCursorModifier` is set to `'alt'` (the default value). This may not work reliably depending on your shell. "terminal.integrated.altClickMovesCursor": true, - // The terminal profile to use on Linux for automation-related terminal usage like tasks and debug. This setting will currently be ignored if #terminal.integrated.automationShell.linux# is set. + // The terminal profile to use on Linux for automation-related terminal usage like tasks and debug. This setting will currently be ignored if `terminal.integrated.automationShell.linux` is set. "terminal.integrated.automationProfile.linux": null, - // The terminal profile to use on macOS for automation-related terminal usage like tasks and debug. This setting will currently be ignored if #terminal.integrated.automationShell.osx# is set. + // The terminal profile to use on macOS for automation-related terminal usage like tasks and debug. This setting will currently be ignored if `terminal.integrated.automationShell.osx` is set. "terminal.integrated.automationProfile.osx": null, - // The terminal profile to use for automation-related terminal usage like tasks and debug. This setting will currently be ignored if #terminal.integrated.automationShell.windows# is set. + // The terminal profile to use for automation-related terminal usage like tasks and debug. This setting will currently be ignored if `terminal.integrated.automationShell.windows` is set. "terminal.integrated.automationProfile.windows": null, // A set of messages that when encountered in the terminal will be automatically responded to. Provided the message is specific enough, this can help automate away common responses. @@ -3465,20 +3473,24 @@ Below are the Visual Studio Code default settings and their values. You can also // Dispatches most keybindings to the terminal instead of the workbench, overriding `terminal.integrated.commandsToSkipShell`, which can be used alternatively for fine tuning. "terminal.integrated.sendKeybindingsToShell": false, - // Controls the icon that will be used for skipped/empty commands. Set to `''` to hide the icon or disable decorations with `terminal.integrated.shellIntegration.decorationsEnabled` + // Controls the icon that will be used for skipped/empty commands. Set to `""` to hide the icon or disable decorations with `terminal.integrated.shellIntegration.decorationsEnabled`. "terminal.integrated.shellIntegration.decorationIcon": "circle-outline", - // Controls the icon that will be used for each command in terminals with shell integration enabled that do have an associated exit code. Set to `''` to hide the icon or disable decorations with `terminal.integrated.shellIntegration.decorationsEnabled`. + // Controls the icon that will be used for each command in terminals with shell integration enabled that do have an associated exit code. Set to `""` to hide the icon or disable decorations with `terminal.integrated.shellIntegration.decorationsEnabled`. "terminal.integrated.shellIntegration.decorationIconError": "error-small", - // Controls the icon that will be used for each command in terminals with shell integration enabled that do not have an associated exit code. Set to `''` to hide the icon or disable decorations with `terminal.integrated.shellIntegration.decorationsEnabled` + // Controls the icon that will be used for each command in terminals with shell integration enabled that do not have an associated exit code. Set to `""` to hide the icon or disable decorations with `terminal.integrated.shellIntegration.decorationsEnabled`. "terminal.integrated.shellIntegration.decorationIconSuccess": "primitive-dot", // When shell integration is enabled, adds a decoration for each command. - "terminal.integrated.shellIntegration.decorationsEnabled": true, + // - both: Show decorations in the gutter (left) and overview ruler (right) + // - gutter: Show gutter decorations to the left of the terminal + // - overviewRuler: Show overview ruler decorations to the right of the terminal + // - never: Do not show decorations + "terminal.integrated.shellIntegration.decorationsEnabled": "both", - // Enable features like enhanced command tracking and current working directory detection. - "terminal.integrated.shellIntegration.enabled": false, + // Determines whether or not shell integration is auto-injected to support features like enhanced command tracking and current working directory detection. + "terminal.integrated.shellIntegration.enabled": true, // Controls the number of recently used commands to keep in the terminal command history. Set to 0 to disable terminal command history. "terminal.integrated.shellIntegration.history": 100, @@ -3495,6 +3507,12 @@ Below are the Visual Studio Code default settings and their values. You can also // - 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. "terminal.integrated.splitCwd": "inherited", + // A theme color ID to associate with terminal icons by default. + "terminal.integrated.tabs.defaultColor": null, + +// A codicon ID to associate with terminal icons by default. + "terminal.integrated.tabs.defaultIcon": "terminal", + // Controls the terminal description, which appears to the right of the title. Variables are substituted based on the context: // - `${cwd}`: the terminal's current working directory // - `${cwdFolder}`: the terminal's current working directory, displayed for multi-root workspaces or in a single root workspace when the value differs from the initial working directory. @@ -3572,6 +3590,12 @@ Below are the Visual Studio Code default settings and their values. You can also // Tasks + // Enable automatic tasks in the folder. + // - on: Always + // - auto: Prompt for permission for each folder + // - off: Never + "task.allowAutomaticTasks": "auto", + // Controls enablement of `provideTasks` for all task provider extension. If the Tasks: Run Task command is slow, disabling auto detect for task providers may help. Individual extensions may also provide settings that disable auto detection. "task.autoDetect": "on", @@ -4245,6 +4269,9 @@ Below are the Visual Studio Code default settings and their values. You can also // Specifies how much information (if any) to log to the Git output. "git.logLevel": "Info", + // Open the merge editor for files that are currently under conflict. + "git.mergeEditor": true, + // Controls whether to open a repository automatically after cloning. // - always: Always open in current window. // - alwaysNewWindow: Always open in a new window. @@ -4299,7 +4326,7 @@ Below are the Visual Studio Code default settings and their values. You can also // List of paths to search for git repositories in. "git.scanRepositories": [], - // Controls whether an action button can be shown in the Source Control view. + // Controls whether an action button is shown in the Source Control view. "git.showActionButton": { "commit": true, "publish": true, diff --git a/docs/supporting/faq.md b/docs/supporting/faq.md index c9c98e6a61..7044e0a265 100644 --- a/docs/supporting/faq.md +++ b/docs/supporting/faq.md @@ -210,7 +210,7 @@ For bugs, feature requests or to contact an extension author, you should use the ## Installation appears to be corrupt [Unsupported] -VS Code does a background check to detect if the installation has been changed on disk and if so, you will see the text **[Unsupported]** in the title bar. This is done since some extensions directly modify (patch) the VS Code product in such a way that is semi-permanent (until the next update) and this can cause hard to reproduce issues. We are not trying to block VS Code patching, but we want to raise awareness that patching VS Code means you are running an unsupported version. [Reinstalling VS Code](/download) will replace the modified files and silence the warning. +VS Code does a background check to detect if the installation has been changed on disk and if so, you will see the text **[Unsupported]** in Help > About. This is done since some extensions directly modify (patch) the VS Code product in such a way that is semi-permanent (until the next update) and this can cause hard to reproduce issues. We are not trying to block VS Code patching, but we want to raise awareness that patching VS Code means you are running an unsupported version. [Reinstalling VS Code](/download) will replace the modified files and silence the warning. You may also see the **[Unsupported]** message if VS Code files have been mistakenly quarantined or removed by anti-virus software (see issue [#94858](https://github.com/microsoft/vscode/issues/94858) for an example). Check your anti-virus software settings and reinstall VS Code to repair the missing files. diff --git a/docs/terminal/images/shell-integration/decoration-menu.png b/docs/terminal/images/shell-integration/decoration-menu.png index 7f4e572c8e..c9724d97c6 100644 --- a/docs/terminal/images/shell-integration/decoration-menu.png +++ b/docs/terminal/images/shell-integration/decoration-menu.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eaf5b1fae95aa09141071fe58c3875b8511477fe30b511f4a1a9cf6fb7d55a5 -size 14159 +oid sha256:5b9a241cb822222ea362c95f6592dabcb0842da44c5ed1cf7f70e7d9a2758053 +size 14700 diff --git a/docs/terminal/images/shell-integration/recent-command.png b/docs/terminal/images/shell-integration/recent-command.png index b4f9704eed..8fa8a84609 100644 --- a/docs/terminal/images/shell-integration/recent-command.png +++ b/docs/terminal/images/shell-integration/recent-command.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ba675b5f44e0562f037c178e9499c2a6374fee61f47e08364038c6a6451b91c -size 9983 +oid sha256:e163c3ed76d01069ecc3e2666fb9a32603603d4b9a9e044e7f07ec6abd27fe7d +size 14051 diff --git a/docs/terminal/shell-integration.md b/docs/terminal/shell-integration.md index 1e963aac32..fc8f2431c6 100644 --- a/docs/terminal/shell-integration.md +++ b/docs/terminal/shell-integration.md @@ -21,71 +21,51 @@ Supported shells: ### Automatic script injection -The standard way to activate shell integration is to set the `terminal.integrated.shellIntegration.enabled` setting to `true`. When enabled, the shell integration script is injected into the shell session via shell arguments and/or environment variables. +By default, the shell integration script should automatically activate on supported shells launched from VS Code. This is done by injecting arguments and/or environment variables when the shell session launches. This automatic injection can be disabled by setting `terminal.integrated.shellIntegration.enabled` to `false`. -This standard, easy way will not work for some advanced use cases like in sub-shells, through ssh (when not using the [Remote - SSH extension](/docs/remote/ssh.md)) or for some complex shell setups. The recommended way to enable shell integration for those is [manual installation](#manual-installation). +This standard, easy way will not work for some advanced use cases like in sub-shells, through a regular `ssh` session (when not using the [Remote - SSH extension](/docs/remote/ssh.md)) or for some complex shell setups. The recommended way to enable shell integration for those is [manual installation](#manual-installation). ### Manual installation -To manually install shell integration, the VS Code shell integration script needs to run during your shell's initialization. Where and how to do this depends on the shell and OS you're using. +To manually install shell integration, the VS Code shell integration script needs to run during your shell's initialization. Where and how to do this depends on the shell and OS you're using. When using manual install it's recommended to set `terminal.integrated.shellIntegration.enabled` to `false`, though not mandatory. -When using manual install it's recommended to set `terminal.integrated.shellIntegration.enabled` to `false`, though not mandatory. +> **Tip:** When using the [Insiders build](https://code.visualstudio.com/insiders), replace `code` with `code-insiders` below. -> ℹ️ The method for calling the script will be simplified in the future (see [vscode#153921](https://github.com/microsoft/vscode/issues/153921)) +#### bash -#### Windows +Add the following to your `~/.bashrc` file. Run `code ~/.bashrc` in bash to open the file in VS Code. -The script below contains `` which must be replaced by VS Code's installation directory. This defaults to: - -- User install: `$env:HOMEPATH\AppData\Local\Programs\Microsoft VS Code\` -- System install: `C:\Program Files\Microsoft VS Code` - -**pwsh** - - Add the following to your [PowerShell profile](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.2), replacing `` with VS Code's installation directory. Run `code $Profile` in pwsh to open the file in VS Code. - - ```pwsh - if ($env:TERM_PROGRAM -eq "vscode") { - . "\resources\app\out\vs\workbench\contrib\terminal\browser\media\shellIntegration.ps1" - } - ``` - -#### Linux and macOS +```sh +[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)" +``` -The script below contains `` which must be replaced by VS Code's installation directory. This defaults to: +#### pwsh -- Linux: Find by running `echo $(dirname "$(readlink -f "$(which code)")")/../resources` -- macOS: `/Applications/Visual\ Studio\ Code.app/Contents/Resources` +Add the following to your [PowerShell profile](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.2). Run `code $Profile` in pwsh to open the file in VS Code. -**bash** +```pwsh +if ($env:TERM_PROGRAM -eq "vscode") { . "$(code --locate-shell-integration-path pwsh)" } +``` - Add the following to your `~/.bashrc` file, replacing `` with VS Code's installation directory. Run `code ~/.bashrc` in bash to open the file in VS Code. +#### zsh - ```sh - if [ "$TERM_PROGRAM" == "vscode" ]; then - . /app/out/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh - fi - ``` +Add the following to your `~/.zshrc` file. Run `code ~/.zshrc` in bash to open the file in VS Code. -**pwsh** - - Add the following to your [PowerShell profile](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.2), replacing `` with VS Code's installation directory. Run `code $Profile` in pwsh to open the file in VS Code. +```sh +[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)" +``` - ```pwsh - if ($env:TERM_PROGRAM -eq "vscode") { - . "/app/out/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1" - } - ``` +#### Portability versus performance -**zsh** +The recommended approach above to install shell integration relies on executing our CLI to find the path to the shell integration script, this is great at it works cross-platform and also with all install types provided `code` in on the `$PATH`. This currently launches Node.js in order to fetch the path though which can add a small delay to shell startup. To reduce this, you can inline the script above by resolving the path ahead of time and adding it directly into your init script. - Add the following to your `~/.zshrc` file. Run `code ~/.zshrc` in bash to open the file in VS Code. +```sh +# Output the executable's path first: +code --locate-shell-integration-path bash - ```sh - if [[ "$TERM_PROGRAM" == "vscode" ]]; then - . /app/out/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh - fi - ``` +# Add the result of the above to the source statement: +[[ "$TERM_PROGRAM" == "vscode" ]] && . "/path/to/shell/integration/script.sh" +``` ## Features @@ -101,34 +81,55 @@ The decorations can be interacted with to give some contextual actions like re-r The command decorations can be configured with the following settings: +- `terminal.integrated.shellIntegration.decorationsEnabled` - `terminal.integrated.shellIntegration.decorationIcon` - `terminal.integrated.shellIntegration.decorationIconSuccess` - `terminal.integrated.shellIntegration.decorationIconError` ### Command navigation -The commands detected by shell integration feed into the command navigation feature (`Ctrl/Cmd+Up`, `Ctrl/Cmd+Down`) to give it more reliable command positions. This feature allows for quick navigation between commands and selection of their output. +The commands detected by shell integration feed into the command navigation feature (`kbStyle(Ctrl/Cmd+Up)`, `kbStyle(Ctrl/Cmd+Down)`) to give it more reliable command positions. This feature allows for quick navigation between commands and selection of their output. Hold `kbStyle(Shift)` as well to select from the current position to the command. ### Run recent command The **Terminal: Run Recent Command** command surfaces history from various sources in a Quick Pick, providing similar functionality to a shell's reverse search (`kbstyle(Ctrl+R)`). The sources are the current session's history, previous session history for this shell type and the common shell history file. -![The "run recent command" command shows a quick pick with previously run commands that can be filtered similar to the go to file command](images/shell-integration/recent-command.png) +![The "run recent command" command shows a quick pick with previously run commands that can be filtered similar to the go to file command](images/shell-integration/recent-command.png) Some other functionality of the command: +- By default the search mode is "contiguous search", meaning the search term must exactly match. The button on the right of the search input allows switching to fuzzy search. - In the current session section, there is a clipboard icon in the right of the Quick Pick that will open the command output in an editor. - `kbstyle(Alt)` can be held to write the text to the terminal without running it. - The amount of history stored in the previous session section is determined by the `terminal.integrated.shellIntegration.history` setting. -There is currently no keybinding assigned by default but you can add your own keyboard shortcut. For example, below `Ctrl+Space` is set for `runRecentCommand`: +There is currently no keybinding assigned by default but you can add your own keyboard shortcut. For example, the below replaces `kbstyle(Ctrl+R)` with `runRecentCommand`, with `kbstyle(Ctrl+Alt+R)` available to fallback to the shell's regular behavior: -```json +```jsonc { - "key": "ctrl+space", + "key": "ctrl+r", "command": "workbench.action.terminal.runRecentCommand", "when": "terminalFocus" }, +// Allow ctrl+r again to go to the next command in the quick pick +{ + "key": "ctrl+r", + "command": "workbench.action.quickOpenNavigateNextInViewPicker", + "when": "inQuickOpen && inTerminalRunCommandPicker" +}, +// Fallback to the shell's native ctrl+r +{ + "key": "ctrl+alt+r", + "command": "workbench.action.terminal.sendSequence", + "args": { "text": "\u0012"/*^R*/ }, + "when": "terminalFocus" +}, +// Have ctrl+c close the quick pick +{ + "key": "ctrl+c", + "command": "workbench.action.closeQuickOpen", + "when": "inQuickOpen && inTerminalRunCommandPicker" +} ``` ### Go to recent directory @@ -139,9 +140,21 @@ Similar to the run recent command feature, the **Terminal: Go to Recent Director ### Current working directory detection -Shell integration tells us what the current working directory is. This information was impossible on Windows previously without a bunch of hacks and required polling on macOS and Linux which isn't good for performance. +Shell integration tells VS Code what the current working directory of the shell is. This information is not possible to get on Windows without trying to detect the prompt through regex and required polling on macOS and Linux which isn't good for performance. + +One of the biggest features this enables is enhanced resolving of links in the terminal. Take a link `package.json` for example, when the link is activated while shell integration is disabled this will open a search quick pick with `package.json` as the filter if there are multiple `package.json` files in the workspace. When shell integration is enabled however, it will open the `package.json` file in the current folder directly because the current location is known. This allows the output of `ls` for example to reliabily open the correct file. + +The current working directory is also used to show the directory in the terminal tab, in the run recent command quick pick and for the `"terminal.integrated.splitCwd": "inherited"` feature. + +### Extended PowerShell keybindings + +Windows' console API allows for more keybindings than Linux/macOS terminals, since VS Code's terminal emulates the latter even on Windows there are some PowerShell keybindings that aren't possible using the standard means due to lack of VT encoding such as `kbstyle(Ctrl+Space)`. Shell integration allows VS Code to attach a custom keybindings to send a special sequence to PowerShell which then gets handled in the shell integration script and forwarded to the proper key handler.The following keybindings should work in PowerShell when shell integration is enabled: -The current working directory is used to resolve links against, showing the directory a recent command ran within as well as the `"terminal.integrated.splitCwd": "inherited"` feature. +- `kbstyle(Ctrl+Space)`: Defaults to `MenuComplete` on Windows only +- `kbstyle(Alt+Space)`: Defaults to `SetMark` on all platforms +- `kbstyle(Shift+Enter)`: Defaults to `AddLine` on all platforms +- `kbstyle(Shift+End)`: Defaults to `SelectLine` on all platforms +- `kbstyle(Shift+Home)`: Defaults to `SelectBackwardsLine` on all platforms ## Supported escape sequences @@ -183,7 +196,6 @@ There are several cases where automatic injection doesn't work, here are some co PROMPT_COMMAND=prompt ``` -- `$HISTCONTROL` contains the `erasedups` option, this changes functionality of the `history` command that shell integration depends upon. - Some shell plugins may disable VS Code's shell integration explicitly by unsetting `$VSCODE_SHELL_INTEGRATION` when they initialize. ### Why are command decorations showing when the feature is disabled? @@ -191,7 +203,7 @@ There are several cases where automatic injection doesn't work, here are some co The likely cause of this is that your system has shell integration for another terminal installed that [VS Code understands](#final-term-shell-integration). If you don't want any decorations, you can hide them with the following setting: ```json -"terminal.integrated.shellIntegration.decorationsEnabled": false +"terminal.integrated.shellIntegration.decorationsEnabled": never ``` Alternatively, you could remove the shell integration script from your shell rc/startup script but you will lose access to command-aware features like [command navigation](#command-navigation). diff --git a/release-notes/images/1_70/azure-dev-cli-extension.png b/release-notes/images/1_70/azure-dev-cli-extension.png new file mode 100644 index 0000000000..330132c45a --- /dev/null +++ b/release-notes/images/1_70/azure-dev-cli-extension.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d01e85ef357ae2a2e758666f0ba267ab7e60aa78f35d9f0a977f247ba4a817 +size 62855 diff --git a/release-notes/images/1_70/clear-display-language.png b/release-notes/images/1_70/clear-display-language.png new file mode 100644 index 0000000000..2cc6c9f0bc --- /dev/null +++ b/release-notes/images/1_70/clear-display-language.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:248fd6b96a4a16a61dbb29b5dda89cb4dabf3e5606f4c10e5ceafa79a742de70 +size 174072 diff --git a/release-notes/images/1_70/code-action-all.gif b/release-notes/images/1_70/code-action-all.gif new file mode 100644 index 0000000000..a6c5455df8 --- /dev/null +++ b/release-notes/images/1_70/code-action-all.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03bd18022fb27f9913645d1901a97163db167f140d7ff6e954564c49bd516c3e +size 498872 diff --git a/release-notes/images/1_70/debug-sessions.gif b/release-notes/images/1_70/debug-sessions.gif new file mode 100644 index 0000000000..28ea192dc5 --- /dev/null +++ b/release-notes/images/1_70/debug-sessions.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ed9e84af383c5122344bb8c3016ab980818e3d64f42aee682418becd4738852 +size 171666 diff --git a/release-notes/images/1_70/go-to-most-recently-failed-cell.gif b/release-notes/images/1_70/go-to-most-recently-failed-cell.gif new file mode 100644 index 0000000000..62e378c312 --- /dev/null +++ b/release-notes/images/1_70/go-to-most-recently-failed-cell.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8840c3fede5751a5801650a3f3dead4d45f01fab2699d5201d72edf9044dadb2 +size 604559 diff --git a/release-notes/images/1_70/interactive-window-restore.gif b/release-notes/images/1_70/interactive-window-restore.gif new file mode 100644 index 0000000000..4fedc6a858 --- /dev/null +++ b/release-notes/images/1_70/interactive-window-restore.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b87d5afbf15c6ac818f0a1e0967a0a0ad5dbe75bc0ed52c341f4e016c51ce9a +size 516961 diff --git a/release-notes/images/1_70/interpreter-info.png b/release-notes/images/1_70/interpreter-info.png new file mode 100644 index 0000000000..fab69d708e --- /dev/null +++ b/release-notes/images/1_70/interpreter-info.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:013fdad4bf8dd81cee0871851e236edef7c37d3b2710e7e54d4baa345a40374e +size 15285 diff --git a/release-notes/images/1_70/macos-title-bar-zooming.gif b/release-notes/images/1_70/macos-title-bar-zooming.gif new file mode 100644 index 0000000000..2c64407c90 --- /dev/null +++ b/release-notes/images/1_70/macos-title-bar-zooming.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10ab7a7be7665e8fa1a79d1965b6a98906235a53c733f16fbd9741c485765438 +size 260143 diff --git a/release-notes/images/1_70/manual-folding-range.gif b/release-notes/images/1_70/manual-folding-range.gif new file mode 100644 index 0000000000..55f96b2ccd --- /dev/null +++ b/release-notes/images/1_70/manual-folding-range.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a516e68c2d06f246490dd3ebcd55860910b3a8ef47d7f8bc92e00428addda3ac +size 352438 diff --git a/release-notes/images/1_70/menu-bar-folding.gif b/release-notes/images/1_70/menu-bar-folding.gif new file mode 100644 index 0000000000..f64a23fab7 --- /dev/null +++ b/release-notes/images/1_70/menu-bar-folding.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9b51821376f28bb706b4bc5077f10a573b6f458cb6ff6b544369c4c500614ae +size 1422324 diff --git a/release-notes/images/1_70/new-file.png b/release-notes/images/1_70/new-file.png new file mode 100644 index 0000000000..6645f69c73 --- /dev/null +++ b/release-notes/images/1_70/new-file.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe5602833e96e321f6e82e7b64d50e2d92c59d69cd45cfb2cd2fc42722f9ea10 +size 23106 diff --git a/release-notes/images/1_70/qute-html-participant.gif b/release-notes/images/1_70/qute-html-participant.gif new file mode 100644 index 0000000000..6b10e44d88 --- /dev/null +++ b/release-notes/images/1_70/qute-html-participant.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee17278ff28101c452e7aa661e28d3dae5e4005efe0fcda758525ded91d059ee +size 419874 diff --git a/release-notes/images/1_70/restored-folding-ranges.gif b/release-notes/images/1_70/restored-folding-ranges.gif new file mode 100644 index 0000000000..9002e1a993 --- /dev/null +++ b/release-notes/images/1_70/restored-folding-ranges.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1beb5c4786ff91c0ff24d87db50293ad63699e92b0c4a4d582a86ef999c28ef9 +size 198000 diff --git a/release-notes/images/1_70/search-decorations.png b/release-notes/images/1_70/search-decorations.png new file mode 100644 index 0000000000..bf2a971738 --- /dev/null +++ b/release-notes/images/1_70/search-decorations.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d367f328f6c162dd76123a54c7b2b96d12701af61a044967617c7120650b634d +size 89269 diff --git a/release-notes/images/1_70/search-multiselect.gif b/release-notes/images/1_70/search-multiselect.gif new file mode 100644 index 0000000000..c796c8de3c --- /dev/null +++ b/release-notes/images/1_70/search-multiselect.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:614075ae92cf46f8b05bfe95b881fbdf594c43102d778de15caaaa71e01fa3ea +size 849527 diff --git a/release-notes/images/1_70/set-display-language.png b/release-notes/images/1_70/set-display-language.png new file mode 100644 index 0000000000..2600045dec --- /dev/null +++ b/release-notes/images/1_70/set-display-language.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76399cd413bf9968f0bb8b6fd333444040fcc2e4ab78b86054cea7ad989c6352 +size 378513 diff --git a/release-notes/images/1_70/settings-profiles.gif b/release-notes/images/1_70/settings-profiles.gif new file mode 100644 index 0000000000..3dd5d1ad7d --- /dev/null +++ b/release-notes/images/1_70/settings-profiles.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:621db685d9f5d77961d7300462175c208973bd6e2d45053768801afeec70c447 +size 1038363 diff --git a/release-notes/images/1_70/sticky-scroll.gif b/release-notes/images/1_70/sticky-scroll.gif new file mode 100644 index 0000000000..3e0d2e17b2 --- /dev/null +++ b/release-notes/images/1_70/sticky-scroll.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8d543e35f10a136763ff82e0f4eb8e4e207ea411a0507e2a8604dfb07da4318 +size 784470 diff --git a/release-notes/images/1_70/system-context-menu.png b/release-notes/images/1_70/system-context-menu.png new file mode 100644 index 0000000000..aea955d1d0 --- /dev/null +++ b/release-notes/images/1_70/system-context-menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ef9404496fc2e6c47004231e8166383749ab83cbc2dd511dc3eda99af502b2 +size 13425 diff --git a/release-notes/images/1_70/terminal-curve-render.png b/release-notes/images/1_70/terminal-curve-render.png new file mode 100644 index 0000000000..771d7f5bae --- /dev/null +++ b/release-notes/images/1_70/terminal-curve-render.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54f062345834626f58e9e7d48847bde96ff62f1d1d321ddaf24b2b1ab50cfc69 +size 2380 diff --git a/release-notes/images/1_70/terminal-nav-feedback.png b/release-notes/images/1_70/terminal-nav-feedback.png new file mode 100644 index 0000000000..c64764dca7 --- /dev/null +++ b/release-notes/images/1_70/terminal-nav-feedback.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61afdb26a332d9e67372dc4fe5aaef9e9824a8a7aabefe04931c32c767974641 +size 4498 diff --git a/release-notes/images/1_70/terminal-render-clip.png b/release-notes/images/1_70/terminal-render-clip.png new file mode 100644 index 0000000000..1606aaa373 --- /dev/null +++ b/release-notes/images/1_70/terminal-render-clip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6249488c298b12da5b985376eb979f377aebfeedf442c6e581cf8dd4d02da104 +size 2452 diff --git a/release-notes/images/1_70/terminal-render-px.png b/release-notes/images/1_70/terminal-render-px.png new file mode 100644 index 0000000000..c6d12ff0b1 --- /dev/null +++ b/release-notes/images/1_70/terminal-render-px.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0c12d56891c03b06fb72f97e731540c9f102017099ef62501355fb2b0a1a53f +size 2103 diff --git a/release-notes/images/1_70/terminal-semi-circle.png b/release-notes/images/1_70/terminal-semi-circle.png new file mode 100644 index 0000000000..919bfece97 --- /dev/null +++ b/release-notes/images/1_70/terminal-semi-circle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ede52ef66b665dce683de25e3cb9bcd711f8e346118e3bcbd7ff163f15bdb824 +size 15021 diff --git a/release-notes/images/1_70/terminal-si-config.png b/release-notes/images/1_70/terminal-si-config.png new file mode 100644 index 0000000000..94300dd78e --- /dev/null +++ b/release-notes/images/1_70/terminal-si-config.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48e9105ed338234959b9dc3722b912bb218373726f7c69057759ea5f85cb1966 +size 10071 diff --git a/release-notes/images/1_70/terminal-si-intro.png b/release-notes/images/1_70/terminal-si-intro.png new file mode 100644 index 0000000000..99c8aa3cf1 --- /dev/null +++ b/release-notes/images/1_70/terminal-si-intro.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d2a7e74a19285bf8c93343d7b2b15791a46576fdcc21b7323f25ebc329ce3b2 +size 9156 diff --git a/release-notes/images/1_70/terminal-si-multi-line.png b/release-notes/images/1_70/terminal-si-multi-line.png new file mode 100644 index 0000000000..1dc8dcbf3d --- /dev/null +++ b/release-notes/images/1_70/terminal-si-multi-line.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f530a773656caf776015a3d5e6b0215fd81eac5c047b66a39c9bb1233cd47a0 +size 3747 diff --git a/release-notes/images/1_70/terminal-si-run-recent-command.gif b/release-notes/images/1_70/terminal-si-run-recent-command.gif new file mode 100644 index 0000000000..5ed49c773d --- /dev/null +++ b/release-notes/images/1_70/terminal-si-run-recent-command.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad2cd98a44dab84d5aff419057371f32e7f3ac571f4fdf689f1d57f8043307ba +size 85194 diff --git a/release-notes/images/1_70/title-bar-context-menu.png b/release-notes/images/1_70/title-bar-context-menu.png new file mode 100644 index 0000000000..ef9714a7b8 --- /dev/null +++ b/release-notes/images/1_70/title-bar-context-menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d01cc75b2628053dd4845579b72a83807d2e42ea0d535712e8f2c69fbda47b4 +size 81947 diff --git a/release-notes/images/1_70/tree-filter.gif b/release-notes/images/1_70/tree-filter.gif new file mode 100644 index 0000000000..765251b7e7 --- /dev/null +++ b/release-notes/images/1_70/tree-filter.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37dde7fd3d13a84582212e32dfe96726066ae99c796acca34e56cfb5bc506390 +size 3565573 diff --git a/release-notes/v1_48.md b/release-notes/v1_48.md index 7acfa57298..2fa38a43ca 100644 --- a/release-notes/v1_48.md +++ b/release-notes/v1_48.md @@ -1,5 +1,5 @@ --- -Order: 57 +Order: TOCTitle: July 2020 PageTitle: Visual Studio Code July 2020 MetaDescription: Learn what is new in the Visual Studio Code July 2020 Release (1.48) diff --git a/release-notes/v1_70.md b/release-notes/v1_70.md index 7bb4292b9d..4751ace10d 100644 --- a/release-notes/v1_70.md +++ b/release-notes/v1_70.md @@ -1,5 +1,5 @@ --- -Order: +Order: 79 TOCTitle: July 2022 PageTitle: Visual Studio Code July 2022 MetaDescription: Learn what is new in the Visual Studio Code July 2022 Release (1.70) @@ -20,6 +20,587 @@ Until the July milestone release notes are available, you can still track our pr We really appreciate people trying our new features as soon as they are ready, so check back here often and learn what's new. - +## Workbench + +### Easier title bar customization + +For those using the custom title bar, the default on Windows, macOS, and the web, you may have noticed that we are introducing more interactive content to the title bar. While there are already settings to hide each of these elements individually, you can now right-click the title bar to access a context menu that toggles the menu bar (not shown on macOS desktop), [Command Center](https://code.visualstudio.com/updates/v1_69#_command-center), and layout controls. + +![title bar context menu](images/1_70/title-bar-context-menu.png) + +For Windows users expecting the system context menu, the menu can still be triggered by right-clicking the VS Code icon in the top left corner of the window or by pressing `Alt+Space`. Mouse position is used to determine the behavior when triggering with `Alt+Space`, so the custom menu will appear if it sits on top of the title bar. + +![system context menu](images/1_70/system-context-menu.png) + +For Linux users, due to [issue #156397](https://github.com/microsoft/vscode/issues/156397), the empty space in the title bar will not open a context menu. You must right-click one of the items in the title bar that you would like to hide. + +### Improved menu bar folding + +With the addition of the Command Center, we tried shrinking the menu bar to a hamburger menu to make space. After hearing user feedback, we switched back to the old menu bar folding behavior until most of the menu is collapsed and only then switch to the hamburger menu. + +![responsive menu bar folding](images/1_70/menu-bar-folding.gif) + +### Accessible macOS title bar zoom + +Also as part of improving the Command Center experience, when interactive components are present in the title bar on macOS, the title bar will now zoom with the rest of the UI for increased accessibility. + +![macOS title bar zooming](images/1_70/macos-title-bar-zooming.gif) + +### Fold selection + +The command **Create Manual Folding Ranges from Selection** (`kb(editor.createFoldingRangeFromSelection)`) creates a folding range from the currently selected lines and collapses it. The range is called a **manual** folding range and goes on top of the ranges computed by folding providers. + +Manual folding ranges can be removed again with the command **Remove Manual Folding Ranges** (`kb(editor.removeManualFoldingRanges)`). + +![manual folding ranges](images/1_70/manual-folding-range.gif) + +### Preserve folded ranges + +VS Code now keeps folded ranges, even if the folding range is no longer part of the ranges computed by a folding provider. A typical example is when the user comments out the file, starts a string literal, or creates a syntax error that makes it impossible to create all the ranges. Such folded ranges become 'recovered' ranges. They are removed once the folding provider comes back with ranges at the same location or by using the command **Remove Manual Folding Ranges**. + +![restored folding ranges](images/1_70/restored-folding-ranges.gif) + +### Hide folding controls + +The folding controls in the gutter can now be hidden with the setting `"editor.showFoldingControls": "never"`. Folding ranges can still be expanded and collapsed using the folding commands and shortcuts. + +### 3-way merge editor improvements + +We continued polishing the new 3-way merge editor and enabled it by default in this release. The merge editor can be opened by clicking on a conflicting file in the SCM view. + +Highlights are commands to accept all changes from one side, improved context menus, tweaked diff colors, and the greater emphasis on conflicting versus non-conflicting changes. + +We also started exploring alternative diffing algorithms to improve precision of merge conflicts. If you encounter a suboptimal change highlighting or alignment in either the diff or the merge editor, we would like to track these cases in our GitHub issue tracker! + +### New command line option --merge + +You can now use command line options to bring up the merge editor in VS Code: + +```bash +-m --merge Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions and the output file to save merge results. +``` + +This enables you to use VS Code as a merge tool for Git, for example, if you configure this in `.gitconfig`: + +```properties +[merge] + tool = code-insiders +[mergetool "code-insiders"] + cmd = code-insiders --wait --merge $REMOTE $LOCAL $BASE $MERGED +``` + +### Search file decorations + +Search results in the Search view now feature file decorations and colors to express the file's problems and source control information. This is similar to [how they are already shown in the File Explorer](https://code.visualstudio.com/updates/v1_26#_custom-view-file-resource-decorations). + +![Search file decorations](images/1_70/search-decorations.png) + +### Search multi-select + +The Search view now also supports multi-select. Any actions (for example, dismiss or replace) that you perform on one result in the selection will also be performed on the other selected items. + +![Search multi-select Demo](images/1_70/search-multiselect.gif) + +### Tree find control + +Tree views, such as the File Explorer, now support the Find control. You can press `kb(list.find)` inside trees to pop up the Find control. You can use the Find control to highlight matched elements or toggle the **Filter** button to hide all elements that do not match the search term. + +![Tree Find control](images/1_70/tree-filter.gif) + +### Arbitrary file creations via New File + +The **File** > **New File...** (or **New File...** link on the getting started page) experience has been improved to allow for arbitrary file creation. You can now type a file name in the quick input box to create the file on disk. + +![A input box with test.js inputted into it and the entry New File(test.js) selected](images/1_70/new-file.png) + +## Editor + +### Experimental: Code Actions Widget + +We have been working to provide a better experience with **Code Actions** in VS Code. [Code Actions](https://code.visualstudio.com/docs/editor/refactoring#_code-actions-quick-fixes-and-refactorings) include [Refactorings](https://code.visualstudio.com/Docs/languages/typescript#_refactoring), Source Actions, and Quick Fixes. + +The new experimental Code Actions Widget can be opened from the [Context Menu](https://code.visualstudio.com/api/ux-guidelines/context-menus) by hitting Recactor or Source Actions, from the Lighbulb Widget, or from Quick Fixes (Quick Fix Menu). Try it out via the `editor.contrib.experimental.codeActionWidget.enabled` setting. Let us any feedback you have on the widget by creatibng issues in the [VS Code repository](https://github.com/microsoft/vscode/issues) or commenting in [issue #152913](https://github.com/microsoft/vscode/issues/152913). + + +![Code Action Widget demo, showing widget access from the context menu, the lightbulb widget, and quick fix.](images/1_70/code-action-all.gif) + + +In this milestone, we also added support for **Custom Keybindings** in the Code Action Widget, which includes the Quick Fix Menu (`Ctrl + .`). You can try it out by adding the following snippet with your desired custom keybindings to `keybindings.json`. + +```json +[ + { + "key": "ctrl+k", + "when": "CodeActionMenuVisible", + "command": "focusPreviousCodeAction" + }, + { + "key": "ctrl+j", + "when": "CodeActionMenuVisible", + "command": "focusNextCodeAction" + } +] +``` + +## Terminal + +### Shell integration enabled by default + +Shell integration's automatic injection that [was moved out of preview last release](https://code.visualstudio.com/updates/v1_69#_shell-integration) is now enabled by default. For supported shell setups (most bash/zsh/pwsh configurations), it should all just work without any changes and you should see command decorations: + +![When shell integration is enabled, blue, red and grey circles appear next to commands run in the terminal](images/1_70/terminal-si-intro.png) + +_Theme: [Sapphire Theme](https://marketplace.visualstudio.com/items?itemName=Tyriar.theme-sapphire)_ + +If the feature doesn't light up automatically, you will need to set up [manual installation](https://code.visualstudio.com/docs/terminal/shell-integration#_manual-installation), which has been [simplified in this release](#more-shell-integration-configuration-options). + +Automatic injection is enabled when the `terminal.integrated.shellIntegration.enabled` setting is set to `true`, add this to your `settings.json` file to disable the feature: + +```json +"terminal.integrated.shellIntegration.enabled": "false" +``` + +This will disable only VS Code's shell integration injection. Even when disabled, if your setup has shell integration enabled for some other terminal VS Code understands, [it will pick those up](https://code.visualstudio.com/docs/terminal/shell-integration#_final-term-shell-integration). If you don't like the command and/or scroll bar decorations, [you can disable just their display](#more-shell-integration-configuration-options), while still taking advantage of the [extra functionality](https://code.visualstudio.com/docs/terminal/shell-integration#_features) shell integration brings. + +### Simplified shell integration manual install + +Previously manual install took several steps and was platform and shell specific. The new manual install uses our `code` CLI to fetch the shell integration script, which means it works cross-platform and when connected to a remote window, meaning you can sync it in your dotfiles and it should just work. + +```sh +# Manual install on bash +[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)" +``` + +You can read more about how to install shell integration for other shells at [Terminal shell integration](https://code.visualstudio.com/docs/terminal/shell-integration#_manual-installation). + +### More shell integration configuration options + +The new setting `terminal.integrated.shellIntegration.decorationsEnabled` allows configuring command decorations to display in the `gutter`, the `overviewRuler`, or neither. This is available in the context menu for easy access, along with configuring the icons: + +![The command decoration context menu contains the new option Configure Command Decorations](images/1_70/terminal-si-config.png) + +### Default color and icon tab settings + +The default icon and terminal tab color can be set now per folder using `terminal.integrated.tabs.defaultIcon` and `terminal.integrated.tabs.defaultColor`. + +### Extended PowerShell keybindings + +There are additional PowerShell keybindings, such as `kbstyle(Ctrl+Space)`, thanks to shell integration. These weren't possible before due to the lack of VT encoding. Provided that shell integration is working in pwsh, the following keybindings should now work: + +* `kbstyle(Ctrl+Space)` - Defaults to `MenuComplete` on Windows only. +* `kbstyle(Alt+Space)` - Defaults to `SetMark`. +* `kbstyle(Shift+Enter)` - Defaults to `AddLine`. +* `kbstyle(Shift+End)` - Defaults to `SelectLine`. +* `kbstyle(Shift+Home)` - Defaults to `SelectBackwardsLine`. + +This applies to **all platforms**, even Linux/macOS where those keys are normally possible. The defaults can always be reset in your pwsh profile with `Set-PSReadLineKeyHandler`. If there are additional keybindings that you expect, [please let us know](https://github.com/microsoft/vscode/issues/new). + +### Run recent command as a replacement for reverse search + +When shell integration is enabled, we're aiming run recent command to be a cross-shell drop in replacement for the shell's reverse search (`kbstyle(Ctrl+R)`). There is a new contiguous search mode that is the default when triggering the command. This behaves like `kbstyle(Ctrl+R)` in most shells, with the option of switching back to fuzzy search: + +![Run recent command's contiguous search will match the search term exactly, toggle Fuzzy Search to switch to fuzzy searching](images/1_70/terminal-si-run-recent-command.gif) + +The new `inTerminalRunCommandPicker` context key is available that allows setting up a keybinding like `kbStyle(Ctrl+R)` to go to the next match. For example, the following keybindings are now a fairly complete replacement for your shell's reverse search, with `kbstyle(Ctrl+Alt+R)` as a fallback to the old behavior: + +```json +{ "key": "ctrl+r", "command": "workbench.action.terminal.runRecentCommand", "when": "terminalFocus" }, +{ "key": "ctrl+alt+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u0012"/*^R*/ }, "when": "terminalFocus" }, +{ "key": "ctrl+r", "command": "workbench.action.quickOpenNavigateNextInViewPicker", "when": "inQuickOpen && inTerminalRunCommandPicker" }, +{ "key": "ctrl+c", "command": "workbench.action.closeQuickOpen", "when": "inQuickOpen && inTerminalRunCommandPicker" }, +``` + +Multi-line commands now display a new line symbol where appropriate and will also use bracketed paste mode, meaning they are treated as if they were pasted for supporting shells. This typically means they will all be added to the same prompt instead of executing them separately. + +![Run recent command now shows the "Return Symbol" Unicode character (⏎, U+23CE) to visualize new lines](images/1_70/terminal-si-multi-line.png) + +### Other shell integration improvements + +Here are the smaller improvements to shell integration: + +* Command navigation has improved visual feedback, showing the "focus border" briefly and then keeping a persistent rectangle in the gutter to help better orient the user after jumping around the buffer. + + ![A solid rectangle the color of your themes focus color now appears to the left of the command being navigated to](images/1_70/terminal-nav-feedback.png) + +* The new `workbench.action.terminal.copyLastCommand` command is available to allow a keybinding to copy the last command's output (shortcut for `kbStyle(Ctrl/Cmd+Shift+Up)`, `kbStyle(Ctrl/Cmd+C)`, `kbStyle(Escape)`, `kbStyle(Ctrl/Cmd+End)`). + +* Bash shell integration + * More `$PROMPT_COMMAND` formats are supported. + * Shell integration should work even better when the [`bash-preexec`](https://github.com/rcaloras/bash-preexec) helper is being used already. + +### Rendering improvements + +Several improvements were made to terminal rendering when GPU acceleration is enabled: + +* Semi-circle Powerline symbols are now custom rendered. Like the arrow symbols in the previous release, these should blend seamlessly with adjacent cells and extend to the height of the cell even when line height is used. + + ![Semi-circle Powerline symbols now render without needing to configure a font](images/1_70/terminal-semi-circle.png) + +* Round cornered box drawing characters (`╭`, `╮`, `╰`, `╯`) now use a smoother curve. + + ![These round corner symbols now use render as perfect 1/4 circles](images/1_70/terminal-curve-render.png) + +* Improved clipping of glyphs when background color changes, this was commonly seen when `npm` output a warning. + + ![Wide characters like W used to sometimes escape the background of a cell, when the background of the text was yellow the W in "WARN" for example could show unexpected yellow pixels in the top left which no longer happens](images/1_70/terminal-render-clip.png) + +* Similar to the clipping problem above, an issue where the anti-aliasing in some glyphs would overlap other characters could really degrade the visuals. This problem is most easily illustrated using a background example like above. A pixel in the `k` of `Work` could also escape the bounds of the cell in the other direction, this pixel will no longer appear in the glyph at all since it's removed for being essentially the same color as the background. + + ![A pixel in `k` could overlap with the cell to the right, in this case that pixel may not be rendered at all if the difference in color and the background is small](images/1_70/terminal-render-px.png) + +## Tasks + +### Filter support for run task command + +The **Tasks: Run Task** action supports filtering by task name and type for a more concise and configurable way to select and execute tasks. + +For example: + +```json +args: { + task: "VS Code - Build" + type: "npm" +} +``` + +### Improved automatic tasks flow + +The Trusted Workspace feature has allowed us to simplify the flow for running automatic tasks. By default, these will run if a folder is trusted and prompt once per folder otherwise. This can be configured via `task.allowAutomaticTasks`. + +## Source Control + +### Action button improvements + +We continued to polish the Source Control action button based on user feedback: + +* The **Sync Changes** action button is only shown when there is a high degree of certainty that the local branch is either ahead or behind the remote tracking branch. +* The **Commit** action button is only enabled based on the list of changed resources while factoring in the smart commit settings - `git.enableSmartCommit`, `git.suggestSmartCommit`, `git.smartCommitChanges`. +* The **Commit** action button icon is updated based on the branch protection settings - `git.branchProtection`, `git.branchProtectionPrompt`. + +### Improved rebase conflict resolution + +This milestone we addressed some paper cuts in the rebase flow when resolving merge conflicts. Users should now be able to continue the rebase operation using the **Commit** button in the Source Control view after resolving all merge conflicts. + +### Commit input field spell checking + +This milestone we validated that all the necessary extension APIs are available to support spell checking for the commit input field. We reached out to the authors of two popular spell checking extensions and submitted pull requests illustrating how to update their extensions to provide spell checking for the commit input field. + +## Debugging + +### JavaScript debugging + +When you create a launch config to debug a JavaScript/TypeScript program, you can set `"console": "integratedTerminal"` to run that program in a terminal (rather than the process being spawned directly). A few months ago, we noticed that `"args"` in the launch config were partly escaped for the shell, but not entirely. This meant that attempting to pass an argument to your program could accidentally trigger special behavior in your shell. We cleaned this up, then realized that setting arguments that include characters with special meanings for the shell is a useful thing to do, and that some users were relying on this behavior. We debated the correct fix and decided that this behavior should be opt-in, and that changes to the [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) (DAP) were required. We made [this change to DAP](#argsCanBeInterpretedByShell-for-RunInTerminalRequest), implemented it in VS Code and in js-debug, and other debug adapters should be soon to follow. + +Here's how to use the new behavior in a node launch config. + +```jsonc +{ + "type": "node", + "console": "integratedTerminal", + ... + + // If you pass args as a single string, the characters will not be escaped for the terminal, so the + // command in backticks will be evaluated, and output will be redirected to "outfile". The user is + // responsible for knowing the type of shell that this will be run in, and doing any escaping necessary. + "args": "`echo hello` > outfile", + + // If you pass args as an array, the characters will be escaped for the terminal so that the program + // receives them verbatim. + "args": ["`echo hello` > outfile"] +} +``` + +### Picker for debug sessions + +When debugging, you can now run **Debug: Select Debug Session** in the Command Palette. This shows a picker with your active debug sessions, which you can use to search and filter your individual debug sessions. The description for each picker item will show the session that spawned it, if applicable. Selecting an item in the picker will open the Debug Console from within the context of the selected debug session. + +![Debug Session Picker Demo](images/1_70/debug-sessions.gif) + +## Languages + +### Keep newlines when formatting JSON + +You can now keep the initial line position when formatting a line in a JSON documents. For example, an array containing values on one line will still contain these values on the same line after formatting. To enable this feature, set the option **JSON > Format: Keep Lines** in the Setting editor. + +## Notebooks + +### Go to Most Recently Failed Cell + +If your most recently run cell failed, there is now a button that will jump to that cell. You can also run **Notebook: Go to Most Recently Failed Cell** to perform the same action. + +This is useful when you run a group of cells and want to know which cell failed and halted the group execution. + +![Go To Most Recently Failed Cell Demo](images/1_70/go-to-most-recently-failed-cell.gif) + +## VS Code for the Web + +### Set Display Language + +You can now set the display language of the browser using **Set Display Language** button available on the language pack extension. + +![Set Display Language](images/1_70/set-display-language.png) + +Once set, you can clear the display language by using the **Clear Display Language** button on the currently set language pack extension. + +![Clear Display Language](images/1_70/clear-display-language.png) + +## Contributions to extensions + +### Python + +#### Experimental extension: WWBD + +There is a new experimental Python extension named [WWBD](https://marketplace.visualstudio.com/items?itemName=brettcannon.wwbd) that acts as a sandbox for environment workflow ideas. As of now, there is a **Create Environment** command for virtual environments to see if a single command can help users set up a new virtual environment (see the WWBD extension page for the full details and other extension features). You can read the [Ideas category](https://github.com/brettcannon/WWBD/discussions/categories/ideas) in the project repository for other ideas that are being considered, including conda support. + +#### New Getting started experience + +We've polished the Python walkthrough flow so users can smoothly transition to installing Python if they need to. A Windows Store or appropriate walkthrough tile is opened when Python is not installed and users can now auto-run the displayed instructions. Any prompts related to interpreters are only shown when a user action requires one, and not on start-up. Also, UI prompts have been improved to be more precise about errors and suggested changes. + +#### Interpreter information in the Status bar + +A new setting `python.interpreter.infoVisibility` was added, which controls when information about the selected interpreter is displayed in the Status bar. It can be set to `always` to revert to the old behavior where the selected interpreter is displayed regardless of what file is opened. By default, interpreter information will only be shown when Python-related files are opened (`onPythonRelated`). A warning status is added to indicate situations when the selected interpreter is invalid: + +![Interpreter information in the Status bar](images/1_70/interpreter-info.png) + +#### Automatic debug configurations +We have implemented in the python extension the Visual Studio Code's automatic debug configuration feature, which allows us to analyze the current project and provide the user with quality debug configurations automatically that do not require additional configuration by the user. + +We can recognize Django, FastApi vs Flask project, as well as a simple python file. + +In the Visual Studio Code documentation you can check how the [automatic debug configuration](https://code.visualstudio.com/updates/v1_45#_automatic-debug-configurations) works and [some improvements](https://code.visualstudio.com/updates/v1_46#_automatic-debug-configurations-improvements) that we made. + +![Flask Automatic debug configuration](images/1_70/automatic-debug-configuration.gif) + + +### Jupyter + +#### Copy plot images to clipboard +It is now possible to copy plots in cell outputs to the clipboard. + +Make sure you have the correct presentation selected as only png ouput is currently supported: +![image](https://user-images.githubusercontent.com/2019016/180049546-3afb2d96-fc83-4ed2-9fe9-6e7673a43ab2.png) +![image](https://user-images.githubusercontent.com/2019016/180049629-34731067-7491-4927-a30f-d9ae721870d3.png) + +#### Web extension +The following features were ported to the web extension: + +* Plot viewer +* Dataframe viewer + +If you'd like to experiment with the functionality, launch Jupyter from your local machine with: + +jupyter notebook --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net +And then connect to it using the command Jupyter: Specify Jupyter server for connections from within vscode.dev. + +For more information (and to comment), see this [discussion item](https://github.com/microsoft/vscode-jupyter/discussions/10315). + +#### Interactive Window restore + +Interactive Window sessions can now be restored across VS Code window reloads by turning on setting `interactiveWindow.restore`. + +![Interactive Window restore](images/1_70/interactive-window-restore.gif) + +**Limitations**: Raw kernel states are not persistent across window reloads (see more information in this [discussion item](https://github.com/microsoft/vscode-jupyter/issues/6420)). If you are using remote jupyter server, Interactive Window will be connected to previous kernel sessions on reloads. + + +## Preview features + +### Sticky scroll + +It is now possible to display UI showing in which scope the user is in during scrolling. The sticky scroll UI will show in which class/interface/namespace/function/method/constructor the top of the editor is in, allowing for easier localization within a document. + +!["Sticky scroll" Demo](images/1_70/sticky-scroll.gif) + +### TypeScript 4.8 support + +This update includes support for the upcoming TypeScript 4.8 release. See the [TypeScript 4.8 iteration plan](https://github.com/microsoft/TypeScript/issues/49074) for more details on what the TypeScript team is currently working on. + +To start using the TypeScript 4.8 nightly builds, install the [TypeScript Nightly](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next) extension. + +### Settings Profiles + +We have been working the last couple of months to support **Settings Profiles** in VS Code, which is one of the most popular asks from the community. This feature is available for preview in the [Insiders](https://code.visualstudio.com/insiders/) release via `workbench.experimental.settingsProfiles.enabled` setting. Try it out and let us know your feedback by creating issues in the [VS Code repository](https://github.com/microsoft/vscode/issues) or commenting in [issue #116740](https://github.com/microsoft/vscode/issues/116740). + +In this milestone, we also added support for **Settings Profiles** in VS Code for the Web. You can try it out using [insiders.vscode.dev](https://insiders.vscode.dev) and the same `workbench.experimental.settingsProfiles.enabled` setting. + +![Settings Profiles demo, showing the theme, zoom level, and Activity bar position changing as the profile is switched](images/1_70/settings-profiles.gif) + +_Theme: [Light Pink](https://marketplace.visualstudio.com/items?itemName=mgwg.light-pink-theme)_ + +### Task reconnection + +On window reload, watch tasks can be reconnected to by enabling `task.experimental.reconnection`, which results in a faster return to work following an extension change or VS Code version update. + +## Extension Authoring + +### 'not in' operator for 'when' clauses + +There is an operator that already exists for when clauses, `in`, which allows for dynamic lookup of a context key's value within another context key with an array or object-type value. We've added a new operator `not in`, which negates this. See the [when clause contexts](https://code.visualstudio.com/api/references/when-clause-contexts#in-and-not-in-conditional-operators) documentation for details. + +### htmlLanguageParticipants contribution point + +A new contribution point `htmlLanguageParticipants` allows HTML-like languages to declare that they want to inherit all HTML language server features such as code completions, hovers, and outline. This is useful for programming language extensions that don't want to implement a full language server. + +An example is the built-in `handlebars` extension that now adds itself to the `htmlLanguageParticipants` in its `package.json`: + +```json +"contributes": { + "htmlLanguageParticipants": [ + { + "languageId": "handlebars" + } + ] +} +``` + +The [Quarkus](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-quarkus) extension has already adopted the contribution point. It enriches the HTML features with additional proposals for the embedded [Qute](https://quarkus.io/guides/qute-reference) HTML template language: + +![Qute HTML participant](images/1_70/qute-html-participant.gif) + +### Drop into editor API + + + +## Proposed APIs + +Every milestone comes with new proposed APIs and extension authors can try them out. As always, we want your feedback. Here are the steps to try out a proposed API: + +1. [Find a proposal that you want to try](https://github.com/microsoft/vscode/tree/main/src/vscode-dts) and add its name to `package.json#enabledApiProposals`. +1. Use the latest [vscode-dts](https://www.npmjs.com/package/vscode-dts) and run `vscode-dts dev`. It will download the corresponding `d.ts` files into your workspace. +1. You can now program against the proposal. + +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. + +### Webview context menus + + + +## Debug Adapter Protocol + +### 'argsCanBeInterpretedByShell' for RunInTerminalRequest + +The `RunInTerminalRequest` supports a new property, `argsCanBeInterpretedByShell`, which tells the client whether special shell characters in the command `args` should be left unescaped. This is to enable users to write launch configs that will start in a terminal, and include characters that should be interpreted by the shell. + +## Engineering + +### Progress for Electron sandbox support + +This milestone we made substantial progress toward enabling Electron's [sandbox](https://www.electronjs.org/docs/tutorial/sandbox) by default. We plan on enabling sandbox in August for Insiders and eventually make it the default in Stable VS Code. + +For the curious out there, configuring `"window.experimental.useSandbox": true` in settings will enable sandbox mode. Hopefully you should not notice anything changing, but if you find issues, please report them back to us. + +### Markdown language server + + + +### Extensible HTML notebook renderer + + + +### Debian package dependencies + +Debian package dependencies are now generated by a script rather than hard-coded. This closes an [issue filed back in 2016](https://github.com/microsoft/vscode/issues/13089) where missing dependencies would cause the program to crash at runtime on some machines. + +## Documentation and extensions + +### Development container CLI + +The [dev container command-line interface](https://code.visualstudio.com/docs/remote/devcontainer-cli) (CLI) topic was updated for the [newest version](https://code.visualstudio.com/blogs/2022/05/18/dev-container-cli) of the CLI. The dev container CLI lets you build and run dev containers and is an open-source reference implementation of the [Development Container Specification](https://containers.dev) + +### Azure Developer CLI (azd) + +The [Azure Developer CLI](https://docs.microsoft.com/azure/developer/azure-developer-cli) and its complementary [VS Code extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.azure-dev) are now in public preview. The Azure Developer CLI (azd) accelerates the time it takes you to get from your local development environment to Azure by providing developer-friendly commands that map to key stages in your workflow: code, build, deploy, monitor, repeat. + +![Azure Developer CLI extension](images/1_70/azure-dev-cli-extension.png) + +The Azure Developer CLI uses [extensible templates](https://github.com/topics/azd-templates) that include everything you need to get an application up and running in Azure. The templates include best practices, application code and reusable infrastructure as code assets. More than that, they cover end-to-end scenarios that go far past "Hello World!". + +With the Azure Developer CLI, you can initialize, provision, and deploy an application, or better yet, use `'azd up'` to do so in one step! For a list of supported `azd` commands, see the [Developer CLI reference](https://docs.microsoft.com/en-us/azure/developer/azure-developer-cli/reference). + +## Thank you + +Last but certainly not least, a big _**Thank You**_ to the contributors of VS Code. + +### Issue tracking + +Contributions to our issue tracking: + +* [John Murray (@gjsjohnmurray)](https://github.com/gjsjohnmurray) +* [Andrii Dieiev (@IllusionMH)](https://github.com/IllusionMH) +* [Simon Chan (@yume-chan)](https://github.com/yume-chan) + +### Pull requests + +Contributions to `vscode`: + +* [@0evan (Evan Spensley)](https://github.com/0evan): Distinguish testing decoration labels [PR #155433](https://github.com/microsoft/vscode/pull/155433) +* [@amanasifkhalid (Aman Khalid)](https://github.com/amanasifkhalid): Close #134566: Added settings for terminal tab default color/icon [PR #147463](https://github.com/microsoft/vscode/pull/147463) +* [@angelozerr (Angelo)](https://github.com/angelozerr): Contribute to html language server with a custom language. [PR #146731](https://github.com/microsoft/vscode/pull/146731) +* [@babakks (Babak K. Shandiz)](https://github.com/babakks) + * 🎁 Add "Surround with snippet" to quick fix menu [PR #152718](https://github.com/microsoft/vscode/pull/152718) + * 🔨 Fix markdown diagnostics issue with files having dot in their names [PR #153206](https://github.com/microsoft/vscode/pull/153206) +* [@Balastrong (Leonardo Montini)](https://github.com/Balastrong): Properly display the warning message [PR #154266](https://github.com/microsoft/vscode/pull/154266) +* [@CGNonofr (Loïc Mangeonjean)](https://github.com/CGNonofr): Provide trigger and documentation to monaco code action provider [PR #149937](https://github.com/microsoft/vscode/pull/149937) +* [@eamodio (Eric Amodio)](https://github.com/eamodio): Closes #54285 adds webview/context contribution [PR #154524](https://github.com/microsoft/vscode/pull/154524) +* [@eltociear (Ikko Ashimine)](https://github.com/eltociear): Fix typo in languageDetectionWorkerServiceImpl.ts [PR #155923](https://github.com/microsoft/vscode/pull/155923) +* [@fadeevab (Alexander Fadeev)](https://github.com/fadeevab): Add Makefile tests for upgraded grammar: comma, comment, shebang [PR #154625](https://github.com/microsoft/vscode/pull/154625) +* [@FantasqueX (FantasqueX)](https://github.com/FantasqueX): Replace the deprecated canceled with Cancellation Error. [PR #156094](https://github.com/microsoft/vscode/pull/156094) +* [@ferdnyc (Frank Dana)](https://github.com/ferdnyc) + * RPM: Make /usr/bin/code owned by package [PR #142907](https://github.com/microsoft/vscode/pull/142907) + * Remove fakeroot wrapper, when building .rpm packages [PR #153249](https://github.com/microsoft/vscode/pull/153249) +* [@gjsjohnmurray (John Murray)](https://github.com/gjsjohnmurray): Try to prevent update of user-type Windows installation when running as admin (#148428) [PR #155631](https://github.com/microsoft/vscode/pull/155631) +* [@jbicker (Jan Bicker)](https://github.com/jbicker): Fixed wrong SignatureInformation.activeParameter comment [PR #155279](https://github.com/microsoft/vscode/pull/155279) +* [@jeanp413 (Jean Pierre)](https://github.com/jeanp413): Proposal TerminalExitStatus.reason [PR #152833](https://github.com/microsoft/vscode/pull/152833) +* [@jlelong (Jerome Lelong)](https://github.com/jlelong): Add word boundary to bracket pair delimiters starting or ending with letters [PR #151204](https://github.com/microsoft/vscode/pull/151204) +* [@joscol (Joshua Cole)](https://github.com/joscol): Allow CommentNode to change body text and enter edit mode at the same time [PR #155767](https://github.com/microsoft/vscode/pull/155767) +* [@jzyrobert (Robert Jin)](https://github.com/jzyrobert) + * Add Expand all button in explorer view [PR #153614](https://github.com/microsoft/vscode/pull/153614) + * Edit showFoldingControls to have a never setting [PR #153764](https://github.com/microsoft/vscode/pull/153764) +* [@liby (Bryan Lee)](https://github.com/liby): Add support for angle bracket matching and colorization in TypeScript [PR #151705](https://github.com/microsoft/vscode/pull/151705) +* [@mingwiki](https://github.com/mingwiki): Fix Socks5 Proxy Regex Checking Warning [PR #144954](https://github.com/microsoft/vscode/pull/144954) +* [@MonadChains (MonadChains)](https://github.com/MonadChains): Add command to copy output of the last command (#152097) [PR #153235](https://github.com/microsoft/vscode/pull/153235) +* [@nirabhromakhal (nirabhromakhal)](https://github.com/nirabhromakhal): Fixed issue where status bar can overflow without affecting notification beak [PR #155649](https://github.com/microsoft/vscode/pull/155649) +* [@PieterBranderhorst](https://github.com/PieterBranderhorst): Make hidden fold ranges independent of range provider, add manual fol… [PR #139779](https://github.com/microsoft/vscode/pull/139779) +* [@pingren (Ping)](https://github.com/pingren) + * Fix #114461 [PR #151824](https://github.com/microsoft/vscode/pull/151824) + * Fix tab position when wrapping tabs [PR #156116](https://github.com/microsoft/vscode/pull/156116) +* [@pwxn (Paul Landers)](https://github.com/pwxn): Add commands to scroll editor to top/bottom [PR #155861](https://github.com/microsoft/vscode/pull/155861) +* [@qingpeng9802 (Qingpeng Li)](https://github.com/qingpeng9802): Remove es5 class compat [PR #153853](https://github.com/microsoft/vscode/pull/153853) +* [@r3m0t (Tomer Chachamu)](https://github.com/r3m0t) + * Fix test error not showing when expanded [PR #153994](https://github.com/microsoft/vscode/pull/153994) + * Update breadcrumbs when workspace folders update [PR #154616](https://github.com/microsoft/vscode/pull/154616) +* [@SamirPS (SamirAk)](https://github.com/SamirPS): Code scanning: deprecation of CodeQL Action v1 [PR #156271](https://github.com/microsoft/vscode/pull/156271) +* [@ssigwart (Stephen Sigwart)](https://github.com/ssigwart) + * Fix terminals in editor area not reloading [PR #151852](https://github.com/microsoft/vscode/pull/151852) + * Fix Suggestion Widget Hanging [PR #152011](https://github.com/microsoft/vscode/pull/152011) + * Add keybindings for search editor file filters [PR #153954](https://github.com/microsoft/vscode/pull/153954) + * Detect terminal links with space, then line:col [PR #153957](https://github.com/microsoft/vscode/pull/153957) + * Fix menu shortcuts not working after a webview is shown [PR #154648](https://github.com/microsoft/vscode/pull/154648) +* [@SvanT (Svante Boberg)](https://github.com/SvanT): Add missing disposals [PR #155976](https://github.com/microsoft/vscode/pull/155976) +* [@yiliang114 (易良)](https://github.com/yiliang114): fix: typos [PR #155310](https://github.com/microsoft/vscode/pull/155310) + +Contributions to `vscode-generator-code`: + +* [@hawkticehurst (Hawk Ticehurst)](https://github.com/hawkticehurst) + * Add link to UX guidelines in quickstart markdown files [PR #358](https://github.com/microsoft/vscode-generator-code/pull/358) + * Template consistency pass [PR #360](https://github.com/microsoft/vscode-generator-code/pull/360) +* [@MatejKastak](https://github.com/MatejKastak): chore: Unify indentation in generated package.json [PR #357](https://github.com/microsoft/vscode-generator-code/pull/357) +* [@nhedger (Nicolas Hedger)](https://github.com/nhedger): Add pnpm as a package manager [PR #339](https://github.com/microsoft/vscode-generator-code/pull/339) + +Contributions to `vscode-js-debug`: + +* [@Balastrong (Leonardo Montini)](https://github.com/Balastrong): Double check if native tostring is [object *] [PR #1339](https://github.com/microsoft/vscode-js-debug/pull/1339) + +Contributions to `vscode-json-languageservice`: + +* [@bytemain (Artin)](https://github.com/bytemain): feat: support number const [PR #141](https://github.com/microsoft/vscode-json-languageservice/pull/141) +* [@octogonz (Pete Gonzalez)](https://github.com/octogonz): Don't report "Duplicate object key" when "//" is used for comments [PR #144](https://github.com/microsoft/vscode-json-languageservice/pull/144) + +Contributions to `monaco-editor`: + +* [@alexander-zw (Alexander Wu)](https://github.com/alexander-zw): [webpack readme] Add how to get languages/features [PR #3171](https://github.com/microsoft/monaco-editor/pull/3171) +* [@MasterOdin (Matthew Peveler)](https://github.com/MasterOdin): Remove duplicate testcases for mysql [PR #3138](https://github.com/microsoft/monaco-editor/pull/3138) +* [@tonilastre (Toni)](https://github.com/tonilastre): Add config and tokenizer for query language Cypher [PR #3102](https://github.com/microsoft/monaco-editor/pull/3102) + diff --git a/remote-release-notes/v1_70.md b/remote-release-notes/v1_70.md new file mode 100644 index 0000000000..aeae1cba8f --- /dev/null +++ b/remote-release-notes/v1_70.md @@ -0,0 +1,21 @@ +# July 2022 (version 1.70) + +## Development Container specification + +## Core + +## Containers + +## SSH + +## WSL + +## The Visual Studio Code Server (private preview) + +### Connect in VS Code for Desktop + +With the VS Code Server and its port forwarding service, we enabled you to connect to any remote machine within VS Code for Web (vscode.dev). You can read more about it in its [announcement blog post](https://aka.ms/vscode-server-blog). + +Now we've enabled connecting to any remote machine on both the Web and Desktop versions of VS Code with the Remote Server extension (found by searching for `ms-vscode.remote-server` in the Extension marketplace). This means you can connect to any remote machine on any platform of VS Code without needing SSH. + +To learn more about how to get started with the VS Code Server in its [documentation](https://aka.ms/vscode-server-doc).