@codingame/monaco-vscode-api 1.79.1 → 1.79.2-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/README.md +11 -2
  2. package/dist/api.js +10 -8
  3. package/dist/composite.d.ts +65 -0
  4. package/dist/configurationRegistry.d.ts +212 -0
  5. package/dist/contextkey.d.ts +1 -1
  6. package/dist/default-extensions/json.js +1 -0
  7. package/dist/default-extensions/theme-defaults.js +2 -2
  8. package/dist/editorBrowser.d.ts +272 -3
  9. package/dist/event.d.ts +6 -1
  10. package/dist/{extension-tools-0c4c1ad7.js → extension-tools-3c2bf0a4.js} +698 -507
  11. package/dist/extensions.d.ts +3 -2
  12. package/dist/extensions.d2.ts +6 -17
  13. package/dist/extensionsRegistry.d.ts +15 -9
  14. package/dist/files.d.ts +71 -7
  15. package/dist/jsonSchema.d.ts +1 -1
  16. package/dist/keybinding.d.ts +2 -2
  17. package/dist/languageFeatures.d.ts +703 -61
  18. package/dist/monaco.d.ts +5 -4
  19. package/dist/override/vs/workbench/contrib/notebook/browser/contrib/find/findMatchDecorationModel.js +2 -0
  20. package/dist/override/vs/workbench/contrib/notebook/browser/notebookEditor.js +2 -0
  21. package/dist/override/vs/workbench/contrib/notebook/browser/notebookEditorWidget.js +2 -0
  22. package/dist/override/vs/workbench/contrib/notebook/common/notebookEditorInput.js +2 -1
  23. package/dist/platform.d.ts +11 -0
  24. package/dist/rollup-extension-directory-plugin.js +1 -1
  25. package/dist/rollup-vsix-plugin.js +1 -1
  26. package/dist/service-override/configuration.d.ts +5 -206
  27. package/dist/service-override/files.d.ts +2 -2
  28. package/dist/service-override/files.js +1 -1
  29. package/dist/service-override/markers.d.ts +7 -0
  30. package/dist/service-override/markers.js +6 -0
  31. package/dist/service-override/output.d.ts +7 -0
  32. package/dist/service-override/output.js +22 -0
  33. package/dist/service-override/preferences.js +7 -1
  34. package/dist/service-override/quickaccess.js +0 -9
  35. package/dist/service-override/search.d.ts +7 -0
  36. package/dist/service-override/search.js +19 -0
  37. package/dist/service-override/terminal.d.ts +607 -0
  38. package/dist/service-override/terminal.js +98 -0
  39. package/dist/service-override/tools/editor.js +1 -1
  40. package/dist/service-override/views.d.ts +561 -335
  41. package/dist/service-override/views.js +51 -11
  42. package/dist/services.d.ts +2627 -108
  43. package/dist/services.js +3 -0
  44. package/dist/severity.d.ts +16 -0
  45. package/dist/uri.d.ts +22 -11
  46. package/dist/views.d.ts +270 -0
  47. package/dist/vscode/vs/base/common/processes.js +24 -0
  48. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/decorations.js +20 -0
  49. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/delegatingEditorImpl.js +106 -0
  50. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorSash.js +59 -0
  51. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.contribution.js +41 -0
  52. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.js +369 -0
  53. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffModel.js +247 -0
  54. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/lineAlignment.js +179 -0
  55. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/overviewRulerPart.js +121 -0
  56. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/style.css.js +4 -0
  57. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/unchangedRanges.js +184 -0
  58. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/utils.js +88 -0
  59. package/dist/vscode/vs/platform/extensionManagement/common/extensionManagement.js +38 -1
  60. package/dist/vscode/vs/platform/extensionManagement/common/extensionManagementUtil.js +5 -1
  61. package/dist/vscode/vs/platform/extensionResourceLoader/common/extensionResourceLoader.js +13 -5
  62. package/dist/vscode/vs/platform/files/common/fileService.js +43 -5
  63. package/dist/vscode/vs/platform/files/common/files.js +3 -1
  64. package/dist/vscode/vs/platform/languagePacks/common/languagePacks.js +4 -1
  65. package/dist/vscode/vs/platform/log/common/bufferLog.js +34 -0
  66. package/dist/vscode/vs/platform/log/common/fileLog.js +105 -0
  67. package/dist/vscode/vs/platform/quickinput/browser/quickPickPin.js +1 -1
  68. package/dist/vscode/vs/platform/remote/common/remoteAuthorityResolver.js +20 -1
  69. package/dist/vscode/vs/platform/request/browser/requestService.js +1 -1
  70. package/dist/vscode/vs/platform/request/common/request.js +3 -3
  71. package/dist/vscode/vs/platform/storage/common/storage.js +3 -0
  72. package/dist/vscode/vs/platform/terminal/common/capabilities/bufferMarkCapability.js +39 -0
  73. package/dist/vscode/vs/platform/terminal/common/capabilities/commandDetectionCapability.js +565 -0
  74. package/dist/vscode/vs/platform/terminal/common/capabilities/cwdDetectionCapability.js +27 -0
  75. package/dist/vscode/vs/platform/terminal/common/capabilities/naiveCwdDetectionCapability.js +22 -0
  76. package/dist/vscode/vs/platform/terminal/common/capabilities/partialCommandDetectionCapability.js +46 -0
  77. package/dist/vscode/vs/platform/terminal/common/capabilities/terminalCapabilityStore.js +80 -0
  78. package/dist/vscode/vs/platform/terminal/common/environmentVariable.js +7 -0
  79. package/dist/vscode/vs/platform/terminal/common/environmentVariableCollection.js +196 -0
  80. package/dist/vscode/vs/platform/terminal/common/environmentVariableShared.js +23 -0
  81. package/dist/vscode/vs/platform/terminal/common/terminal.js +21 -1
  82. package/dist/vscode/vs/platform/terminal/common/terminalDataBuffering.js +45 -0
  83. package/dist/vscode/vs/platform/terminal/common/terminalEnvironment.js +37 -0
  84. package/dist/vscode/vs/platform/terminal/common/terminalPlatformConfiguration.js +622 -0
  85. package/dist/vscode/vs/platform/terminal/common/terminalProfiles.js +107 -0
  86. package/dist/vscode/vs/platform/terminal/common/terminalRecorder.js +66 -0
  87. package/dist/vscode/vs/platform/terminal/common/terminalStrings.js +16 -0
  88. package/dist/vscode/vs/platform/terminal/common/xterm/shellIntegrationAddon.js +321 -0
  89. package/dist/vscode/vs/platform/userDataSync/common/settingsMerge.js +39 -1
  90. package/dist/vscode/vs/platform/userDataSync/common/userDataSync.js +19 -0
  91. package/dist/vscode/vs/platform/workspace/common/canonicalUri.js +3 -0
  92. package/dist/vscode/vs/platform/workspace/common/virtualWorkspace.js +4 -1
  93. package/dist/vscode/vs/platform/workspaces/common/workspaces.js +2 -2
  94. package/dist/vscode/vs/workbench/api/browser/mainThreadCommands.js +2 -3
  95. package/dist/vscode/vs/workbench/api/browser/mainThreadEditorTabs.js +473 -0
  96. package/dist/vscode/vs/workbench/api/browser/mainThreadLanguageFeatures.js +45 -38
  97. package/dist/vscode/vs/workbench/api/browser/mainThreadSearch.js +146 -0
  98. package/dist/vscode/vs/workbench/api/browser/mainThreadStatusBar.js +33 -52
  99. package/dist/vscode/vs/workbench/api/browser/mainThreadTerminalService.js +395 -0
  100. package/dist/vscode/vs/workbench/api/browser/mainThreadTheming.js +22 -0
  101. package/dist/vscode/vs/workbench/api/browser/mainThreadTreeViews.js +10 -5
  102. package/dist/vscode/vs/workbench/api/browser/mainThreadWindow.js +11 -4
  103. package/dist/vscode/vs/workbench/api/browser/mainThreadWorkspace.js +34 -11
  104. package/dist/vscode/vs/workbench/api/browser/statusBarExtensionPoint.js +81 -0
  105. package/dist/vscode/vs/workbench/api/common/extHost.protocol.js +7 -2
  106. package/dist/vscode/vs/workbench/api/common/extHostDebugService.js +4 -13
  107. package/dist/vscode/vs/workbench/api/common/extHostExtensionService.js +30 -15
  108. package/dist/vscode/vs/workbench/api/common/extHostFileSystemConsumer.js +20 -6
  109. package/dist/vscode/vs/workbench/api/common/extHostLanguageFeatures.js +41 -8
  110. package/dist/vscode/vs/workbench/api/common/extHostManagedSockets.js +3 -0
  111. package/dist/vscode/vs/workbench/api/common/extHostSearch.js +109 -0
  112. package/dist/vscode/vs/workbench/api/common/extHostStatusBar.js +33 -6
  113. package/dist/vscode/vs/workbench/api/common/extHostTerminalService.js +879 -1
  114. package/dist/vscode/vs/workbench/api/common/extHostTheming.js +38 -0
  115. package/dist/vscode/vs/workbench/api/common/extHostTreeViews.js +8 -5
  116. package/dist/vscode/vs/workbench/api/common/extHostTypeConverters.js +15 -17
  117. package/dist/vscode/vs/workbench/api/common/extHostTypes.js +117 -4
  118. package/dist/vscode/vs/workbench/api/common/extHostWindow.js +28 -6
  119. package/dist/vscode/vs/workbench/api/common/extHostWorkspace.js +28 -0
  120. package/dist/vscode/vs/workbench/api/common/shared/dataTransferCache.js +11 -14
  121. package/dist/vscode/vs/workbench/api/node/extHostTerminalService.js +22 -0
  122. package/dist/vscode/vs/workbench/browser/actions/layoutActions.js +2 -1
  123. package/dist/vscode/vs/workbench/browser/actions/windowActions.js +2 -2
  124. package/dist/vscode/vs/workbench/browser/dnd.js +56 -2
  125. package/dist/vscode/vs/workbench/browser/parts/compositePart.js +1 -1
  126. package/dist/vscode/vs/workbench/browser/parts/dialogs/dialogHandler.js +2 -2
  127. package/dist/vscode/vs/workbench/browser/parts/editor/editor.contribution.js +1 -0
  128. package/dist/vscode/vs/workbench/browser/parts/editor/editor.js +1 -0
  129. package/dist/vscode/vs/workbench/browser/parts/editor/editorCommands.js +9 -10
  130. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupView.js +15 -9
  131. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupWatermark.js +13 -17
  132. package/dist/vscode/vs/workbench/browser/parts/editor/editorStatus.js +1 -1
  133. package/dist/vscode/vs/workbench/browser/parts/editor/editorsObserver.js +2 -2
  134. package/dist/vscode/vs/workbench/browser/parts/editor/media/editorgroupview.css.js +1 -1
  135. package/dist/vscode/vs/workbench/browser/parts/editor/media/tabstitlecontrol.css.js +1 -1
  136. package/dist/vscode/vs/workbench/browser/parts/editor/noTabsTitleControl.js +3 -1
  137. package/dist/vscode/vs/workbench/browser/parts/editor/tabsTitleControl.js +60 -11
  138. package/dist/vscode/vs/workbench/browser/parts/editor/textDiffEditor.js +16 -10
  139. package/dist/vscode/vs/workbench/browser/parts/editor/textResourceEditor.js +1 -1
  140. package/dist/vscode/vs/workbench/browser/parts/statusbar/media/statusbarpart.css.js +1 -1
  141. package/dist/vscode/vs/workbench/browser/parts/views/checkbox.js +10 -0
  142. package/dist/vscode/vs/workbench/browser/parts/views/treeView.js +78 -14
  143. package/dist/vscode/vs/workbench/browser/parts/views/viewPaneContainer.js +1 -1
  144. package/dist/vscode/vs/workbench/browser/workbench.contribution.js +65 -6
  145. package/dist/vscode/vs/workbench/common/configuration.js +8 -1
  146. package/dist/vscode/vs/workbench/common/contextkeys.js +9 -1
  147. package/dist/vscode/vs/workbench/common/editor/editorGroupModel.js +5 -1
  148. package/dist/vscode/vs/workbench/common/editor/resourceEditorInput.js +6 -3
  149. package/dist/vscode/vs/workbench/common/editor/textResourceEditorInput.js +9 -6
  150. package/dist/vscode/vs/workbench/common/editor.js +1 -5
  151. package/dist/vscode/vs/workbench/common/resources.js +111 -34
  152. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +1 -1
  153. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +1 -1
  154. package/dist/vscode/vs/workbench/contrib/chat/browser/chat.js +3 -0
  155. package/dist/vscode/vs/workbench/contrib/chat/common/chatService.js +3 -0
  156. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js +6 -4
  157. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.css.js +4 -0
  158. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js +250 -0
  159. package/dist/vscode/vs/workbench/contrib/customEditor/browser/customEditorInput.js +290 -0
  160. package/dist/vscode/vs/workbench/contrib/customEditor/common/customEditor.js +3 -0
  161. package/dist/vscode/vs/workbench/contrib/debug/browser/debugActionViewItems.js +1 -0
  162. package/dist/vscode/vs/workbench/contrib/debug/browser/debugCommands.js +2 -1
  163. package/dist/vscode/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +20 -20
  164. package/dist/vscode/vs/workbench/contrib/debug/browser/debugEditorActions.js +5 -3
  165. package/dist/vscode/vs/workbench/contrib/debug/browser/debugEditorContribution.js +5 -2
  166. package/dist/vscode/vs/workbench/contrib/debug/browser/debugHover.js +33 -6
  167. package/dist/vscode/vs/workbench/contrib/debug/browser/debugSession.js +1 -1
  168. package/dist/vscode/vs/workbench/contrib/debug/browser/debugTaskRunner.js +1 -1
  169. package/dist/vscode/vs/workbench/contrib/debug/browser/repl.js +3 -3
  170. package/dist/vscode/vs/workbench/contrib/debug/common/debugModel.js +29 -17
  171. package/dist/vscode/vs/workbench/contrib/debug/common/debugStorage.js +11 -10
  172. package/dist/vscode/vs/workbench/contrib/debug/common/debugger.js +10 -6
  173. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsActions.js +2514 -0
  174. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsIcons.js +82 -0
  175. package/dist/vscode/vs/workbench/contrib/extensions/browser/media/extensionActions.css.js +4 -0
  176. package/dist/vscode/vs/workbench/contrib/extensions/common/extensions.js +6 -1
  177. package/dist/vscode/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js +16 -0
  178. package/dist/vscode/vs/workbench/contrib/files/browser/editors/fileEditorInput.js +2 -3
  179. package/dist/vscode/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js +2 -0
  180. package/dist/vscode/vs/workbench/contrib/files/browser/explorerService.js +10 -6
  181. package/dist/vscode/vs/workbench/contrib/files/browser/explorerViewlet.js +3 -18
  182. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.contribution.js +37 -2
  183. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.js +65 -3
  184. package/dist/vscode/vs/workbench/contrib/files/browser/fileCommands.js +3 -3
  185. package/dist/vscode/vs/workbench/contrib/files/browser/fileConstants.js +3 -1
  186. package/dist/vscode/vs/workbench/contrib/files/browser/files.contribution.js +41 -6
  187. package/dist/vscode/vs/workbench/contrib/files/browser/files.js +1 -0
  188. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerView.js +3 -3
  189. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerViewer.js +6 -2
  190. package/dist/vscode/vs/workbench/contrib/files/common/explorerModel.js +16 -9
  191. package/dist/vscode/vs/workbench/contrib/files/common/files.js +1 -6
  192. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveDocumentService.js +3 -0
  193. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +200 -0
  194. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveHistoryService.js +3 -0
  195. package/dist/vscode/vs/workbench/contrib/markers/browser/markers.contribution.js +586 -0
  196. package/dist/vscode/vs/workbench/contrib/markers/browser/markersFilterOptions.js +75 -0
  197. package/dist/vscode/vs/workbench/contrib/markers/browser/markersModel.js +201 -0
  198. package/dist/vscode/vs/workbench/contrib/markers/browser/markersTable.js +451 -0
  199. package/dist/vscode/vs/workbench/contrib/markers/browser/markersTreeViewer.js +670 -0
  200. package/dist/vscode/vs/workbench/contrib/markers/browser/markersView.js +857 -0
  201. package/dist/vscode/vs/workbench/contrib/markers/browser/markersViewActions.css.js +4 -0
  202. package/dist/vscode/vs/workbench/contrib/markers/browser/markersViewActions.js +132 -0
  203. package/dist/vscode/vs/workbench/contrib/markers/browser/media/markers.css.js +4 -0
  204. package/dist/vscode/vs/workbench/contrib/markers/browser/messages.js +171 -0
  205. package/dist/vscode/vs/workbench/contrib/markers/common/markers.js +15 -1
  206. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +135 -0
  207. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +421 -0
  208. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeMarkers/mergeMarkersController.js +5 -0
  209. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +55 -0
  210. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/editing.js +54 -0
  211. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/lineRange.js +108 -0
  212. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +334 -0
  213. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +606 -0
  214. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.js +307 -0
  215. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/rangeUtils.js +36 -0
  216. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +165 -0
  217. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/telemetry.js +78 -0
  218. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/utils.js +68 -0
  219. package/dist/vscode/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +2 -0
  220. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/findFilters.js +70 -0
  221. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.css.js +4 -0
  222. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.js +158 -0
  223. package/dist/vscode/vs/workbench/contrib/notebook/browser/notebookBrowser.js +6 -1
  224. package/dist/vscode/vs/workbench/contrib/notebook/browser/services/notebookEditorService.js +3 -0
  225. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookCommon.js +16 -1
  226. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookService.js +3 -0
  227. package/dist/vscode/vs/workbench/contrib/output/browser/logViewer.js +64 -0
  228. package/dist/vscode/vs/workbench/contrib/output/browser/output.contribution.js +378 -0
  229. package/dist/vscode/vs/workbench/contrib/output/browser/outputServices.js +39 -3
  230. package/dist/vscode/vs/workbench/contrib/output/browser/outputView.js +220 -0
  231. package/dist/vscode/vs/workbench/contrib/output/common/outputChannelModel.js +12 -3
  232. package/dist/vscode/vs/workbench/contrib/output/common/outputLinkComputer.js +129 -0
  233. package/dist/vscode/vs/workbench/contrib/preferences/browser/keybindingWidgets.js +270 -0
  234. package/dist/vscode/vs/workbench/contrib/preferences/browser/keybindingsEditor.js +1080 -0
  235. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/keybindings.css.js +4 -0
  236. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css.js +4 -0
  237. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/preferences.css.js +4 -0
  238. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css.js +4 -0
  239. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css.js +4 -0
  240. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferences.contribution.js +1154 -0
  241. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesActions.js +94 -0
  242. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesEditor.js +47 -0
  243. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesIcons.js +37 -0
  244. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesRenderers.js +731 -0
  245. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesSearch.js +271 -0
  246. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesWidgets.js +479 -0
  247. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsEditor2.js +1465 -0
  248. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators.js +506 -0
  249. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsLayout.js +296 -0
  250. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsSearchMenu.js +79 -0
  251. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsTree.js +1984 -0
  252. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsTreeModels.js +759 -0
  253. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsWidgets.js +1008 -0
  254. package/dist/vscode/vs/workbench/contrib/preferences/browser/tocTree.js +196 -0
  255. package/dist/vscode/vs/workbench/contrib/preferences/common/preferences.js +68 -0
  256. package/dist/vscode/vs/workbench/contrib/preferences/common/preferencesContribution.js +157 -0
  257. package/dist/vscode/vs/workbench/contrib/preferences/common/settingsEditorColorRegistry.js +67 -0
  258. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +16 -16
  259. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +1 -2
  260. package/dist/vscode/vs/workbench/contrib/remote/browser/remoteExplorer.js +23 -2
  261. package/dist/vscode/vs/workbench/contrib/remote/browser/tunnelView.js +5 -5
  262. package/dist/vscode/vs/workbench/contrib/search/browser/media/searchview.css.js +4 -0
  263. package/dist/vscode/vs/workbench/contrib/search/browser/patternInputWidget.js +217 -0
  264. package/dist/vscode/vs/workbench/contrib/search/browser/replace.js +3 -0
  265. package/dist/vscode/vs/workbench/contrib/search/browser/replaceContributions.js +7 -0
  266. package/dist/vscode/vs/workbench/contrib/search/browser/replaceService.js +222 -0
  267. package/dist/vscode/vs/workbench/contrib/search/browser/search.contribution.js +54 -15
  268. package/dist/vscode/vs/workbench/contrib/search/browser/searchActionsBase.js +17 -0
  269. package/dist/vscode/vs/workbench/contrib/search/browser/searchFindInput.js +41 -0
  270. package/dist/vscode/vs/workbench/contrib/search/browser/searchIcons.js +35 -0
  271. package/dist/vscode/vs/workbench/contrib/search/browser/searchMessage.js +58 -0
  272. package/dist/vscode/vs/workbench/contrib/search/browser/searchModel.js +1842 -0
  273. package/dist/vscode/vs/workbench/contrib/search/browser/searchNotebookHelpers.js +49 -0
  274. package/dist/vscode/vs/workbench/contrib/search/browser/searchResultsView.js +379 -0
  275. package/dist/vscode/vs/workbench/contrib/search/browser/searchView.js +1867 -0
  276. package/dist/vscode/vs/workbench/contrib/search/browser/searchWidget.js +628 -0
  277. package/dist/vscode/vs/workbench/contrib/search/common/constants.js +30 -1
  278. package/dist/vscode/vs/workbench/contrib/search/common/search.js +9 -1
  279. package/dist/vscode/vs/workbench/contrib/search/common/searchHistoryService.js +42 -0
  280. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/constants.js +11 -0
  281. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/media/searchEditor.css.js +4 -0
  282. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js +477 -0
  283. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditor.js +697 -0
  284. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js +188 -0
  285. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +295 -0
  286. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorModel.js +135 -0
  287. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js +268 -0
  288. package/dist/vscode/vs/workbench/contrib/snippets/browser/tabCompletion.js +2 -2
  289. package/dist/vscode/vs/workbench/contrib/tasks/common/taskService.js +16 -1
  290. package/dist/vscode/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js +119 -0
  291. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/scrollbar.css.js +4 -0
  292. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/terminal.css.js +4 -0
  293. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/widgets.css.js +4 -0
  294. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/xterm.css.js +4 -0
  295. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminal.contribution.js +238 -0
  296. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminal.js +4 -1
  297. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalActions.js +1930 -0
  298. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalCommands.js +22 -0
  299. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js +213 -0
  300. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalContextMenu.js +17 -0
  301. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditor.js +186 -0
  302. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +199 -0
  303. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorService.js +239 -0
  304. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalExtensions.js +22 -0
  305. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalGroup.js +482 -0
  306. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalGroupService.js +372 -0
  307. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalIcon.js +60 -1
  308. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalIcons.js +37 -0
  309. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstance.js +2123 -0
  310. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstanceService.js +79 -0
  311. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalMainContribution.js +82 -0
  312. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalMenus.js +850 -0
  313. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js +142 -0
  314. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProcessManager.js +618 -0
  315. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileQuickpick.js +278 -0
  316. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileResolverService.js +417 -0
  317. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileService.js +213 -0
  318. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js +144 -0
  319. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalRunRecentQuickPick.js +267 -0
  320. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalService.js +1063 -0
  321. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalStatusList.js +108 -0
  322. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTabbedView.js +417 -0
  323. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTabsList.js +680 -0
  324. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTooltip.js +72 -0
  325. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalUri.js +39 -0
  326. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalView.js +535 -0
  327. package/dist/vscode/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js +36 -0
  328. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.js +469 -0
  329. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/decorationStyles.js +97 -0
  330. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/lineDataEventAddon.js +56 -0
  331. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/markNavigationAddon.js +416 -0
  332. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/suggestAddon.js +390 -0
  333. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.js +587 -0
  334. package/dist/vscode/vs/workbench/contrib/terminal/common/environmentVariable.js +3 -0
  335. package/dist/vscode/vs/workbench/contrib/terminal/common/environmentVariableService.js +94 -0
  336. package/dist/vscode/vs/workbench/contrib/terminal/common/history.js +356 -0
  337. package/dist/vscode/vs/workbench/contrib/terminal/common/terminal.js +266 -0
  338. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +23 -16
  339. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalConfiguration.js +965 -0
  340. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalContextKey.js +157 -0
  341. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalEnvironment.js +272 -0
  342. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalExtensionPoints.js +27 -0
  343. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalStrings.js +86 -0
  344. package/dist/vscode/vs/workbench/contrib/terminal/electron-sandbox/terminalProfileResolverService.js +46 -0
  345. package/dist/vscode/vs/workbench/contrib/terminalContrib/links/browser/links.js +3 -0
  346. package/dist/vscode/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkProviderService.js +26 -0
  347. package/dist/vscode/vs/workbench/contrib/terminalContrib/quickFix/browser/quickFix.js +3 -0
  348. package/dist/vscode/vs/workbench/contrib/terminalContrib/quickFix/browser/terminalQuickFixService.js +143 -0
  349. package/dist/vscode/vs/workbench/contrib/webviewPanel/browser/webviewEditorInput.js +85 -0
  350. package/dist/vscode/vs/workbench/contrib/webviewPanel/browser/webviewWorkbenchService.js +52 -0
  351. package/dist/vscode/vs/workbench/services/actions/common/menusExtensionPoint.js +14 -6
  352. package/dist/vscode/vs/workbench/services/assignment/common/assignmentService.js +3 -0
  353. package/dist/vscode/vs/workbench/services/configuration/browser/configurationService.js +13 -13
  354. package/dist/vscode/vs/workbench/services/configuration/common/configuration.js +2 -1
  355. package/dist/vscode/vs/workbench/services/configuration/common/configurationEditing.js +2 -2
  356. package/dist/vscode/vs/workbench/services/configuration/common/jsonEditingService.js +2 -2
  357. package/dist/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.js +3 -2
  358. package/dist/vscode/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.js +4 -0
  359. package/dist/vscode/vs/workbench/services/extensionRecommendations/common/workspaceExtensionsConfig.js +2 -0
  360. package/dist/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService.js +3 -0
  361. package/dist/vscode/vs/workbench/services/extensions/common/extensions.js +14 -2
  362. package/dist/vscode/vs/workbench/services/extensions/common/extensionsApiProposals.js +10 -1
  363. package/dist/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +70 -3
  364. package/dist/vscode/vs/workbench/services/hover/browser/hoverService.js +1 -1
  365. package/dist/vscode/vs/workbench/services/hover/browser/hoverWidget.js +2 -1
  366. package/dist/vscode/vs/workbench/services/hover/browser/media/hover.css.js +1 -1
  367. package/dist/vscode/vs/workbench/services/keybinding/common/keybindingEditing.js +275 -0
  368. package/dist/vscode/vs/workbench/services/localization/common/locale.js +3 -0
  369. package/dist/vscode/vs/workbench/services/log/common/logConstants.js +2 -0
  370. package/dist/vscode/vs/workbench/services/output/common/output.js +4 -1
  371. package/dist/vscode/vs/workbench/services/preferences/common/preferences.js +22 -1
  372. package/dist/vscode/vs/workbench/services/preferences/common/preferencesModels.js +6 -0
  373. package/dist/vscode/vs/workbench/services/preferences/common/preferencesValidation.js +37 -1
  374. package/dist/vscode/vs/workbench/services/remote/common/remoteAgentService.js +69 -0
  375. package/dist/vscode/vs/workbench/services/remote/common/remoteExplorerService.js +66 -27
  376. package/dist/vscode/vs/workbench/services/search/common/fileSearchManager.js +265 -0
  377. package/dist/vscode/vs/workbench/services/search/common/queryBuilder.js +6 -0
  378. package/dist/vscode/vs/workbench/services/search/common/replace.js +203 -0
  379. package/dist/vscode/vs/workbench/services/search/common/search.js +227 -1
  380. package/dist/vscode/vs/workbench/services/search/common/searchExtTypes.js +6 -0
  381. package/dist/vscode/vs/workbench/services/search/common/searchHelpers.js +72 -0
  382. package/dist/vscode/vs/workbench/services/search/common/searchService.js +355 -0
  383. package/dist/vscode/vs/workbench/services/search/common/textSearchManager.js +309 -0
  384. package/dist/vscode/vs/workbench/services/suggest/browser/media/suggest.css.js +4 -0
  385. package/dist/vscode/vs/workbench/services/suggest/browser/simpleCompletionItem.js +10 -0
  386. package/dist/vscode/vs/workbench/services/suggest/browser/simpleCompletionModel.js +98 -0
  387. package/dist/vscode/vs/workbench/services/suggest/browser/simpleSuggestWidget.js +399 -0
  388. package/dist/vscode/vs/workbench/services/suggest/browser/simpleSuggestWidgetRenderer.js +83 -0
  389. package/dist/vscode/vs/workbench/services/terminal/common/embedderTerminalService.js +3 -0
  390. package/dist/vscode/vs/workbench/services/textfile/browser/textFileService.js +1 -1
  391. package/dist/vscode/vs/workbench/services/textfile/common/textFileEditorModel.js +10 -3
  392. package/dist/vscode/vs/workbench/services/themes/browser/fileIconThemeData.js +3 -3
  393. package/dist/vscode/vs/workbench/services/themes/browser/productIconThemeData.js +3 -3
  394. package/dist/vscode/vs/workbench/services/themes/common/colorThemeData.js +3 -3
  395. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorInput.js +6 -4
  396. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorModel.js +3 -0
  397. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorService.js +4 -0
  398. package/dist/vscode/vs/workbench/services/userActivity/common/userActivityRegistry.js +15 -0
  399. package/dist/vscode/vs/workbench/services/userActivity/common/userActivityService.js +37 -0
  400. package/dist/vscode/vs/workbench/services/userDataSync/common/userDataSync.js +7 -0
  401. package/dist/vscode/vs/workbench/services/workingCopy/common/workingCopyEditorService.js +40 -0
  402. package/dist/vscode/vs/workbench/services/workingCopy/common/workingCopyService.js +12 -0
  403. package/dist/vscode/vs/workbench/services/workspaces/common/canonicalUriService.js +19 -0
  404. package/dist/vscode-default-extensions/css/syntaxes/css.tmLanguage.json.extensionResource.js +1 -1
  405. package/dist/vscode-default-extensions/json/package.json.js +1 -1
  406. package/dist/vscode-default-extensions/json/syntaxes/JSONC.tmLanguage.json.extensionResource.js +1 -1
  407. package/dist/vscode-default-extensions/json/syntaxes/JSONL.tmLanguage.json.extensionResource.js +2 -0
  408. package/dist/vscode-default-extensions/latex/syntaxes/Bibtex.tmLanguage.json.extensionResource.js +1 -1
  409. package/dist/vscode-default-extensions/latex/syntaxes/LaTeX.tmLanguage.json.extensionResource.js +1 -1
  410. package/dist/vscode-default-extensions/latex/syntaxes/TeX.tmLanguage.json.extensionResource.js +1 -1
  411. package/dist/vscode-default-extensions/latex/syntaxes/cpp-grammar-bailout.tmLanguage.json.extensionResource.js +1 -1
  412. package/dist/vscode-default-extensions/latex/syntaxes/markdown-latex-combined.tmLanguage.json.extensionResource.js +1 -1
  413. package/dist/vscode-default-extensions/lua/syntaxes/lua.tmLanguage.json.extensionResource.js +1 -1
  414. package/dist/vscode-default-extensions/perl/package.json.js +1 -1
  415. package/dist/vscode-default-extensions/php/snippets/php.code-snippets.extensionResource.js +1 -1
  416. package/dist/vscode-default-extensions/sql/language-configuration.json.extensionResource.js +1 -1
  417. package/dist/vscode-default-extensions/theme-abyss/themes/abyss-color-theme.json.extensionResource.js +1 -1
  418. package/dist/vscode-default-extensions/theme-defaults/package.json.js +1 -1
  419. package/dist/vscode-default-extensions/theme-defaults/themes/dark_modern.json.extensionResource.js +2 -0
  420. package/dist/vscode-default-extensions/theme-defaults/themes/dark_vs.json.extensionResource.js +1 -1
  421. package/dist/vscode-default-extensions/theme-defaults/themes/hc_black.json.extensionResource.js +1 -1
  422. package/dist/vscode-default-extensions/theme-defaults/themes/hc_light.json.extensionResource.js +1 -1
  423. package/dist/vscode-default-extensions/theme-defaults/themes/light_modern.json.extensionResource.js +2 -0
  424. package/dist/vscode-default-extensions/theme-defaults/themes/light_vs.json.extensionResource.js +1 -1
  425. package/dist/vscode-default-extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json.extensionResource.js +1 -1
  426. package/dist/vscode-default-extensions/theme-monokai/themes/monokai-color-theme.json.extensionResource.js +1 -1
  427. package/dist/vscode-default-extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json.extensionResource.js +1 -1
  428. package/dist/vscode-default-extensions/theme-quietlight/themes/quietlight-color-theme.json.extensionResource.js +1 -1
  429. package/dist/vscode-default-extensions/theme-red/themes/Red-color-theme.json.extensionResource.js +1 -1
  430. package/dist/vscode-default-extensions/theme-seti/icons/vs-seti-icon-theme.json.extensionResource.js +1 -1
  431. package/dist/vscode-default-extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json.extensionResource.js +1 -1
  432. package/dist/vscode-default-extensions/theme-solarized-light/themes/solarized-light-color-theme.json.extensionResource.js +1 -1
  433. package/dist/vscode-default-extensions/theme-tomorrow-night-blue/themes/tomorrow-night-blue-color-theme.json.extensionResource.js +1 -1
  434. package/dist/vscode-default-extensions/vb/language-configuration.json.extensionResource.js +1 -1
  435. package/dist/vscode-services/env.js +4 -2
  436. package/dist/vscode-services/extHost.js +32 -48
  437. package/dist/vscode-services/missing-services.js +407 -29
  438. package/dist/vscode-services/window.js +59 -65
  439. package/dist/vscode-services/workspace.js +19 -5
  440. package/dist/workers/outputLinkComputer.worker.d.ts +2 -0
  441. package/dist/workers/outputLinkComputer.worker.js +3 -0
  442. package/dist/workspace.d.ts +1 -1
  443. package/monaco-editor-treemending.patch +1305 -1184
  444. package/package.json +65 -19
  445. package/dist/activity.d.ts +0 -2802
  446. package/dist/collections.d.ts +0 -7
  447. package/dist/colorRegistry.d.ts +0 -710
  448. package/dist/vscode/vs/platform/product/common/product.js +0 -48
  449. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionFollowups.js +0 -30
  450. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionInputPart.js +0 -196
  451. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionListRenderer.js +0 -622
  452. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionOptions.js +0 -77
  453. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionWidget.js +0 -311
  454. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/media/interactiveSession.css.js +0 -4
  455. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionContextKeys.js +0 -56
  456. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionModel.js +0 -305
  457. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionService.js +0 -13
  458. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionServiceImpl.js +0 -379
  459. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionViewModel.js +0 -207
  460. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionWidgetHistoryService.js +0 -3
  461. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionWordCounter.js +0 -25
  462. package/dist/vscode-default-extensions/theme-defaults/themes/dark_plus_experimental.json.extensionResource.js +0 -2
  463. package/dist/vscode-default-extensions/theme-defaults/themes/light_plus_experimental.json.extensionResource.js +0 -2
