@codingame/monaco-vscode-api 4.0.0 → 4.1.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 (909) hide show
  1. package/README.md +2 -0
  2. package/l10n.d.ts +5 -2
  3. package/l10n.js +14 -2
  4. package/missing-services.js +6 -7
  5. package/override/vs/platform/userDataSync/common/extensionsSync.js +4 -0
  6. package/override/vs/platform/userDataSync/common/globalStateSync.js +5 -0
  7. package/package.json +8 -8
  8. package/services.d.ts +2 -0
  9. package/services.js +2 -0
  10. package/vscode/src/vs/base/browser/hash.js +15 -0
  11. package/vscode/src/vs/base/browser/ui/icons/iconSelectBox.css.js +4 -0
  12. package/vscode/src/vs/base/browser/ui/icons/iconSelectBox.js +246 -0
  13. package/vscode/src/vs/base/common/amd.js +101 -0
  14. package/vscode/src/vs/base/common/console.js +60 -0
  15. package/vscode/src/vs/base/common/objects.js +1 -1
  16. package/vscode/src/vs/base/common/paging.js +116 -0
  17. package/vscode/src/vs/base/common/parsers.js +43 -0
  18. package/vscode/src/vs/base/common/processes.js +25 -0
  19. package/vscode/src/vs/base/parts/request/browser/request.js +60 -0
  20. package/vscode/src/vs/editor/browser/coreCommands.js +1 -1
  21. package/vscode/src/vs/editor/common/services/modelUndoRedoParticipant.js +56 -0
  22. package/vscode/src/vs/editor/common/services/textResourceConfigurationService.js +116 -0
  23. package/vscode/src/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js +23 -0
  24. package/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.js +71 -0
  25. package/vscode/src/vs/platform/download/common/downloadIpc.js +16 -0
  26. package/vscode/src/vs/platform/download/common/downloadService.js +31 -0
  27. package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +748 -0
  28. package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +852 -0
  29. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +495 -0
  30. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.js +120 -0
  31. package/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.js +65 -0
  32. package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.js +56 -0
  33. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +42 -0
  34. package/vscode/src/vs/platform/externalServices/common/marketplace.js +15 -0
  35. package/vscode/src/vs/platform/externalTerminal/common/externalTerminal.js +3 -0
  36. package/vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js +404 -0
  37. package/vscode/src/vs/platform/files/common/fileService.js +986 -0
  38. package/vscode/src/vs/platform/files/common/io.js +75 -0
  39. package/vscode/src/vs/platform/issue/common/issueReporterUtil.js +15 -0
  40. package/vscode/src/vs/platform/keyboardLayout/common/keyboardConfig.js +48 -0
  41. package/vscode/src/vs/platform/keyboardLayout/common/keyboardMapper.js +23 -0
  42. package/vscode/src/vs/platform/languagePacks/common/languagePacks.d.ts +18 -0
  43. package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +25 -0
  44. package/vscode/src/vs/platform/log/common/fileLog.js +105 -0
  45. package/vscode/src/vs/platform/log/common/logIpc.js +26 -0
  46. package/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess.js +355 -0
  47. package/vscode/src/vs/platform/quickinput/browser/helpQuickAccess.js +65 -0
  48. package/vscode/src/vs/platform/remote/browser/remoteAuthorityResolverService.js +108 -0
  49. package/vscode/src/vs/platform/remote/common/managedSocket.js +96 -0
  50. package/vscode/src/vs/platform/request/browser/requestService.js +28 -0
  51. package/vscode/src/vs/platform/request/common/requestIpc.js +18 -0
  52. package/vscode/src/vs/platform/telemetry/common/commonProperties.js +11 -0
  53. package/vscode/src/vs/platform/telemetry/common/telemetry.js +2 -1
  54. package/vscode/src/vs/platform/telemetry/common/telemetryUtils.js +7 -3
  55. package/vscode/src/vs/platform/terminal/common/capabilities/naiveCwdDetectionCapability.js +22 -0
  56. package/vscode/src/vs/platform/terminal/common/environmentVariable.js +7 -0
  57. package/vscode/src/vs/platform/terminal/common/environmentVariableCollection.js +196 -0
  58. package/vscode/src/vs/platform/terminal/common/terminalLogService.js +49 -0
  59. package/vscode/src/vs/platform/terminal/common/terminalPlatformConfiguration.js +518 -0
  60. package/vscode/src/vs/platform/terminal/common/terminalProfiles.js +111 -0
  61. package/vscode/src/vs/platform/terminal/common/terminalRecorder.js +66 -0
  62. package/vscode/src/vs/platform/update/common/update.config.contribution.js +98 -0
  63. package/vscode/src/vs/platform/url/common/urlService.js +20 -0
  64. package/vscode/src/vs/platform/userDataProfile/browser/userDataProfile.js +93 -0
  65. package/vscode/src/vs/platform/userDataProfile/common/userDataProfileStorageService.js +8 -0
  66. package/vscode/src/vs/platform/userDataSync/common/extensionsSync.js +256 -0
  67. package/vscode/src/vs/platform/userDataSync/common/globalStateSync.js +120 -0
  68. package/vscode/src/vs/platform/userDataSync/common/keybindingsMerge.js +275 -0
  69. package/vscode/src/vs/platform/userDataSync/common/keybindingsSync.js +316 -0
  70. package/vscode/src/vs/platform/userDataSync/common/settingsSync.js +314 -0
  71. package/vscode/src/vs/platform/userDataSync/common/snippetsMerge.js +125 -0
  72. package/vscode/src/vs/platform/userDataSync/common/snippetsSync.js +474 -0
  73. package/vscode/src/vs/platform/userDataSync/common/tasksSync.js +242 -0
  74. package/vscode/src/vs/platform/userDataSync/common/userDataAutoSyncService.js +464 -0
  75. package/vscode/src/vs/platform/userDataSync/common/userDataProfilesManifestMerge.js +90 -0
  76. package/vscode/src/vs/platform/userDataSync/common/userDataProfilesManifestSync.js +257 -0
  77. package/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService.js +75 -0
  78. package/vscode/src/vs/platform/userDataSync/common/userDataSyncLocalStoreService.js +148 -0
  79. package/vscode/src/vs/platform/userDataSync/common/userDataSyncLog.js +39 -0
  80. package/vscode/src/vs/platform/userDataSync/common/userDataSyncResourceProvider.js +447 -0
  81. package/vscode/src/vs/platform/userDataSync/common/userDataSyncService.js +781 -0
  82. package/vscode/src/vs/workbench/api/browser/extensionHost.contribution.js +103 -0
  83. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +29 -0
  84. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +33 -0
  85. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +252 -0
  86. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +66 -0
  87. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +102 -0
  88. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +68 -0
  89. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +205 -0
  90. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +39 -0
  91. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +22 -0
  92. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +106 -0
  93. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +96 -0
  94. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +558 -0
  95. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +78 -0
  96. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +33 -0
  97. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +577 -0
  98. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +433 -0
  99. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +100 -0
  100. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +67 -0
  101. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +66 -0
  102. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +77 -0
  103. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +251 -0
  104. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +368 -0
  105. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +20 -0
  106. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +39 -0
  107. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +412 -0
  108. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +499 -0
  109. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +225 -0
  110. package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +22 -0
  111. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +315 -0
  112. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +206 -0
  113. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +367 -0
  114. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +70 -0
  115. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +26 -0
  116. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +48 -0
  117. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +25 -0
  118. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +1014 -0
  119. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +183 -0
  120. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +76 -0
  121. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +33 -0
  122. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +76 -0
  123. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +91 -0
  124. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +135 -0
  125. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +192 -0
  126. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +121 -0
  127. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +186 -0
  128. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +127 -0
  129. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +129 -0
  130. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +372 -0
  131. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +23 -0
  132. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +46 -0
  133. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +74 -0
  134. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +36 -0
  135. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +66 -0
  136. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +40 -0
  137. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +183 -0
  138. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +28 -0
  139. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +491 -0
  140. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +47 -0
  141. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +166 -0
  142. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +68 -0
  143. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +48 -0
  144. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +97 -0
  145. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +51 -0
  146. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +70 -0
  147. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +729 -0
  148. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +51 -0
  149. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +407 -0
  150. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +49 -0
  151. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +217 -0
  152. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +22 -0
  153. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +53 -0
  154. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +310 -0
  155. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +221 -0
  156. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +108 -0
  157. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +59 -0
  158. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +27 -0
  159. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +281 -0
  160. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +98 -0
  161. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +133 -0
  162. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +55 -0
  163. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +266 -0
  164. package/vscode/src/vs/workbench/api/common/configurationExtensionPoint.js +594 -0
  165. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +33 -0
  166. package/vscode/src/vs/workbench/browser/actions/quickAccessActions.js +227 -0
  167. package/vscode/src/vs/workbench/browser/layout.js +2059 -0
  168. package/vscode/src/vs/workbench/browser/parts/banner/bannerPart.js +233 -0
  169. package/vscode/src/vs/workbench/browser/parts/banner/media/bannerpart.css.js +4 -0
  170. package/vscode/src/vs/workbench/browser/parts/dialogs/dialog.web.contribution.js +74 -0
  171. package/vscode/src/vs/workbench/browser/parts/dialogs/dialogHandler.js +132 -0
  172. package/vscode/src/vs/workbench/browser/parts/statusbar/media/statusbarpart.css.js +4 -0
  173. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarActions.js +119 -0
  174. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarItem.js +250 -0
  175. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarModel.js +249 -0
  176. package/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart.js +610 -0
  177. package/vscode/src/vs/workbench/browser/parts/titlebar/commandCenterControl.js +220 -0
  178. package/vscode/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css.js +4 -0
  179. package/vscode/src/vs/workbench/browser/parts/titlebar/titlebarActions.js +259 -0
  180. package/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart.js +582 -0
  181. package/vscode/src/vs/workbench/common/dialogs.js +36 -0
  182. package/vscode/src/vs/workbench/common/editor.js +5 -1
  183. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibility.contribution.js +23 -0
  184. package/vscode/src/vs/workbench/contrib/accessibility/browser/accessibilityStatus.js +112 -0
  185. package/vscode/src/vs/workbench/contrib/accessibility/browser/openDiffEditorAnnouncement.js +50 -0
  186. package/vscode/src/vs/workbench/contrib/accessibility/browser/saveAccessibilitySignal.js +18 -0
  187. package/vscode/src/vs/workbench/contrib/accessibility/browser/unfocusedViewDimmingContribution.js +66 -0
  188. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +358 -0
  189. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.js +362 -0
  190. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +265 -0
  191. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/conflicts.js +78 -0
  192. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEdit.contribution.js +364 -0
  193. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEdit.css.js +4 -0
  194. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.js +340 -0
  195. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPreview.js +361 -0
  196. package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditTree.js +655 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +15 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +113 -0
  199. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +501 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +80 -0
  201. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +75 -0
  202. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +108 -0
  203. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +169 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +269 -0
  205. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +316 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +58 -0
  207. package/vscode/src/vs/workbench/contrib/chat/browser/chatContributionServiceImpl.js +421 -0
  208. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +96 -0
  209. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +283 -0
  210. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +88 -0
  211. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +183 -0
  212. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatHistoryVariables.js +25 -0
  213. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +617 -0
  214. package/vscode/src/vs/workbench/contrib/chat/common/chatService.js +2 -1
  215. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +598 -0
  216. package/vscode/src/vs/workbench/contrib/chat/common/voiceChat.js +139 -0
  217. package/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.css.js +4 -0
  218. package/vscode/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.js +39 -0
  219. package/vscode/src/vs/workbench/contrib/codeEditor/browser/emptyTextEditorHint/emptyTextEditorHint.css.js +4 -0
  220. package/vscode/src/vs/workbench/contrib/codeEditor/browser/emptyTextEditorHint/emptyTextEditorHint.js +389 -0
  221. package/vscode/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsOutline.js +370 -0
  222. package/vscode/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.css.js +4 -0
  223. package/vscode/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.js +290 -0
  224. package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js +86 -0
  225. package/vscode/src/vs/workbench/contrib/commands/common/commands.contribution.js +145 -0
  226. package/vscode/src/vs/workbench/contrib/comments/browser/comments.contribution.js +231 -0
  227. package/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution.js +282 -0
  228. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +74 -0
  229. package/vscode/src/vs/workbench/contrib/debug/browser/callStackView.js +1024 -0
  230. package/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.js +1003 -0
  231. package/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling.js +345 -0
  232. package/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.js +335 -0
  233. package/vscode/src/vs/workbench/contrib/debug/browser/debugAdapterManager.js +430 -0
  234. package/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.js +1037 -0
  235. package/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +647 -0
  236. package/vscode/src/vs/workbench/contrib/debug/browser/debugConsoleQuickAccess.js +62 -0
  237. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.js +634 -0
  238. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.js +738 -0
  239. package/vscode/src/vs/workbench/contrib/debug/browser/debugHover.js +406 -0
  240. package/vscode/src/vs/workbench/contrib/debug/browser/debugMemory.js +204 -0
  241. package/vscode/src/vs/workbench/contrib/debug/browser/debugProgress.js +78 -0
  242. package/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.js +167 -0
  243. package/vscode/src/vs/workbench/contrib/debug/browser/debugService.js +1269 -0
  244. package/vscode/src/vs/workbench/contrib/debug/browser/debugSession.js +1328 -0
  245. package/vscode/src/vs/workbench/contrib/debug/browser/debugSessionPicker.js +113 -0
  246. package/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.js +75 -0
  247. package/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.js +305 -0
  248. package/vscode/src/vs/workbench/contrib/debug/browser/debugTitle.js +29 -0
  249. package/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.js +385 -0
  250. package/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.js +265 -0
  251. package/vscode/src/vs/workbench/contrib/debug/browser/disassemblyView.js +815 -0
  252. package/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.js +129 -0
  253. package/vscode/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.js +140 -0
  254. package/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.js +260 -0
  255. package/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.js +667 -0
  256. package/vscode/src/vs/workbench/contrib/debug/browser/media/debug.contribution.css.js +4 -0
  257. package/vscode/src/vs/workbench/contrib/debug/browser/media/debugHover.css.js +4 -0
  258. package/vscode/src/vs/workbench/contrib/debug/browser/media/debugToolBar.css.js +4 -0
  259. package/vscode/src/vs/workbench/contrib/debug/browser/media/debugViewlet.css.js +4 -0
  260. package/vscode/src/vs/workbench/contrib/debug/browser/media/exceptionWidget.css.js +4 -0
  261. package/vscode/src/vs/workbench/contrib/debug/browser/media/repl.css.js +4 -0
  262. package/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.js +707 -0
  263. package/vscode/src/vs/workbench/contrib/debug/browser/repl.js +1000 -0
  264. package/vscode/src/vs/workbench/contrib/debug/browser/replFilter.js +46 -0
  265. package/vscode/src/vs/workbench/contrib/debug/browser/replViewer.js +350 -0
  266. package/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.js +127 -0
  267. package/vscode/src/vs/workbench/contrib/debug/browser/variablesView.js +732 -0
  268. package/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.js +499 -0
  269. package/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.js +160 -0
  270. package/vscode/src/vs/workbench/contrib/debug/common/breakpoints.js +19 -0
  271. package/vscode/src/vs/workbench/contrib/debug/common/debugCompoundRoot.js +15 -0
  272. package/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.js +108 -0
  273. package/vscode/src/vs/workbench/contrib/debug/common/debugLifecycle.js +60 -0
  274. package/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.js +458 -0
  275. package/vscode/src/vs/workbench/contrib/debug/common/debugStorage.js +164 -0
  276. package/vscode/src/vs/workbench/contrib/debug/common/debugTelemetry.js +34 -0
  277. package/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.js +148 -0
  278. package/vscode/src/vs/workbench/contrib/debug/common/debugger.js +287 -0
  279. package/vscode/src/vs/workbench/contrib/debug/common/loadedScriptsPicker.js +85 -0
  280. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.js +1197 -0
  281. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsFileSystemProvider.js +55 -0
  282. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.js +455 -0
  283. package/vscode/src/vs/workbench/contrib/editSessions/browser/editSessionsViews.js +337 -0
  284. package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsLogService.js +39 -0
  285. package/vscode/src/vs/workbench/contrib/editSessions/common/editSessionsStorageClient.js +4 -0
  286. package/vscode/src/vs/workbench/contrib/editSessions/common/workspaceStateSync.js +140 -0
  287. package/vscode/src/vs/workbench/contrib/emmet/browser/actions/expandAbbreviation.js +41 -0
  288. package/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions.js +88 -0
  289. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +539 -0
  290. package/vscode/src/vs/workbench/contrib/extensions/browser/browserRuntimeExtensionsEditor.js +26 -0
  291. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +76 -0
  292. package/vscode/src/vs/workbench/contrib/extensions/browser/deprecatedExtensionsChecker.js +88 -0
  293. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +58 -0
  294. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +1171 -0
  295. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +50 -0
  296. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +543 -0
  297. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +464 -0
  298. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.js +15 -0
  299. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +233 -0
  300. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +2182 -0
  301. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js +12 -0
  302. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +44 -0
  303. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +63 -0
  304. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +96 -0
  305. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +219 -0
  306. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +119 -0
  307. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.js +293 -0
  308. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +934 -0
  309. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +1349 -0
  310. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +858 -0
  311. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +2349 -0
  312. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +328 -0
  313. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +26 -0
  314. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +26 -0
  315. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css.js +4 -0
  316. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css.js +4 -0
  317. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css.js +4 -0
  318. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsWidgets.css.js +4 -0
  319. package/vscode/src/vs/workbench/contrib/extensions/browser/media/runtimeExtensionsEditor.css.js +4 -0
  320. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +27 -0
  321. package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.js +24 -0
  322. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +36 -0
  323. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +160 -0
  324. package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +56 -0
  325. package/vscode/src/vs/workbench/contrib/extensions/common/reportExtensionIssueAction.js +29 -0
  326. package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +49 -0
  327. package/vscode/src/vs/workbench/contrib/externalTerminal/browser/externalTerminal.contribution.js +152 -0
  328. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +81 -0
  329. package/vscode/src/vs/workbench/contrib/files/browser/explorerService.js +430 -0
  330. package/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.js +786 -0
  331. package/vscode/src/vs/workbench/contrib/files/browser/fileCommands.js +510 -0
  332. package/vscode/src/vs/workbench/contrib/files/browser/files.explorer.contribution.js +460 -0
  333. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +39 -0
  334. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +39 -0
  335. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +70 -0
  336. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSavingServiceImpl.js +234 -0
  337. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChatServiceImpl.js +31 -0
  338. package/vscode/src/vs/workbench/contrib/interactive/browser/interactive.contribution.js +737 -0
  339. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveCommon.js +6 -0
  340. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditor.css.js +4 -0
  341. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditor.js +600 -0
  342. package/vscode/src/vs/workbench/contrib/interactive/browser/media/interactive.css.js +4 -0
  343. package/vscode/src/vs/workbench/contrib/issue/browser/issue.contribution.js +27 -0
  344. package/vscode/src/vs/workbench/contrib/issue/common/issue.contribution.js +102 -0
  345. package/vscode/src/vs/workbench/contrib/keybindings/browser/keybindings.contribution.js +28 -0
  346. package/vscode/src/vs/workbench/contrib/languageDetection/browser/languageDetection.contribution.js +156 -0
  347. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistory.contribution.js +4 -0
  348. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistory.js +35 -0
  349. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryCommands.js +635 -0
  350. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryFileSystemProvider.js +87 -0
  351. package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryTimeline.js +136 -0
  352. package/vscode/src/vs/workbench/contrib/logs/common/logs.contribution.js +225 -0
  353. package/vscode/src/vs/workbench/contrib/logs/common/logsActions.js +12 -6
  354. package/vscode/src/vs/workbench/contrib/markdown/browser/markdownSettingRenderer.js +307 -0
  355. package/vscode/src/vs/workbench/contrib/markers/browser/markers.contribution.js +759 -0
  356. package/vscode/src/vs/workbench/contrib/markers/browser/markersFileDecorations.js +127 -0
  357. package/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions.js +75 -0
  358. package/vscode/src/vs/workbench/contrib/markers/browser/markersModel.js +200 -0
  359. package/vscode/src/vs/workbench/contrib/markers/browser/markersTable.js +475 -0
  360. package/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer.js +691 -0
  361. package/vscode/src/vs/workbench/contrib/markers/browser/markersView.js +900 -0
  362. package/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.css.js +4 -0
  363. package/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions.js +132 -0
  364. package/vscode/src/vs/workbench/contrib/markers/browser/media/markers.css.js +4 -0
  365. package/vscode/src/vs/workbench/contrib/markers/browser/messages.js +301 -0
  366. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/utils.js +1 -1
  367. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/actions.js +108 -0
  368. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditor.contribution.js +39 -0
  369. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditor.js +117 -0
  370. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver.js +146 -0
  371. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/contributedStatusBarItemController.js +107 -0
  372. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/statusBarProviders.js +172 -0
  373. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/clipboard/notebookClipboard.js +542 -0
  374. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookBreakpoints.js +105 -0
  375. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookCellPausing.js +66 -0
  376. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/debug/notebookDebugDecorations.js +163 -0
  377. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorHint/emptyCellEditorHint.js +65 -0
  378. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/editorStatusBar/editorStatusBar.js +318 -0
  379. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/execute/executionEditorProgress.js +70 -0
  380. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/media/notebookFind.css.js +4 -0
  381. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFind.js +167 -0
  382. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/format/formatting.js +207 -0
  383. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/gettingStarted/notebookGettingStarted.js +82 -0
  384. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/kernelDetection/notebookKernelDetection.js +81 -0
  385. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/layout/layoutActions.js +65 -0
  386. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/marker/markerProvider.js +100 -0
  387. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/navigation/arrow.js +391 -0
  388. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableCommands.js +62 -0
  389. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableContextKeys.js +3 -0
  390. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariables.js +95 -0
  391. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesDataSource.js +118 -0
  392. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesTree.js +58 -0
  393. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariablesView.js +148 -0
  394. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.js +654 -0
  395. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/profile/notebookProfile.js +75 -0
  396. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/saveParticipants/saveParticipants.js +515 -0
  397. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/troubleshoot/layout.js +157 -0
  398. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/undoRedo/notebookUndoRedo.js +55 -0
  399. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/viewportWarmup/viewportWarmup.js +93 -0
  400. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/apiActions.js +50 -0
  401. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +651 -0
  402. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/executeActions.js +719 -0
  403. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +349 -0
  404. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/layoutActions.js +314 -0
  405. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/sectionActions.js +197 -0
  406. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +46 -0
  407. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1295 -0
  408. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +282 -0
  409. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +561 -0
  410. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +113 -0
  411. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +37 -0
  412. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css.js +4 -0
  413. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffActions.js +312 -0
  414. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +909 -0
  415. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +11 -0
  416. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +393 -0
  417. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +183 -0
  418. package/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution.js +1185 -0
  419. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookAccessibility.js +157 -0
  420. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookExtensionPoint.js +449 -0
  421. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookEditorServiceImpl.js +190 -0
  422. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionServiceImpl.js +104 -0
  423. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookExecutionStateServiceImpl.js +508 -0
  424. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelHistoryServiceImpl.js +128 -0
  425. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKernelServiceImpl.js +339 -0
  426. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookKeymapServiceImpl.js +109 -0
  427. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookLoggingServiceImpl.js +26 -0
  428. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookRendererMessagingServiceImpl.js +63 -0
  429. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookServiceImpl.js +639 -0
  430. package/vscode/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.js +198 -0
  431. package/vscode/src/vs/workbench/contrib/notebook/common/model/cellEdit.js +89 -0
  432. package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.js +1000 -0
  433. package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiffEditorInput.js +101 -0
  434. package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverServiceImpl.js +201 -0
  435. package/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer.js +78 -0
  436. package/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider.js +96 -0
  437. package/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution.js +367 -0
  438. package/vscode/src/vs/workbench/contrib/outline/browser/outlineActions.js +172 -0
  439. package/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.css.js +4 -0
  440. package/vscode/src/vs/workbench/contrib/outline/browser/outlinePane.js +316 -0
  441. package/vscode/src/vs/workbench/contrib/outline/browser/outlineViewState.js +66 -0
  442. package/vscode/src/vs/workbench/contrib/output/browser/output.contribution.js +613 -0
  443. package/vscode/src/vs/workbench/contrib/output/browser/output.css.js +4 -0
  444. package/vscode/src/vs/workbench/contrib/output/browser/outputLinkProvider.js +76 -0
  445. package/vscode/src/vs/workbench/contrib/output/browser/outputServices.js +200 -0
  446. package/vscode/src/vs/workbench/contrib/output/browser/outputView.js +224 -0
  447. package/vscode/src/vs/workbench/contrib/performance/browser/inputLatencyContrib.js +43 -0
  448. package/vscode/src/vs/workbench/contrib/performance/browser/performance.contribution.js +116 -0
  449. package/vscode/src/vs/workbench/contrib/performance/browser/performance.web.contribution.js +5 -0
  450. package/vscode/src/vs/workbench/contrib/performance/browser/perfviewEditor.js +340 -0
  451. package/vscode/src/vs/workbench/contrib/performance/browser/startupTimings.js +114 -0
  452. package/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.js +1237 -0
  453. package/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.js +248 -0
  454. package/vscode/src/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css.js +4 -0
  455. package/vscode/src/vs/workbench/contrib/preferences/browser/media/preferences.css.js +4 -0
  456. package/vscode/src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css.js +4 -0
  457. package/vscode/src/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css.js +4 -0
  458. package/vscode/src/vs/workbench/contrib/preferences/browser/preferences.contribution.js +1374 -0
  459. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions.js +104 -0
  460. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor.js +47 -0
  461. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.js +784 -0
  462. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch.js +461 -0
  463. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2.js +1578 -0
  464. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators.js +624 -0
  465. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsSearchMenu.js +135 -0
  466. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree.js +2122 -0
  467. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets.js +1158 -0
  468. package/vscode/src/vs/workbench/contrib/preferences/browser/tocTree.js +217 -0
  469. package/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution.js +160 -0
  470. package/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter.js +124 -0
  471. package/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +293 -0
  472. package/vscode/src/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +167 -0
  473. package/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js +264 -0
  474. package/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.js +206 -0
  475. package/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems.js +133 -0
  476. package/vscode/src/vs/workbench/contrib/remote/browser/media/remoteViewlet.css.js +4 -0
  477. package/vscode/src/vs/workbench/contrib/remote/browser/remote.contribution.js +18 -0
  478. package/vscode/src/vs/workbench/contrib/remote/browser/remote.js +829 -0
  479. package/vscode/src/vs/workbench/contrib/remote/browser/remoteConnectionHealth.js +164 -0
  480. package/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator.js +800 -0
  481. package/vscode/src/vs/workbench/contrib/remote/browser/remoteStartEntry.contribution.js +5 -0
  482. package/vscode/src/vs/workbench/contrib/remote/browser/remoteStartEntry.js +95 -0
  483. package/vscode/src/vs/workbench/contrib/remote/browser/showCandidate.js +33 -0
  484. package/vscode/src/vs/workbench/contrib/remote/browser/tunnelFactory.js +108 -0
  485. package/vscode/src/vs/workbench/contrib/remote/common/remote.contribution.js +513 -0
  486. package/vscode/src/vs/workbench/contrib/scm/browser/activity.js +306 -0
  487. package/vscode/src/vs/workbench/contrib/scm/browser/media/scm.css.js +4 -0
  488. package/vscode/src/vs/workbench/contrib/scm/browser/menus.js +278 -0
  489. package/vscode/src/vs/workbench/contrib/scm/browser/scm.contribution.js +701 -0
  490. package/vscode/src/vs/workbench/contrib/scm/browser/scmRepositoriesViewPane.js +172 -0
  491. package/vscode/src/vs/workbench/contrib/scm/browser/scmRepositoryRenderer.js +134 -0
  492. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPane.js +3365 -0
  493. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPaneContainer.js +52 -0
  494. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewService.js +303 -0
  495. package/vscode/src/vs/workbench/contrib/scm/browser/util.js +119 -0
  496. package/vscode/src/vs/workbench/contrib/scm/common/quickDiffService.js +74 -0
  497. package/vscode/src/vs/workbench/contrib/scm/common/scmService.js +310 -0
  498. package/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess.js +794 -0
  499. package/vscode/src/vs/workbench/contrib/search/browser/media/anythingQuickAccess.css.js +4 -0
  500. package/vscode/src/vs/workbench/contrib/search/browser/media/searchview.css.js +4 -0
  501. package/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget.js +232 -0
  502. package/vscode/src/vs/workbench/contrib/search/browser/quickTextSearch/textSearchQuickAccess.js +339 -0
  503. package/vscode/src/vs/workbench/contrib/search/browser/replaceContributions.js +7 -0
  504. package/vscode/src/vs/workbench/contrib/search/browser/replaceService.js +230 -0
  505. package/vscode/src/vs/workbench/contrib/search/browser/search.contribution.js +646 -0
  506. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsCopy.js +207 -0
  507. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsNav.js +510 -0
  508. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsRemoveReplace.js +372 -0
  509. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsSymbol.js +42 -0
  510. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsTextQuickAccess.js +43 -0
  511. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsTopBar.js +322 -0
  512. package/vscode/src/vs/workbench/contrib/search/browser/searchFindInput.js +101 -0
  513. package/vscode/src/vs/workbench/contrib/search/browser/searchIcons.js +104 -0
  514. package/vscode/src/vs/workbench/contrib/search/browser/searchMessage.js +64 -0
  515. package/vscode/src/vs/workbench/contrib/search/browser/searchResultsView.js +435 -0
  516. package/vscode/src/vs/workbench/contrib/search/browser/searchView.js +2175 -0
  517. package/vscode/src/vs/workbench/contrib/search/browser/searchWidget.js +672 -0
  518. package/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.js +232 -0
  519. package/vscode/src/vs/workbench/contrib/search/common/cacheState.js +85 -0
  520. package/vscode/src/vs/workbench/contrib/searchEditor/browser/media/searchEditor.css.js +4 -0
  521. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js +585 -0
  522. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor.js +758 -0
  523. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js +187 -0
  524. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +318 -0
  525. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorModel.js +136 -0
  526. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js +291 -0
  527. package/vscode/src/vs/workbench/contrib/share/browser/share.contribution.js +167 -0
  528. package/vscode/src/vs/workbench/contrib/share/browser/share.css.js +4 -0
  529. package/vscode/src/vs/workbench/contrib/share/browser/shareService.js +70 -0
  530. package/vscode/src/vs/workbench/contrib/snippets/browser/commands/configureSnippets.js +331 -0
  531. package/vscode/src/vs/workbench/contrib/snippets/browser/commands/insertSnippet.js +127 -0
  532. package/vscode/src/vs/workbench/contrib/snippets/browser/commands/surroundWithSnippet.js +57 -0
  533. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetCodeActionProvider.js +154 -0
  534. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetPicker.js +111 -0
  535. package/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution.js +141 -0
  536. package/vscode/src/vs/workbench/contrib/speech/browser/speechService.js +271 -0
  537. package/vscode/src/vs/workbench/contrib/surveys/browser/ces.contribution.js +137 -0
  538. package/vscode/src/vs/workbench/contrib/surveys/browser/languageSurveys.contribution.js +50 -0
  539. package/vscode/src/vs/workbench/contrib/surveys/browser/nps.contribution.js +92 -0
  540. package/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService.js +3857 -0
  541. package/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks.js +183 -0
  542. package/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution.js +682 -0
  543. package/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick.js +450 -0
  544. package/vscode/src/vs/workbench/contrib/tasks/browser/taskService.js +36 -0
  545. package/vscode/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.js +189 -0
  546. package/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js +119 -0
  547. package/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.js +1711 -0
  548. package/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon.js +437 -0
  549. package/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1.js +123 -0
  550. package/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2.js +899 -0
  551. package/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors.js +463 -0
  552. package/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher.js +1794 -0
  553. package/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration.js +1579 -0
  554. package/vscode/src/vs/workbench/contrib/tasks/common/taskSystem.js +14 -0
  555. package/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates.js +143 -0
  556. package/vscode/src/vs/workbench/contrib/terminal/browser/baseTerminalBackend.js +114 -0
  557. package/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js +133 -0
  558. package/vscode/src/vs/workbench/contrib/terminal/browser/media/scrollbar.css.js +4 -0
  559. package/vscode/src/vs/workbench/contrib/terminal/browser/media/terminal.css.js +4 -0
  560. package/vscode/src/vs/workbench/contrib/terminal/browser/media/terminalVoice.css.js +4 -0
  561. package/vscode/src/vs/workbench/contrib/terminal/browser/media/widgets.css.js +4 -0
  562. package/vscode/src/vs/workbench/contrib/terminal/browser/media/xterm.css.js +4 -0
  563. package/vscode/src/vs/workbench/contrib/terminal/browser/remotePty.js +91 -0
  564. package/vscode/src/vs/workbench/contrib/terminal/browser/remoteTerminalBackend.js +312 -0
  565. package/vscode/src/vs/workbench/contrib/terminal/browser/terminal.contribution.js +267 -0
  566. package/vscode/src/vs/workbench/contrib/terminal/browser/terminal.web.contribution.js +11 -0
  567. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.js +2070 -0
  568. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands.js +22 -0
  569. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js +221 -0
  570. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalContextMenu.js +40 -0
  571. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditor.js +193 -0
  572. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorSerializer.js +40 -0
  573. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorService.js +239 -0
  574. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEscapeSequences.js +12 -0
  575. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEvents.js +47 -0
  576. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalGroup.js +501 -0
  577. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalGroupService.js +368 -0
  578. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.js +2180 -0
  579. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstanceService.js +81 -0
  580. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalMainContribution.js +94 -0
  581. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalMenus.js +840 -0
  582. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.js +619 -0
  583. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProfileQuickpick.js +312 -0
  584. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProfileResolverService.js +285 -0
  585. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProfileService.js +225 -0
  586. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js +155 -0
  587. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalRunRecentQuickPick.js +335 -0
  588. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalService.js +1156 -0
  589. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalStatusList.js +121 -0
  590. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTabbedView.js +439 -0
  591. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTabsList.js +690 -0
  592. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTooltip.js +84 -0
  593. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalUri.js +39 -0
  594. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalView.js +628 -0
  595. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalVoice.js +199 -0
  596. package/vscode/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.js +91 -0
  597. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/lineDataEventAddon.js +56 -0
  598. package/vscode/src/vs/workbench/contrib/terminal/common/basePty.js +91 -0
  599. package/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService.js +96 -0
  600. package/vscode/src/vs/workbench/contrib/terminal/common/history.js +375 -0
  601. package/vscode/src/vs/workbench/contrib/terminal/common/remote/remoteTerminalChannel.js +253 -0
  602. package/vscode/src/vs/workbench/contrib/terminal/common/terminalClipboard.js +98 -0
  603. package/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration.js +1351 -0
  604. package/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.js +282 -0
  605. package/vscode/src/vs/workbench/contrib/terminal/common/terminalStrings.js +145 -0
  606. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/bufferContentTracker.js +112 -0
  607. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminal.accessibility.contribution.js +389 -0
  608. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibilityHelp.js +190 -0
  609. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibleBufferProvider.js +102 -0
  610. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/browser/textAreaSyncAddon.js +106 -0
  611. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css.js +4 -0
  612. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +9 -0
  613. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +84 -0
  614. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +125 -0
  615. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +31 -0
  616. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +344 -0
  617. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +335 -0
  618. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +154 -0
  619. package/vscode/src/vs/workbench/contrib/terminalContrib/developer/browser/media/developer.css.js +4 -0
  620. package/vscode/src/vs/workbench/contrib/terminalContrib/developer/browser/terminal.developer.contribution.js +237 -0
  621. package/vscode/src/vs/workbench/contrib/terminalContrib/environmentChanges/browser/terminal.environmentChanges.contribution.js +114 -0
  622. package/vscode/src/vs/workbench/contrib/terminalContrib/find/browser/terminal.find.contribution.js +264 -0
  623. package/vscode/src/vs/workbench/contrib/terminalContrib/find/browser/terminalFindWidget.js +165 -0
  624. package/vscode/src/vs/workbench/contrib/terminalContrib/find/browser/textInputContextMenu.js +61 -0
  625. package/vscode/src/vs/workbench/contrib/terminalContrib/highlight/browser/terminal.highlight.contribution.js +36 -0
  626. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminal.links.contribution.js +132 -0
  627. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalExternalLinkDetector.js +38 -0
  628. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLink.js +120 -0
  629. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkDetectorAdapter.js +108 -0
  630. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkHelpers.js +175 -0
  631. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkManager.js +394 -0
  632. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkOpeners.js +240 -0
  633. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkParsing.js +206 -0
  634. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkQuickpick.js +264 -0
  635. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkResolver.js +141 -0
  636. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLocalLinkDetector.js +220 -0
  637. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalMultiLineLinkDetector.js +182 -0
  638. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalUriLinkDetector.js +119 -0
  639. package/vscode/src/vs/workbench/contrib/terminalContrib/links/browser/terminalWordLinkDetector.js +94 -0
  640. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/media/terminalQuickFix.css.js +4 -0
  641. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/quickFixAddon.js +451 -0
  642. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/terminal.quickFix.contribution.js +61 -0
  643. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/terminalQuickFixBuiltinActions.js +323 -0
  644. package/vscode/src/vs/workbench/contrib/terminalContrib/quickFix/browser/terminalQuickFixService.js +168 -0
  645. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/media/stickyScroll.css.js +4 -0
  646. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminal.stickyScroll.contribution.js +5 -0
  647. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollColorRegistry.js +35 -0
  648. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollContribution.js +91 -0
  649. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollOverlay.js +379 -0
  650. package/vscode/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminal.suggest.contribution.js +181 -0
  651. package/vscode/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalSuggestAddon.js +406 -0
  652. package/vscode/src/vs/workbench/contrib/terminalContrib/typeAhead/browser/terminal.typeAhead.contribution.js +54 -0
  653. package/vscode/src/vs/workbench/contrib/terminalContrib/typeAhead/browser/terminalTypeAheadAddon.js +1047 -0
  654. package/vscode/src/vs/workbench/contrib/terminalContrib/zoom/browser/terminal.zoom.contribution.js +130 -0
  655. package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDecorations.js +589 -0
  656. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/display.js +2 -0
  657. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/index.js +81 -0
  658. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/listProjection.js +184 -0
  659. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/testItemContextOverlay.js +16 -0
  660. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/testingObjectTree.js +44 -0
  661. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/testingViewState.js +15 -0
  662. package/vscode/src/vs/workbench/contrib/testing/browser/explorerProjections/treeProjection.js +222 -0
  663. package/vscode/src/vs/workbench/contrib/testing/browser/icons.js +182 -0
  664. package/vscode/src/vs/workbench/contrib/testing/browser/media/testMessageColorizer.css.js +4 -0
  665. package/vscode/src/vs/workbench/contrib/testing/browser/media/testing.css.js +4 -0
  666. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageBars.js +238 -0
  667. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageView.js +562 -0
  668. package/vscode/src/vs/workbench/contrib/testing/browser/testExplorerActions.js +1671 -0
  669. package/vscode/src/vs/workbench/contrib/testing/browser/testMessageColorizer.js +71 -0
  670. package/vscode/src/vs/workbench/contrib/testing/browser/testing.contribution.js +224 -0
  671. package/vscode/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.js +119 -0
  672. package/vscode/src/vs/workbench/contrib/testing/browser/testingDecorations.js +968 -0
  673. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.js +234 -0
  674. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerView.js +1239 -0
  675. package/vscode/src/vs/workbench/contrib/testing/browser/testingOutputPeek.css.js +4 -0
  676. package/vscode/src/vs/workbench/contrib/testing/browser/testingOutputPeek.js +2108 -0
  677. package/vscode/src/vs/workbench/contrib/testing/browser/testingProgressUiService.js +140 -0
  678. package/vscode/src/vs/workbench/contrib/testing/browser/testingViewPaneContainer.js +45 -0
  679. package/vscode/src/vs/workbench/contrib/testing/browser/theme.js +335 -0
  680. package/vscode/src/vs/workbench/contrib/testing/common/configuration.js +274 -0
  681. package/vscode/src/vs/workbench/contrib/testing/common/constants.js +57 -0
  682. package/vscode/src/vs/workbench/contrib/testing/common/mainThreadTestCollection.js +127 -0
  683. package/vscode/src/vs/workbench/contrib/testing/common/observableUtils.js +19 -0
  684. package/vscode/src/vs/workbench/contrib/testing/common/testExclusions.js +46 -0
  685. package/vscode/src/vs/workbench/contrib/testing/common/testServiceImpl.js +294 -0
  686. package/vscode/src/vs/workbench/contrib/testing/common/testingContentProvider.js +123 -0
  687. package/vscode/src/vs/workbench/contrib/testing/common/testingUri.js +65 -0
  688. package/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution.js +955 -0
  689. package/vscode/src/vs/workbench/contrib/timeline/browser/media/timelinePane.css.js +4 -0
  690. package/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.js +118 -0
  691. package/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.js +1161 -0
  692. package/vscode/src/vs/workbench/contrib/timeline/common/timelineService.js +106 -0
  693. package/vscode/src/vs/workbench/contrib/update/browser/media/releasenoteseditor.css.js +4 -0
  694. package/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor.js +411 -0
  695. package/vscode/src/vs/workbench/contrib/update/browser/update.contribution.js +252 -0
  696. package/vscode/src/vs/workbench/contrib/update/browser/update.js +676 -0
  697. package/vscode/src/vs/workbench/contrib/url/browser/externalUriResolver.js +26 -0
  698. package/vscode/src/vs/workbench/contrib/url/browser/trustedDomains.js +198 -0
  699. package/vscode/src/vs/workbench/contrib/url/browser/trustedDomainsFileSystemProvider.js +135 -0
  700. package/vscode/src/vs/workbench/contrib/url/browser/trustedDomainsValidator.js +203 -0
  701. package/vscode/src/vs/workbench/contrib/url/browser/url.contribution.js +66 -0
  702. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.contribution.js +110 -0
  703. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync.js +1466 -0
  704. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncConflictsView.js +223 -0
  705. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger.js +59 -0
  706. package/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.js +858 -0
  707. package/vscode/src/vs/workbench/contrib/welcomeBanner/browser/welcomeBanner.contribution.js +45 -0
  708. package/vscode/src/vs/workbench/contrib/welcomeDialog/browser/media/welcomeWidget.css.js +4 -0
  709. package/vscode/src/vs/workbench/contrib/welcomeDialog/browser/welcomeDialog.contribution.js +102 -0
  710. package/vscode/src/vs/workbench/contrib/welcomeDialog/browser/welcomeWidget.js +187 -0
  711. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.js +380 -0
  712. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.js +1526 -0
  713. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedColors.js +47 -0
  714. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedDetailsRenderer.js +261 -0
  715. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedIcons.js +14 -0
  716. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedInput.js +51 -0
  717. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedList.js +95 -0
  718. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/media/gettingStarted.css.js +4 -0
  719. package/vscode/src/vs/workbench/contrib/welcomeGettingStarted/browser/startupPage.js +216 -0
  720. package/vscode/src/vs/workbench/contrib/welcomeViews/common/newFile.contribution.js +237 -0
  721. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcome.contribution.js +18 -0
  722. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeContribution.js +73 -0
  723. package/vscode/src/vs/workbench/contrib/welcomeViews/common/viewsWelcomeExtensionPoint.js +97 -0
  724. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.js +61 -0
  725. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/media/walkThroughPart.css.js +4 -0
  726. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThrough.contribution.js +38 -0
  727. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughActions.js +57 -0
  728. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughInput.js +113 -0
  729. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/browser/walkThroughPart.js +429 -0
  730. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughContentProvider.js +74 -0
  731. package/vscode/src/vs/workbench/contrib/welcomeWalkthrough/common/walkThroughUtils.js +18 -0
  732. package/vscode/src/vs/workbench/contrib/workspace/browser/media/workspaceTrustEditor.css.js +4 -0
  733. package/vscode/src/vs/workbench/contrib/workspace/browser/workspace.contribution.js +976 -0
  734. package/vscode/src/vs/workbench/contrib/workspace/browser/workspaceTrustEditor.js +1243 -0
  735. package/vscode/src/vs/workbench/contrib/workspaces/browser/workspaces.contribution.js +132 -0
  736. package/vscode/src/vs/workbench/services/actions/common/menusExtensionPoint.js +1595 -0
  737. package/vscode/src/vs/workbench/services/aiRelatedInformation/common/aiRelatedInformationService.js +82 -0
  738. package/vscode/src/vs/workbench/services/authentication/browser/authenticationExtensionsService.js +369 -0
  739. package/vscode/src/vs/workbench/services/commands/common/commandService.js +77 -0
  740. package/vscode/src/vs/workbench/services/configuration/browser/configuration.js +850 -0
  741. package/vscode/src/vs/workbench/services/configuration/browser/configurationService.js +1199 -0
  742. package/vscode/src/vs/workbench/services/configuration/common/configurationEditing.js +666 -0
  743. package/vscode/src/vs/workbench/services/configuration/common/configurationModels.js +119 -0
  744. package/vscode/src/vs/workbench/services/configuration/common/jsonEditingService.js +120 -0
  745. package/vscode/src/vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService.js +309 -0
  746. package/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService.js +27 -0
  747. package/vscode/src/vs/workbench/services/decorations/browser/decorationsService.js +330 -0
  748. package/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.js +377 -0
  749. package/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog.js +1037 -0
  750. package/vscode/src/vs/workbench/services/dialogs/common/dialogService.js +70 -0
  751. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +638 -0
  752. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionsProfileScannerService.js +22 -0
  753. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +892 -0
  754. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService.js +232 -0
  755. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementChannelClient.js +107 -0
  756. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +61 -0
  757. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +1043 -0
  758. package/vscode/src/vs/workbench/services/extensionManagement/common/remoteExtensionManagementService.js +56 -0
  759. package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +279 -0
  760. package/vscode/src/vs/workbench/services/extensionRecommendations/common/extensionIgnoredRecommendationsService.js +82 -0
  761. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +283 -0
  762. package/vscode/src/vs/workbench/services/extensions/browser/extensionsScannerService.js +31 -0
  763. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +274 -0
  764. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +50 -0
  765. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +1147 -0
  766. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +40 -0
  767. package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +23 -0
  768. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +510 -0
  769. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +272 -0
  770. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +56 -0
  771. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +78 -0
  772. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +62 -0
  773. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +159 -0
  774. package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +47 -0
  775. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +220 -0
  776. package/vscode/src/vs/workbench/services/host/browser/browserHostService.js +428 -0
  777. package/vscode/src/vs/workbench/services/issue/browser/issueService.js +97 -0
  778. package/vscode/src/vs/workbench/services/keybinding/browser/keybindingService.js +945 -0
  779. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayoutService.js +500 -0
  780. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution.js +13 -0
  781. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/cz.win.js +162 -0
  782. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de-swiss.win.js +162 -0
  783. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de.darwin.js +125 -0
  784. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de.linux.js +180 -0
  785. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/de.win.js +162 -0
  786. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/dk.win.js +162 -0
  787. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/dvorak.darwin.js +125 -0
  788. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-belgian.win.js +162 -0
  789. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-ext.darwin.js +125 -0
  790. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-in.win.js +162 -0
  791. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-intl.darwin.js +125 -0
  792. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-intl.win.js +162 -0
  793. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-uk.darwin.js +125 -0
  794. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en-uk.win.js +162 -0
  795. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en.darwin.js +133 -0
  796. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en.linux.js +182 -0
  797. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/en.win.js +167 -0
  798. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es-latin.win.js +162 -0
  799. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es.darwin.js +125 -0
  800. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es.linux.js +180 -0
  801. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/es.win.js +162 -0
  802. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/fr.darwin.js +125 -0
  803. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/fr.linux.js +180 -0
  804. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/fr.win.js +162 -0
  805. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/hu.win.js +162 -0
  806. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/it.darwin.js +125 -0
  807. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/it.win.js +162 -0
  808. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/jp-roman.darwin.js +125 -0
  809. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/jp.darwin.js +125 -0
  810. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ko.darwin.js +125 -0
  811. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.darwin.js +17 -0
  812. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.linux.js +6 -0
  813. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.win.js +23 -0
  814. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/no.win.js +162 -0
  815. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pl.darwin.js +125 -0
  816. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pl.win.js +162 -0
  817. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pt-br.win.js +162 -0
  818. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pt.darwin.js +125 -0
  819. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/pt.win.js +162 -0
  820. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ru.darwin.js +125 -0
  821. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ru.linux.js +180 -0
  822. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/ru.win.js +162 -0
  823. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/sv.win.js +164 -0
  824. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/thai.win.js +162 -0
  825. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/tr.win.js +162 -0
  826. package/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/zh-hans.darwin.js +125 -0
  827. package/vscode/src/vs/workbench/services/keybinding/common/keybindingIO.js +72 -0
  828. package/vscode/src/vs/workbench/services/keybinding/common/keymapInfo.js +108 -0
  829. package/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.js +886 -0
  830. package/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.js +350 -0
  831. package/vscode/src/vs/workbench/services/label/common/labelService.js +435 -0
  832. package/vscode/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.js +259 -0
  833. package/vscode/src/vs/workbench/services/lifecycle/browser/lifecycleService.js +135 -0
  834. package/vscode/src/vs/workbench/services/localization/common/locale.d.ts +11 -0
  835. package/vscode/src/vs/workbench/services/notification/common/notificationService.js +251 -0
  836. package/vscode/src/vs/workbench/services/preferences/browser/preferencesService.js +551 -0
  837. package/vscode/src/vs/workbench/services/quickinput/browser/quickInputService.js +37 -0
  838. package/vscode/src/vs/workbench/services/remote/browser/browserRemoteResourceHandler.js +47 -0
  839. package/vscode/src/vs/workbench/services/remote/browser/remoteAgentService.js +76 -0
  840. package/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService.js +177 -0
  841. package/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js +52 -0
  842. package/vscode/src/vs/workbench/services/remote/common/remoteExtensionsScanner.js +71 -0
  843. package/vscode/src/vs/workbench/services/request/browser/requestService.js +48 -0
  844. package/vscode/src/vs/workbench/services/search/common/searchService.js +414 -0
  845. package/vscode/src/vs/workbench/services/storage/browser/storageService.js +290 -0
  846. package/vscode/src/vs/workbench/services/suggest/browser/media/suggest.css.js +4 -0
  847. package/vscode/src/vs/workbench/services/suggest/browser/simpleCompletionItem.js +9 -0
  848. package/vscode/src/vs/workbench/services/suggest/browser/simpleCompletionModel.js +97 -0
  849. package/vscode/src/vs/workbench/services/suggest/browser/simpleSuggestWidget.js +428 -0
  850. package/vscode/src/vs/workbench/services/suggest/browser/simpleSuggestWidgetRenderer.js +83 -0
  851. package/vscode/src/vs/workbench/services/textMate/browser/arrayOperation.js +62 -0
  852. package/vscode/src/vs/workbench/services/textMate/browser/backgroundTokenization/textMateWorkerTokenizerController.js +160 -0
  853. package/vscode/src/vs/workbench/services/textMate/browser/backgroundTokenization/threadedBackgroundTokenizerFactory.js +200 -0
  854. package/vscode/src/vs/workbench/services/textMate/browser/textMateTokenizationFeatureImpl.js +482 -0
  855. package/vscode/src/vs/workbench/services/textMate/browser/tokenizationSupport/textMateTokenizationSupport.js +72 -0
  856. package/vscode/src/vs/workbench/services/textMate/browser/tokenizationSupport/tokenizationSupportWithLineLimit.js +39 -0
  857. package/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory.js +118 -0
  858. package/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry.js +15 -0
  859. package/vscode/src/vs/workbench/services/textfile/browser/browserTextFileService.js +57 -0
  860. package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +652 -0
  861. package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.js +402 -0
  862. package/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.js +62 -0
  863. package/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.js +191 -0
  864. package/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService.js +44 -0
  865. package/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData.js +372 -0
  866. package/vscode/src/vs/workbench/services/themes/browser/productIconThemeData.js +305 -0
  867. package/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService.js +768 -0
  868. package/vscode/src/vs/workbench/services/themes/common/colorThemeData.js +886 -0
  869. package/vscode/src/vs/workbench/services/themes/common/colorThemeSchema.js +309 -0
  870. package/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema.js +432 -0
  871. package/vscode/src/vs/workbench/services/themes/common/plistParser.js +439 -0
  872. package/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema.js +114 -0
  873. package/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher.js +120 -0
  874. package/vscode/src/vs/workbench/services/themes/common/themeCompatibility.js +76 -0
  875. package/vscode/src/vs/workbench/services/themes/common/themeConfiguration.js +469 -0
  876. package/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints.js +340 -0
  877. package/vscode/src/vs/workbench/services/tunnel/browser/tunnelService.js +34 -0
  878. package/vscode/src/vs/workbench/services/url/browser/urlService.js +48 -0
  879. package/vscode/src/vs/workbench/services/userDataProfile/browser/extensionsResource.js +340 -0
  880. package/vscode/src/vs/workbench/services/userDataProfile/browser/globalStateResource.js +145 -0
  881. package/vscode/src/vs/workbench/services/userDataProfile/browser/iconSelectBox.js +96 -0
  882. package/vscode/src/vs/workbench/services/userDataProfile/browser/keybindingsResource.js +117 -0
  883. package/vscode/src/vs/workbench/services/userDataProfile/browser/media/userDataProfileView.css.js +4 -0
  884. package/vscode/src/vs/workbench/services/userDataProfile/browser/settingsResource.js +138 -0
  885. package/vscode/src/vs/workbench/services/userDataProfile/browser/snippetsResource.js +153 -0
  886. package/vscode/src/vs/workbench/services/userDataProfile/browser/tasksResource.js +116 -0
  887. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService.js +1752 -0
  888. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileInit.js +148 -0
  889. package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.js +188 -0
  890. package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfile.js +7 -2
  891. package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncInit.js +445 -0
  892. package/vscode/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.js +786 -0
  893. package/vscode/src/vs/workbench/services/userDataSync/common/userDataSyncUtil.js +46 -0
  894. package/vscode/src/vs/workbench/services/workingCopy/browser/workingCopyBackupService.js +23 -0
  895. package/vscode/src/vs/workbench/services/workingCopy/browser/workingCopyBackupTracker.js +43 -0
  896. package/vscode/src/vs/workbench/services/workingCopy/browser/workingCopyHistoryService.js +28 -0
  897. package/vscode/src/vs/workbench/services/workingCopy/common/abstractFileWorkingCopyManager.js +87 -0
  898. package/vscode/src/vs/workbench/services/workingCopy/common/fileWorkingCopyManager.js +384 -0
  899. package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopyManager.js +406 -0
  900. package/vscode/src/vs/workbench/services/workingCopy/common/untitledFileWorkingCopy.js +142 -0
  901. package/vscode/src/vs/workbench/services/workingCopy/common/untitledFileWorkingCopyManager.js +127 -0
  902. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyBackupService.js +452 -0
  903. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyBackupTracker.js +253 -0
  904. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyHistoryService.js +616 -0
  905. package/vscode/src/vs/workbench/services/workingCopy/common/workingCopyHistoryTracker.js +162 -0
  906. package/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js +335 -0
  907. package/vscode/src/vs/workbench/services/workspaces/browser/workspaceTrustEditorInput.js +41 -0
  908. package/vscode/src/vs/workbench/services/workspaces/browser/workspacesService.js +151 -0
  909. package/vscode/src/vs/workbench/services/workspaces/common/editSessionIdentityService.js +60 -0