@@ -0,0 +1,1930 @@
1
+ import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
+ import { BrowserFeatures } from 'monaco-editor/esm/vs/base/browser/canIUse.js';
3
+ import { Action } from 'monaco-editor/esm/vs/base/common/actions.js';
4
+ import { Codicon } from 'monaco-editor/esm/vs/base/common/codicons.js';
5
+ import { KeyChord } from 'monaco-editor/esm/vs/base/common/keyCodes.js';
6
+ import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
7
+ import { isLinux, isWindows } from 'monaco-editor/esm/vs/base/common/platform.js';
8
+ import { isObject, withNullAsUndefined, isString } from 'monaco-editor/esm/vs/base/common/types.js';
9
+ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
10
+ import { ICodeEditorService } from 'monaco-editor/esm/vs/editor/browser/services/codeEditorService.js';
11
+ import { localize } from 'monaco-editor/esm/vs/nls.js';
12
+ import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'monaco-editor/esm/vs/platform/accessibility/common/accessibility.js';
13
+ import { registerAction2, Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
14
+ import { ICommandService } from 'monaco-editor/esm/vs/platform/commands/common/commands.js';
15
+ import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
16
+ import { ContextKeyExpr } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
17
+ import { ILabelService } from 'monaco-editor/esm/vs/platform/label/common/label.js';
18
+ import { IListService } from 'monaco-editor/esm/vs/platform/list/browser/listService.js';
19
+ import { INotificationService, Severity } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
20
+ import { IOpenerService } from 'monaco-editor/esm/vs/platform/opener/common/opener.js';
21
+ import { IQuickInputService } from 'monaco-editor/esm/vs/platform/quickinput/common/quickInput.js';
22
+ import { TerminalLocation, TerminalExitReason } from '../../../../platform/terminal/common/terminal.js';
23
+ import { IWorkspaceContextService } from 'monaco-editor/esm/vs/platform/workspace/common/workspace.js';
24
+ import { PICK_WORKSPACE_FOLDER_COMMAND_ID } from '../../../browser/actions/workspaceCommands.js';
25
+ import { CLOSE_EDITOR_COMMAND_ID } from '../../../browser/parts/editor/editorCommands.js';
26
+ import { ResourceContextKey } from '../../../common/contextkeys.js';
27
+ import { ITerminalService, ITerminalGroupService, ITerminalInstanceService, ITerminalEditorService } from './terminal.js';
28
+ import { TerminalQuickAccessProvider } from './terminalQuickAccess.js';
29
+ import { ITerminalProfileService, ITerminalProfileResolverService } from '../common/terminal.js';
30
+ import { TerminalContextKeys } from '../common/terminalContextKey.js';
31
+ import { createProfileSchemaEnums } from '../../../../platform/terminal/common/terminalProfiles.js';
32
+ import { terminalStrings } from '../common/terminalStrings.js';
33
+ import { IConfigurationResolverService } from '../../../services/configurationResolver/common/configurationResolver.js';
34
+ import { IWorkbenchEnvironmentService } from '../../../services/environment/common/environmentService.js';
35
+ import { IHistoryService } from '../../../services/history/common/history.js';
36
+ import { IPreferencesService } from '../../../services/preferences/common/preferences.js';
37
+ import { IRemoteAgentService } from '../../../services/remote/common/remoteAgentService.js';
38
+ import { SIDE_GROUP } from '../../../services/editor/common/editorService.js';
39
+ import { isAbsolute } from 'monaco-editor/esm/vs/base/common/path.js';
40
+ import { AbstractVariableResolverService } from '../../../services/configurationResolver/common/variableResolver.js';
41
+ import { IThemeService } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
42
+ import { getIconId, getColorClass, getUriClasses } from './terminalIcon.js';
43
+ import { getCommandHistory, clearShellFileHistory } from '../common/history.js';
44
+ import { IModelService } from 'monaco-editor/esm/vs/editor/common/services/model.js';
45
+ import { ILanguageService } from 'monaco-editor/esm/vs/editor/common/languages/language.js';
46
+ import { CancellationToken } from 'monaco-editor/esm/vs/base/common/cancellation.js';
47
+ import { dirname } from 'monaco-editor/esm/vs/base/common/resources.js';
48
+ import { getIconClasses } from 'monaco-editor/esm/vs/editor/common/services/getIconClasses.js';
49
+ import { FileKind } from 'monaco-editor/esm/vs/platform/files/common/files.js';
50
+ import { IClipboardService } from 'monaco-editor/esm/vs/platform/clipboard/common/clipboardService.js';
51
+ import { newTerminalIcon, killTerminalIcon } from './terminalIcons.js';
52
+ const switchTerminalActionViewItemSeparator = '\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500';
53
+ const switchTerminalShowTabsTitle = ( localize('showTerminalTabs', "Show Tabs"));
54
+ const category = terminalStrings.actionCategory;
55
+ async function getCwdForSplit(configHelper, instance, folders, commandService) {
56
+ switch (configHelper.config.splitCwd) {
57
+ case 'workspaceRoot':
58
+ if (folders !== undefined && commandService !== undefined) {
59
+ if (folders.length === 1) {
60
+ return folders[0].uri;
61
+ }
62
+ else if (folders.length > 1) {
63
+ const options = {
64
+ placeHolder: ( localize(
65
+ 'workbench.action.terminal.newWorkspacePlaceholder',
66
+ "Select current working directory for new terminal"
67
+ ))
68
+ };
69
+ const workspace = await commandService.executeCommand(PICK_WORKSPACE_FOLDER_COMMAND_ID, [options]);
70
+ if (!workspace) {
71
+ return undefined;
72
+ }
73
+ return Promise.resolve(workspace.uri);
74
+ }
75
+ }
76
+ return '';
77
+ case 'initial':
78
+ return instance.getInitialCwd();
79
+ case 'inherited':
80
+ return instance.getCwd();
81
+ }
82
+ }
83
+ const terminalSendSequenceCommand = async (accessor, args) => {
84
+ const instance = accessor.get(ITerminalService).activeInstance;
85
+ if (instance) {
86
+ const text = isObject(args) && 'text' in args ? toOptionalString(args.text) : undefined;
87
+ if (!text) {
88
+ return;
89
+ }
90
+ const configurationResolverService = accessor.get(IConfigurationResolverService);
91
+ const workspaceContextService = accessor.get(IWorkspaceContextService);
92
+ const historyService = accessor.get(IHistoryService);
93
+ const activeWorkspaceRootUri = historyService.getLastActiveWorkspaceRoot(instance.isRemote ? Schemas.vscodeRemote : Schemas.file);
94
+ const lastActiveWorkspaceRoot = activeWorkspaceRootUri ? withNullAsUndefined(workspaceContextService.getWorkspaceFolder(activeWorkspaceRootUri)) : undefined;
95
+ const resolvedText = await configurationResolverService.resolveAsync(lastActiveWorkspaceRoot, text);
96
+ instance.sendText(resolvedText, false);
97
+ }
98
+ };
99
+ let TerminalLaunchHelpAction = class TerminalLaunchHelpAction extends Action {
100
+ constructor(_openerService) {
101
+ super('workbench.action.terminal.launchHelp', ( localize('terminalLaunchHelp', "Open Help")));
102
+ this._openerService = _openerService;
103
+ }
104
+ async run() {
105
+ this._openerService.open('https://aka.ms/vscode-troubleshoot-terminal-launch');
106
+ }
107
+ };
108
+ TerminalLaunchHelpAction = ( __decorate([
109
+ ( __param(0, IOpenerService))
110
+ ], TerminalLaunchHelpAction));
111
+ function registerTerminalAction(options) {
112
+ options.f1 = options.f1 ?? true;
113
+ options.category = options.category ?? category;
114
+ options.precondition = options.precondition ?? TerminalContextKeys.processSupported;
115
+ const runFunc = options.run;
116
+ const strictOptions = options;
117
+ delete strictOptions['run'];
118
+ return registerAction2(class extends Action2 {
119
+ constructor() {
120
+ super(strictOptions);
121
+ }
122
+ run(accessor, args) {
123
+ return runFunc(getTerminalServices(accessor), accessor, args);
124
+ }
125
+ });
126
+ }
127
+ function registerActiveInstanceAction(options) {
128
+ const originalRun = options.run;
129
+ return registerTerminalAction({
130
+ ...options,
131
+ run: (c, accessor, args) => {
132
+ const activeInstance = c.service.activeInstance;
133
+ if (activeInstance) {
134
+ return originalRun(activeInstance, c, accessor, args);
135
+ }
136
+ }
137
+ });
138
+ }
139
+ function getTerminalServices(accessor) {
140
+ return {
141
+ service: accessor.get(ITerminalService),
142
+ groupService: accessor.get(ITerminalGroupService),
143
+ instanceService: accessor.get(ITerminalInstanceService),
144
+ editorService: accessor.get(ITerminalEditorService),
145
+ profileService: accessor.get(ITerminalProfileService),
146
+ profileResolverService: accessor.get(ITerminalProfileResolverService)
147
+ };
148
+ }
149
+ function registerTerminalActions() {
150
+ registerTerminalAction({
151
+ id: "workbench.action.terminal.newInActiveWorkspace" ,
152
+ title: { value: ( localize(
153
+ 'workbench.action.terminal.newInActiveWorkspace',
154
+ "Create New Terminal (In Active Workspace)"
155
+ )), original: 'Create New Terminal (In Active Workspace)' },
156
+ run: async (c) => {
157
+ if (c.service.isProcessSupportRegistered) {
158
+ const instance = await c.service.createTerminal({ location: c.service.defaultLocation });
159
+ if (!instance) {
160
+ return;
161
+ }
162
+ c.service.setActiveInstance(instance);
163
+ }
164
+ await c.groupService.showPanel(true);
165
+ }
166
+ });
167
+ refreshTerminalActions([]);
168
+ registerTerminalAction({
169
+ id: "workbench.action.createTerminalEditor" ,
170
+ title: { value: ( localize(
171
+ 'workbench.action.terminal.createTerminalEditor',
172
+ "Create New Terminal in Editor Area"
173
+ )), original: 'Create New Terminal in Editor Area' },
174
+ run: async (c, _, args) => {
175
+ const options = (isObject(args) && 'location' in args) ? args : { location: TerminalLocation.Editor };
176
+ const instance = await c.service.createTerminal(options);
177
+ instance.focusWhenReady();
178
+ }
179
+ });
180
+ registerTerminalAction({
181
+ id: "workbench.action.createTerminalEditorSide" ,
182
+ title: { value: ( localize(
183
+ 'workbench.action.terminal.createTerminalEditorSide',
184
+ "Create New Terminal in Editor Area to the Side"
185
+ )), original: 'Create New Terminal in Editor Area to the Side' },
186
+ run: async (c) => {
187
+ const instance = await c.service.createTerminal({
188
+ location: { viewColumn: SIDE_GROUP }
189
+ });
190
+ instance.focusWhenReady();
191
+ }
192
+ });
193
+ registerActiveInstanceAction({
194
+ id: "workbench.action.terminal.moveToEditor" ,
195
+ title: terminalStrings.moveToEditor,
196
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
197
+ TerminalContextKeys.processSupported,
198
+ TerminalContextKeys.terminalHasBeenCreated
199
+ )), ( TerminalContextKeys.terminalEditorActive.toNegated()), TerminalContextKeys.viewShowing)),
200
+ run: (activeInstance, c) => c.service.moveToEditor(activeInstance)
201
+ });
202
+ registerTerminalAction({
203
+ id: "workbench.action.terminal.moveToEditorInstance" ,
204
+ title: terminalStrings.moveToEditor,
205
+ f1: false,
206
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
207
+ TerminalContextKeys.processSupported,
208
+ TerminalContextKeys.terminalHasBeenCreated
209
+ )), TerminalContextKeys.isOpen)),
210
+ run: async (c, accessor) => {
211
+ const selectedInstances = getSelectedInstances(accessor);
212
+ if (!selectedInstances || selectedInstances.length === 0) {
213
+ return;
214
+ }
215
+ for (const instance of selectedInstances) {
216
+ c.service.moveToEditor(instance);
217
+ }
218
+ selectedInstances[selectedInstances.length - 1].focus();
219
+ }
220
+ });
221
+ registerTerminalAction({
222
+ id: "workbench.action.terminal.moveToTerminalPanel" ,
223
+ title: terminalStrings.moveToTerminalPanel,
224
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
225
+ TerminalContextKeys.processSupported,
226
+ TerminalContextKeys.terminalHasBeenCreated
227
+ )), TerminalContextKeys.terminalEditorActive)),
228
+ run: (c, _, args) => {
229
+ const source = toOptionalUri(args) ?? c.editorService.activeInstance;
230
+ if (source) {
231
+ c.service.moveToTerminalView(source);
232
+ }
233
+ }
234
+ });
235
+ registerTerminalAction({
236
+ id: "workbench.action.terminal.showTabs" ,
237
+ title: { value: ( localize('workbench.action.terminal.showTabs', "Show Tabs")), original: 'Show Tabs' },
238
+ f1: false,
239
+ precondition: ( ContextKeyExpr.or(
240
+ TerminalContextKeys.processSupported,
241
+ TerminalContextKeys.terminalHasBeenCreated
242
+ )),
243
+ run: (c) => c.groupService.showTabs()
244
+ });
245
+ registerTerminalAction({
246
+ id: "workbench.action.terminal.focusPreviousPane" ,
247
+ title: { value: ( localize(
248
+ 'workbench.action.terminal.focusPreviousPane',
249
+ "Focus Previous Terminal in Terminal Group"
250
+ )), original: 'Focus Previous Terminal in Terminal Group' },
251
+ keybinding: {
252
+ primary: 512 | 15 ,
253
+ secondary: [512 | 16 ],
254
+ mac: {
255
+ primary: 512 | 2048 | 15 ,
256
+ secondary: [512 | 2048 | 16 ]
257
+ },
258
+ when: TerminalContextKeys.focus,
259
+ weight: 200
260
+ },
261
+ precondition: ( ContextKeyExpr.or(
262
+ TerminalContextKeys.processSupported,
263
+ TerminalContextKeys.terminalHasBeenCreated
264
+ )),
265
+ run: async (c) => {
266
+ c.groupService.activeGroup?.focusPreviousPane();
267
+ await c.groupService.showPanel(true);
268
+ }
269
+ });
270
+ registerTerminalAction({
271
+ id: "workbench.action.terminal.focusNextPane" ,
272
+ title: { value: ( localize(
273
+ 'workbench.action.terminal.focusNextPane',
274
+ "Focus Next Terminal in Terminal Group"
275
+ )), original: 'Focus Next Terminal in Terminal Group' },
276
+ keybinding: {
277
+ primary: 512 | 17 ,
278
+ secondary: [512 | 18 ],
279
+ mac: {
280
+ primary: 512 | 2048 | 17 ,
281
+ secondary: [512 | 2048 | 18 ]
282
+ },
283
+ when: TerminalContextKeys.focus,
284
+ weight: 200
285
+ },
286
+ precondition: ( ContextKeyExpr.or(
287
+ TerminalContextKeys.processSupported,
288
+ TerminalContextKeys.terminalHasBeenCreated
289
+ )),
290
+ run: async (c) => {
291
+ c.groupService.activeGroup?.focusNextPane();
292
+ await c.groupService.showPanel(true);
293
+ }
294
+ });
295
+ registerActiveInstanceAction({
296
+ id: "workbench.action.terminal.runRecentCommand" ,
297
+ title: { value: ( localize('workbench.action.terminal.runRecentCommand', "Run Recent Command...")), original: 'Run Recent Command...' },
298
+ precondition: ( ContextKeyExpr.or(
299
+ TerminalContextKeys.processSupported,
300
+ TerminalContextKeys.terminalHasBeenCreated
301
+ )),
302
+ keybinding: [
303
+ {
304
+ primary: 2048 | 48 ,
305
+ mac: { primary: 256 | 48 },
306
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, CONTEXT_ACCESSIBILITY_MODE_ENABLED)),
307
+ weight: 200
308
+ },
309
+ {
310
+ primary: 2048 | 512 | 48 ,
311
+ mac: { primary: 256 | 512 | 48 },
312
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( CONTEXT_ACCESSIBILITY_MODE_ENABLED.negate()))),
313
+ weight: 200
314
+ }
315
+ ],
316
+ run: async (activeInstance, c) => {
317
+ await activeInstance.runRecent('command');
318
+ if (activeInstance?.target === TerminalLocation.Editor) {
319
+ await c.editorService.revealActiveEditor();
320
+ }
321
+ else {
322
+ await c.groupService.showPanel(false);
323
+ }
324
+ }
325
+ });
326
+ registerActiveInstanceAction({
327
+ id: "workbench.action.terminal.copyLastCommandOutput" ,
328
+ title: { value: ( localize('workbench.action.terminal.copyLastCommand', 'Copy Last Command Output')), original: 'Copy Last Command Output' },
329
+ precondition: ( ContextKeyExpr.or(
330
+ TerminalContextKeys.processSupported,
331
+ TerminalContextKeys.terminalHasBeenCreated
332
+ )),
333
+ run: async (instance, c, accessor) => {
334
+ const clipboardService = accessor.get(IClipboardService);
335
+ const commands = instance.capabilities.get(2 )?.commands;
336
+ if (!commands || commands.length === 0) {
337
+ return;
338
+ }
339
+ const command = commands[commands.length - 1];
340
+ if (!command?.hasOutput()) {
341
+ return;
342
+ }
343
+ const output = command.getOutput();
344
+ if (isString(output)) {
345
+ await clipboardService.writeText(output);
346
+ }
347
+ }
348
+ });
349
+ registerActiveInstanceAction({
350
+ id: "workbench.action.terminal.goToRecentDirectory" ,
351
+ title: { value: ( localize(
352
+ 'workbench.action.terminal.goToRecentDirectory',
353
+ "Go to Recent Directory..."
354
+ )), original: 'Go to Recent Directory...' },
355
+ precondition: ( ContextKeyExpr.or(
356
+ TerminalContextKeys.processSupported,
357
+ TerminalContextKeys.terminalHasBeenCreated
358
+ )),
359
+ keybinding: {
360
+ primary: 2048 | 37 ,
361
+ when: TerminalContextKeys.focus,
362
+ weight: 200
363
+ },
364
+ run: async (activeInstance, c) => {
365
+ await activeInstance.runRecent('cwd');
366
+ if (activeInstance?.target === TerminalLocation.Editor) {
367
+ await c.editorService.revealActiveEditor();
368
+ }
369
+ else {
370
+ await c.groupService.showPanel(false);
371
+ }
372
+ }
373
+ });
374
+ registerTerminalAction({
375
+ id: "workbench.action.terminal.resizePaneLeft" ,
376
+ title: { value: ( localize('workbench.action.terminal.resizePaneLeft', "Resize Terminal Left")), original: 'Resize Terminal Left' },
377
+ keybinding: {
378
+ linux: { primary: 2048 | 1024 | 15 },
379
+ mac: { primary: 2048 | 256 | 15 },
380
+ when: TerminalContextKeys.focus,
381
+ weight: 200
382
+ },
383
+ precondition: ( ContextKeyExpr.or(
384
+ TerminalContextKeys.processSupported,
385
+ TerminalContextKeys.terminalHasBeenCreated
386
+ )),
387
+ run: (c) => c.groupService.activeGroup?.resizePane(0 )
388
+ });
389
+ registerTerminalAction({
390
+ id: "workbench.action.terminal.resizePaneRight" ,
391
+ title: { value: ( localize('workbench.action.terminal.resizePaneRight', "Resize Terminal Right")), original: 'Resize Terminal Right' },
392
+ keybinding: {
393
+ linux: { primary: 2048 | 1024 | 17 },
394
+ mac: { primary: 2048 | 256 | 17 },
395
+ when: TerminalContextKeys.focus,
396
+ weight: 200
397
+ },
398
+ precondition: ( ContextKeyExpr.or(
399
+ TerminalContextKeys.processSupported,
400
+ TerminalContextKeys.terminalHasBeenCreated
401
+ )),
402
+ run: (c) => c.groupService.activeGroup?.resizePane(1 )
403
+ });
404
+ registerTerminalAction({
405
+ id: "workbench.action.terminal.resizePaneUp" ,
406
+ title: { value: ( localize('workbench.action.terminal.resizePaneUp', "Resize Terminal Up")), original: 'Resize Terminal Up' },
407
+ keybinding: {
408
+ mac: { primary: 2048 | 256 | 16 },
409
+ when: TerminalContextKeys.focus,
410
+ weight: 200
411
+ },
412
+ precondition: ( ContextKeyExpr.or(
413
+ TerminalContextKeys.processSupported,
414
+ TerminalContextKeys.terminalHasBeenCreated
415
+ )),
416
+ run: (c) => c.groupService.activeGroup?.resizePane(2 )
417
+ });
418
+ registerTerminalAction({
419
+ id: "workbench.action.terminal.resizePaneDown" ,
420
+ title: { value: ( localize('workbench.action.terminal.resizePaneDown', "Resize Terminal Down")), original: 'Resize Terminal Down' },
421
+ keybinding: {
422
+ mac: { primary: 2048 | 256 | 18 },
423
+ when: TerminalContextKeys.focus,
424
+ weight: 200
425
+ },
426
+ precondition: ( ContextKeyExpr.or(
427
+ TerminalContextKeys.processSupported,
428
+ TerminalContextKeys.terminalHasBeenCreated
429
+ )),
430
+ run: (c) => c.groupService.activeGroup?.resizePane(3 )
431
+ });
432
+ registerTerminalAction({
433
+ id: "workbench.action.terminal.focus" ,
434
+ title: terminalStrings.focus,
435
+ precondition: ( ContextKeyExpr.or(
436
+ TerminalContextKeys.processSupported,
437
+ TerminalContextKeys.terminalHasBeenCreated
438
+ )),
439
+ run: async (c) => {
440
+ const instance = c.service.activeInstance || (await c.service.createTerminal({ location: TerminalLocation.Panel }));
441
+ if (!instance) {
442
+ return;
443
+ }
444
+ c.service.setActiveInstance(instance);
445
+ return c.groupService.showPanel(true);
446
+ }
447
+ });
448
+ registerTerminalAction({
449
+ id: "workbench.action.terminal.focusTabs" ,
450
+ title: { value: ( localize('workbench.action.terminal.focus.tabsView', "Focus Terminal Tabs View")), original: 'Focus Terminal Tabs View' },
451
+ keybinding: {
452
+ primary: 2048 | 1024 | 93 ,
453
+ weight: 200 ,
454
+ when: ( ContextKeyExpr.or(TerminalContextKeys.tabsFocus, TerminalContextKeys.focus)),
455
+ },
456
+ precondition: ( ContextKeyExpr.or(
457
+ TerminalContextKeys.processSupported,
458
+ TerminalContextKeys.terminalHasBeenCreated
459
+ )),
460
+ run: (c) => c.groupService.focusTabs()
461
+ });
462
+ registerTerminalAction({
463
+ id: "workbench.action.terminal.focusNext" ,
464
+ title: { value: ( localize('workbench.action.terminal.focusNext', "Focus Next Terminal Group")), original: 'Focus Next Terminal Group' },
465
+ precondition: ( ContextKeyExpr.or(
466
+ TerminalContextKeys.processSupported,
467
+ TerminalContextKeys.terminalHasBeenCreated
468
+ )),
469
+ keybinding: {
470
+ primary: 2048 | 12 ,
471
+ mac: {
472
+ primary: 2048 | 1024 | 94
473
+ },
474
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.editorFocus.negate()))),
475
+ weight: 200
476
+ },
477
+ run: async (c) => {
478
+ c.groupService.setActiveGroupToNext();
479
+ await c.groupService.showPanel(true);
480
+ }
481
+ });
482
+ registerTerminalAction({
483
+ id: "workbench.action.terminal.focusPrevious" ,
484
+ title: { value: ( localize('workbench.action.terminal.focusPrevious', "Focus Previous Terminal Group")), original: 'Focus Previous Terminal Group' },
485
+ precondition: ( ContextKeyExpr.or(
486
+ TerminalContextKeys.processSupported,
487
+ TerminalContextKeys.terminalHasBeenCreated
488
+ )),
489
+ keybinding: {
490
+ primary: 2048 | 11 ,
491
+ mac: {
492
+ primary: 2048 | 1024 | 92
493
+ },
494
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.editorFocus.negate()))),
495
+ weight: 200
496
+ },
497
+ run: async (c) => {
498
+ c.groupService.setActiveGroupToPrevious();
499
+ await c.groupService.showPanel(true);
500
+ }
501
+ });
502
+ registerTerminalAction({
503
+ id: "workbench.action.terminal.runSelectedText" ,
504
+ title: { value: ( localize(
505
+ 'workbench.action.terminal.runSelectedText',
506
+ "Run Selected Text In Active Terminal"
507
+ )), original: 'Run Selected Text In Active Terminal' },
508
+ run: async (c, accessor) => {
509
+ const codeEditorService = accessor.get(ICodeEditorService);
510
+ const editor = codeEditorService.getActiveCodeEditor();
511
+ if (!editor || !editor.hasModel()) {
512
+ return;
513
+ }
514
+ const instance = await c.service.getActiveOrCreateInstance({ acceptsInput: true });
515
+ const selection = editor.getSelection();
516
+ let text;
517
+ if (selection.isEmpty()) {
518
+ text = editor.getModel().getLineContent(selection.selectionStartLineNumber).trim();
519
+ }
520
+ else {
521
+ const endOfLinePreference = isWindows ? 1 : 2 ;
522
+ text = editor.getModel().getValueInRange(selection, endOfLinePreference);
523
+ }
524
+ instance.sendText(text, true, true);
525
+ await c.service.revealActiveTerminal();
526
+ }
527
+ });
528
+ registerTerminalAction({
529
+ id: "workbench.action.terminal.runActiveFile" ,
530
+ title: { value: ( localize(
531
+ 'workbench.action.terminal.runActiveFile',
532
+ "Run Active File In Active Terminal"
533
+ )), original: 'Run Active File In Active Terminal' },
534
+ precondition: ( ContextKeyExpr.or(
535
+ TerminalContextKeys.processSupported,
536
+ TerminalContextKeys.terminalHasBeenCreated
537
+ )),
538
+ run: async (c, accessor) => {
539
+ const codeEditorService = accessor.get(ICodeEditorService);
540
+ const notificationService = accessor.get(INotificationService);
541
+ const workbenchEnvironmentService = accessor.get(IWorkbenchEnvironmentService);
542
+ const editor = codeEditorService.getActiveCodeEditor();
543
+ if (!editor || !editor.hasModel()) {
544
+ return;
545
+ }
546
+ const instance = await c.service.getActiveOrCreateInstance({ acceptsInput: true });
547
+ const isRemote = instance ? instance.isRemote : (workbenchEnvironmentService.remoteAuthority ? true : false);
548
+ const uri = editor.getModel().uri;
549
+ if ((!isRemote && uri.scheme !== Schemas.file && uri.scheme !== Schemas.vscodeUserData) || (isRemote && uri.scheme !== Schemas.vscodeRemote)) {
550
+ notificationService.warn(( localize(
551
+ 'workbench.action.terminal.runActiveFile.noFile',
552
+ 'Only files on disk can be run in the terminal'
553
+ )));
554
+ return;
555
+ }
556
+ await instance.sendPath(uri, true);
557
+ return c.groupService.showPanel();
558
+ }
559
+ });
560
+ registerActiveInstanceAction({
561
+ id: "workbench.action.terminal.scrollDown" ,
562
+ title: { value: ( localize('workbench.action.terminal.scrollDown', "Scroll Down (Line)")), original: 'Scroll Down (Line)' },
563
+ keybinding: {
564
+ primary: 2048 | 512 | 12 ,
565
+ linux: { primary: 2048 | 1024 | 18 },
566
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.altBufferActive.negate()))),
567
+ weight: 200
568
+ },
569
+ precondition: ( ContextKeyExpr.or(
570
+ TerminalContextKeys.processSupported,
571
+ TerminalContextKeys.terminalHasBeenCreated
572
+ )),
573
+ run: (activeInstance) => activeInstance.scrollDownLine()
574
+ });
575
+ registerActiveInstanceAction({
576
+ id: "workbench.action.terminal.scrollDownPage" ,
577
+ title: { value: ( localize('workbench.action.terminal.scrollDownPage', "Scroll Down (Page)")), original: 'Scroll Down (Page)' },
578
+ keybinding: {
579
+ primary: 1024 | 12 ,
580
+ mac: { primary: 12 },
581
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.altBufferActive.negate()))),
582
+ weight: 200
583
+ },
584
+ precondition: ( ContextKeyExpr.or(
585
+ TerminalContextKeys.processSupported,
586
+ TerminalContextKeys.terminalHasBeenCreated
587
+ )),
588
+ run: (activeInstance) => activeInstance.scrollDownPage()
589
+ });
590
+ registerActiveInstanceAction({
591
+ id: "workbench.action.terminal.scrollToBottom" ,
592
+ title: { value: ( localize('workbench.action.terminal.scrollToBottom', "Scroll to Bottom")), original: 'Scroll to Bottom' },
593
+ keybinding: {
594
+ primary: 2048 | 13 ,
595
+ linux: { primary: 1024 | 13 },
596
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.altBufferActive.negate()))),
597
+ weight: 200
598
+ },
599
+ precondition: ( ContextKeyExpr.or(
600
+ TerminalContextKeys.processSupported,
601
+ TerminalContextKeys.terminalHasBeenCreated
602
+ )),
603
+ run: (activeInstance) => activeInstance.scrollToBottom()
604
+ });
605
+ registerActiveInstanceAction({
606
+ id: "workbench.action.terminal.scrollUp" ,
607
+ title: { value: ( localize('workbench.action.terminal.scrollUp', "Scroll Up (Line)")), original: 'Scroll Up (Line)' },
608
+ keybinding: {
609
+ primary: 2048 | 512 | 11 ,
610
+ linux: { primary: 2048 | 1024 | 16 },
611
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.altBufferActive.negate()))),
612
+ weight: 200
613
+ },
614
+ precondition: ( ContextKeyExpr.or(
615
+ TerminalContextKeys.processSupported,
616
+ TerminalContextKeys.terminalHasBeenCreated
617
+ )),
618
+ run: (activeInstance) => activeInstance.scrollUpLine()
619
+ });
620
+ registerActiveInstanceAction({
621
+ id: "workbench.action.terminal.scrollUpPage" ,
622
+ title: { value: ( localize('workbench.action.terminal.scrollUpPage', "Scroll Up (Page)")), original: 'Scroll Up (Page)' },
623
+ f1: true,
624
+ category,
625
+ keybinding: {
626
+ primary: 1024 | 11 ,
627
+ mac: { primary: 11 },
628
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.altBufferActive.negate()))),
629
+ weight: 200
630
+ },
631
+ precondition: ( ContextKeyExpr.or(
632
+ TerminalContextKeys.processSupported,
633
+ TerminalContextKeys.terminalHasBeenCreated
634
+ )),
635
+ run: (activeInstance) => activeInstance.scrollUpPage()
636
+ });
637
+ registerActiveInstanceAction({
638
+ id: "workbench.action.terminal.scrollToTop" ,
639
+ title: { value: ( localize('workbench.action.terminal.scrollToTop', "Scroll to Top")), original: 'Scroll to Top' },
640
+ keybinding: {
641
+ primary: 2048 | 14 ,
642
+ linux: { primary: 1024 | 14 },
643
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( TerminalContextKeys.altBufferActive.negate()))),
644
+ weight: 200
645
+ },
646
+ precondition: ( ContextKeyExpr.or(
647
+ TerminalContextKeys.processSupported,
648
+ TerminalContextKeys.terminalHasBeenCreated
649
+ )),
650
+ run: (activeInstance) => activeInstance.scrollToTop()
651
+ });
652
+ registerActiveInstanceAction({
653
+ id: "workbench.action.terminal.clearSelection" ,
654
+ title: { value: ( localize('workbench.action.terminal.clearSelection', "Clear Selection")), original: 'Clear Selection' },
655
+ keybinding: {
656
+ primary: 9 ,
657
+ when: ( ContextKeyExpr.and(
658
+ TerminalContextKeys.focus,
659
+ TerminalContextKeys.textSelected,
660
+ TerminalContextKeys.notFindVisible
661
+ )),
662
+ weight: 200
663
+ },
664
+ precondition: ( ContextKeyExpr.or(
665
+ TerminalContextKeys.processSupported,
666
+ TerminalContextKeys.terminalHasBeenCreated
667
+ )),
668
+ run: (activeInstance) => {
669
+ if (activeInstance.hasSelection()) {
670
+ activeInstance.clearSelection();
671
+ }
672
+ }
673
+ });
674
+ registerTerminalAction({
675
+ id: "workbench.action.terminal.changeIcon" ,
676
+ title: terminalStrings.changeIcon,
677
+ precondition: ( ContextKeyExpr.or(
678
+ TerminalContextKeys.processSupported,
679
+ TerminalContextKeys.terminalHasBeenCreated
680
+ )),
681
+ run: (c, _, args) => getResourceOrActiveInstance(c, args)?.changeIcon()
682
+ });
683
+ registerTerminalAction({
684
+ id: "workbench.action.terminal.changeIconPanel" ,
685
+ title: terminalStrings.changeIcon,
686
+ f1: false,
687
+ precondition: ( ContextKeyExpr.or(
688
+ TerminalContextKeys.processSupported,
689
+ TerminalContextKeys.terminalHasBeenCreated
690
+ )),
691
+ run: (c) => c.groupService.activeInstance?.changeIcon()
692
+ });
693
+ registerTerminalAction({
694
+ id: "workbench.action.terminal.changeIconInstance" ,
695
+ title: terminalStrings.changeIcon,
696
+ f1: false,
697
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
698
+ TerminalContextKeys.processSupported,
699
+ TerminalContextKeys.terminalHasBeenCreated
700
+ )), TerminalContextKeys.tabsSingularSelection)),
701
+ run: (c, accessor) => getSelectedInstances(accessor)?.[0].changeIcon()
702
+ });
703
+ registerTerminalAction({
704
+ id: "workbench.action.terminal.changeColor" ,
705
+ title: terminalStrings.changeColor,
706
+ precondition: ( ContextKeyExpr.or(
707
+ TerminalContextKeys.processSupported,
708
+ TerminalContextKeys.terminalHasBeenCreated
709
+ )),
710
+ run: (c, _, args) => getResourceOrActiveInstance(c, args)?.changeColor()
711
+ });
712
+ registerTerminalAction({
713
+ id: "workbench.action.terminal.changeColorPanel" ,
714
+ title: terminalStrings.changeColor,
715
+ f1: false,
716
+ precondition: ( ContextKeyExpr.or(
717
+ TerminalContextKeys.processSupported,
718
+ TerminalContextKeys.terminalHasBeenCreated
719
+ )),
720
+ run: (c) => c.groupService.activeInstance?.changeColor()
721
+ });
722
+ registerTerminalAction({
723
+ id: "workbench.action.terminal.changeColorInstance" ,
724
+ title: terminalStrings.changeColor,
725
+ f1: false,
726
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
727
+ TerminalContextKeys.processSupported,
728
+ TerminalContextKeys.terminalHasBeenCreated
729
+ )), TerminalContextKeys.tabsSingularSelection)),
730
+ run: (c, accessor) => getSelectedInstances(accessor)?.[0].changeColor()
731
+ });
732
+ registerTerminalAction({
733
+ id: "workbench.action.terminal.rename" ,
734
+ title: terminalStrings.rename,
735
+ precondition: ( ContextKeyExpr.or(
736
+ TerminalContextKeys.processSupported,
737
+ TerminalContextKeys.terminalHasBeenCreated
738
+ )),
739
+ run: (c, accessor, args) => renameWithQuickPick(c, accessor, args)
740
+ });
741
+ registerTerminalAction({
742
+ id: "workbench.action.terminal.renamePanel" ,
743
+ title: terminalStrings.rename,
744
+ f1: false,
745
+ precondition: ( ContextKeyExpr.or(
746
+ TerminalContextKeys.processSupported,
747
+ TerminalContextKeys.terminalHasBeenCreated
748
+ )),
749
+ run: (c, accessor) => renameWithQuickPick(c, accessor)
750
+ });
751
+ registerTerminalAction({
752
+ id: "workbench.action.terminal.renameInstance" ,
753
+ title: terminalStrings.rename,
754
+ f1: false,
755
+ keybinding: {
756
+ primary: 60 ,
757
+ mac: {
758
+ primary: 3
759
+ },
760
+ when: ( ContextKeyExpr.and(TerminalContextKeys.tabsFocus)),
761
+ weight: 200
762
+ },
763
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
764
+ TerminalContextKeys.processSupported,
765
+ TerminalContextKeys.terminalHasBeenCreated
766
+ )), TerminalContextKeys.tabsSingularSelection)),
767
+ run: async (c, accessor) => {
768
+ const notificationService = accessor.get(INotificationService);
769
+ const instance = getSelectedInstances(accessor)?.[0];
770
+ if (!instance) {
771
+ return;
772
+ }
773
+ c.service.setEditingTerminal(instance);
774
+ c.service.setEditable(instance, {
775
+ validationMessage: value => validateTerminalName(value),
776
+ onFinish: async (value, success) => {
777
+ c.service.setEditable(instance, null);
778
+ c.service.setEditingTerminal(undefined);
779
+ if (success) {
780
+ try {
781
+ await instance.rename(value);
782
+ }
783
+ catch (e) {
784
+ notificationService.error(e);
785
+ }
786
+ }
787
+ }
788
+ });
789
+ }
790
+ });
791
+ registerActiveInstanceAction({
792
+ id: "workbench.action.terminal.detachSession" ,
793
+ title: { value: ( localize('workbench.action.terminal.detachSession', "Detach Session")), original: 'Detach Session' },
794
+ run: (activeInstance) => activeInstance.detachProcessAndDispose(TerminalExitReason.User)
795
+ });
796
+ registerTerminalAction({
797
+ id: "workbench.action.terminal.attachToSession" ,
798
+ title: { value: ( localize('workbench.action.terminal.attachToSession', "Attach to Session")), original: 'Attach to Session' },
799
+ run: async (c, accessor) => {
800
+ const quickInputService = accessor.get(IQuickInputService);
801
+ const labelService = accessor.get(ILabelService);
802
+ const remoteAgentService = accessor.get(IRemoteAgentService);
803
+ const notificationService = accessor.get(INotificationService);
804
+ const remoteAuthority = remoteAgentService.getConnection()?.remoteAuthority ?? undefined;
805
+ const backend = await accessor.get(ITerminalInstanceService).getBackend(remoteAuthority);
806
+ if (!backend) {
807
+ throw new Error(`No backend registered for remote authority '${remoteAuthority}'`);
808
+ }
809
+ const terms = await backend.listProcesses();
810
+ backend.reduceConnectionGraceTime();
811
+ const unattachedTerms = terms.filter(term => !c.service.isAttachedToTerminal(term));
812
+ const items = ( unattachedTerms.map(term => {
813
+ const cwdLabel = labelService.getUriLabel(URI.file(term.cwd));
814
+ return {
815
+ label: term.title,
816
+ detail: term.workspaceName ? `${term.workspaceName} \u2E31 ${cwdLabel}` : cwdLabel,
817
+ description: term.pid ? String(term.pid) : '',
818
+ term
819
+ };
820
+ }));
821
+ if (items.length === 0) {
822
+ notificationService.info(( localize('noUnattachedTerminals', 'There are no unattached terminals to attach to')));
823
+ return;
824
+ }
825
+ const selected = await quickInputService.pick(items, { canPickMany: false });
826
+ if (selected) {
827
+ const instance = await c.service.createTerminal({
828
+ config: { attachPersistentProcess: selected.term }
829
+ });
830
+ c.service.setActiveInstance(instance);
831
+ await focusActiveTerminal(instance, c);
832
+ }
833
+ }
834
+ });
835
+ registerTerminalAction({
836
+ id: "workbench.action.quickOpenTerm" ,
837
+ title: { value: ( localize('quickAccessTerminal', "Switch Active Terminal")), original: 'Switch Active Terminal' },
838
+ precondition: ( ContextKeyExpr.or(
839
+ TerminalContextKeys.processSupported,
840
+ TerminalContextKeys.terminalHasBeenCreated
841
+ )),
842
+ run: (c, accessor) => accessor.get(IQuickInputService).quickAccess.show(TerminalQuickAccessProvider.PREFIX)
843
+ });
844
+ registerActiveInstanceAction({
845
+ id: "workbench.action.terminal.scrollToPreviousCommand" ,
846
+ title: { value: ( localize(
847
+ 'workbench.action.terminal.scrollToPreviousCommand',
848
+ "Scroll To Previous Command"
849
+ )), original: 'Scroll To Previous Command' },
850
+ keybinding: {
851
+ primary: 2048 | 16 ,
852
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( CONTEXT_ACCESSIBILITY_MODE_ENABLED.negate()))),
853
+ weight: 200
854
+ },
855
+ precondition: ( ContextKeyExpr.or(
856
+ TerminalContextKeys.processSupported,
857
+ TerminalContextKeys.terminalHasBeenCreated
858
+ )),
859
+ run: (activeInstance) => activeInstance.xterm?.markTracker.scrollToPreviousMark(undefined, undefined, ( activeInstance.capabilities.has(2 )))
860
+ });
861
+ registerActiveInstanceAction({
862
+ id: "workbench.action.terminal.scrollToNextCommand" ,
863
+ title: { value: ( localize('workbench.action.terminal.scrollToNextCommand', "Scroll To Next Command")), original: 'Scroll To Next Command' },
864
+ keybinding: {
865
+ primary: 2048 | 18 ,
866
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( CONTEXT_ACCESSIBILITY_MODE_ENABLED.negate()))),
867
+ weight: 200
868
+ },
869
+ precondition: ( ContextKeyExpr.or(
870
+ TerminalContextKeys.processSupported,
871
+ TerminalContextKeys.terminalHasBeenCreated
872
+ )),
873
+ run: (activeInstance) => {
874
+ activeInstance.xterm?.markTracker.scrollToNextMark();
875
+ activeInstance.focus();
876
+ }
877
+ });
878
+ registerActiveInstanceAction({
879
+ id: "workbench.action.terminal.selectToPreviousCommand" ,
880
+ title: { value: ( localize(
881
+ 'workbench.action.terminal.selectToPreviousCommand',
882
+ "Select To Previous Command"
883
+ )), original: 'Select To Previous Command' },
884
+ keybinding: {
885
+ primary: 2048 | 1024 | 16 ,
886
+ when: TerminalContextKeys.focus,
887
+ weight: 200
888
+ },
889
+ precondition: ( ContextKeyExpr.or(
890
+ TerminalContextKeys.processSupported,
891
+ TerminalContextKeys.terminalHasBeenCreated
892
+ )),
893
+ run: (activeInstance) => {
894
+ activeInstance.xterm?.markTracker.selectToPreviousMark();
895
+ activeInstance.focus();
896
+ }
897
+ });
898
+ registerActiveInstanceAction({
899
+ id: "workbench.action.terminal.selectToNextCommand" ,
900
+ title: { value: ( localize('workbench.action.terminal.selectToNextCommand', "Select To Next Command")), original: 'Select To Next Command' },
901
+ keybinding: {
902
+ primary: 2048 | 1024 | 18 ,
903
+ when: TerminalContextKeys.focus,
904
+ weight: 200
905
+ },
906
+ precondition: ( ContextKeyExpr.or(
907
+ TerminalContextKeys.processSupported,
908
+ TerminalContextKeys.terminalHasBeenCreated
909
+ )),
910
+ run: (activeInstance) => {
911
+ activeInstance.xterm?.markTracker.selectToNextMark();
912
+ activeInstance.focus();
913
+ }
914
+ });
915
+ registerActiveInstanceAction({
916
+ id: "workbench.action.terminal.selectToPreviousLine" ,
917
+ title: { value: ( localize(
918
+ 'workbench.action.terminal.selectToPreviousLine',
919
+ "Select To Previous Line"
920
+ )), original: 'Select To Previous Line' },
921
+ precondition: ( ContextKeyExpr.or(
922
+ TerminalContextKeys.processSupported,
923
+ TerminalContextKeys.terminalHasBeenCreated
924
+ )),
925
+ run: async (activeInstance) => {
926
+ activeInstance.xterm?.markTracker.selectToPreviousLine();
927
+ activeInstance.focus();
928
+ }
929
+ });
930
+ registerActiveInstanceAction({
931
+ id: "workbench.action.terminal.selectToNextLine" ,
932
+ title: { value: ( localize('workbench.action.terminal.selectToNextLine', "Select To Next Line")), original: 'Select To Next Line' },
933
+ precondition: ( ContextKeyExpr.or(
934
+ TerminalContextKeys.processSupported,
935
+ TerminalContextKeys.terminalHasBeenCreated
936
+ )),
937
+ run: async (activeInstance) => {
938
+ activeInstance.xterm?.markTracker.selectToNextLine();
939
+ activeInstance.focus();
940
+ }
941
+ });
942
+ registerTerminalAction({
943
+ id: "toggleEscapeSequenceLogging" ,
944
+ title: { value: ( localize(
945
+ 'workbench.action.terminal.toggleEscapeSequenceLogging',
946
+ "Toggle Escape Sequence Logging"
947
+ )), original: 'Toggle Escape Sequence Logging' },
948
+ precondition: ( ContextKeyExpr.or(
949
+ TerminalContextKeys.processSupported,
950
+ TerminalContextKeys.terminalHasBeenCreated
951
+ )),
952
+ run: (c) => c.service.toggleEscapeSequenceLogging()
953
+ });
954
+ registerTerminalAction({
955
+ id: "workbench.action.terminal.sendSequence" ,
956
+ title: terminalStrings.sendSequence,
957
+ f1: false,
958
+ description: {
959
+ description: terminalStrings.sendSequence.value,
960
+ args: [{
961
+ name: 'args',
962
+ schema: {
963
+ type: 'object',
964
+ required: ['text'],
965
+ properties: {
966
+ text: {
967
+ description: ( localize('sendSequence', "The sequence of text to send to the terminal")),
968
+ type: 'string'
969
+ }
970
+ },
971
+ }
972
+ }]
973
+ },
974
+ run: (c, accessor, args) => terminalSendSequenceCommand(accessor, args)
975
+ });
976
+ registerTerminalAction({
977
+ id: "workbench.action.terminal.newWithCwd" ,
978
+ title: terminalStrings.newWithCwd,
979
+ description: {
980
+ description: terminalStrings.newWithCwd.value,
981
+ args: [{
982
+ name: 'args',
983
+ schema: {
984
+ type: 'object',
985
+ required: ['cwd'],
986
+ properties: {
987
+ cwd: {
988
+ description: ( localize(
989
+ 'workbench.action.terminal.newWithCwd.cwd',
990
+ "The directory to start the terminal at"
991
+ )),
992
+ type: 'string'
993
+ }
994
+ },
995
+ }
996
+ }]
997
+ },
998
+ run: async (c, _, args) => {
999
+ const cwd = isObject(args) && 'cwd' in args ? toOptionalString(args.cwd) : undefined;
1000
+ const instance = await c.service.createTerminal({ cwd });
1001
+ if (!instance) {
1002
+ return;
1003
+ }
1004
+ c.service.setActiveInstance(instance);
1005
+ await focusActiveTerminal(instance, c);
1006
+ }
1007
+ });
1008
+ registerActiveInstanceAction({
1009
+ id: "workbench.action.terminal.renameWithArg" ,
1010
+ title: terminalStrings.renameWithArgs,
1011
+ description: {
1012
+ description: terminalStrings.renameWithArgs.value,
1013
+ args: [{
1014
+ name: 'args',
1015
+ schema: {
1016
+ type: 'object',
1017
+ required: ['name'],
1018
+ properties: {
1019
+ name: {
1020
+ description: ( localize(
1021
+ 'workbench.action.terminal.renameWithArg.name',
1022
+ "The new name for the terminal"
1023
+ )),
1024
+ type: 'string',
1025
+ minLength: 1
1026
+ }
1027
+ }
1028
+ }
1029
+ }]
1030
+ },
1031
+ precondition: ( ContextKeyExpr.or(
1032
+ TerminalContextKeys.processSupported,
1033
+ TerminalContextKeys.terminalHasBeenCreated
1034
+ )),
1035
+ run: async (activeInstance, c, accessor, args) => {
1036
+ const notificationService = accessor.get(INotificationService);
1037
+ const name = isObject(args) && 'name' in args ? toOptionalString(args.name) : undefined;
1038
+ if (!name) {
1039
+ notificationService.warn(( localize(
1040
+ 'workbench.action.terminal.renameWithArg.noName',
1041
+ "No name argument provided"
1042
+ )));
1043
+ return;
1044
+ }
1045
+ activeInstance.rename(name);
1046
+ }
1047
+ });
1048
+ registerActiveInstanceAction({
1049
+ id: "workbench.action.terminal.relaunch" ,
1050
+ title: { value: ( localize('workbench.action.terminal.relaunch', "Relaunch Active Terminal")), original: 'Relaunch Active Terminal' },
1051
+ run: (activeInstance) => activeInstance.relaunch()
1052
+ });
1053
+ registerTerminalAction({
1054
+ id: "workbench.action.terminal.split" ,
1055
+ title: terminalStrings.split,
1056
+ precondition: ( ContextKeyExpr.or(
1057
+ TerminalContextKeys.processSupported,
1058
+ TerminalContextKeys.webExtensionContributedProfile
1059
+ )),
1060
+ keybinding: {
1061
+ primary: 2048 | 1024 | 26 ,
1062
+ weight: 200 ,
1063
+ mac: {
1064
+ primary: 2048 | 93 ,
1065
+ secondary: [256 | 1024 | 26 ]
1066
+ },
1067
+ when: TerminalContextKeys.focus
1068
+ },
1069
+ icon: Codicon.splitHorizontal,
1070
+ run: async (c, accessor, args) => {
1071
+ const optionsOrProfile = isObject(args) ? args : undefined;
1072
+ const commandService = accessor.get(ICommandService);
1073
+ const workspaceContextService = accessor.get(IWorkspaceContextService);
1074
+ const options = convertOptionsOrProfileToOptions(optionsOrProfile);
1075
+ const activeInstance = c.service.getInstanceHost(options?.location).activeInstance;
1076
+ if (!activeInstance) {
1077
+ return;
1078
+ }
1079
+ const cwd = await getCwdForSplit(c.service.configHelper, activeInstance, workspaceContextService.getWorkspace().folders, commandService);
1080
+ if (cwd === undefined) {
1081
+ return;
1082
+ }
1083
+ const instance = await c.service.createTerminal({ location: { parentTerminal: activeInstance }, config: options?.config, cwd });
1084
+ await focusActiveTerminal(instance, c);
1085
+ }
1086
+ });
1087
+ registerTerminalAction({
1088
+ id: "workbench.action.terminal.splitInstance" ,
1089
+ title: terminalStrings.split,
1090
+ f1: false,
1091
+ keybinding: {
1092
+ primary: 2048 | 1024 | 26 ,
1093
+ mac: {
1094
+ primary: 2048 | 93 ,
1095
+ secondary: [256 | 1024 | 26 ]
1096
+ },
1097
+ weight: 200 ,
1098
+ when: TerminalContextKeys.tabsFocus
1099
+ },
1100
+ run: async (c, accessor) => {
1101
+ const instances = getSelectedInstances(accessor);
1102
+ if (instances) {
1103
+ const promises = [];
1104
+ for (const t of instances) {
1105
+ promises.push((async () => {
1106
+ await c.service.createTerminal({ location: { parentTerminal: t } });
1107
+ await c.groupService.showPanel(true);
1108
+ })());
1109
+ }
1110
+ await Promise.all(promises);
1111
+ }
1112
+ }
1113
+ });
1114
+ registerActiveInstanceAction({
1115
+ id: "workbench.action.terminal.unsplit" ,
1116
+ title: terminalStrings.unsplit,
1117
+ precondition: ( ContextKeyExpr.or(
1118
+ TerminalContextKeys.processSupported,
1119
+ TerminalContextKeys.terminalHasBeenCreated
1120
+ )),
1121
+ run: (activeInstance, c) => c.groupService.unsplitInstance(activeInstance)
1122
+ });
1123
+ registerTerminalAction({
1124
+ id: "workbench.action.terminal.unsplitInstance" ,
1125
+ title: terminalStrings.unsplit,
1126
+ f1: false,
1127
+ precondition: ( ContextKeyExpr.or(
1128
+ TerminalContextKeys.processSupported,
1129
+ TerminalContextKeys.terminalHasBeenCreated
1130
+ )),
1131
+ run: async (c, accessor) => {
1132
+ const instances = getSelectedInstances(accessor);
1133
+ if (instances?.length === 1) {
1134
+ const group = c.groupService.getGroupForInstance(instances[0]);
1135
+ if (group && group?.terminalInstances.length > 1) {
1136
+ c.groupService.unsplitInstance(instances[0]);
1137
+ }
1138
+ }
1139
+ }
1140
+ });
1141
+ registerTerminalAction({
1142
+ id: "workbench.action.terminal.joinInstance" ,
1143
+ title: { value: ( localize('workbench.action.terminal.joinInstance', "Join Terminals")), original: 'Join Terminals' },
1144
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1145
+ TerminalContextKeys.processSupported,
1146
+ TerminalContextKeys.terminalHasBeenCreated
1147
+ )), ( TerminalContextKeys.tabsSingularSelection.toNegated()))),
1148
+ run: async (c, accessor) => {
1149
+ const instances = getSelectedInstances(accessor);
1150
+ if (instances && instances.length > 1) {
1151
+ c.groupService.joinInstances(instances);
1152
+ }
1153
+ }
1154
+ });
1155
+ registerTerminalAction({
1156
+ id: "workbench.action.terminal.join" ,
1157
+ title: { value: ( localize('workbench.action.terminal.join', "Join Terminals")), original: 'Join Terminals' },
1158
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1159
+ TerminalContextKeys.processSupported,
1160
+ TerminalContextKeys.terminalHasBeenCreated
1161
+ )))),
1162
+ run: async (c, accessor) => {
1163
+ const themeService = accessor.get(IThemeService);
1164
+ const notificationService = accessor.get(INotificationService);
1165
+ const quickInputService = accessor.get(IQuickInputService);
1166
+ const picks = [];
1167
+ if (c.groupService.instances.length <= 1) {
1168
+ notificationService.warn(( localize(
1169
+ 'workbench.action.terminal.join.insufficientTerminals',
1170
+ 'Insufficient terminals for the join action'
1171
+ )));
1172
+ return;
1173
+ }
1174
+ const otherInstances = c.groupService.instances.filter(i => i.instanceId !== c.groupService.activeInstance?.instanceId);
1175
+ for (const terminal of otherInstances) {
1176
+ const group = c.groupService.getGroupForInstance(terminal);
1177
+ if (group?.terminalInstances.length === 1) {
1178
+ const iconId = getIconId(accessor, terminal);
1179
+ const label = `$(${iconId}): ${terminal.title}`;
1180
+ const iconClasses = [];
1181
+ const colorClass = getColorClass(terminal);
1182
+ if (colorClass) {
1183
+ iconClasses.push(colorClass);
1184
+ }
1185
+ const uriClasses = getUriClasses(terminal, themeService.getColorTheme().type);
1186
+ if (uriClasses) {
1187
+ iconClasses.push(...uriClasses);
1188
+ }
1189
+ picks.push({
1190
+ terminal,
1191
+ label,
1192
+ iconClasses
1193
+ });
1194
+ }
1195
+ }
1196
+ if (picks.length === 0) {
1197
+ notificationService.warn(( localize(
1198
+ 'workbench.action.terminal.join.onlySplits',
1199
+ 'All terminals are joined already'
1200
+ )));
1201
+ return;
1202
+ }
1203
+ const result = await quickInputService.pick(picks, {});
1204
+ if (result) {
1205
+ c.groupService.joinInstances([result.terminal, c.groupService.activeInstance]);
1206
+ }
1207
+ }
1208
+ });
1209
+ registerActiveInstanceAction({
1210
+ id: "workbench.action.terminal.splitInActiveWorkspace" ,
1211
+ title: { value: ( localize(
1212
+ 'workbench.action.terminal.splitInActiveWorkspace',
1213
+ "Split Terminal (In Active Workspace)"
1214
+ )), original: 'Split Terminal (In Active Workspace)' },
1215
+ run: async (instance, c) => {
1216
+ const newInstance = await c.service.createTerminal({ location: { parentTerminal: instance } });
1217
+ if (newInstance?.target !== TerminalLocation.Editor) {
1218
+ await c.groupService.showPanel(true);
1219
+ }
1220
+ }
1221
+ });
1222
+ registerActiveInstanceAction({
1223
+ id: "workbench.action.terminal.selectAll" ,
1224
+ title: { value: ( localize('workbench.action.terminal.selectAll', "Select All")), original: 'Select All' },
1225
+ precondition: ( ContextKeyExpr.or(
1226
+ TerminalContextKeys.processSupported,
1227
+ TerminalContextKeys.terminalHasBeenCreated
1228
+ )),
1229
+ keybinding: [{
1230
+ primary: 0,
1231
+ mac: { primary: 2048 | 31 },
1232
+ weight: 200 ,
1233
+ when: TerminalContextKeys.focus
1234
+ }],
1235
+ run: (activeInstance) => activeInstance.selectAll()
1236
+ });
1237
+ registerTerminalAction({
1238
+ id: "workbench.action.terminal.new" ,
1239
+ title: { value: ( localize('workbench.action.terminal.new', "Create New Terminal")), original: 'Create New Terminal' },
1240
+ precondition: ( ContextKeyExpr.or(
1241
+ TerminalContextKeys.processSupported,
1242
+ TerminalContextKeys.webExtensionContributedProfile
1243
+ )),
1244
+ icon: newTerminalIcon,
1245
+ keybinding: {
1246
+ primary: 2048 | 1024 | 91 ,
1247
+ mac: { primary: 256 | 1024 | 91 },
1248
+ weight: 200
1249
+ },
1250
+ run: async (c, accessor, args) => {
1251
+ let eventOrOptions = isObject(args) ? args : undefined;
1252
+ const workspaceContextService = accessor.get(IWorkspaceContextService);
1253
+ const commandService = accessor.get(ICommandService);
1254
+ const folders = workspaceContextService.getWorkspace().folders;
1255
+ if (eventOrOptions && eventOrOptions instanceof MouseEvent && (eventOrOptions.altKey || eventOrOptions.ctrlKey)) {
1256
+ await c.service.createTerminal({ location: { splitActiveTerminal: true } });
1257
+ return;
1258
+ }
1259
+ if (c.service.isProcessSupportRegistered) {
1260
+ eventOrOptions = !eventOrOptions || eventOrOptions instanceof MouseEvent ? {} : eventOrOptions;
1261
+ let instance;
1262
+ if (folders.length <= 1) {
1263
+ instance = await c.service.createTerminal(eventOrOptions);
1264
+ }
1265
+ else {
1266
+ const cwd = (await pickTerminalCwd(accessor))?.cwd;
1267
+ if (!cwd) {
1268
+ return;
1269
+ }
1270
+ eventOrOptions.cwd = cwd;
1271
+ instance = await c.service.createTerminal(eventOrOptions);
1272
+ }
1273
+ c.service.setActiveInstance(instance);
1274
+ await focusActiveTerminal(instance, c);
1275
+ }
1276
+ else {
1277
+ if (c.profileService.contributedProfiles.length > 0) {
1278
+ commandService.executeCommand("workbench.action.terminal.newWithProfile" );
1279
+ }
1280
+ else {
1281
+ commandService.executeCommand("workbench.action.terminal.toggleTerminal" );
1282
+ }
1283
+ }
1284
+ }
1285
+ });
1286
+ registerTerminalAction({
1287
+ id: "workbench.action.terminal.kill" ,
1288
+ title: { value: ( localize('workbench.action.terminal.kill', "Kill the Active Terminal Instance")), original: 'Kill the Active Terminal Instance' },
1289
+ precondition: ( ContextKeyExpr.or(( ContextKeyExpr.or(
1290
+ TerminalContextKeys.processSupported,
1291
+ TerminalContextKeys.terminalHasBeenCreated
1292
+ )), TerminalContextKeys.isOpen)),
1293
+ icon: killTerminalIcon,
1294
+ run: async (c) => {
1295
+ const instance = c.groupService.activeInstance;
1296
+ if (!instance) {
1297
+ return;
1298
+ }
1299
+ await c.service.safeDisposeTerminal(instance);
1300
+ if (c.groupService.instances.length > 0) {
1301
+ await c.groupService.showPanel(true);
1302
+ }
1303
+ }
1304
+ });
1305
+ registerTerminalAction({
1306
+ id: "workbench.action.terminal.killAll" ,
1307
+ title: { value: ( localize('workbench.action.terminal.killAll', "Kill All Terminals")), original: 'Kill All Terminals' },
1308
+ precondition: ( ContextKeyExpr.or(( ContextKeyExpr.or(
1309
+ TerminalContextKeys.processSupported,
1310
+ TerminalContextKeys.terminalHasBeenCreated
1311
+ )), TerminalContextKeys.isOpen)),
1312
+ icon: Codicon.trash,
1313
+ run: async (c) => {
1314
+ const disposePromises = [];
1315
+ for (const instance of c.service.instances) {
1316
+ disposePromises.push(c.service.safeDisposeTerminal(instance));
1317
+ }
1318
+ await Promise.all(disposePromises);
1319
+ }
1320
+ });
1321
+ registerTerminalAction({
1322
+ id: "workbench.action.terminal.killEditor" ,
1323
+ title: { value: ( localize(
1324
+ 'workbench.action.terminal.killEditor',
1325
+ "Kill the Active Terminal in Editor Area"
1326
+ )), original: 'Kill the Active Terminal in Editor Area' },
1327
+ precondition: ( ContextKeyExpr.or(
1328
+ TerminalContextKeys.processSupported,
1329
+ TerminalContextKeys.terminalHasBeenCreated
1330
+ )),
1331
+ keybinding: {
1332
+ primary: 2048 | 53 ,
1333
+ win: { primary: 2048 | 62 , secondary: [2048 | 53 ] },
1334
+ weight: 200 ,
1335
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( ResourceContextKey.Scheme.isEqualTo(Schemas.vscodeTerminal)), TerminalContextKeys.editorFocus))
1336
+ },
1337
+ run: (c, accessor) => accessor.get(ICommandService).executeCommand(CLOSE_EDITOR_COMMAND_ID)
1338
+ });
1339
+ registerTerminalAction({
1340
+ id: "workbench.action.terminal.killInstance" ,
1341
+ title: terminalStrings.kill,
1342
+ f1: false,
1343
+ precondition: ( ContextKeyExpr.or(( ContextKeyExpr.or(
1344
+ TerminalContextKeys.processSupported,
1345
+ TerminalContextKeys.terminalHasBeenCreated
1346
+ )), TerminalContextKeys.isOpen)),
1347
+ keybinding: {
1348
+ primary: 20 ,
1349
+ mac: {
1350
+ primary: 2048 | 1 ,
1351
+ secondary: [20 ]
1352
+ },
1353
+ weight: 200 ,
1354
+ when: TerminalContextKeys.tabsFocus
1355
+ },
1356
+ run: async (c, accessor) => {
1357
+ const selectedInstances = getSelectedInstances(accessor);
1358
+ if (!selectedInstances) {
1359
+ return;
1360
+ }
1361
+ const listService = accessor.get(IListService);
1362
+ const disposePromises = [];
1363
+ for (const instance of selectedInstances) {
1364
+ disposePromises.push(c.service.safeDisposeTerminal(instance));
1365
+ }
1366
+ await Promise.all(disposePromises);
1367
+ if (c.service.instances.length > 0) {
1368
+ c.groupService.focusTabs();
1369
+ listService.lastFocusedList?.focusNext();
1370
+ }
1371
+ }
1372
+ });
1373
+ registerTerminalAction({
1374
+ id: "workbench.action.terminal.focusHover" ,
1375
+ title: terminalStrings.focusHover,
1376
+ precondition: ( ContextKeyExpr.or(( ContextKeyExpr.or(
1377
+ TerminalContextKeys.processSupported,
1378
+ TerminalContextKeys.terminalHasBeenCreated
1379
+ )), TerminalContextKeys.isOpen)),
1380
+ keybinding: {
1381
+ primary: KeyChord(2048 | 41 , 2048 | 39 ),
1382
+ weight: 200 ,
1383
+ when: ( ContextKeyExpr.or(TerminalContextKeys.tabsFocus, TerminalContextKeys.focus))
1384
+ },
1385
+ run: (c) => c.groupService.focusHover()
1386
+ });
1387
+ registerActiveInstanceAction({
1388
+ id: "workbench.action.terminal.clear" ,
1389
+ title: { value: ( localize('workbench.action.terminal.clear', "Clear")), original: 'Clear' },
1390
+ precondition: ( ContextKeyExpr.or(
1391
+ TerminalContextKeys.processSupported,
1392
+ TerminalContextKeys.terminalHasBeenCreated
1393
+ )),
1394
+ keybinding: [{
1395
+ primary: 0,
1396
+ mac: { primary: 2048 | 41 },
1397
+ weight: 200 + 1,
1398
+ when: ( ContextKeyExpr.and(TerminalContextKeys.focus, ( CONTEXT_ACCESSIBILITY_MODE_ENABLED.negate()))),
1399
+ }],
1400
+ run: (activeInstance) => activeInstance.clearBuffer()
1401
+ });
1402
+ registerTerminalAction({
1403
+ id: "workbench.action.terminal.selectDefaultShell" ,
1404
+ title: { value: ( localize('workbench.action.terminal.selectDefaultShell', "Select Default Profile")), original: 'Select Default Profile' },
1405
+ run: (c) => c.service.showProfileQuickPick('setDefault')
1406
+ });
1407
+ registerTerminalAction({
1408
+ id: "workbench.action.terminal.openSettings" ,
1409
+ title: { value: ( localize('workbench.action.terminal.openSettings', "Configure Terminal Settings")), original: 'Configure Terminal Settings' },
1410
+ precondition: ( ContextKeyExpr.or(
1411
+ TerminalContextKeys.processSupported,
1412
+ TerminalContextKeys.terminalHasBeenCreated
1413
+ )),
1414
+ run: (c, accessor) => accessor.get(IPreferencesService).openSettings({ jsonEditor: false, query: '@feature:terminal' })
1415
+ });
1416
+ registerActiveInstanceAction({
1417
+ id: "workbench.action.terminal.setDimensions" ,
1418
+ title: { value: ( localize('workbench.action.terminal.setFixedDimensions', "Set Fixed Dimensions")), original: 'Set Fixed Dimensions' },
1419
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1420
+ TerminalContextKeys.processSupported,
1421
+ TerminalContextKeys.terminalHasBeenCreated
1422
+ )), TerminalContextKeys.isOpen)),
1423
+ run: (activeInstance) => activeInstance.setFixedDimensions()
1424
+ });
1425
+ registerActiveInstanceAction({
1426
+ id: "workbench.action.terminal.sizeToContentWidth" ,
1427
+ title: { value: ( localize(
1428
+ 'workbench.action.terminal.sizeToContentWidth',
1429
+ "Toggle Size to Content Width"
1430
+ )), original: 'Toggle Size to Content Width' },
1431
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1432
+ TerminalContextKeys.processSupported,
1433
+ TerminalContextKeys.terminalHasBeenCreated
1434
+ )), TerminalContextKeys.isOpen)),
1435
+ keybinding: {
1436
+ primary: 512 | 56 ,
1437
+ weight: 200 ,
1438
+ when: TerminalContextKeys.focus
1439
+ },
1440
+ run: (instancactiveInstance) => instancactiveInstance.toggleSizeToContentWidth()
1441
+ });
1442
+ registerTerminalAction({
1443
+ id: "workbench.action.terminal.sizeToContentWidthInstance" ,
1444
+ title: terminalStrings.toggleSizeToContentWidth,
1445
+ f1: false,
1446
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1447
+ TerminalContextKeys.processSupported,
1448
+ TerminalContextKeys.terminalHasBeenCreated
1449
+ )), TerminalContextKeys.focus)),
1450
+ run: (c, accessor) => getSelectedInstances(accessor)?.[0].toggleSizeToContentWidth()
1451
+ });
1452
+ registerTerminalAction({
1453
+ id: "workbench.action.terminal.clearPreviousSessionHistory" ,
1454
+ title: { value: ( localize(
1455
+ 'workbench.action.terminal.clearPreviousSessionHistory',
1456
+ "Clear Previous Session History"
1457
+ )), original: 'Clear Previous Session History' },
1458
+ precondition: ( ContextKeyExpr.or(
1459
+ TerminalContextKeys.processSupported,
1460
+ TerminalContextKeys.terminalHasBeenCreated
1461
+ )),
1462
+ run: async (c, accessor) => {
1463
+ getCommandHistory(accessor).clear();
1464
+ clearShellFileHistory();
1465
+ }
1466
+ });
1467
+ registerActiveInstanceAction({
1468
+ id: "workbench.action.terminal.selectPrevSuggestion" ,
1469
+ title: { value: ( localize(
1470
+ 'workbench.action.terminal.selectPrevSuggestion',
1471
+ "Select the Previous Suggestion"
1472
+ )), original: 'Select the Previous Suggestion' },
1473
+ f1: false,
1474
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1475
+ TerminalContextKeys.processSupported,
1476
+ TerminalContextKeys.terminalHasBeenCreated
1477
+ )), TerminalContextKeys.focus, TerminalContextKeys.isOpen, TerminalContextKeys.suggestWidgetVisible)),
1478
+ keybinding: {
1479
+ primary: 16 ,
1480
+ weight: 200 + 1
1481
+ },
1482
+ run: (activeInstance) => activeInstance.selectPreviousSuggestion()
1483
+ });
1484
+ registerActiveInstanceAction({
1485
+ id: "workbench.action.terminal.selectPrevPageSuggestion" ,
1486
+ title: { value: ( localize(
1487
+ 'workbench.action.terminal.selectPrevPageSuggestion',
1488
+ "Select the Previous Page Suggestion"
1489
+ )), original: 'Select the Previous Page Suggestion' },
1490
+ f1: false,
1491
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1492
+ TerminalContextKeys.processSupported,
1493
+ TerminalContextKeys.terminalHasBeenCreated
1494
+ )), TerminalContextKeys.focus, TerminalContextKeys.isOpen, TerminalContextKeys.suggestWidgetVisible)),
1495
+ keybinding: {
1496
+ primary: 11 ,
1497
+ weight: 200 + 1
1498
+ },
1499
+ run: (activeInstance) => activeInstance.selectPreviousPageSuggestion()
1500
+ });
1501
+ registerActiveInstanceAction({
1502
+ id: "workbench.action.terminal.selectNextSuggestion" ,
1503
+ title: { value: ( localize(
1504
+ 'workbench.action.terminal.selectNextSuggestion',
1505
+ "Select the Next Suggestion"
1506
+ )), original: 'Select the Next Suggestion' },
1507
+ f1: false,
1508
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1509
+ TerminalContextKeys.processSupported,
1510
+ TerminalContextKeys.terminalHasBeenCreated
1511
+ )), TerminalContextKeys.focus, TerminalContextKeys.isOpen, TerminalContextKeys.suggestWidgetVisible)),
1512
+ keybinding: {
1513
+ primary: 18 ,
1514
+ weight: 200 + 1
1515
+ },
1516
+ run: (insactiveInstanceance) => insactiveInstanceance.selectNextSuggestion()
1517
+ });
1518
+ registerActiveInstanceAction({
1519
+ id: "workbench.action.terminal.selectNextPageSuggestion" ,
1520
+ title: { value: ( localize(
1521
+ 'workbench.action.terminal.selectNextPageSuggestion',
1522
+ "Select the Next Page Suggestion"
1523
+ )), original: 'Select the Next Page Suggestion' },
1524
+ f1: false,
1525
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1526
+ TerminalContextKeys.processSupported,
1527
+ TerminalContextKeys.terminalHasBeenCreated
1528
+ )), TerminalContextKeys.focus, TerminalContextKeys.isOpen, TerminalContextKeys.suggestWidgetVisible)),
1529
+ keybinding: {
1530
+ primary: 12 ,
1531
+ weight: 200 + 1
1532
+ },
1533
+ run: (activeInstance) => activeInstance.selectNextPageSuggestion()
1534
+ });
1535
+ registerActiveInstanceAction({
1536
+ id: "workbench.action.terminal.acceptSelectedSuggestion" ,
1537
+ title: { value: ( localize(
1538
+ 'workbench.action.terminal.acceptSelectedSuggestion',
1539
+ "Accept Selected Suggestion"
1540
+ )), original: 'Accept Selected Suggestion' },
1541
+ f1: false,
1542
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1543
+ TerminalContextKeys.processSupported,
1544
+ TerminalContextKeys.terminalHasBeenCreated
1545
+ )), TerminalContextKeys.focus, TerminalContextKeys.isOpen, TerminalContextKeys.suggestWidgetVisible)),
1546
+ keybinding: {
1547
+ primary: 3 ,
1548
+ secondary: [2 ],
1549
+ weight: 200 + 1
1550
+ },
1551
+ run: (activeInstance) => activeInstance.acceptSelectedSuggestion()
1552
+ });
1553
+ registerActiveInstanceAction({
1554
+ id: "workbench.action.terminal.hideSuggestWidget" ,
1555
+ title: { value: ( localize('workbench.action.terminal.hideSuggestWidget', "Hide Suggest Widget")), original: 'Hide Suggest Widget' },
1556
+ f1: false,
1557
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1558
+ TerminalContextKeys.processSupported,
1559
+ TerminalContextKeys.terminalHasBeenCreated
1560
+ )), TerminalContextKeys.focus, TerminalContextKeys.isOpen, TerminalContextKeys.suggestWidgetVisible)),
1561
+ keybinding: {
1562
+ primary: 9 ,
1563
+ weight: 200 + 1
1564
+ },
1565
+ run: (activeInstance) => activeInstance.hideSuggestWidget()
1566
+ });
1567
+ if (BrowserFeatures.clipboard.writeText) {
1568
+ registerActiveInstanceAction({
1569
+ id: "workbench.action.terminal.copySelection" ,
1570
+ title: { value: ( localize('workbench.action.terminal.copySelection', "Copy Selection")), original: 'Copy Selection' },
1571
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1572
+ TerminalContextKeys.processSupported,
1573
+ TerminalContextKeys.terminalHasBeenCreated
1574
+ )), TerminalContextKeys.textSelected)),
1575
+ keybinding: [{
1576
+ primary: 2048 | 1024 | 33 ,
1577
+ mac: { primary: 2048 | 33 },
1578
+ weight: 200 ,
1579
+ when: ( ContextKeyExpr.and(TerminalContextKeys.textSelected, TerminalContextKeys.focus))
1580
+ }],
1581
+ run: (activeInstance) => activeInstance.copySelection()
1582
+ });
1583
+ registerActiveInstanceAction({
1584
+ id: "workbench.action.terminal.copyAndClearSelection" ,
1585
+ title: { value: ( localize(
1586
+ 'workbench.action.terminal.copyAndClearSelection',
1587
+ "Copy and Clear Selection"
1588
+ )), original: 'Copy and Clear Selection' },
1589
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1590
+ TerminalContextKeys.processSupported,
1591
+ TerminalContextKeys.terminalHasBeenCreated
1592
+ )), TerminalContextKeys.textSelected)),
1593
+ keybinding: [{
1594
+ win: { primary: 2048 | 33 },
1595
+ weight: 200 ,
1596
+ when: ( ContextKeyExpr.and(TerminalContextKeys.textSelected, TerminalContextKeys.focus))
1597
+ }],
1598
+ run: async (activeInstance) => {
1599
+ await activeInstance.copySelection();
1600
+ activeInstance.clearSelection();
1601
+ }
1602
+ });
1603
+ registerActiveInstanceAction({
1604
+ id: "workbench.action.terminal.copySelectionAsHtml" ,
1605
+ title: { value: ( localize('workbench.action.terminal.copySelectionAsHtml', "Copy Selection as HTML")), original: 'Copy Selection as HTML' },
1606
+ f1: true,
1607
+ category,
1608
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.or(
1609
+ TerminalContextKeys.processSupported,
1610
+ TerminalContextKeys.terminalHasBeenCreated
1611
+ )), TerminalContextKeys.textSelected)),
1612
+ run: (activeInstance) => activeInstance.copySelection(true)
1613
+ });
1614
+ }
1615
+ if (BrowserFeatures.clipboard.readText) {
1616
+ registerActiveInstanceAction({
1617
+ id: "workbench.action.terminal.paste" ,
1618
+ title: { value: ( localize('workbench.action.terminal.paste', "Paste into Active Terminal")), original: 'Paste into Active Terminal' },
1619
+ precondition: ( ContextKeyExpr.or(
1620
+ TerminalContextKeys.processSupported,
1621
+ TerminalContextKeys.terminalHasBeenCreated
1622
+ )),
1623
+ keybinding: [{
1624
+ primary: 2048 | 52 ,
1625
+ win: { primary: 2048 | 52 , secondary: [2048 | 1024 | 52 ] },
1626
+ linux: { primary: 2048 | 1024 | 52 },
1627
+ weight: 200 ,
1628
+ when: TerminalContextKeys.focus
1629
+ }],
1630
+ run: (activeInstance) => activeInstance.paste()
1631
+ });
1632
+ }
1633
+ if (BrowserFeatures.clipboard.readText && isLinux) {
1634
+ registerActiveInstanceAction({
1635
+ id: "workbench.action.terminal.pasteSelection" ,
1636
+ title: { value: ( localize(
1637
+ 'workbench.action.terminal.pasteSelection',
1638
+ "Paste Selection into Active Terminal"
1639
+ )), original: 'Paste Selection into Active Terminal' },
1640
+ precondition: ( ContextKeyExpr.or(
1641
+ TerminalContextKeys.processSupported,
1642
+ TerminalContextKeys.terminalHasBeenCreated
1643
+ )),
1644
+ keybinding: [{
1645
+ linux: { primary: 1024 | 19 },
1646
+ weight: 200 ,
1647
+ when: TerminalContextKeys.focus
1648
+ }],
1649
+ run: (activeInstance) => activeInstance.pasteSelection()
1650
+ });
1651
+ }
1652
+ registerTerminalAction({
1653
+ id: "workbench.action.terminal.switchTerminal" ,
1654
+ title: { value: ( localize('workbench.action.terminal.switchTerminal', "Switch Terminal")), original: 'Switch Terminal' },
1655
+ precondition: ( ContextKeyExpr.or(
1656
+ TerminalContextKeys.processSupported,
1657
+ TerminalContextKeys.terminalHasBeenCreated
1658
+ )),
1659
+ run: async (c, accessor, args) => {
1660
+ const item = toOptionalString(args);
1661
+ if (!item) {
1662
+ return;
1663
+ }
1664
+ if (item === switchTerminalActionViewItemSeparator) {
1665
+ c.service.refreshActiveGroup();
1666
+ return;
1667
+ }
1668
+ if (item === switchTerminalShowTabsTitle) {
1669
+ accessor.get(IConfigurationService).updateValue("terminal.integrated.tabs.enabled" , true);
1670
+ return;
1671
+ }
1672
+ const terminalIndexRe = /^([0-9]+): /;
1673
+ const indexMatches = terminalIndexRe.exec(item);
1674
+ if (indexMatches) {
1675
+ c.groupService.setActiveGroupByIndex(Number(indexMatches[1]) - 1);
1676
+ return c.groupService.showPanel(true);
1677
+ }
1678
+ const quickSelectProfiles = c.profileService.availableProfiles;
1679
+ const profileSelection = item.substring(4);
1680
+ if (quickSelectProfiles) {
1681
+ const profile = quickSelectProfiles.find(profile => profile.profileName === profileSelection);
1682
+ if (profile) {
1683
+ const instance = await c.service.createTerminal({
1684
+ config: profile
1685
+ });
1686
+ c.service.setActiveInstance(instance);
1687
+ }
1688
+ else {
1689
+ console.warn(`No profile with name "${profileSelection}"`);
1690
+ }
1691
+ }
1692
+ else {
1693
+ console.warn(`Unmatched terminal item: "${item}"`);
1694
+ }
1695
+ }
1696
+ });
1697
+ }
1698
+ function getSelectedInstances(accessor) {
1699
+ const listService = accessor.get(IListService);
1700
+ const terminalService = accessor.get(ITerminalService);
1701
+ if (!listService.lastFocusedList?.getSelection()) {
1702
+ return undefined;
1703
+ }
1704
+ const selections = listService.lastFocusedList.getSelection();
1705
+ const focused = listService.lastFocusedList.getFocus();
1706
+ const instances = [];
1707
+ if (focused.length === 1 && !selections.includes(focused[0])) {
1708
+ instances.push(terminalService.getInstanceFromIndex(focused[0]));
1709
+ return instances;
1710
+ }
1711
+ for (const selection of selections) {
1712
+ instances.push(terminalService.getInstanceFromIndex(selection));
1713
+ }
1714
+ return instances;
1715
+ }
1716
+ function validateTerminalName(name) {
1717
+ if (!name || name.trim().length === 0) {
1718
+ return {
1719
+ content: ( localize(
1720
+ 'emptyTerminalNameInfo',
1721
+ "Providing no name will reset it to the default value"
1722
+ )),
1723
+ severity: Severity.Info
1724
+ };
1725
+ }
1726
+ return null;
1727
+ }
1728
+ function convertOptionsOrProfileToOptions(optionsOrProfile) {
1729
+ if (isObject(optionsOrProfile) && 'profileName' in optionsOrProfile) {
1730
+ return { config: optionsOrProfile, location: optionsOrProfile.location };
1731
+ }
1732
+ return optionsOrProfile;
1733
+ }
1734
+ let newWithProfileAction;
1735
+ function refreshTerminalActions(detectedProfiles) {
1736
+ const profileEnum = createProfileSchemaEnums(detectedProfiles);
1737
+ newWithProfileAction?.dispose();
1738
+ newWithProfileAction = registerAction2(class extends Action2 {
1739
+ constructor() {
1740
+ super({
1741
+ id: "workbench.action.terminal.newWithProfile" ,
1742
+ title: { value: ( localize(
1743
+ 'workbench.action.terminal.newWithProfile',
1744
+ "Create New Terminal (With Profile)"
1745
+ )), original: 'Create New Terminal (With Profile)' },
1746
+ f1: true,
1747
+ category,
1748
+ precondition: ( ContextKeyExpr.or(
1749
+ TerminalContextKeys.processSupported,
1750
+ TerminalContextKeys.webExtensionContributedProfile
1751
+ )),
1752
+ description: {
1753
+ description: "workbench.action.terminal.newWithProfile" ,
1754
+ args: [{
1755
+ name: 'args',
1756
+ schema: {
1757
+ type: 'object',
1758
+ required: ['profileName'],
1759
+ properties: {
1760
+ profileName: {
1761
+ description: ( localize(
1762
+ 'workbench.action.terminal.newWithProfile.profileName',
1763
+ "The name of the profile to create"
1764
+ )),
1765
+ type: 'string',
1766
+ enum: profileEnum.values,
1767
+ markdownEnumDescriptions: profileEnum.markdownDescriptions
1768
+ }
1769
+ }
1770
+ }
1771
+ }]
1772
+ },
1773
+ });
1774
+ }
1775
+ async run(accessor, eventOrOptionsOrProfile, profile) {
1776
+ const c = getTerminalServices(accessor);
1777
+ const workspaceContextService = accessor.get(IWorkspaceContextService);
1778
+ const commandService = accessor.get(ICommandService);
1779
+ let event;
1780
+ let options;
1781
+ let instance;
1782
+ let cwd;
1783
+ if (isObject(eventOrOptionsOrProfile) && eventOrOptionsOrProfile && 'profileName' in eventOrOptionsOrProfile) {
1784
+ const config = c.profileService.availableProfiles.find(profile => profile.profileName === eventOrOptionsOrProfile.profileName);
1785
+ if (!config) {
1786
+ throw new Error(`Could not find terminal profile "${eventOrOptionsOrProfile.profileName}"`);
1787
+ }
1788
+ options = { config };
1789
+ }
1790
+ else if (eventOrOptionsOrProfile instanceof MouseEvent || eventOrOptionsOrProfile instanceof PointerEvent || eventOrOptionsOrProfile instanceof KeyboardEvent) {
1791
+ event = eventOrOptionsOrProfile;
1792
+ options = profile ? { config: profile } : undefined;
1793
+ }
1794
+ else {
1795
+ options = convertOptionsOrProfileToOptions(eventOrOptionsOrProfile);
1796
+ }
1797
+ if (event && (event.altKey || event.ctrlKey)) {
1798
+ const parentTerminal = c.service.activeInstance;
1799
+ if (parentTerminal) {
1800
+ await c.service.createTerminal({ location: { parentTerminal }, config: options?.config });
1801
+ return;
1802
+ }
1803
+ }
1804
+ const folders = workspaceContextService.getWorkspace().folders;
1805
+ if (folders.length > 1) {
1806
+ const options = {
1807
+ placeHolder: ( localize(
1808
+ 'workbench.action.terminal.newWorkspacePlaceholder',
1809
+ "Select current working directory for new terminal"
1810
+ ))
1811
+ };
1812
+ const workspace = await commandService.executeCommand(PICK_WORKSPACE_FOLDER_COMMAND_ID, [options]);
1813
+ if (!workspace) {
1814
+ return;
1815
+ }
1816
+ cwd = workspace.uri;
1817
+ }
1818
+ if (options) {
1819
+ options.cwd = cwd;
1820
+ instance = await c.service.createTerminal(options);
1821
+ }
1822
+ else {
1823
+ instance = await c.service.showProfileQuickPick('createInstance', cwd);
1824
+ }
1825
+ if (instance) {
1826
+ c.service.setActiveInstance(instance);
1827
+ await focusActiveTerminal(instance, c);
1828
+ }
1829
+ }
1830
+ });
1831
+ }
1832
+ function getResourceOrActiveInstance(c, resource) {
1833
+ return c.service.getInstanceFromResource(toOptionalUri(resource)) || c.service.activeInstance;
1834
+ }
1835
+ async function pickTerminalCwd(accessor, cancel) {
1836
+ const quickInputService = accessor.get(IQuickInputService);
1837
+ const labelService = accessor.get(ILabelService);
1838
+ const contextService = accessor.get(IWorkspaceContextService);
1839
+ const modelService = accessor.get(IModelService);
1840
+ const languageService = accessor.get(ILanguageService);
1841
+ const configurationService = accessor.get(IConfigurationService);
1842
+ const configurationResolverService = accessor.get(IConfigurationResolverService);
1843
+ const folders = contextService.getWorkspace().folders;
1844
+ if (!folders.length) {
1845
+ return;
1846
+ }
1847
+ const folderCwdPairs = await Promise.all(( folders.map(
1848
+ x => resolveWorkspaceFolderCwd(x, configurationService, configurationResolverService)
1849
+ )));
1850
+ const shrinkedPairs = shrinkWorkspaceFolderCwdPairs(folderCwdPairs);
1851
+ if (shrinkedPairs.length === 1) {
1852
+ return shrinkedPairs[0];
1853
+ }
1854
+ const folderPicks = ( shrinkedPairs.map(pair => {
1855
+ const label = pair.folder.name;
1856
+ const description = pair.isOverridden
1857
+ ? ( localize(
1858
+ 'workbench.action.terminal.overriddenCwdDescription',
1859
+ "(Overriden) {0}",
1860
+ labelService.getUriLabel(pair.cwd, { relative: !pair.isAbsolute })
1861
+ ))
1862
+ : labelService.getUriLabel(dirname(pair.cwd), { relative: true });
1863
+ return {
1864
+ label,
1865
+ description: description !== label ? description : undefined,
1866
+ pair: pair,
1867
+ iconClasses: getIconClasses(modelService, languageService, pair.cwd, FileKind.ROOT_FOLDER)
1868
+ };
1869
+ }));
1870
+ const options = {
1871
+ placeHolder: ( localize(
1872
+ 'workbench.action.terminal.newWorkspacePlaceholder',
1873
+ "Select current working directory for new terminal"
1874
+ )),
1875
+ matchOnDescription: true,
1876
+ canPickMany: false,
1877
+ };
1878
+ const token = cancel || CancellationToken.None;
1879
+ const pick = await quickInputService.pick(folderPicks, options, token);
1880
+ return pick?.pair;
1881
+ }
1882
+ async function resolveWorkspaceFolderCwd(folder, configurationService, configurationResolverService) {
1883
+ const cwdConfig = configurationService.getValue("terminal.integrated.cwd" , { resource: folder.uri });
1884
+ if (!isString(cwdConfig) || cwdConfig.length === 0) {
1885
+ return { folder, cwd: folder.uri, isAbsolute: false, isOverridden: false };
1886
+ }
1887
+ const resolvedCwdConfig = await configurationResolverService.resolveAsync(folder, cwdConfig);
1888
+ return isAbsolute(resolvedCwdConfig) || resolvedCwdConfig.startsWith(AbstractVariableResolverService.VARIABLE_LHS)
1889
+ ? { folder, isAbsolute: true, isOverridden: true, cwd: ( URI.from({ scheme: folder.uri.scheme, path: resolvedCwdConfig })) }
1890
+ : { folder, isAbsolute: false, isOverridden: true, cwd: URI.joinPath(folder.uri, resolvedCwdConfig) };
1891
+ }
1892
+ function shrinkWorkspaceFolderCwdPairs(pairs) {
1893
+ const map = ( new Map());
1894
+ for (const pair of pairs) {
1895
+ const key = ( pair.cwd.toString());
1896
+ const value = map.get(key);
1897
+ if (!value || key === ( pair.folder.uri.toString())) {
1898
+ map.set(key, pair);
1899
+ }
1900
+ }
1901
+ const selectedPairs = ( new Set(( map.values())));
1902
+ const selectedPairsInOrder = pairs.filter(x => ( selectedPairs.has(x)));
1903
+ return selectedPairsInOrder;
1904
+ }
1905
+ async function focusActiveTerminal(instance, c) {
1906
+ if (instance.target === TerminalLocation.Editor) {
1907
+ await c.editorService.revealActiveEditor();
1908
+ await instance.focusWhenReady(true);
1909
+ }
1910
+ else {
1911
+ await c.groupService.showPanel(true);
1912
+ }
1913
+ }
1914
+ async function renameWithQuickPick(c, accessor, resource) {
1915
+ const instance = getResourceOrActiveInstance(c, resource);
1916
+ if (instance) {
1917
+ const title = await accessor.get(IQuickInputService).input({
1918
+ value: instance.title,
1919
+ prompt: ( localize('workbench.action.terminal.rename.prompt', "Enter terminal name")),
1920
+ });
1921
+ instance.rename(title);
1922
+ }
1923
+ }
1924
+ function toOptionalUri(obj) {
1925
+ return URI.isUri(obj) ? obj : undefined;
1926
+ }
1927
+ function toOptionalString(obj) {
1928
+ return isString(obj) ? obj : undefined;
1929
+ }
1930
+ export { TerminalLaunchHelpAction, getCwdForSplit, refreshTerminalActions, registerActiveInstanceAction, registerTerminalAction, registerTerminalActions, shrinkWorkspaceFolderCwdPairs, switchTerminalActionViewItemSeparator, switchTerminalShowTabsTitle, terminalSendSequenceCommand, validateTerminalName };