@@ -0,0 +1,2175 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { $ as $$1, hide, append, addDisposableListener, clearNode, show, getActiveWindow, getTotalHeight, Dimension, isAncestorOfActiveElement, EventHelper, EventType } from '../../../../base/browser/dom.js';
3
+ import { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';
4
+ import { status } from '../../../../base/browser/ui/aria/aria.js';
5
+ import { ObjectTreeElementCollapseState } from '../../../../base/browser/ui/tree/tree.js';
6
+ import { Delayer, RunOnceScheduler } from '../../../../base/common/async.js';
7
+ import { isCancellationError, onUnexpectedError } from '../../../../base/common/errors.js';
8
+ import { Event } from '../../../../base/common/event.js';
9
+ import { Iterable } from '../../../../base/common/iterator.js';
10
+ import { DisposableStore, Disposable } from '../../../../base/common/lifecycle.js';
11
+ import { isMacintosh, isNative } from '../../../../base/common/platform.js';
12
+ import { escapeRegExpCharacters } from '../../../../base/common/strings.js';
13
+ import { URI } from '../../../../base/common/uri.js';
14
+ import { Schemas } from '../../../../base/common/network.js';
15
+ import './media/searchview.css.js';
16
+ import { isCodeEditor, getCodeEditor, isDiffEditor } from '../../../../editor/browser/editorBrowser.js';
17
+ import { ICodeEditorService } from '../../../../editor/browser/services/codeEditorService.js';
18
+ import { EmbeddedCodeEditorWidget } from '../../../../editor/browser/widget/codeEditor/embeddedCodeEditorWidget.js';
19
+ import { Selection } from '../../../../editor/common/core/selection.js';
20
+ import { CommonFindController } from '../../../../editor/contrib/find/browser/findController.js';
21
+ import { MultiCursorSelectionController } from '../../../../editor/contrib/multicursor/browser/multicursor.js';
22
+ import { localizeWithPath } from '../../../../nls.js';
23
+ import { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';
24
+ import { MenuId } from '../../../../platform/actions/common/actions.js';
25
+ import { ICommandService } from '../../../../platform/commands/common/commands.js';
26
+ import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
27
+ import { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';
28
+ import { IContextViewService, IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';
29
+ import '../../../../../../../override/vs/platform/dialogs/common/dialogs.js';
30
+ import { IFileService } from '../../../../platform/files/common/files.js';
31
+ import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
32
+ import { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';
33
+ import { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';
34
+ import { WorkbenchCompressibleObjectTree, getSelectionKeyboardEvent } from '../../../../platform/list/browser/listService.js';
35
+ import { INotificationService } from '../../../../platform/notification/common/notification.js';
36
+ import { withSelection, IOpenerService } from '../../../../platform/opener/common/opener.js';
37
+ import { IProgressService } from '../../../../platform/progress/common/progress.js';
38
+ import { IStorageService } from '../../../../platform/storage/common/storage.js';
39
+ import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
40
+ import { defaultInputBoxStyles, defaultToggleStyles } from '../../../../platform/theme/browser/defaultStyles.js';
41
+ import { IThemeService } from '../../../../platform/theme/common/themeService.js';
42
+ import { ThemeIcon } from '../../../../base/common/themables.js';
43
+ import { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';
44
+ import { OpenFileFolderAction, OpenFolderAction } from '../../../browser/actions/workspaceActions.js';
45
+ import { ResourceListDnDHandler } from '../../../browser/dnd.js';
46
+ import { ResourceLabels } from '../../../browser/labels.js';
47
+ import { ViewPane } from '../../../browser/parts/views/viewPane.js';
48
+ import { Memento } from '../../../common/memento.js';
49
+ import { IViewDescriptorService } from '../../../common/views.js';
50
+ import { NotebookEditor } from '../../notebook/browser/notebookEditor.js';
51
+ import { IncludePatternInputWidget, ExcludePatternInputWidget } from './patternInputWidget.js';
52
+ import { appendKeyBindingLabel } from './searchActionsBase.js';
53
+ import { searchDetailsIcon } from './searchIcons.js';
54
+ import { renderSearchMessage } from './searchMessage.js';
55
+ import { SearchAccessibilityProvider, SearchDelegate, FolderMatchRenderer, FileMatchRenderer, MatchRenderer } from './searchResultsView.js';
56
+ import { SearchWidget } from './searchWidget.js';
57
+ import { SearchContext } from '../common/constants.js';
58
+ import { IReplaceService } from './replace.js';
59
+ import { SearchStateKey, SearchUIState, getOutOfWorkspaceEditorResources } from '../common/search.js';
60
+ import { SearchHistoryService, ISearchHistoryService } from '../common/searchHistoryService.js';
61
+ import { SearchModelLocation, searchMatchComparer, FileMatch, SearchResult, FolderMatch, Match, FolderMatchWithResource, MatchInNotebook, ISearchViewModelWorkbenchService } from './searchModel.js';
62
+ import { createEditorFromSearchResult } from '../../searchEditor/browser/searchEditorActions.js';
63
+ import { SIDE_GROUP, ACTIVE_GROUP, IEditorService } from '../../../services/editor/common/editorService.js';
64
+ import { IPreferencesService } from '../../../services/preferences/common/preferences.js';
65
+ import { QueryBuilder } from '../../../services/search/common/queryBuilder.js';
66
+ import '../../../services/search/common/search.js';
67
+ import { ITextFileService } from '../../../services/textfile/common/textfiles.js';
68
+ import { INotebookService } from '../../notebook/common/notebookService.js';
69
+ import { ILogService } from '../../../../platform/log/common/log.js';
70
+ import { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';
71
+ import { setupCustomHover } from '../../../../base/browser/ui/hover/updatableHoverWidget.js';
72
+ import { getDefaultHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';
73
+ import { TextSearchCompleteMessageType } from '../../../services/search/common/searchExtTypes.js';
74
+ import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
75
+ var SearchView_1;
76
+ const $ = $$1;
77
+ const SEARCH_CANCELLED_MESSAGE = ( localizeWithPath(
78
+ 'vs/workbench/contrib/search/browser/searchView',
79
+ 'searchCanceled',
80
+ "Search was canceled before any results could be found - "
81
+ ));
82
+ const DEBOUNCE_DELAY = 75;
83
+ let SearchView = class SearchView extends ViewPane {
84
+ static { SearchView_1 = this; }
85
+ static { this.ACTIONS_RIGHT_CLASS_NAME = 'actions-right'; }
86
+ constructor(options, fileService, editorService, codeEditorService, progressService, notificationService, dialogService, commandService, contextViewService, instantiationService, viewDescriptorService, configurationService, contextService, searchViewModelWorkbenchService, contextKeyService, replaceService, textFileService, preferencesService, themeService, searchHistoryService, contextMenuService, accessibilityService, keybindingService, storageService, openerService, telemetryService, notebookService, logService, accessibilitySignalService) {
87
+ super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService);
88
+ this.fileService = fileService;
89
+ this.editorService = editorService;
90
+ this.codeEditorService = codeEditorService;
91
+ this.progressService = progressService;
92
+ this.notificationService = notificationService;
93
+ this.dialogService = dialogService;
94
+ this.commandService = commandService;
95
+ this.contextViewService = contextViewService;
96
+ this.contextService = contextService;
97
+ this.searchViewModelWorkbenchService = searchViewModelWorkbenchService;
98
+ this.replaceService = replaceService;
99
+ this.textFileService = textFileService;
100
+ this.preferencesService = preferencesService;
101
+ this.searchHistoryService = searchHistoryService;
102
+ this.accessibilityService = accessibilityService;
103
+ this.storageService = storageService;
104
+ this.notebookService = notebookService;
105
+ this.logService = logService;
106
+ this.accessibilitySignalService = accessibilitySignalService;
107
+ this.isDisposed = false;
108
+ this.lastFocusState = 'input';
109
+ this.messageDisposables = ( new DisposableStore());
110
+ this.changedWhileHidden = false;
111
+ this.currentSearchQ = Promise.resolve();
112
+ this.pauseSearching = false;
113
+ this._visibleMatches = 0;
114
+ this.container = $$1('.search-view');
115
+ this.viewletVisible = SearchContext.SearchViewVisibleKey.bindTo(this.contextKeyService);
116
+ this.firstMatchFocused = SearchContext.FirstMatchFocusKey.bindTo(this.contextKeyService);
117
+ this.fileMatchOrMatchFocused = SearchContext.FileMatchOrMatchFocusKey.bindTo(this.contextKeyService);
118
+ this.fileMatchOrFolderMatchFocus = SearchContext.FileMatchOrFolderMatchFocusKey.bindTo(this.contextKeyService);
119
+ this.fileMatchOrFolderMatchWithResourceFocus = SearchContext.FileMatchOrFolderMatchWithResourceFocusKey.bindTo(this.contextKeyService);
120
+ this.fileMatchFocused = SearchContext.FileFocusKey.bindTo(this.contextKeyService);
121
+ this.folderMatchFocused = SearchContext.FolderFocusKey.bindTo(this.contextKeyService);
122
+ this.folderMatchWithResourceFocused = SearchContext.ResourceFolderFocusKey.bindTo(this.contextKeyService);
123
+ this.hasSearchResultsKey = SearchContext.HasSearchResults.bindTo(this.contextKeyService);
124
+ this.matchFocused = SearchContext.MatchFocusKey.bindTo(this.contextKeyService);
125
+ this.searchStateKey = SearchStateKey.bindTo(this.contextKeyService);
126
+ this.hasSearchPatternKey = SearchContext.ViewHasSearchPatternKey.bindTo(this.contextKeyService);
127
+ this.hasReplacePatternKey = SearchContext.ViewHasReplacePatternKey.bindTo(this.contextKeyService);
128
+ this.hasFilePatternKey = SearchContext.ViewHasFilePatternKey.bindTo(this.contextKeyService);
129
+ this.hasSomeCollapsibleResultKey = SearchContext.ViewHasSomeCollapsibleKey.bindTo(this.contextKeyService);
130
+ this.treeViewKey = SearchContext.InTreeViewKey.bindTo(this.contextKeyService);
131
+ this.aiResultsVisibleKey = SearchContext.AIResultsVisibleKey.bindTo(this.contextKeyService);
132
+ this._register(this.contextKeyService.onDidChangeContext(e => {
133
+ const keys = ( SearchContext.hasAIResultProvider.keys());
134
+ if (e.affectsSome(( new Set(keys)))) {
135
+ this.refreshHasAISetting();
136
+ }
137
+ }));
138
+ this.contextKeyService = this._register(this.contextKeyService.createScoped(this.container));
139
+ SearchContext.SearchViewFocusedKey.bindTo(this.contextKeyService).set(true);
140
+ this.inputBoxFocused = SearchContext.InputBoxFocusedKey.bindTo(this.contextKeyService);
141
+ this.inputPatternIncludesFocused = SearchContext.PatternIncludesFocusedKey.bindTo(this.contextKeyService);
142
+ this.inputPatternExclusionsFocused = SearchContext.PatternExcludesFocusedKey.bindTo(this.contextKeyService);
143
+ this.isEditableItem = SearchContext.IsEditableItemKey.bindTo(this.contextKeyService);
144
+ this.instantiationService = this.instantiationService.createChild(( new ServiceCollection([IContextKeyService, this.contextKeyService])));
145
+ this._register(this.configurationService.onDidChangeConfiguration(e => {
146
+ if (e.affectsConfiguration('search.sortOrder')) {
147
+ if (this.searchConfig.sortOrder === "modified" ) {
148
+ this.removeFileStats();
149
+ }
150
+ this.refreshTree();
151
+ }
152
+ else if (e.affectsConfiguration('search.aiResults')) {
153
+ this.refreshHasAISetting();
154
+ }
155
+ }));
156
+ this.viewModel = this._register(this.searchViewModelWorkbenchService.searchModel);
157
+ this.queryBuilder = this.instantiationService.createInstance(QueryBuilder);
158
+ this.memento = ( new Memento(this.id, storageService));
159
+ this.viewletState = this.memento.getMemento(1 , 1 );
160
+ this._register(this.fileService.onDidFilesChange(e => this.onFilesChanged(e)));
161
+ this._register(this.textFileService.untitled.onWillDispose(model => this.onUntitledDidDispose(model.resource)));
162
+ this._register(this.contextService.onDidChangeWorkbenchState(() => this.onDidChangeWorkbenchState()));
163
+ this._register(this.searchHistoryService.onDidClearHistory(() => this.clearHistory()));
164
+ this._register(this.configurationService.onDidChangeConfiguration(e => this.onConfigurationUpdated(e)));
165
+ this.delayedRefresh = this._register(( new Delayer(250)));
166
+ this.addToSearchHistoryDelayer = this._register(( new Delayer(2000)));
167
+ this.toggleCollapseStateDelayer = this._register(( new Delayer(100)));
168
+ this.triggerQueryDelayer = this._register(( new Delayer(0)));
169
+ this.treeAccessibilityProvider = this.instantiationService.createInstance(SearchAccessibilityProvider, this);
170
+ this.isTreeLayoutViewVisible = this.viewletState['view.treeLayout'] ?? ((this.searchConfig.defaultViewMode === "tree") );
171
+ this._refreshResultsScheduler = this._register(( new RunOnceScheduler(this._updateResults.bind(this), 80)));
172
+ this._register(this.storageService.onWillSaveState(() => {
173
+ this._saveSearchHistoryService();
174
+ }));
175
+ this._register(this.storageService.onDidChangeValue(1 , SearchHistoryService.SEARCH_HISTORY_KEY, this._register(( new DisposableStore())))(() => {
176
+ const restoredHistory = this.searchHistoryService.load();
177
+ if (restoredHistory.include) {
178
+ this.inputPatternIncludes.prependHistory(restoredHistory.include);
179
+ }
180
+ if (restoredHistory.exclude) {
181
+ this.inputPatternExcludes.prependHistory(restoredHistory.exclude);
182
+ }
183
+ if (restoredHistory.search) {
184
+ this.searchWidget.prependSearchHistory(restoredHistory.search);
185
+ }
186
+ if (restoredHistory.replace) {
187
+ this.searchWidget.prependReplaceHistory(restoredHistory.replace);
188
+ }
189
+ }));
190
+ }
191
+ get isTreeLayoutViewVisible() {
192
+ return this.treeViewKey.get() ?? false;
193
+ }
194
+ set isTreeLayoutViewVisible(visible) {
195
+ this.treeViewKey.set(visible);
196
+ }
197
+ get aiResultsVisible() {
198
+ return this.aiResultsVisibleKey.get() ?? false;
199
+ }
200
+ set aiResultsVisible(visible) {
201
+ this.aiResultsVisibleKey.set(visible);
202
+ }
203
+ setTreeView(visible) {
204
+ if (visible === this.isTreeLayoutViewVisible) {
205
+ return;
206
+ }
207
+ this.isTreeLayoutViewVisible = visible;
208
+ this.updateIndentStyles(this.themeService.getFileIconTheme());
209
+ this.refreshTree();
210
+ }
211
+ async setAIResultsVisible(visible) {
212
+ if (visible === this.aiResultsVisible) {
213
+ return;
214
+ }
215
+ this.aiResultsVisible = visible;
216
+ if (this.viewModel.searchResult.isEmpty()) {
217
+ return;
218
+ }
219
+ this.model.cancelAISearch();
220
+ if (visible) {
221
+ await this.model.addAIResults();
222
+ }
223
+ else {
224
+ this.searchWidget.toggleReplace(false);
225
+ }
226
+ this.onSearchResultsChanged();
227
+ this.onSearchComplete(() => { }, undefined, undefined, this.viewModel.searchResult.getCachedSearchComplete(visible));
228
+ }
229
+ get state() {
230
+ return this.searchStateKey.get() ?? SearchUIState.Idle;
231
+ }
232
+ set state(v) {
233
+ this.searchStateKey.set(v);
234
+ }
235
+ getContainer() {
236
+ return this.container;
237
+ }
238
+ get searchResult() {
239
+ return this.viewModel && this.viewModel.searchResult;
240
+ }
241
+ get model() {
242
+ return this.viewModel;
243
+ }
244
+ refreshHasAISetting() {
245
+ const val = this.shouldShowAIButton();
246
+ if (val && this.searchWidget.searchInput) {
247
+ this.searchWidget.searchInput.shouldShowAIButton = val;
248
+ }
249
+ }
250
+ onDidChangeWorkbenchState() {
251
+ if (this.contextService.getWorkbenchState() !== 1 && this.searchWithoutFolderMessageElement) {
252
+ hide(this.searchWithoutFolderMessageElement);
253
+ }
254
+ }
255
+ refreshInputs() {
256
+ this.pauseSearching = true;
257
+ this.searchWidget.setValue(this.viewModel.searchResult.query?.contentPattern.pattern ?? '');
258
+ this.searchWidget.setReplaceAllActionState(false);
259
+ this.searchWidget.toggleReplace(true);
260
+ this.inputPatternIncludes.setOnlySearchInOpenEditors(this.viewModel.searchResult.query?.onlyOpenEditors || false);
261
+ this.inputPatternExcludes.setUseExcludesAndIgnoreFiles(!this.viewModel.searchResult.query?.userDisabledExcludesAndIgnoreFiles || true);
262
+ this.searchIncludePattern.setValue('');
263
+ this.searchExcludePattern.setValue('');
264
+ this.pauseSearching = false;
265
+ }
266
+ async replaceSearchModel(searchModel, asyncResults) {
267
+ let progressComplete;
268
+ this.progressService.withProgress({ location: this.getProgressLocation(), delay: 0 }, _progress => {
269
+ return ( new Promise(resolve => progressComplete = resolve));
270
+ });
271
+ const slowTimer = setTimeout(() => {
272
+ this.state = SearchUIState.SlowSearch;
273
+ }, 2000);
274
+ this._refreshResultsScheduler.schedule();
275
+ searchModel.location = SearchModelLocation.PANEL;
276
+ searchModel.replaceActive = this.viewModel.isReplaceActive();
277
+ searchModel.replaceString = this.searchWidget.getReplaceValue();
278
+ this._onSearchResultChangedDisposable?.dispose();
279
+ this._onSearchResultChangedDisposable = this._register(searchModel.onSearchResultChanged((event) => this.onSearchResultsChanged(event)));
280
+ this.searchViewModelWorkbenchService.searchModel = searchModel;
281
+ this.viewModel = searchModel;
282
+ this.onSearchResultsChanged();
283
+ this.refreshInputs();
284
+ asyncResults.then((complete) => {
285
+ clearTimeout(slowTimer);
286
+ this.onSearchComplete(progressComplete, undefined, undefined, complete);
287
+ }, (e) => {
288
+ clearTimeout(slowTimer);
289
+ this.onSearchError(e, progressComplete, undefined, undefined);
290
+ });
291
+ const collapseResults = this.searchConfig.collapseResults;
292
+ if (collapseResults !== 'alwaysCollapse' && this.viewModel.searchResult.matches(this.aiResultsVisible).length === 1) {
293
+ const onlyMatch = this.viewModel.searchResult.matches(this.aiResultsVisible)[0];
294
+ if (onlyMatch.count() < 50) {
295
+ this.tree.expand(onlyMatch);
296
+ }
297
+ }
298
+ }
299
+ renderBody(parent) {
300
+ super.renderBody(parent);
301
+ this.container = append(parent, $$1('.search-view'));
302
+ this.searchWidgetsContainerElement = append(this.container, $('.search-widgets-container'));
303
+ this.createSearchWidget(this.searchWidgetsContainerElement);
304
+ this.refreshHasAISetting();
305
+ const history = this.searchHistoryService.load();
306
+ const filePatterns = this.viewletState['query.filePatterns'] || '';
307
+ const patternExclusions = this.viewletState['query.folderExclusions'] || '';
308
+ const patternExclusionsHistory = history.exclude || [];
309
+ const patternIncludes = this.viewletState['query.folderIncludes'] || '';
310
+ const patternIncludesHistory = history.include || [];
311
+ const onlyOpenEditors = this.viewletState['query.onlyOpenEditors'] || false;
312
+ const queryDetailsExpanded = this.viewletState['query.queryDetailsExpanded'] || '';
313
+ const useExcludesAndIgnoreFiles = typeof this.viewletState['query.useExcludesAndIgnoreFiles'] === 'boolean' ?
314
+ this.viewletState['query.useExcludesAndIgnoreFiles'] : true;
315
+ this.queryDetails = append(this.searchWidgetsContainerElement, $('.query-details'));
316
+ this.toggleQueryDetailsButton = append(this.queryDetails, $('.more' + ThemeIcon.asCSSSelector(searchDetailsIcon), { tabindex: 0, role: 'button' }));
317
+ this._register(setupCustomHover(getDefaultHoverDelegate('element'), this.toggleQueryDetailsButton, ( localizeWithPath(
318
+ 'vs/workbench/contrib/search/browser/searchView',
319
+ 'moreSearch',
320
+ "Toggle Search Details"
321
+ ))));
322
+ this._register(addDisposableListener(this.toggleQueryDetailsButton, EventType.CLICK, e => {
323
+ EventHelper.stop(e);
324
+ this.toggleQueryDetails(!this.accessibilityService.isScreenReaderOptimized());
325
+ }));
326
+ this._register(addDisposableListener(this.toggleQueryDetailsButton, EventType.KEY_UP, (e) => {
327
+ const event = ( new StandardKeyboardEvent(e));
328
+ if (event.equals(3 ) || event.equals(10 )) {
329
+ EventHelper.stop(e);
330
+ this.toggleQueryDetails(false);
331
+ }
332
+ }));
333
+ this._register(addDisposableListener(this.toggleQueryDetailsButton, EventType.KEY_DOWN, (e) => {
334
+ const event = ( new StandardKeyboardEvent(e));
335
+ if (event.equals(1024 | 2 )) {
336
+ if (this.searchWidget.isReplaceActive()) {
337
+ this.searchWidget.focusReplaceAllAction();
338
+ }
339
+ else {
340
+ this.searchWidget.isReplaceShown() ? this.searchWidget.replaceInput?.focusOnPreserve() : this.searchWidget.focusRegexAction();
341
+ }
342
+ EventHelper.stop(e);
343
+ }
344
+ }));
345
+ const folderIncludesList = append(this.queryDetails, $('.file-types.includes'));
346
+ const filesToIncludeTitle = ( localizeWithPath(
347
+ 'vs/workbench/contrib/search/browser/searchView',
348
+ 'searchScope.includes',
349
+ "files to include"
350
+ ));
351
+ append(folderIncludesList, $('h4', undefined, filesToIncludeTitle));
352
+ this.inputPatternIncludes = this._register(this.instantiationService.createInstance(IncludePatternInputWidget, folderIncludesList, this.contextViewService, {
353
+ ariaLabel: filesToIncludeTitle,
354
+ placeholder: ( localizeWithPath(
355
+ 'vs/workbench/contrib/search/browser/searchView',
356
+ 'placeholder.includes',
357
+ "e.g. *.ts, src/**/include"
358
+ )),
359
+ showPlaceholderOnFocus: true,
360
+ history: patternIncludesHistory,
361
+ inputBoxStyles: defaultInputBoxStyles
362
+ }));
363
+ this.inputPatternIncludes.setValue(patternIncludes);
364
+ this.inputPatternIncludes.setOnlySearchInOpenEditors(onlyOpenEditors);
365
+ this._register(this.inputPatternIncludes.onCancel(() => this.cancelSearch(false)));
366
+ this._register(this.inputPatternIncludes.onChangeSearchInEditorsBox(() => this.triggerQueryChange()));
367
+ this.trackInputBox(this.inputPatternIncludes.inputFocusTracker, this.inputPatternIncludesFocused);
368
+ const excludesList = append(this.queryDetails, $('.file-types.excludes'));
369
+ const excludesTitle = ( localizeWithPath(
370
+ 'vs/workbench/contrib/search/browser/searchView',
371
+ 'searchScope.excludes',
372
+ "files to exclude"
373
+ ));
374
+ append(excludesList, $('h4', undefined, excludesTitle));
375
+ this.inputPatternExcludes = this._register(this.instantiationService.createInstance(ExcludePatternInputWidget, excludesList, this.contextViewService, {
376
+ ariaLabel: excludesTitle,
377
+ placeholder: ( localizeWithPath(
378
+ 'vs/workbench/contrib/search/browser/searchView',
379
+ 'placeholder.excludes',
380
+ "e.g. *.ts, src/**/exclude"
381
+ )),
382
+ showPlaceholderOnFocus: true,
383
+ history: patternExclusionsHistory,
384
+ inputBoxStyles: defaultInputBoxStyles
385
+ }));
386
+ this.inputPatternExcludes.setValue(patternExclusions);
387
+ this.inputPatternExcludes.setUseExcludesAndIgnoreFiles(useExcludesAndIgnoreFiles);
388
+ this._register(this.inputPatternExcludes.onCancel(() => this.cancelSearch(false)));
389
+ this._register(this.inputPatternExcludes.onChangeIgnoreBox(() => this.triggerQueryChange()));
390
+ this.trackInputBox(this.inputPatternExcludes.inputFocusTracker, this.inputPatternExclusionsFocused);
391
+ const updateHasFilePatternKey = () => this.hasFilePatternKey.set(this.inputPatternIncludes.getValue().length > 0 || this.inputPatternExcludes.getValue().length > 0);
392
+ updateHasFilePatternKey();
393
+ const onFilePatternSubmit = (triggeredOnType) => {
394
+ this.triggerQueryChange({ triggeredOnType, delay: this.searchConfig.searchOnTypeDebouncePeriod });
395
+ if (triggeredOnType) {
396
+ updateHasFilePatternKey();
397
+ }
398
+ };
399
+ this._register(this.inputPatternIncludes.onSubmit(onFilePatternSubmit));
400
+ this._register(this.inputPatternExcludes.onSubmit(onFilePatternSubmit));
401
+ this.messagesElement = append(this.container, $('.messages.text-search-provider-messages'));
402
+ if (this.contextService.getWorkbenchState() === 1 ) {
403
+ this.showSearchWithoutFolderMessage();
404
+ }
405
+ this.createSearchResultsView(this.container);
406
+ if (filePatterns !== '' || patternExclusions !== '' || patternIncludes !== '' || queryDetailsExpanded !== '' || !useExcludesAndIgnoreFiles) {
407
+ this.toggleQueryDetails(true, true, true);
408
+ }
409
+ this._onSearchResultChangedDisposable = this._register(this.viewModel.onSearchResultChanged((event) => this.onSearchResultsChanged(event)));
410
+ this._register(this.onDidChangeBodyVisibility(visible => this.onVisibilityChanged(visible)));
411
+ this.updateIndentStyles(this.themeService.getFileIconTheme());
412
+ this._register(this.themeService.onDidFileIconThemeChange(this.updateIndentStyles, this));
413
+ }
414
+ updateIndentStyles(theme) {
415
+ this.resultsElement.classList.toggle('hide-arrows', this.isTreeLayoutViewVisible && theme.hidesExplorerArrows);
416
+ }
417
+ onVisibilityChanged(visible) {
418
+ this.viewletVisible.set(visible);
419
+ if (visible) {
420
+ if (this.changedWhileHidden) {
421
+ this.refreshAndUpdateCount();
422
+ this.changedWhileHidden = false;
423
+ }
424
+ }
425
+ else {
426
+ this.lastFocusState = 'input';
427
+ }
428
+ this.viewModel?.searchResult.toggleHighlights(visible);
429
+ }
430
+ get searchAndReplaceWidget() {
431
+ return this.searchWidget;
432
+ }
433
+ get searchIncludePattern() {
434
+ return this.inputPatternIncludes;
435
+ }
436
+ get searchExcludePattern() {
437
+ return this.inputPatternExcludes;
438
+ }
439
+ createSearchWidget(container) {
440
+ const contentPattern = this.viewletState['query.contentPattern'] || '';
441
+ const replaceText = this.viewletState['query.replaceText'] || '';
442
+ const isRegex = this.viewletState['query.regex'] === true;
443
+ const isWholeWords = this.viewletState['query.wholeWords'] === true;
444
+ const isCaseSensitive = this.viewletState['query.caseSensitive'] === true;
445
+ const history = this.searchHistoryService.load();
446
+ const searchHistory = history.search || this.viewletState['query.searchHistory'] || [];
447
+ const replaceHistory = history.replace || this.viewletState['query.replaceHistory'] || [];
448
+ const showReplace = typeof this.viewletState['view.showReplace'] === 'boolean' ? this.viewletState['view.showReplace'] : true;
449
+ const preserveCase = this.viewletState['query.preserveCase'] === true;
450
+ const isInNotebookMarkdownInput = this.viewletState['query.isInNotebookMarkdownInput'] ?? true;
451
+ const isInNotebookMarkdownPreview = this.viewletState['query.isInNotebookMarkdownPreview'] ?? true;
452
+ const isInNotebookCellInput = this.viewletState['query.isInNotebookCellInput'] ?? true;
453
+ const isInNotebookCellOutput = this.viewletState['query.isInNotebookCellOutput'] ?? true;
454
+ this.searchWidget = this._register(this.instantiationService.createInstance(SearchWidget, container, {
455
+ value: contentPattern,
456
+ replaceValue: replaceText,
457
+ isRegex: isRegex,
458
+ isCaseSensitive: isCaseSensitive,
459
+ isWholeWords: isWholeWords,
460
+ searchHistory: searchHistory,
461
+ replaceHistory: replaceHistory,
462
+ preserveCase: preserveCase,
463
+ inputBoxStyles: defaultInputBoxStyles,
464
+ toggleStyles: defaultToggleStyles,
465
+ notebookOptions: {
466
+ isInNotebookMarkdownInput,
467
+ isInNotebookMarkdownPreview,
468
+ isInNotebookCellInput,
469
+ isInNotebookCellOutput,
470
+ },
471
+ initialAIButtonVisibility: this.shouldShowAIButton()
472
+ }));
473
+ if (!this.searchWidget.searchInput || !this.searchWidget.replaceInput) {
474
+ this.logService.warn(`Cannot fully create search widget. Search or replace input undefined. SearchInput: ${this.searchWidget.searchInput}, ReplaceInput: ${this.searchWidget.replaceInput}`);
475
+ return;
476
+ }
477
+ if (showReplace) {
478
+ this.searchWidget.toggleReplace(true);
479
+ }
480
+ this._register(this.searchWidget.onSearchSubmit(options => this.triggerQueryChange(options)));
481
+ this._register(this.searchWidget.onSearchCancel(({ focus }) => this.cancelSearch(focus)));
482
+ this._register(this.searchWidget.searchInput.onDidOptionChange(() => {
483
+ if (this.searchWidget.searchInput && this.searchWidget.searchInput.isAIEnabled !== this.aiResultsVisible) {
484
+ this.setAIResultsVisible(this.searchWidget.searchInput.isAIEnabled);
485
+ }
486
+ else {
487
+ this.triggerQueryChange();
488
+ }
489
+ }));
490
+ this._register(this.searchWidget.getNotebookFilters().onDidChange(() => this.triggerQueryChange()));
491
+ const updateHasPatternKey = () => this.hasSearchPatternKey.set(this.searchWidget.searchInput ? (this.searchWidget.searchInput.getValue().length > 0) : false);
492
+ updateHasPatternKey();
493
+ this._register(this.searchWidget.searchInput.onDidChange(() => updateHasPatternKey()));
494
+ const updateHasReplacePatternKey = () => this.hasReplacePatternKey.set(this.searchWidget.getReplaceValue().length > 0);
495
+ updateHasReplacePatternKey();
496
+ this._register(this.searchWidget.replaceInput.inputBox.onDidChange(() => updateHasReplacePatternKey()));
497
+ this._register(this.searchWidget.onDidHeightChange(() => this.reLayout()));
498
+ this._register(this.searchWidget.onReplaceToggled(() => this.reLayout()));
499
+ this._register(this.searchWidget.onReplaceStateChange((state) => {
500
+ this.viewModel.replaceActive = state;
501
+ this.refreshTree();
502
+ }));
503
+ this._register(this.searchWidget.onPreserveCaseChange((state) => {
504
+ this.viewModel.preserveCase = state;
505
+ this.refreshTree();
506
+ }));
507
+ this._register(this.searchWidget.onReplaceValueChanged(() => {
508
+ this.viewModel.replaceString = this.searchWidget.getReplaceValue();
509
+ this.delayedRefresh.trigger(() => this.refreshTree());
510
+ }));
511
+ this._register(this.searchWidget.onBlur(() => {
512
+ this.toggleQueryDetailsButton.focus();
513
+ }));
514
+ this._register(this.searchWidget.onReplaceAll(() => this.replaceAll()));
515
+ this.trackInputBox(this.searchWidget.searchInputFocusTracker);
516
+ this.trackInputBox(this.searchWidget.replaceInputFocusTracker);
517
+ }
518
+ shouldShowAIButton() {
519
+ const hasProvider = SearchContext.hasAIResultProvider.getValue(this.contextKeyService);
520
+ return !!(this.configurationService.getValue('search.aiResults') && hasProvider);
521
+ }
522
+ onConfigurationUpdated(event) {
523
+ if (event && (event.affectsConfiguration('search.decorations.colors') || event.affectsConfiguration('search.decorations.badges'))) {
524
+ this.refreshTree();
525
+ }
526
+ }
527
+ trackInputBox(inputFocusTracker, contextKey) {
528
+ if (!inputFocusTracker) {
529
+ return;
530
+ }
531
+ this._register(inputFocusTracker.onDidFocus(() => {
532
+ this.lastFocusState = 'input';
533
+ this.inputBoxFocused.set(true);
534
+ contextKey?.set(true);
535
+ }));
536
+ this._register(inputFocusTracker.onDidBlur(() => {
537
+ this.inputBoxFocused.set(this.searchWidget.searchInputHasFocus()
538
+ || this.searchWidget.replaceInputHasFocus()
539
+ || this.inputPatternIncludes.inputHasFocus()
540
+ || this.inputPatternExcludes.inputHasFocus());
541
+ contextKey?.set(false);
542
+ }));
543
+ }
544
+ onSearchResultsChanged(event) {
545
+ if (this.isVisible()) {
546
+ return this.refreshAndUpdateCount(event);
547
+ }
548
+ else {
549
+ this.changedWhileHidden = true;
550
+ }
551
+ }
552
+ refreshAndUpdateCount(event) {
553
+ this.searchWidget.setReplaceAllActionState(!this.viewModel.searchResult.isEmpty(this.aiResultsVisible));
554
+ this.updateSearchResultCount(this.viewModel.searchResult.query.userDisabledExcludesAndIgnoreFiles, this.viewModel.searchResult.query?.onlyOpenEditors, event?.clearingAll);
555
+ return this.refreshTree(event);
556
+ }
557
+ refreshTree(event) {
558
+ const collapseResults = this.searchConfig.collapseResults;
559
+ if (!event || event.added || event.removed) {
560
+ if (this.searchConfig.sortOrder === "modified" ) {
561
+ this.retrieveFileStats()
562
+ .then(() => this.tree.setChildren(null, this.createResultIterator(collapseResults)));
563
+ }
564
+ else {
565
+ this.tree.setChildren(null, this.createResultIterator(collapseResults));
566
+ }
567
+ }
568
+ else {
569
+ if (this.searchConfig.sortOrder === "countAscending" ||
570
+ this.searchConfig.sortOrder === "countDescending" ) {
571
+ this.tree.setChildren(null, this.createResultIterator(collapseResults));
572
+ }
573
+ else {
574
+ event.elements.forEach(element => {
575
+ this.tree.setChildren(element, this.createIterator(element, collapseResults));
576
+ this.tree.rerender(element);
577
+ });
578
+ }
579
+ }
580
+ }
581
+ createResultIterator(collapseResults) {
582
+ const folderMatches = this.searchResult.folderMatches(this.aiResultsVisible)
583
+ .filter(fm => !fm.isEmpty())
584
+ .sort(searchMatchComparer);
585
+ if (folderMatches.length === 1) {
586
+ return this.createFolderIterator(folderMatches[0], collapseResults, true);
587
+ }
588
+ return ( Iterable.map(folderMatches, folderMatch => {
589
+ const children = this.createFolderIterator(folderMatch, collapseResults, true);
590
+ return { element: folderMatch, children, incompressible: true };
591
+ }));
592
+ }
593
+ createFolderIterator(folderMatch, collapseResults, childFolderIncompressible) {
594
+ const sortOrder = this.searchConfig.sortOrder;
595
+ const matchArray = this.isTreeLayoutViewVisible ? folderMatch.matches() : folderMatch.allDownstreamFileMatches();
596
+ const matches = matchArray.sort((a, b) => searchMatchComparer(a, b, sortOrder));
597
+ return ( Iterable.map(matches, match => {
598
+ let children;
599
+ if (match instanceof FileMatch) {
600
+ children = this.createFileIterator(match);
601
+ }
602
+ else {
603
+ children = this.createFolderIterator(match, collapseResults, false);
604
+ }
605
+ const collapsed = (collapseResults === 'alwaysCollapse' || (match.count() > 10 && collapseResults !== 'alwaysExpand')) ? ObjectTreeElementCollapseState.PreserveOrCollapsed : ObjectTreeElementCollapseState.PreserveOrExpanded;
606
+ return { element: match, children, collapsed, incompressible: (match instanceof FileMatch) ? true : childFolderIncompressible };
607
+ }));
608
+ }
609
+ createFileIterator(fileMatch) {
610
+ let matches = fileMatch.matches().sort(searchMatchComparer);
611
+ if (!this.aiResultsVisible) {
612
+ matches = matches.filter(e => !e.aiContributed);
613
+ }
614
+ return ( Iterable.map(matches, r => ({ element: r, incompressible: true })));
615
+ }
616
+ createIterator(match, collapseResults) {
617
+ return match instanceof SearchResult ? this.createResultIterator(collapseResults) :
618
+ match instanceof FolderMatch ? this.createFolderIterator(match, collapseResults, false) :
619
+ this.createFileIterator(match);
620
+ }
621
+ replaceAll() {
622
+ if (this.viewModel.searchResult.count() === 0) {
623
+ return;
624
+ }
625
+ const occurrences = this.viewModel.searchResult.count();
626
+ const fileCount = this.viewModel.searchResult.fileCount();
627
+ const replaceValue = this.searchWidget.getReplaceValue() || '';
628
+ const afterReplaceAllMessage = this.buildAfterReplaceAllMessage(occurrences, fileCount, replaceValue);
629
+ let progressComplete;
630
+ let progressReporter;
631
+ this.progressService.withProgress({ location: this.getProgressLocation(), delay: 100, total: occurrences }, p => {
632
+ progressReporter = p;
633
+ return ( new Promise(resolve => progressComplete = resolve));
634
+ });
635
+ const confirmation = {
636
+ title: ( localizeWithPath(
637
+ 'vs/workbench/contrib/search/browser/searchView',
638
+ 'replaceAll.confirmation.title',
639
+ "Replace All"
640
+ )),
641
+ message: this.buildReplaceAllConfirmationMessage(occurrences, fileCount, replaceValue),
642
+ primaryButton: ( localizeWithPath(
643
+ 'vs/workbench/contrib/search/browser/searchView',
644
+ { key: 'replaceAll.confirm.button', comment: ['&& denotes a mnemonic'] },
645
+ "&&Replace"
646
+ ))
647
+ };
648
+ this.dialogService.confirm(confirmation).then(res => {
649
+ if (res.confirmed) {
650
+ this.searchWidget.setReplaceAllActionState(false);
651
+ this.viewModel.searchResult.replaceAll(progressReporter).then(() => {
652
+ progressComplete();
653
+ const messageEl = this.clearMessage();
654
+ append(messageEl, afterReplaceAllMessage);
655
+ this.reLayout();
656
+ }, (error) => {
657
+ progressComplete();
658
+ this.notificationService.error(error);
659
+ });
660
+ }
661
+ else {
662
+ progressComplete();
663
+ }
664
+ });
665
+ }
666
+ buildAfterReplaceAllMessage(occurrences, fileCount, replaceValue) {
667
+ if (occurrences === 1) {
668
+ if (fileCount === 1) {
669
+ if (replaceValue) {
670
+ return ( localizeWithPath(
671
+ 'vs/workbench/contrib/search/browser/searchView',
672
+ 'replaceAll.occurrence.file.message',
673
+ "Replaced {0} occurrence across {1} file with '{2}'.",
674
+ occurrences,
675
+ fileCount,
676
+ replaceValue
677
+ ));
678
+ }
679
+ return ( localizeWithPath(
680
+ 'vs/workbench/contrib/search/browser/searchView',
681
+ 'removeAll.occurrence.file.message',
682
+ "Replaced {0} occurrence across {1} file.",
683
+ occurrences,
684
+ fileCount
685
+ ));
686
+ }
687
+ if (replaceValue) {
688
+ return ( localizeWithPath(
689
+ 'vs/workbench/contrib/search/browser/searchView',
690
+ 'replaceAll.occurrence.files.message',
691
+ "Replaced {0} occurrence across {1} files with '{2}'.",
692
+ occurrences,
693
+ fileCount,
694
+ replaceValue
695
+ ));
696
+ }
697
+ return ( localizeWithPath(
698
+ 'vs/workbench/contrib/search/browser/searchView',
699
+ 'removeAll.occurrence.files.message',
700
+ "Replaced {0} occurrence across {1} files.",
701
+ occurrences,
702
+ fileCount
703
+ ));
704
+ }
705
+ if (fileCount === 1) {
706
+ if (replaceValue) {
707
+ return ( localizeWithPath(
708
+ 'vs/workbench/contrib/search/browser/searchView',
709
+ 'replaceAll.occurrences.file.message',
710
+ "Replaced {0} occurrences across {1} file with '{2}'.",
711
+ occurrences,
712
+ fileCount,
713
+ replaceValue
714
+ ));
715
+ }
716
+ return ( localizeWithPath(
717
+ 'vs/workbench/contrib/search/browser/searchView',
718
+ 'removeAll.occurrences.file.message',
719
+ "Replaced {0} occurrences across {1} file.",
720
+ occurrences,
721
+ fileCount
722
+ ));
723
+ }
724
+ if (replaceValue) {
725
+ return ( localizeWithPath(
726
+ 'vs/workbench/contrib/search/browser/searchView',
727
+ 'replaceAll.occurrences.files.message',
728
+ "Replaced {0} occurrences across {1} files with '{2}'.",
729
+ occurrences,
730
+ fileCount,
731
+ replaceValue
732
+ ));
733
+ }
734
+ return ( localizeWithPath(
735
+ 'vs/workbench/contrib/search/browser/searchView',
736
+ 'removeAll.occurrences.files.message',
737
+ "Replaced {0} occurrences across {1} files.",
738
+ occurrences,
739
+ fileCount
740
+ ));
741
+ }
742
+ buildReplaceAllConfirmationMessage(occurrences, fileCount, replaceValue) {
743
+ if (occurrences === 1) {
744
+ if (fileCount === 1) {
745
+ if (replaceValue) {
746
+ return ( localizeWithPath(
747
+ 'vs/workbench/contrib/search/browser/searchView',
748
+ 'removeAll.occurrence.file.confirmation.message',
749
+ "Replace {0} occurrence across {1} file with '{2}'?",
750
+ occurrences,
751
+ fileCount,
752
+ replaceValue
753
+ ));
754
+ }
755
+ return ( localizeWithPath(
756
+ 'vs/workbench/contrib/search/browser/searchView',
757
+ 'replaceAll.occurrence.file.confirmation.message',
758
+ "Replace {0} occurrence across {1} file?",
759
+ occurrences,
760
+ fileCount
761
+ ));
762
+ }
763
+ if (replaceValue) {
764
+ return ( localizeWithPath(
765
+ 'vs/workbench/contrib/search/browser/searchView',
766
+ 'removeAll.occurrence.files.confirmation.message',
767
+ "Replace {0} occurrence across {1} files with '{2}'?",
768
+ occurrences,
769
+ fileCount,
770
+ replaceValue
771
+ ));
772
+ }
773
+ return ( localizeWithPath(
774
+ 'vs/workbench/contrib/search/browser/searchView',
775
+ 'replaceAll.occurrence.files.confirmation.message',
776
+ "Replace {0} occurrence across {1} files?",
777
+ occurrences,
778
+ fileCount
779
+ ));
780
+ }
781
+ if (fileCount === 1) {
782
+ if (replaceValue) {
783
+ return ( localizeWithPath(
784
+ 'vs/workbench/contrib/search/browser/searchView',
785
+ 'removeAll.occurrences.file.confirmation.message',
786
+ "Replace {0} occurrences across {1} file with '{2}'?",
787
+ occurrences,
788
+ fileCount,
789
+ replaceValue
790
+ ));
791
+ }
792
+ return ( localizeWithPath(
793
+ 'vs/workbench/contrib/search/browser/searchView',
794
+ 'replaceAll.occurrences.file.confirmation.message',
795
+ "Replace {0} occurrences across {1} file?",
796
+ occurrences,
797
+ fileCount
798
+ ));
799
+ }
800
+ if (replaceValue) {
801
+ return ( localizeWithPath(
802
+ 'vs/workbench/contrib/search/browser/searchView',
803
+ 'removeAll.occurrences.files.confirmation.message',
804
+ "Replace {0} occurrences across {1} files with '{2}'?",
805
+ occurrences,
806
+ fileCount,
807
+ replaceValue
808
+ ));
809
+ }
810
+ return ( localizeWithPath(
811
+ 'vs/workbench/contrib/search/browser/searchView',
812
+ 'replaceAll.occurrences.files.confirmation.message',
813
+ "Replace {0} occurrences across {1} files?",
814
+ occurrences,
815
+ fileCount
816
+ ));
817
+ }
818
+ clearMessage() {
819
+ this.searchWithoutFolderMessageElement = undefined;
820
+ const wasHidden = this.messagesElement.style.display === 'none';
821
+ clearNode(this.messagesElement);
822
+ show(this.messagesElement);
823
+ this.messageDisposables.clear();
824
+ const newMessage = append(this.messagesElement, $('.message'));
825
+ if (wasHidden) {
826
+ this.reLayout();
827
+ }
828
+ return newMessage;
829
+ }
830
+ createSearchResultsView(container) {
831
+ this.resultsElement = append(container, $('.results.show-file-icons.file-icon-themable-tree'));
832
+ const delegate = this.instantiationService.createInstance(SearchDelegate);
833
+ const identityProvider = {
834
+ getId(element) {
835
+ return element.id();
836
+ }
837
+ };
838
+ this.treeLabels = this._register(this.instantiationService.createInstance(ResourceLabels, { onDidChangeVisibility: this.onDidChangeBodyVisibility }));
839
+ this.tree = this._register(this.instantiationService.createInstance(WorkbenchCompressibleObjectTree, 'SearchView', this.resultsElement, delegate, [
840
+ this._register(this.instantiationService.createInstance(FolderMatchRenderer, this, this.treeLabels)),
841
+ this._register(this.instantiationService.createInstance(FileMatchRenderer, this, this.treeLabels)),
842
+ this._register(this.instantiationService.createInstance(MatchRenderer, this)),
843
+ ], {
844
+ identityProvider,
845
+ accessibilityProvider: this.treeAccessibilityProvider,
846
+ dnd: this.instantiationService.createInstance(ResourceListDnDHandler, element => {
847
+ if (element instanceof FileMatch) {
848
+ return element.resource;
849
+ }
850
+ if (element instanceof Match) {
851
+ return withSelection(element.parent().resource, element.range());
852
+ }
853
+ return null;
854
+ }),
855
+ multipleSelectionSupport: true,
856
+ selectionNavigation: true,
857
+ overrideStyles: {
858
+ listBackground: this.getBackgroundColor()
859
+ },
860
+ paddingBottom: SearchDelegate.ITEM_HEIGHT
861
+ }));
862
+ this._register(this.tree.onContextMenu(e => this.onContextMenu(e)));
863
+ const updateHasSomeCollapsible = () => this.toggleCollapseStateDelayer.trigger(() => this.hasSomeCollapsibleResultKey.set(this.hasSomeCollapsible()));
864
+ updateHasSomeCollapsible();
865
+ this._register(this.tree.onDidChangeCollapseState(() => updateHasSomeCollapsible()));
866
+ this._register(this.tree.onDidChangeModel(() => updateHasSomeCollapsible()));
867
+ this._register(Event.debounce(this.tree.onDidOpen, (last, event) => event, DEBOUNCE_DELAY, true)(options => {
868
+ if (options.element instanceof Match) {
869
+ const selectedMatch = options.element;
870
+ this.currentSelectedFileMatch?.setSelectedMatch(null);
871
+ this.currentSelectedFileMatch = selectedMatch.parent();
872
+ this.currentSelectedFileMatch.setSelectedMatch(selectedMatch);
873
+ this.onFocus(selectedMatch, options.editorOptions.preserveFocus, options.sideBySide, options.editorOptions.pinned);
874
+ }
875
+ }));
876
+ this._register(Event.debounce(this.tree.onDidChangeFocus, (last, event) => event, DEBOUNCE_DELAY, true)(() => {
877
+ const selection = this.tree.getSelection();
878
+ const focus = this.tree.getFocus()[0];
879
+ if (selection.length > 1 && focus instanceof Match) {
880
+ this.onFocus(focus, true);
881
+ }
882
+ }));
883
+ this._register(Event.any(this.tree.onDidFocus, this.tree.onDidChangeFocus)(() => {
884
+ const focus = this.tree.getFocus()[0];
885
+ if (this.tree.isDOMFocused()) {
886
+ this.firstMatchFocused.set(this.tree.navigate().first() === focus);
887
+ this.fileMatchOrMatchFocused.set(!!focus);
888
+ this.fileMatchFocused.set(focus instanceof FileMatch);
889
+ this.folderMatchFocused.set(focus instanceof FolderMatch);
890
+ this.matchFocused.set(focus instanceof Match);
891
+ this.fileMatchOrFolderMatchFocus.set(focus instanceof FileMatch || focus instanceof FolderMatch);
892
+ this.fileMatchOrFolderMatchWithResourceFocus.set(focus instanceof FileMatch || focus instanceof FolderMatchWithResource);
893
+ this.folderMatchWithResourceFocused.set(focus instanceof FolderMatchWithResource);
894
+ this.lastFocusState = 'tree';
895
+ }
896
+ let editable = false;
897
+ if (focus instanceof Match) {
898
+ editable = (focus instanceof MatchInNotebook) ? !focus.isReadonly() : true;
899
+ }
900
+ else if (focus instanceof FileMatch) {
901
+ editable = !focus.hasOnlyReadOnlyMatches();
902
+ }
903
+ else if (focus instanceof FolderMatch) {
904
+ editable = !focus.hasOnlyReadOnlyMatches();
905
+ }
906
+ this.isEditableItem.set(editable);
907
+ }));
908
+ this._register(this.tree.onDidBlur(() => {
909
+ this.firstMatchFocused.reset();
910
+ this.fileMatchOrMatchFocused.reset();
911
+ this.fileMatchFocused.reset();
912
+ this.folderMatchFocused.reset();
913
+ this.matchFocused.reset();
914
+ this.fileMatchOrFolderMatchFocus.reset();
915
+ this.fileMatchOrFolderMatchWithResourceFocus.reset();
916
+ this.folderMatchWithResourceFocused.reset();
917
+ this.isEditableItem.reset();
918
+ }));
919
+ }
920
+ onContextMenu(e) {
921
+ e.browserEvent.preventDefault();
922
+ e.browserEvent.stopPropagation();
923
+ this.contextMenuService.showContextMenu({
924
+ menuId: MenuId.SearchContext,
925
+ menuActionOptions: { shouldForwardArgs: true },
926
+ contextKeyService: this.contextKeyService,
927
+ getAnchor: () => e.anchor,
928
+ getActionsContext: () => e.element,
929
+ });
930
+ }
931
+ hasSomeCollapsible() {
932
+ const viewer = this.getControl();
933
+ const navigator = viewer.navigate();
934
+ let node = navigator.first();
935
+ do {
936
+ if (!viewer.isCollapsed(node)) {
937
+ return true;
938
+ }
939
+ } while (node = navigator.next());
940
+ return false;
941
+ }
942
+ selectNextMatch() {
943
+ if (!this.hasSearchResults()) {
944
+ return;
945
+ }
946
+ const [selected] = this.tree.getSelection();
947
+ if (selected && !(selected instanceof Match)) {
948
+ if (this.tree.isCollapsed(selected)) {
949
+ this.tree.expand(selected);
950
+ }
951
+ }
952
+ const navigator = this.tree.navigate(selected);
953
+ let next = navigator.next();
954
+ if (!next) {
955
+ next = navigator.first();
956
+ }
957
+ while (next && !(next instanceof Match)) {
958
+ if (this.tree.isCollapsed(next)) {
959
+ this.tree.expand(next);
960
+ }
961
+ next = navigator.next();
962
+ }
963
+ if (next) {
964
+ if (next === selected) {
965
+ this.tree.setFocus([]);
966
+ }
967
+ const event = getSelectionKeyboardEvent(undefined, false, false);
968
+ this.tree.setFocus([next], event);
969
+ this.tree.setSelection([next], event);
970
+ this.tree.reveal(next);
971
+ const ariaLabel = this.treeAccessibilityProvider.getAriaLabel(next);
972
+ if (ariaLabel) {
973
+ status(ariaLabel);
974
+ }
975
+ }
976
+ }
977
+ selectPreviousMatch() {
978
+ if (!this.hasSearchResults()) {
979
+ return;
980
+ }
981
+ const [selected] = this.tree.getSelection();
982
+ let navigator = this.tree.navigate(selected);
983
+ let prev = navigator.previous();
984
+ while (!prev || (!(prev instanceof Match) && !this.tree.isCollapsed(prev))) {
985
+ const nextPrev = prev ? navigator.previous() : navigator.last();
986
+ if (!prev && !nextPrev) {
987
+ return;
988
+ }
989
+ prev = nextPrev;
990
+ }
991
+ while (!(prev instanceof Match)) {
992
+ const nextItem = navigator.next();
993
+ this.tree.expand(prev);
994
+ navigator = this.tree.navigate(nextItem);
995
+ prev = nextItem ? navigator.previous() : navigator.last();
996
+ }
997
+ if (prev) {
998
+ if (prev === selected) {
999
+ this.tree.setFocus([]);
1000
+ }
1001
+ const event = getSelectionKeyboardEvent(undefined, false, false);
1002
+ this.tree.setFocus([prev], event);
1003
+ this.tree.setSelection([prev], event);
1004
+ this.tree.reveal(prev);
1005
+ const ariaLabel = this.treeAccessibilityProvider.getAriaLabel(prev);
1006
+ if (ariaLabel) {
1007
+ status(ariaLabel);
1008
+ }
1009
+ }
1010
+ }
1011
+ moveFocusToResults() {
1012
+ this.tree.domFocus();
1013
+ }
1014
+ focus() {
1015
+ super.focus();
1016
+ if (this.lastFocusState === 'input' || !this.hasSearchResults()) {
1017
+ const updatedText = this.searchConfig.seedOnFocus ? this.updateTextFromSelection({ allowSearchOnType: false }) : false;
1018
+ this.searchWidget.focus(undefined, undefined, updatedText);
1019
+ }
1020
+ else {
1021
+ this.tree.domFocus();
1022
+ }
1023
+ }
1024
+ updateTextFromFindWidgetOrSelection({ allowUnselectedWord = true, allowSearchOnType = true }) {
1025
+ let activeEditor = this.editorService.activeTextEditorControl;
1026
+ if (isCodeEditor(activeEditor) && !activeEditor?.hasTextFocus()) {
1027
+ const controller = CommonFindController.get(activeEditor);
1028
+ if (controller && controller.isFindInputFocused()) {
1029
+ return this.updateTextFromFindWidget(controller, { allowSearchOnType });
1030
+ }
1031
+ const editors = this.codeEditorService.listCodeEditors();
1032
+ activeEditor = editors.find(editor => editor instanceof EmbeddedCodeEditorWidget && editor.getParentEditor() === activeEditor && editor.hasTextFocus())
1033
+ ?? activeEditor;
1034
+ }
1035
+ return this.updateTextFromSelection({ allowUnselectedWord, allowSearchOnType }, activeEditor);
1036
+ }
1037
+ updateTextFromFindWidget(controller, { allowSearchOnType = true }) {
1038
+ if (!this.searchConfig.seedWithNearestWord && (getActiveWindow().getSelection()?.toString() ?? '') === '') {
1039
+ return false;
1040
+ }
1041
+ const searchString = controller.getState().searchString;
1042
+ if (searchString === '') {
1043
+ return false;
1044
+ }
1045
+ this.searchWidget.searchInput?.setCaseSensitive(controller.getState().matchCase);
1046
+ this.searchWidget.searchInput?.setWholeWords(controller.getState().wholeWord);
1047
+ this.searchWidget.searchInput?.setRegex(controller.getState().isRegex);
1048
+ this.updateText(searchString, allowSearchOnType);
1049
+ return true;
1050
+ }
1051
+ updateTextFromSelection({ allowUnselectedWord = true, allowSearchOnType = true }, editor) {
1052
+ const seedSearchStringFromSelection = this.configurationService.getValue('editor').find.seedSearchStringFromSelection;
1053
+ if (!seedSearchStringFromSelection || seedSearchStringFromSelection === 'never') {
1054
+ return false;
1055
+ }
1056
+ let selectedText = this.getSearchTextFromEditor(allowUnselectedWord, editor);
1057
+ if (selectedText === null) {
1058
+ return false;
1059
+ }
1060
+ if (this.searchWidget.searchInput?.getRegex()) {
1061
+ selectedText = escapeRegExpCharacters(selectedText);
1062
+ }
1063
+ this.updateText(selectedText, allowSearchOnType);
1064
+ return true;
1065
+ }
1066
+ updateText(text, allowSearchOnType = true) {
1067
+ if (allowSearchOnType && !this.viewModel.searchResult.isDirty) {
1068
+ this.searchWidget.setValue(text);
1069
+ }
1070
+ else {
1071
+ this.pauseSearching = true;
1072
+ this.searchWidget.setValue(text);
1073
+ this.pauseSearching = false;
1074
+ }
1075
+ }
1076
+ focusNextInputBox() {
1077
+ if (this.searchWidget.searchInputHasFocus()) {
1078
+ if (this.searchWidget.isReplaceShown()) {
1079
+ this.searchWidget.focus(true, true);
1080
+ }
1081
+ else {
1082
+ this.moveFocusFromSearchOrReplace();
1083
+ }
1084
+ return;
1085
+ }
1086
+ if (this.searchWidget.replaceInputHasFocus()) {
1087
+ this.moveFocusFromSearchOrReplace();
1088
+ return;
1089
+ }
1090
+ if (this.inputPatternIncludes.inputHasFocus()) {
1091
+ this.inputPatternExcludes.focus();
1092
+ this.inputPatternExcludes.select();
1093
+ return;
1094
+ }
1095
+ if (this.inputPatternExcludes.inputHasFocus()) {
1096
+ this.selectTreeIfNotSelected();
1097
+ return;
1098
+ }
1099
+ }
1100
+ moveFocusFromSearchOrReplace() {
1101
+ if (this.showsFileTypes()) {
1102
+ this.toggleQueryDetails(true, this.showsFileTypes());
1103
+ }
1104
+ else {
1105
+ this.selectTreeIfNotSelected();
1106
+ }
1107
+ }
1108
+ focusPreviousInputBox() {
1109
+ if (this.searchWidget.searchInputHasFocus()) {
1110
+ return;
1111
+ }
1112
+ if (this.searchWidget.replaceInputHasFocus()) {
1113
+ this.searchWidget.focus(true);
1114
+ return;
1115
+ }
1116
+ if (this.inputPatternIncludes.inputHasFocus()) {
1117
+ this.searchWidget.focus(true, true);
1118
+ return;
1119
+ }
1120
+ if (this.inputPatternExcludes.inputHasFocus()) {
1121
+ this.inputPatternIncludes.focus();
1122
+ this.inputPatternIncludes.select();
1123
+ return;
1124
+ }
1125
+ if (this.tree.isDOMFocused()) {
1126
+ this.moveFocusFromResults();
1127
+ return;
1128
+ }
1129
+ }
1130
+ moveFocusFromResults() {
1131
+ if (this.showsFileTypes()) {
1132
+ this.toggleQueryDetails(true, true, false, true);
1133
+ }
1134
+ else {
1135
+ this.searchWidget.focus(true, true);
1136
+ }
1137
+ }
1138
+ reLayout() {
1139
+ if (this.isDisposed || !this.size) {
1140
+ return;
1141
+ }
1142
+ const actionsPosition = this.searchConfig.actionsPosition;
1143
+ this.getContainer().classList.toggle(SearchView_1.ACTIONS_RIGHT_CLASS_NAME, actionsPosition === 'right');
1144
+ this.searchWidget.setWidth(this.size.width - 28 );
1145
+ this.inputPatternExcludes.setWidth(this.size.width - 28 );
1146
+ this.inputPatternIncludes.setWidth(this.size.width - 28 );
1147
+ const widgetHeight = getTotalHeight(this.searchWidgetsContainerElement);
1148
+ const messagesHeight = getTotalHeight(this.messagesElement);
1149
+ this.tree.layout(this.size.height - widgetHeight - messagesHeight, this.size.width - 28);
1150
+ }
1151
+ layoutBody(height, width) {
1152
+ super.layoutBody(height, width);
1153
+ this.size = new Dimension(width, height);
1154
+ this.reLayout();
1155
+ }
1156
+ getControl() {
1157
+ return this.tree;
1158
+ }
1159
+ allSearchFieldsClear() {
1160
+ return this.searchWidget.getReplaceValue() === '' &&
1161
+ (!this.searchWidget.searchInput || this.searchWidget.searchInput.getValue() === '');
1162
+ }
1163
+ allFilePatternFieldsClear() {
1164
+ return this.searchExcludePattern.getValue() === '' &&
1165
+ this.searchIncludePattern.getValue() === '';
1166
+ }
1167
+ hasSearchResults() {
1168
+ return !this.viewModel.searchResult.isEmpty(this.aiResultsVisible);
1169
+ }
1170
+ clearSearchResults(clearInput = true) {
1171
+ this.viewModel.searchResult.clear();
1172
+ this.showEmptyStage(true);
1173
+ if (this.contextService.getWorkbenchState() === 1 ) {
1174
+ this.showSearchWithoutFolderMessage();
1175
+ }
1176
+ if (clearInput) {
1177
+ if (this.allSearchFieldsClear()) {
1178
+ this.clearFilePatternFields();
1179
+ }
1180
+ this.searchWidget.clear();
1181
+ }
1182
+ this.viewModel.cancelSearch();
1183
+ this.tree.ariaLabel = ( localizeWithPath(
1184
+ 'vs/workbench/contrib/search/browser/searchView',
1185
+ 'emptySearch',
1186
+ "Empty Search"
1187
+ ));
1188
+ this.accessibilitySignalService.playSignal(AccessibilitySignal.clear);
1189
+ this.reLayout();
1190
+ }
1191
+ clearFilePatternFields() {
1192
+ this.searchExcludePattern.clear();
1193
+ this.searchIncludePattern.clear();
1194
+ }
1195
+ cancelSearch(focus = true) {
1196
+ if (this.viewModel.cancelSearch()) {
1197
+ if (focus) {
1198
+ this.searchWidget.focus();
1199
+ }
1200
+ return true;
1201
+ }
1202
+ return false;
1203
+ }
1204
+ selectTreeIfNotSelected() {
1205
+ if (this.tree.getNode(null)) {
1206
+ this.tree.domFocus();
1207
+ const selection = this.tree.getSelection();
1208
+ if (selection.length === 0) {
1209
+ const event = getSelectionKeyboardEvent();
1210
+ this.tree.focusNext(undefined, undefined, event);
1211
+ this.tree.setSelection(this.tree.getFocus(), event);
1212
+ }
1213
+ }
1214
+ }
1215
+ getSearchTextFromEditor(allowUnselectedWord, editor) {
1216
+ if (isAncestorOfActiveElement(this.getContainer())) {
1217
+ return null;
1218
+ }
1219
+ editor = editor ?? this.editorService.activeTextEditorControl;
1220
+ if (!editor) {
1221
+ return null;
1222
+ }
1223
+ const allowUnselected = this.searchConfig.seedWithNearestWord && allowUnselectedWord;
1224
+ return getSelectionTextFromEditor(allowUnselected, editor);
1225
+ }
1226
+ showsFileTypes() {
1227
+ return this.queryDetails.classList.contains('more');
1228
+ }
1229
+ toggleCaseSensitive() {
1230
+ this.searchWidget.searchInput?.setCaseSensitive(!this.searchWidget.searchInput.getCaseSensitive());
1231
+ this.triggerQueryChange();
1232
+ }
1233
+ toggleWholeWords() {
1234
+ this.searchWidget.searchInput?.setWholeWords(!this.searchWidget.searchInput.getWholeWords());
1235
+ this.triggerQueryChange();
1236
+ }
1237
+ toggleRegex() {
1238
+ this.searchWidget.searchInput?.setRegex(!this.searchWidget.searchInput.getRegex());
1239
+ this.triggerQueryChange();
1240
+ }
1241
+ togglePreserveCase() {
1242
+ this.searchWidget.replaceInput?.setPreserveCase(!this.searchWidget.replaceInput.getPreserveCase());
1243
+ this.triggerQueryChange();
1244
+ }
1245
+ setSearchParameters(args = {}) {
1246
+ if (typeof args.isCaseSensitive === 'boolean') {
1247
+ this.searchWidget.searchInput?.setCaseSensitive(args.isCaseSensitive);
1248
+ }
1249
+ if (typeof args.matchWholeWord === 'boolean') {
1250
+ this.searchWidget.searchInput?.setWholeWords(args.matchWholeWord);
1251
+ }
1252
+ if (typeof args.isRegex === 'boolean') {
1253
+ this.searchWidget.searchInput?.setRegex(args.isRegex);
1254
+ }
1255
+ if (typeof args.filesToInclude === 'string') {
1256
+ this.searchIncludePattern.setValue(String(args.filesToInclude));
1257
+ }
1258
+ if (typeof args.filesToExclude === 'string') {
1259
+ this.searchExcludePattern.setValue(String(args.filesToExclude));
1260
+ }
1261
+ if (typeof args.query === 'string') {
1262
+ this.searchWidget.searchInput?.setValue(args.query);
1263
+ }
1264
+ if (typeof args.replace === 'string') {
1265
+ this.searchWidget.replaceInput?.setValue(args.replace);
1266
+ }
1267
+ else {
1268
+ if (this.searchWidget.replaceInput && this.searchWidget.replaceInput.getValue() !== '') {
1269
+ this.searchWidget.replaceInput.setValue('');
1270
+ }
1271
+ }
1272
+ if (typeof args.triggerSearch === 'boolean' && args.triggerSearch) {
1273
+ this.triggerQueryChange();
1274
+ }
1275
+ if (typeof args.preserveCase === 'boolean') {
1276
+ this.searchWidget.replaceInput?.setPreserveCase(args.preserveCase);
1277
+ }
1278
+ if (typeof args.useExcludeSettingsAndIgnoreFiles === 'boolean') {
1279
+ this.inputPatternExcludes.setUseExcludesAndIgnoreFiles(args.useExcludeSettingsAndIgnoreFiles);
1280
+ }
1281
+ if (typeof args.onlyOpenEditors === 'boolean') {
1282
+ this.searchIncludePattern.setOnlySearchInOpenEditors(args.onlyOpenEditors);
1283
+ }
1284
+ }
1285
+ toggleQueryDetails(moveFocus = true, show, skipLayout, reverse) {
1286
+ const cls = 'more';
1287
+ show = typeof show === 'undefined' ? !this.queryDetails.classList.contains(cls) : Boolean(show);
1288
+ this.viewletState['query.queryDetailsExpanded'] = show;
1289
+ skipLayout = Boolean(skipLayout);
1290
+ if (show) {
1291
+ this.toggleQueryDetailsButton.setAttribute('aria-expanded', 'true');
1292
+ this.queryDetails.classList.add(cls);
1293
+ if (moveFocus) {
1294
+ if (reverse) {
1295
+ this.inputPatternExcludes.focus();
1296
+ this.inputPatternExcludes.select();
1297
+ }
1298
+ else {
1299
+ this.inputPatternIncludes.focus();
1300
+ this.inputPatternIncludes.select();
1301
+ }
1302
+ }
1303
+ }
1304
+ else {
1305
+ this.toggleQueryDetailsButton.setAttribute('aria-expanded', 'false');
1306
+ this.queryDetails.classList.remove(cls);
1307
+ if (moveFocus) {
1308
+ this.searchWidget.focus();
1309
+ }
1310
+ }
1311
+ if (!skipLayout && this.size) {
1312
+ this.reLayout();
1313
+ }
1314
+ }
1315
+ searchInFolders(folderPaths = []) {
1316
+ this._searchWithIncludeOrExclude(true, folderPaths);
1317
+ }
1318
+ searchOutsideOfFolders(folderPaths = []) {
1319
+ this._searchWithIncludeOrExclude(false, folderPaths);
1320
+ }
1321
+ _searchWithIncludeOrExclude(include, folderPaths) {
1322
+ if (!folderPaths.length || ( folderPaths.some(folderPath => folderPath === '.'))) {
1323
+ this.inputPatternIncludes.setValue('');
1324
+ this.searchWidget.focus();
1325
+ return;
1326
+ }
1327
+ if (!this.showsFileTypes()) {
1328
+ this.toggleQueryDetails(true, true);
1329
+ }
1330
+ (include ? this.inputPatternIncludes : this.inputPatternExcludes).setValue(folderPaths.join(', '));
1331
+ this.searchWidget.focus(false);
1332
+ }
1333
+ triggerQueryChange(_options) {
1334
+ const options = { preserveFocus: true, triggeredOnType: false, delay: 0, ..._options };
1335
+ if (options.triggeredOnType && !this.searchConfig.searchOnType) {
1336
+ return;
1337
+ }
1338
+ if (!this.pauseSearching) {
1339
+ const delay = options.triggeredOnType ? options.delay : 0;
1340
+ this.triggerQueryDelayer.trigger(() => {
1341
+ this._onQueryChanged(options.preserveFocus, options.triggeredOnType);
1342
+ }, delay);
1343
+ }
1344
+ }
1345
+ _onQueryChanged(preserveFocus, triggeredOnType = false) {
1346
+ if (!(this.searchWidget.searchInput?.inputBox.isInputValid())) {
1347
+ return;
1348
+ }
1349
+ const isRegex = this.searchWidget.searchInput.getRegex();
1350
+ const isInNotebookMarkdownInput = this.searchWidget.getNotebookFilters().markupInput;
1351
+ const isInNotebookMarkdownPreview = this.searchWidget.getNotebookFilters().markupPreview;
1352
+ const isInNotebookCellInput = this.searchWidget.getNotebookFilters().codeInput;
1353
+ const isInNotebookCellOutput = this.searchWidget.getNotebookFilters().codeOutput;
1354
+ const isWholeWords = this.searchWidget.searchInput.getWholeWords();
1355
+ const isCaseSensitive = this.searchWidget.searchInput.getCaseSensitive();
1356
+ const contentPattern = this.searchWidget.searchInput.getValue();
1357
+ const excludePatternText = this.inputPatternExcludes.getValue().trim();
1358
+ const includePatternText = this.inputPatternIncludes.getValue().trim();
1359
+ const useExcludesAndIgnoreFiles = this.inputPatternExcludes.useExcludesAndIgnoreFiles();
1360
+ const onlySearchInOpenEditors = this.inputPatternIncludes.onlySearchInOpenEditors();
1361
+ if (contentPattern.length === 0) {
1362
+ this.clearSearchResults(false);
1363
+ this.clearMessage();
1364
+ return;
1365
+ }
1366
+ const content = {
1367
+ pattern: contentPattern,
1368
+ isRegExp: isRegex,
1369
+ isCaseSensitive: isCaseSensitive,
1370
+ isWordMatch: isWholeWords,
1371
+ notebookInfo: {
1372
+ isInNotebookMarkdownInput,
1373
+ isInNotebookMarkdownPreview,
1374
+ isInNotebookCellInput,
1375
+ isInNotebookCellOutput
1376
+ }
1377
+ };
1378
+ const excludePattern = this.inputPatternExcludes.getValue();
1379
+ const includePattern = this.inputPatternIncludes.getValue();
1380
+ const charsPerLine = content.isRegExp ? 10000 : 1000;
1381
+ const options = {
1382
+ _reason: 'searchView',
1383
+ extraFileResources: this.instantiationService.invokeFunction(getOutOfWorkspaceEditorResources),
1384
+ maxResults: this.searchConfig.maxResults ?? undefined,
1385
+ disregardIgnoreFiles: !useExcludesAndIgnoreFiles || undefined,
1386
+ disregardExcludeSettings: !useExcludesAndIgnoreFiles || undefined,
1387
+ onlyOpenEditors: onlySearchInOpenEditors,
1388
+ excludePattern,
1389
+ includePattern,
1390
+ previewOptions: {
1391
+ matchLines: 1,
1392
+ charsPerLine
1393
+ },
1394
+ isSmartCase: this.searchConfig.smartCase,
1395
+ expandPatterns: true
1396
+ };
1397
+ const folderResources = this.contextService.getWorkspace().folders;
1398
+ const onQueryValidationError = (err) => {
1399
+ this.searchWidget.searchInput?.showMessage({ content: err.message, type: 3 });
1400
+ this.viewModel.searchResult.clear();
1401
+ };
1402
+ let query;
1403
+ try {
1404
+ query = this.queryBuilder.text(content, ( folderResources.map(folder => folder.uri)), options);
1405
+ }
1406
+ catch (err) {
1407
+ onQueryValidationError(err);
1408
+ return;
1409
+ }
1410
+ this.validateQuery(query).then(() => {
1411
+ this.onQueryTriggered(query, options, excludePatternText, includePatternText, triggeredOnType);
1412
+ if (!preserveFocus) {
1413
+ this.searchWidget.focus(false, undefined, true);
1414
+ }
1415
+ }, onQueryValidationError);
1416
+ }
1417
+ validateQuery(query) {
1418
+ const folderQueriesExistP = ( query.folderQueries.map(fq => {
1419
+ return this.fileService.exists(fq.folder).catch(() => false);
1420
+ }));
1421
+ return Promise.all(folderQueriesExistP).then(existResults => {
1422
+ const existingFolderQueries = query.folderQueries.filter((folderQuery, i) => existResults[i]);
1423
+ if (!query.folderQueries.length || existingFolderQueries.length) {
1424
+ query.folderQueries = existingFolderQueries;
1425
+ }
1426
+ else {
1427
+ const nonExistantPath = query.folderQueries[0].folder.fsPath;
1428
+ const searchPathNotFoundError = ( localizeWithPath(
1429
+ 'vs/workbench/contrib/search/browser/searchView',
1430
+ 'searchPathNotFoundError',
1431
+ "Search path not found: {0}",
1432
+ nonExistantPath
1433
+ ));
1434
+ return Promise.reject(( new Error(searchPathNotFoundError)));
1435
+ }
1436
+ return undefined;
1437
+ });
1438
+ }
1439
+ onQueryTriggered(query, options, excludePatternText, includePatternText, triggeredOnType) {
1440
+ this.addToSearchHistoryDelayer.trigger(() => {
1441
+ this.searchWidget.searchInput?.onSearchSubmit();
1442
+ this.inputPatternExcludes.onSearchSubmit();
1443
+ this.inputPatternIncludes.onSearchSubmit();
1444
+ });
1445
+ this.viewModel.cancelSearch(true);
1446
+ this.viewModel.cancelAISearch(true);
1447
+ this.currentSearchQ = this.currentSearchQ
1448
+ .then(() => this.doSearch(query, excludePatternText, includePatternText, triggeredOnType))
1449
+ .then(() => undefined, () => undefined);
1450
+ }
1451
+ _updateResults() {
1452
+ if (this.state === SearchUIState.Idle) {
1453
+ return;
1454
+ }
1455
+ try {
1456
+ const fileCount = this.viewModel.searchResult.fileCount(this.aiResultsVisible);
1457
+ if (this._visibleMatches !== fileCount) {
1458
+ this._visibleMatches = fileCount;
1459
+ this.refreshAndUpdateCount();
1460
+ }
1461
+ }
1462
+ finally {
1463
+ this._refreshResultsScheduler.schedule();
1464
+ }
1465
+ }
1466
+ onSearchComplete(progressComplete, excludePatternText, includePatternText, completed) {
1467
+ this.state = SearchUIState.Idle;
1468
+ progressComplete();
1469
+ this.onSearchResultsChanged();
1470
+ const collapseResults = this.searchConfig.collapseResults;
1471
+ if (collapseResults !== 'alwaysCollapse' && this.viewModel.searchResult.matches(this.aiResultsVisible).length === 1) {
1472
+ const onlyMatch = this.viewModel.searchResult.matches(this.aiResultsVisible)[0];
1473
+ if (onlyMatch.count() < 50) {
1474
+ this.tree.expand(onlyMatch);
1475
+ }
1476
+ }
1477
+ const hasResults = !this.viewModel.searchResult.isEmpty(this.aiResultsVisible);
1478
+ if (completed?.exit === 1 ) {
1479
+ return;
1480
+ }
1481
+ if (!hasResults) {
1482
+ const hasExcludes = !!excludePatternText;
1483
+ const hasIncludes = !!includePatternText;
1484
+ let message;
1485
+ if (!completed) {
1486
+ message = SEARCH_CANCELLED_MESSAGE;
1487
+ }
1488
+ else if (this.inputPatternIncludes.onlySearchInOpenEditors()) {
1489
+ if (hasIncludes && hasExcludes) {
1490
+ message = ( localizeWithPath(
1491
+ 'vs/workbench/contrib/search/browser/searchView',
1492
+ 'noOpenEditorResultsIncludesExcludes',
1493
+ "No results found in open editors matching '{0}' excluding '{1}' - ",
1494
+ includePatternText,
1495
+ excludePatternText
1496
+ ));
1497
+ }
1498
+ else if (hasIncludes) {
1499
+ message = ( localizeWithPath(
1500
+ 'vs/workbench/contrib/search/browser/searchView',
1501
+ 'noOpenEditorResultsIncludes',
1502
+ "No results found in open editors matching '{0}' - ",
1503
+ includePatternText
1504
+ ));
1505
+ }
1506
+ else if (hasExcludes) {
1507
+ message = ( localizeWithPath(
1508
+ 'vs/workbench/contrib/search/browser/searchView',
1509
+ 'noOpenEditorResultsExcludes',
1510
+ "No results found in open editors excluding '{0}' - ",
1511
+ excludePatternText
1512
+ ));
1513
+ }
1514
+ else {
1515
+ message = ( localizeWithPath(
1516
+ 'vs/workbench/contrib/search/browser/searchView',
1517
+ 'noOpenEditorResultsFound',
1518
+ "No results found in open editors. Review your settings for configured exclusions and check your gitignore files - "
1519
+ ));
1520
+ }
1521
+ }
1522
+ else {
1523
+ if (hasIncludes && hasExcludes) {
1524
+ message = ( localizeWithPath(
1525
+ 'vs/workbench/contrib/search/browser/searchView',
1526
+ 'noResultsIncludesExcludes',
1527
+ "No results found in '{0}' excluding '{1}' - ",
1528
+ includePatternText,
1529
+ excludePatternText
1530
+ ));
1531
+ }
1532
+ else if (hasIncludes) {
1533
+ message = ( localizeWithPath(
1534
+ 'vs/workbench/contrib/search/browser/searchView',
1535
+ 'noResultsIncludes',
1536
+ "No results found in '{0}' - ",
1537
+ includePatternText
1538
+ ));
1539
+ }
1540
+ else if (hasExcludes) {
1541
+ message = ( localizeWithPath(
1542
+ 'vs/workbench/contrib/search/browser/searchView',
1543
+ 'noResultsExcludes',
1544
+ "No results found excluding '{0}' - ",
1545
+ excludePatternText
1546
+ ));
1547
+ }
1548
+ else {
1549
+ message = ( localizeWithPath(
1550
+ 'vs/workbench/contrib/search/browser/searchView',
1551
+ 'noResultsFound',
1552
+ "No results found. Review your settings for configured exclusions and check your gitignore files - "
1553
+ ));
1554
+ }
1555
+ }
1556
+ status(message);
1557
+ const messageEl = this.clearMessage();
1558
+ append(messageEl, message);
1559
+ if (!completed) {
1560
+ const searchAgainButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1561
+ 'vs/workbench/contrib/search/browser/searchView',
1562
+ 'rerunSearch.message',
1563
+ "Search again"
1564
+ )), () => this.triggerQueryChange({ preserveFocus: false }))));
1565
+ append(messageEl, searchAgainButton.element);
1566
+ }
1567
+ else if (hasIncludes || hasExcludes) {
1568
+ const searchAgainButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1569
+ 'vs/workbench/contrib/search/browser/searchView',
1570
+ 'rerunSearchInAll.message',
1571
+ "Search again in all files"
1572
+ )), this.onSearchAgain.bind(this))));
1573
+ append(messageEl, searchAgainButton.element);
1574
+ }
1575
+ else {
1576
+ const openSettingsButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1577
+ 'vs/workbench/contrib/search/browser/searchView',
1578
+ 'openSettings.message',
1579
+ "Open Settings"
1580
+ )), this.onOpenSettings.bind(this))));
1581
+ append(messageEl, openSettingsButton.element);
1582
+ }
1583
+ if (completed) {
1584
+ append(messageEl, $('span', undefined, ' - '));
1585
+ const learnMoreButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1586
+ 'vs/workbench/contrib/search/browser/searchView',
1587
+ 'openSettings.learnMore',
1588
+ "Learn More"
1589
+ )), this.onLearnMore.bind(this))));
1590
+ append(messageEl, learnMoreButton.element);
1591
+ }
1592
+ if (this.contextService.getWorkbenchState() === 1 ) {
1593
+ this.showSearchWithoutFolderMessage();
1594
+ }
1595
+ this.reLayout();
1596
+ }
1597
+ else {
1598
+ this.viewModel.searchResult.toggleHighlights(this.isVisible());
1599
+ status(( localizeWithPath(
1600
+ 'vs/workbench/contrib/search/browser/searchView',
1601
+ 'ariaSearchResultsStatus',
1602
+ "Search returned {0} results in {1} files",
1603
+ this.viewModel.searchResult.count(this.aiResultsVisible),
1604
+ this.viewModel.searchResult.fileCount()
1605
+ )));
1606
+ }
1607
+ if (completed && completed.limitHit) {
1608
+ completed.messages.push({ type: TextSearchCompleteMessageType.Warning, text: ( localizeWithPath(
1609
+ 'vs/workbench/contrib/search/browser/searchView',
1610
+ 'searchMaxResultsWarning',
1611
+ "The result set only contains a subset of all matches. Be more specific in your search to narrow down the results."
1612
+ )) });
1613
+ }
1614
+ if (completed && completed.messages) {
1615
+ for (const message of completed.messages) {
1616
+ this.addMessage(message);
1617
+ }
1618
+ }
1619
+ this.reLayout();
1620
+ }
1621
+ onSearchError(e, progressComplete, excludePatternText, includePatternText, completed) {
1622
+ this.state = SearchUIState.Idle;
1623
+ if (isCancellationError(e)) {
1624
+ return this.onSearchComplete(progressComplete, excludePatternText, includePatternText, completed);
1625
+ }
1626
+ else {
1627
+ progressComplete();
1628
+ this.searchWidget.searchInput?.showMessage({ content: e.message, type: 3 });
1629
+ this.viewModel.searchResult.clear();
1630
+ return Promise.resolve();
1631
+ }
1632
+ }
1633
+ doSearch(query, excludePatternText, includePatternText, triggeredOnType) {
1634
+ let progressComplete;
1635
+ this.progressService.withProgress({ location: this.getProgressLocation(), delay: triggeredOnType ? 300 : 0 }, _progress => {
1636
+ return ( new Promise(resolve => progressComplete = resolve));
1637
+ });
1638
+ this.searchWidget.searchInput?.clearMessage();
1639
+ this.state = SearchUIState.Searching;
1640
+ this.showEmptyStage();
1641
+ const slowTimer = setTimeout(() => {
1642
+ this.state = SearchUIState.SlowSearch;
1643
+ }, 2000);
1644
+ this._visibleMatches = 0;
1645
+ this._refreshResultsScheduler.schedule();
1646
+ this.searchWidget.setReplaceAllActionState(false);
1647
+ this.tree.setSelection([]);
1648
+ this.tree.setFocus([]);
1649
+ this.viewModel.replaceString = this.searchWidget.getReplaceValue();
1650
+ const result = this.viewModel.search(query);
1651
+ if (this.aiResultsVisible) {
1652
+ const aiResult = this.viewModel.aiSearch({ ...query, contentPattern: query.contentPattern.pattern, type: 3 });
1653
+ return result.asyncResults.then(() => aiResult.then((complete) => {
1654
+ clearTimeout(slowTimer);
1655
+ this.onSearchComplete(progressComplete, excludePatternText, includePatternText, complete);
1656
+ }, (e) => {
1657
+ clearTimeout(slowTimer);
1658
+ this.onSearchError(e, progressComplete, excludePatternText, includePatternText);
1659
+ }));
1660
+ }
1661
+ return result.asyncResults.then((complete) => {
1662
+ clearTimeout(slowTimer);
1663
+ this.onSearchComplete(progressComplete, excludePatternText, includePatternText, complete);
1664
+ }, (e) => {
1665
+ clearTimeout(slowTimer);
1666
+ this.onSearchError(e, progressComplete, excludePatternText, includePatternText);
1667
+ });
1668
+ }
1669
+ onOpenSettings(e) {
1670
+ EventHelper.stop(e, false);
1671
+ this.openSettings('@id:files.exclude,search.exclude,search.useParentIgnoreFiles,search.useGlobalIgnoreFiles,search.useIgnoreFiles');
1672
+ }
1673
+ openSettings(query) {
1674
+ const options = { query };
1675
+ return this.contextService.getWorkbenchState() !== 1 ?
1676
+ this.preferencesService.openWorkspaceSettings(options) :
1677
+ this.preferencesService.openUserSettings(options);
1678
+ }
1679
+ onLearnMore() {
1680
+ this.openerService.open(( URI.parse('https://go.microsoft.com/fwlink/?linkid=853977')));
1681
+ }
1682
+ onSearchAgain() {
1683
+ this.inputPatternExcludes.setValue('');
1684
+ this.inputPatternIncludes.setValue('');
1685
+ this.inputPatternIncludes.setOnlySearchInOpenEditors(false);
1686
+ this.triggerQueryChange({ preserveFocus: false });
1687
+ }
1688
+ onEnableExcludes() {
1689
+ this.toggleQueryDetails(false, true);
1690
+ this.searchExcludePattern.setUseExcludesAndIgnoreFiles(true);
1691
+ }
1692
+ onDisableSearchInOpenEditors() {
1693
+ this.toggleQueryDetails(false, true);
1694
+ this.inputPatternIncludes.setOnlySearchInOpenEditors(false);
1695
+ }
1696
+ updateSearchResultCount(disregardExcludesAndIgnores, onlyOpenEditors, clear = false) {
1697
+ const fileCount = this.viewModel.searchResult.fileCount(this.aiResultsVisible);
1698
+ const resultCount = this.viewModel.searchResult.count(this.aiResultsVisible);
1699
+ this.hasSearchResultsKey.set(fileCount > 0);
1700
+ const msgWasHidden = this.messagesElement.style.display === 'none';
1701
+ const messageEl = this.clearMessage();
1702
+ const resultMsg = clear ? '' : this.buildResultCountMessage(resultCount, fileCount);
1703
+ this.tree.ariaLabel = resultMsg + ( localizeWithPath(
1704
+ 'vs/workbench/contrib/search/browser/searchView',
1705
+ 'forTerm',
1706
+ " - Search: {0}",
1707
+ this.searchResult.query?.contentPattern.pattern ?? ''
1708
+ ));
1709
+ append(messageEl, resultMsg);
1710
+ if (fileCount > 0) {
1711
+ if (disregardExcludesAndIgnores) {
1712
+ const excludesDisabledMessage = ' - ' + ( localizeWithPath(
1713
+ 'vs/workbench/contrib/search/browser/searchView',
1714
+ 'useIgnoresAndExcludesDisabled',
1715
+ "exclude settings and ignore files are disabled"
1716
+ )) + ' ';
1717
+ const enableExcludesButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1718
+ 'vs/workbench/contrib/search/browser/searchView',
1719
+ 'excludes.enable',
1720
+ "enable"
1721
+ )), this.onEnableExcludes.bind(this), ( localizeWithPath(
1722
+ 'vs/workbench/contrib/search/browser/searchView',
1723
+ 'useExcludesAndIgnoreFilesDescription',
1724
+ "Use Exclude Settings and Ignore Files"
1725
+ )))));
1726
+ append(messageEl, $('span', undefined, excludesDisabledMessage, '(', enableExcludesButton.element, ')'));
1727
+ }
1728
+ if (onlyOpenEditors) {
1729
+ const searchingInOpenMessage = ' - ' + ( localizeWithPath(
1730
+ 'vs/workbench/contrib/search/browser/searchView',
1731
+ 'onlyOpenEditors',
1732
+ "searching only in open files"
1733
+ )) + ' ';
1734
+ const disableOpenEditorsButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1735
+ 'vs/workbench/contrib/search/browser/searchView',
1736
+ 'openEditors.disable',
1737
+ "disable"
1738
+ )), this.onDisableSearchInOpenEditors.bind(this), ( localizeWithPath(
1739
+ 'vs/workbench/contrib/search/browser/searchView',
1740
+ 'disableOpenEditors',
1741
+ "Search in entire workspace"
1742
+ )))));
1743
+ append(messageEl, $('span', undefined, searchingInOpenMessage, '(', disableOpenEditorsButton.element, ')'));
1744
+ }
1745
+ append(messageEl, ' - ');
1746
+ const openInEditorTooltip = appendKeyBindingLabel(( localizeWithPath(
1747
+ 'vs/workbench/contrib/search/browser/searchView',
1748
+ 'openInEditor.tooltip',
1749
+ "Copy current search results to an editor"
1750
+ )), this.keybindingService.lookupKeybinding("search.action.openInEditor" ));
1751
+ const openInEditorButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1752
+ 'vs/workbench/contrib/search/browser/searchView',
1753
+ 'openInEditor.message',
1754
+ "Open in editor"
1755
+ )), () => this.instantiationService.invokeFunction(createEditorFromSearchResult, this.searchResult, this.searchIncludePattern.getValue(), this.searchExcludePattern.getValue(), this.searchIncludePattern.onlySearchInOpenEditors()), openInEditorTooltip)));
1756
+ append(messageEl, openInEditorButton.element);
1757
+ this.reLayout();
1758
+ }
1759
+ else if (!msgWasHidden) {
1760
+ hide(this.messagesElement);
1761
+ }
1762
+ }
1763
+ addMessage(message) {
1764
+ const messageBox = this.messagesElement.firstChild;
1765
+ if (!messageBox) {
1766
+ return;
1767
+ }
1768
+ append(messageBox, renderSearchMessage(message, this.instantiationService, this.notificationService, this.openerService, this.commandService, this.messageDisposables, () => this.triggerQueryChange()));
1769
+ }
1770
+ buildResultCountMessage(resultCount, fileCount) {
1771
+ if (resultCount === 1 && fileCount === 1) {
1772
+ return ( localizeWithPath(
1773
+ 'vs/workbench/contrib/search/browser/searchView',
1774
+ 'search.file.result',
1775
+ "{0} result in {1} file",
1776
+ resultCount,
1777
+ fileCount
1778
+ ));
1779
+ }
1780
+ else if (resultCount === 1) {
1781
+ return ( localizeWithPath(
1782
+ 'vs/workbench/contrib/search/browser/searchView',
1783
+ 'search.files.result',
1784
+ "{0} result in {1} files",
1785
+ resultCount,
1786
+ fileCount
1787
+ ));
1788
+ }
1789
+ else if (fileCount === 1) {
1790
+ return ( localizeWithPath(
1791
+ 'vs/workbench/contrib/search/browser/searchView',
1792
+ 'search.file.results',
1793
+ "{0} results in {1} file",
1794
+ resultCount,
1795
+ fileCount
1796
+ ));
1797
+ }
1798
+ else {
1799
+ return ( localizeWithPath(
1800
+ 'vs/workbench/contrib/search/browser/searchView',
1801
+ 'search.files.results',
1802
+ "{0} results in {1} files",
1803
+ resultCount,
1804
+ fileCount
1805
+ ));
1806
+ }
1807
+ }
1808
+ showSearchWithoutFolderMessage() {
1809
+ this.searchWithoutFolderMessageElement = this.clearMessage();
1810
+ const textEl = append(this.searchWithoutFolderMessageElement, $('p', undefined, ( localizeWithPath(
1811
+ 'vs/workbench/contrib/search/browser/searchView',
1812
+ 'searchWithoutFolder',
1813
+ "You have not opened or specified a folder. Only open files are currently searched - "
1814
+ ))));
1815
+ const openFolderButton = this.messageDisposables.add(( new SearchLinkButton(( localizeWithPath(
1816
+ 'vs/workbench/contrib/search/browser/searchView',
1817
+ 'openFolder',
1818
+ "Open Folder"
1819
+ )), () => {
1820
+ this.commandService.executeCommand(isMacintosh && isNative ? OpenFileFolderAction.ID : OpenFolderAction.ID).catch(err => onUnexpectedError(err));
1821
+ })));
1822
+ append(textEl, openFolderButton.element);
1823
+ }
1824
+ showEmptyStage(forceHideMessages = false) {
1825
+ const showingCancelled = (this.messagesElement.firstChild?.textContent?.indexOf(SEARCH_CANCELLED_MESSAGE) ?? -1) > -1;
1826
+ if (showingCancelled || forceHideMessages || !this.configurationService.getValue().search.searchOnType) {
1827
+ hide(this.messagesElement);
1828
+ }
1829
+ show(this.resultsElement);
1830
+ this.currentSelectedFileMatch = undefined;
1831
+ }
1832
+ shouldOpenInNotebookEditor(match, uri) {
1833
+ return match instanceof MatchInNotebook || (uri.scheme !== Schemas.untitled && this.notebookService.getContributedNotebookTypes(uri).length > 0);
1834
+ }
1835
+ onFocus(lineMatch, preserveFocus, sideBySide, pinned) {
1836
+ const useReplacePreview = this.configurationService.getValue().search.useReplacePreview;
1837
+ const resource = lineMatch instanceof Match ? lineMatch.parent().resource : lineMatch.resource;
1838
+ return (useReplacePreview && this.viewModel.isReplaceActive() && !!this.viewModel.replaceString && !(this.shouldOpenInNotebookEditor(lineMatch, resource))) ?
1839
+ this.replaceService.openReplacePreview(lineMatch, preserveFocus, sideBySide, pinned) :
1840
+ this.open(lineMatch, preserveFocus, sideBySide, pinned, resource);
1841
+ }
1842
+ async open(element, preserveFocus, sideBySide, pinned, resourceInput) {
1843
+ const selection = getEditorSelectionFromMatch(element, this.viewModel);
1844
+ const oldParentMatches = element instanceof Match ? element.parent().matches() : [];
1845
+ const resource = resourceInput ?? (element instanceof Match ? element.parent().resource : element.resource);
1846
+ let editor;
1847
+ const options = {
1848
+ preserveFocus,
1849
+ pinned,
1850
+ selection,
1851
+ revealIfVisible: true,
1852
+ };
1853
+ try {
1854
+ editor = await this.editorService.openEditor({
1855
+ resource: resource,
1856
+ options,
1857
+ }, sideBySide ? SIDE_GROUP : ACTIVE_GROUP);
1858
+ const editorControl = editor?.getControl();
1859
+ if (element instanceof Match && preserveFocus && isCodeEditor(editorControl)) {
1860
+ this.viewModel.searchResult.rangeHighlightDecorations.highlightRange(editorControl.getModel(), element.range());
1861
+ }
1862
+ else {
1863
+ this.viewModel.searchResult.rangeHighlightDecorations.removeHighlightRange();
1864
+ }
1865
+ }
1866
+ catch (err) {
1867
+ onUnexpectedError(err);
1868
+ return;
1869
+ }
1870
+ if (editor instanceof NotebookEditor) {
1871
+ const elemParent = element.parent();
1872
+ if (element instanceof Match) {
1873
+ if (element instanceof MatchInNotebook) {
1874
+ element.parent().showMatch(element);
1875
+ }
1876
+ else {
1877
+ const editorWidget = editor.getControl();
1878
+ if (editorWidget) {
1879
+ elemParent.bindNotebookEditorWidget(editorWidget);
1880
+ await elemParent.updateMatchesForEditorWidget();
1881
+ const matchIndex = oldParentMatches.findIndex(e => e.id() === element.id());
1882
+ const matches = elemParent.matches();
1883
+ const match = matchIndex >= matches.length ? matches[matches.length - 1] : matches[matchIndex];
1884
+ if (match instanceof MatchInNotebook) {
1885
+ elemParent.showMatch(match);
1886
+ if (!this.tree.getFocus().includes(match) || !this.tree.getSelection().includes(match)) {
1887
+ this.tree.setSelection([match], getSelectionKeyboardEvent());
1888
+ this.tree.setFocus([match]);
1889
+ }
1890
+ }
1891
+ }
1892
+ }
1893
+ }
1894
+ }
1895
+ }
1896
+ openEditorWithMultiCursor(element) {
1897
+ const resource = element instanceof Match ? element.parent().resource : element.resource;
1898
+ return this.editorService.openEditor({
1899
+ resource: resource,
1900
+ options: {
1901
+ preserveFocus: false,
1902
+ pinned: true,
1903
+ revealIfVisible: true
1904
+ }
1905
+ }).then(editor => {
1906
+ if (editor) {
1907
+ let fileMatch = null;
1908
+ if (element instanceof FileMatch) {
1909
+ fileMatch = element;
1910
+ }
1911
+ else if (element instanceof Match) {
1912
+ fileMatch = element.parent();
1913
+ }
1914
+ if (fileMatch) {
1915
+ const selections = ( fileMatch.matches().map(m => ( new Selection(
1916
+ m.range().startLineNumber,
1917
+ m.range().startColumn,
1918
+ m.range().endLineNumber,
1919
+ m.range().endColumn
1920
+ ))));
1921
+ const codeEditor = getCodeEditor(editor.getControl());
1922
+ if (codeEditor) {
1923
+ const multiCursorController = MultiCursorSelectionController.get(codeEditor);
1924
+ multiCursorController?.selectAllUsingSelections(selections);
1925
+ }
1926
+ }
1927
+ }
1928
+ this.viewModel.searchResult.rangeHighlightDecorations.removeHighlightRange();
1929
+ }, onUnexpectedError);
1930
+ }
1931
+ onUntitledDidDispose(resource) {
1932
+ if (!this.viewModel) {
1933
+ return;
1934
+ }
1935
+ let matches = this.viewModel.searchResult.matches();
1936
+ for (let i = 0, len = matches.length; i < len; i++) {
1937
+ if (( resource.toString()) === ( matches[i].resource.toString())) {
1938
+ this.viewModel.searchResult.remove(matches[i]);
1939
+ }
1940
+ }
1941
+ matches = this.viewModel.searchResult.matches(true);
1942
+ for (let i = 0, len = matches.length; i < len; i++) {
1943
+ if (( resource.toString()) === ( matches[i].resource.toString())) {
1944
+ this.viewModel.searchResult.remove(matches[i]);
1945
+ }
1946
+ }
1947
+ }
1948
+ onFilesChanged(e) {
1949
+ if (!this.viewModel || (this.searchConfig.sortOrder !== "modified" && !e.gotDeleted())) {
1950
+ return;
1951
+ }
1952
+ const matches = this.viewModel.searchResult.matches();
1953
+ if (e.gotDeleted()) {
1954
+ const deletedMatches = matches.filter(m => e.contains(m.resource, 2 ));
1955
+ this.viewModel.searchResult.remove(deletedMatches);
1956
+ }
1957
+ else {
1958
+ const changedMatches = matches.filter(m => e.contains(m.resource));
1959
+ if (changedMatches.length && this.searchConfig.sortOrder === "modified" ) {
1960
+ this.updateFileStats(changedMatches).then(() => this.refreshTree());
1961
+ }
1962
+ }
1963
+ }
1964
+ get searchConfig() {
1965
+ return this.configurationService.getValue('search');
1966
+ }
1967
+ clearHistory() {
1968
+ this.searchWidget.clearHistory();
1969
+ this.inputPatternExcludes.clearHistory();
1970
+ this.inputPatternIncludes.clearHistory();
1971
+ }
1972
+ saveState() {
1973
+ if (!this.searchWidget) {
1974
+ return;
1975
+ }
1976
+ const patternExcludes = this.inputPatternExcludes?.getValue().trim() ?? '';
1977
+ const patternIncludes = this.inputPatternIncludes?.getValue().trim() ?? '';
1978
+ const onlyOpenEditors = this.inputPatternIncludes?.onlySearchInOpenEditors() ?? false;
1979
+ const useExcludesAndIgnoreFiles = this.inputPatternExcludes?.useExcludesAndIgnoreFiles() ?? true;
1980
+ const preserveCase = this.viewModel.preserveCase;
1981
+ if (this.searchWidget.searchInput) {
1982
+ const isRegex = this.searchWidget.searchInput.getRegex();
1983
+ const isWholeWords = this.searchWidget.searchInput.getWholeWords();
1984
+ const isCaseSensitive = this.searchWidget.searchInput.getCaseSensitive();
1985
+ const contentPattern = this.searchWidget.searchInput.getValue();
1986
+ const isInNotebookCellInput = this.searchWidget.getNotebookFilters().codeInput;
1987
+ const isInNotebookCellOutput = this.searchWidget.getNotebookFilters().codeOutput;
1988
+ const isInNotebookMarkdownInput = this.searchWidget.getNotebookFilters().markupInput;
1989
+ const isInNotebookMarkdownPreview = this.searchWidget.getNotebookFilters().markupPreview;
1990
+ this.viewletState['query.contentPattern'] = contentPattern;
1991
+ this.viewletState['query.regex'] = isRegex;
1992
+ this.viewletState['query.wholeWords'] = isWholeWords;
1993
+ this.viewletState['query.caseSensitive'] = isCaseSensitive;
1994
+ this.viewletState['query.isInNotebookMarkdownInput'] = isInNotebookMarkdownInput;
1995
+ this.viewletState['query.isInNotebookMarkdownPreview'] = isInNotebookMarkdownPreview;
1996
+ this.viewletState['query.isInNotebookCellInput'] = isInNotebookCellInput;
1997
+ this.viewletState['query.isInNotebookCellOutput'] = isInNotebookCellOutput;
1998
+ }
1999
+ this.viewletState['query.folderExclusions'] = patternExcludes;
2000
+ this.viewletState['query.folderIncludes'] = patternIncludes;
2001
+ this.viewletState['query.useExcludesAndIgnoreFiles'] = useExcludesAndIgnoreFiles;
2002
+ this.viewletState['query.preserveCase'] = preserveCase;
2003
+ this.viewletState['query.onlyOpenEditors'] = onlyOpenEditors;
2004
+ const isReplaceShown = this.searchAndReplaceWidget.isReplaceShown();
2005
+ this.viewletState['view.showReplace'] = isReplaceShown;
2006
+ this.viewletState['view.treeLayout'] = this.isTreeLayoutViewVisible;
2007
+ this.viewletState['query.replaceText'] = isReplaceShown && this.searchWidget.getReplaceValue();
2008
+ this._saveSearchHistoryService();
2009
+ this.memento.saveMemento();
2010
+ super.saveState();
2011
+ }
2012
+ _saveSearchHistoryService() {
2013
+ if (this.searchWidget === undefined) {
2014
+ return;
2015
+ }
2016
+ const history = Object.create(null);
2017
+ const searchHistory = this.searchWidget.getSearchHistory();
2018
+ if (searchHistory && searchHistory.length) {
2019
+ history.search = searchHistory;
2020
+ }
2021
+ const replaceHistory = this.searchWidget.getReplaceHistory();
2022
+ if (replaceHistory && replaceHistory.length) {
2023
+ history.replace = replaceHistory;
2024
+ }
2025
+ const patternExcludesHistory = this.inputPatternExcludes.getHistory();
2026
+ if (patternExcludesHistory && patternExcludesHistory.length) {
2027
+ history.exclude = patternExcludesHistory;
2028
+ }
2029
+ const patternIncludesHistory = this.inputPatternIncludes.getHistory();
2030
+ if (patternIncludesHistory && patternIncludesHistory.length) {
2031
+ history.include = patternIncludesHistory;
2032
+ }
2033
+ this.searchHistoryService.save(history);
2034
+ }
2035
+ async retrieveFileStats() {
2036
+ const files = ( this.searchResult.matches(this.aiResultsVisible).filter(f => !f.fileStat).map(f => f.resolveFileStat(this.fileService)));
2037
+ await Promise.all(files);
2038
+ }
2039
+ async updateFileStats(elements) {
2040
+ const files = ( elements.map(f => f.resolveFileStat(this.fileService)));
2041
+ await Promise.all(files);
2042
+ }
2043
+ removeFileStats() {
2044
+ for (const fileMatch of this.searchResult.matches()) {
2045
+ fileMatch.fileStat = undefined;
2046
+ }
2047
+ for (const fileMatch of this.searchResult.matches(true)) {
2048
+ fileMatch.fileStat = undefined;
2049
+ }
2050
+ }
2051
+ dispose() {
2052
+ this.isDisposed = true;
2053
+ this.saveState();
2054
+ super.dispose();
2055
+ }
2056
+ };
2057
+ SearchView = SearchView_1 = ( __decorate([
2058
+ ( __param(1, IFileService)),
2059
+ ( __param(2, IEditorService)),
2060
+ ( __param(3, ICodeEditorService)),
2061
+ ( __param(4, IProgressService)),
2062
+ ( __param(5, INotificationService)),
2063
+ ( __param(6, IDialogService)),
2064
+ ( __param(7, ICommandService)),
2065
+ ( __param(8, IContextViewService)),
2066
+ ( __param(9, IInstantiationService)),
2067
+ ( __param(10, IViewDescriptorService)),
2068
+ ( __param(11, IConfigurationService)),
2069
+ ( __param(12, IWorkspaceContextService)),
2070
+ ( __param(13, ISearchViewModelWorkbenchService)),
2071
+ ( __param(14, IContextKeyService)),
2072
+ ( __param(15, IReplaceService)),
2073
+ ( __param(16, ITextFileService)),
2074
+ ( __param(17, IPreferencesService)),
2075
+ ( __param(18, IThemeService)),
2076
+ ( __param(19, ISearchHistoryService)),
2077
+ ( __param(20, IContextMenuService)),
2078
+ ( __param(21, IAccessibilityService)),
2079
+ ( __param(22, IKeybindingService)),
2080
+ ( __param(23, IStorageService)),
2081
+ ( __param(24, IOpenerService)),
2082
+ ( __param(25, ITelemetryService)),
2083
+ ( __param(26, INotebookService)),
2084
+ ( __param(27, ILogService)),
2085
+ ( __param(28, IAccessibilitySignalService))
2086
+ ], SearchView));
2087
+ class SearchLinkButton extends Disposable {
2088
+ constructor(label, handler, tooltip) {
2089
+ super();
2090
+ this.element = $('a.pointer', { tabindex: 0 }, label);
2091
+ this._register(setupCustomHover(getDefaultHoverDelegate('mouse'), this.element, tooltip));
2092
+ this.addEventHandlers(handler);
2093
+ }
2094
+ addEventHandlers(handler) {
2095
+ const wrappedHandler = (e) => {
2096
+ EventHelper.stop(e, false);
2097
+ handler(e);
2098
+ };
2099
+ this._register(addDisposableListener(this.element, EventType.CLICK, wrappedHandler));
2100
+ this._register(addDisposableListener(this.element, EventType.KEY_DOWN, e => {
2101
+ const event = ( new StandardKeyboardEvent(e));
2102
+ if (event.equals(10 ) || event.equals(3 )) {
2103
+ wrappedHandler(e);
2104
+ event.preventDefault();
2105
+ event.stopPropagation();
2106
+ }
2107
+ }));
2108
+ }
2109
+ }
2110
+ function getEditorSelectionFromMatch(element, viewModel) {
2111
+ let match = null;
2112
+ if (element instanceof Match) {
2113
+ match = element;
2114
+ }
2115
+ if (element instanceof FileMatch && element.count() > 0) {
2116
+ match = element.matches()[element.matches().length - 1];
2117
+ }
2118
+ if (match) {
2119
+ const range = match.range();
2120
+ if (viewModel.isReplaceActive() && !!viewModel.replaceString) {
2121
+ const replaceString = match.replaceString;
2122
+ return {
2123
+ startLineNumber: range.startLineNumber,
2124
+ startColumn: range.startColumn,
2125
+ endLineNumber: range.startLineNumber,
2126
+ endColumn: range.startColumn + replaceString.length
2127
+ };
2128
+ }
2129
+ return range;
2130
+ }
2131
+ return undefined;
2132
+ }
2133
+ function getSelectionTextFromEditor(allowUnselectedWord, activeEditor) {
2134
+ let editor = activeEditor;
2135
+ if (isDiffEditor(editor)) {
2136
+ if (editor.getOriginalEditor().hasTextFocus()) {
2137
+ editor = editor.getOriginalEditor();
2138
+ }
2139
+ else {
2140
+ editor = editor.getModifiedEditor();
2141
+ }
2142
+ }
2143
+ if (!isCodeEditor(editor) || !editor.hasModel()) {
2144
+ return null;
2145
+ }
2146
+ const range = editor.getSelection();
2147
+ if (!range) {
2148
+ return null;
2149
+ }
2150
+ if (range.isEmpty()) {
2151
+ if (allowUnselectedWord) {
2152
+ const wordAtPosition = editor.getModel().getWordAtPosition(range.getStartPosition());
2153
+ return wordAtPosition?.word ?? null;
2154
+ }
2155
+ else {
2156
+ return null;
2157
+ }
2158
+ }
2159
+ let searchText = '';
2160
+ for (let i = range.startLineNumber; i <= range.endLineNumber; i++) {
2161
+ let lineText = editor.getModel().getLineContent(i);
2162
+ if (i === range.endLineNumber) {
2163
+ lineText = lineText.substring(0, range.endColumn - 1);
2164
+ }
2165
+ if (i === range.startLineNumber) {
2166
+ lineText = lineText.substring(range.startColumn - 1);
2167
+ }
2168
+ if (i !== range.startLineNumber) {
2169
+ lineText = '\n' + lineText;
2170
+ }
2171
+ searchText += lineText;
2172
+ }
2173
+ return searchText;
2174
+ }
2175
+ export { SearchView, getEditorSelectionFromMatch, getSelectionTextFromEditor };