monaco-editor-core 0.57.0 → 0.58.0-dev-20261104

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 (508) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +38 -6
  18. package/esm/vs/base/browser/browser.js +8 -0
  19. package/esm/vs/base/browser/browser.js.map +1 -1
  20. package/esm/vs/base/browser/contextmenu.js +8 -1
  21. package/esm/vs/base/browser/contextmenu.js.map +1 -1
  22. package/esm/vs/base/browser/dom.js +34 -5
  23. package/esm/vs/base/browser/dom.js.map +1 -1
  24. package/esm/vs/base/browser/dompurify/dompurify.js +2457 -2640
  25. package/esm/vs/base/browser/markdownRenderer.js +48 -21
  26. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  27. package/esm/vs/base/browser/pixelRatio.js +3 -2
  28. package/esm/vs/base/browser/pixelRatio.js.map +1 -1
  29. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js +5 -2
  30. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
  31. package/esm/vs/base/browser/ui/actionbar/actionbar.js +7 -2
  32. package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
  33. package/esm/vs/base/browser/ui/animations/animations.js +68 -40
  34. package/esm/vs/base/browser/ui/animations/animations.js.map +1 -1
  35. package/esm/vs/base/browser/ui/button/button.js +7 -0
  36. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  37. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  38. package/esm/vs/base/browser/ui/contextview/contextview.css +15 -0
  39. package/esm/vs/base/browser/ui/contextview/contextview.js +266 -40
  40. package/esm/vs/base/browser/ui/contextview/contextview.js.map +1 -1
  41. package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js +72 -0
  42. package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js.map +1 -0
  43. package/esm/vs/base/browser/ui/dialog/dialog.css +5 -0
  44. package/esm/vs/base/browser/ui/dropdown/dropdown.js +2 -1
  45. package/esm/vs/base/browser/ui/dropdown/dropdown.js.map +1 -1
  46. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +1 -0
  47. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
  48. package/esm/vs/base/browser/ui/hover/hover.js.map +1 -1
  49. package/esm/vs/base/browser/ui/list/listView.js +87 -15
  50. package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
  51. package/esm/vs/base/browser/ui/list/listWidget.js +37 -15
  52. package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
  53. package/esm/vs/base/browser/ui/menu/menu.js +189 -52
  54. package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
  55. package/esm/vs/base/browser/ui/radio/radio.css +11 -0
  56. package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +2 -1
  57. package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
  58. package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
  59. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +14 -8
  60. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
  61. package/esm/vs/base/browser/ui/splitview/splitview.js +11 -7
  62. package/esm/vs/base/browser/ui/splitview/splitview.js.map +1 -1
  63. package/esm/vs/base/browser/ui/toggle/switch.css +16 -7
  64. package/esm/vs/base/browser/ui/toggle/switch.js +9 -6
  65. package/esm/vs/base/browser/ui/toggle/switch.js.map +1 -1
  66. package/esm/vs/base/browser/ui/toolbar/toolbar.css +1 -2
  67. package/esm/vs/base/browser/ui/toolbar/toolbar.js +85 -38
  68. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  69. package/esm/vs/base/browser/ui/tree/abstractTree.js +48 -9
  70. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  71. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +10 -1
  72. package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
  73. package/esm/vs/base/browser/ui/tree/objectTree.js +3 -0
  74. package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
  75. package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
  76. package/esm/vs/base/common/actions.js +8 -2
  77. package/esm/vs/base/common/actions.js.map +1 -1
  78. package/esm/vs/base/common/arrays.js +4 -4
  79. package/esm/vs/base/common/arrays.js.map +1 -1
  80. package/esm/vs/base/common/async.js +12 -8
  81. package/esm/vs/base/common/async.js.map +1 -1
  82. package/esm/vs/base/common/cancellation.js +25 -0
  83. package/esm/vs/base/common/cancellation.js.map +1 -1
  84. package/esm/vs/base/common/codicons.js +2 -0
  85. package/esm/vs/base/common/codicons.js.map +1 -1
  86. package/esm/vs/base/common/codiconsLibrary.js +2 -0
  87. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  88. package/esm/vs/base/common/color.js +1 -1
  89. package/esm/vs/base/common/color.js.map +1 -1
  90. package/esm/vs/base/common/diff/diff.js +60 -1
  91. package/esm/vs/base/common/diff/diff.js.map +1 -1
  92. package/esm/vs/base/common/event.js +1 -1
  93. package/esm/vs/base/common/event.js.map +1 -1
  94. package/esm/vs/base/common/glob.js +1 -0
  95. package/esm/vs/base/common/glob.js.map +1 -1
  96. package/esm/vs/base/common/htmlContent.js +74 -12
  97. package/esm/vs/base/common/htmlContent.js.map +1 -1
  98. package/esm/vs/base/common/json.js +19 -0
  99. package/esm/vs/base/common/json.js.map +1 -0
  100. package/esm/vs/base/common/network.js +16 -0
  101. package/esm/vs/base/common/network.js.map +1 -1
  102. package/esm/vs/base/common/resources.js +14 -2
  103. package/esm/vs/base/common/resources.js.map +1 -1
  104. package/esm/vs/base/common/strings.js +1 -1
  105. package/esm/vs/base/common/strings.js.map +1 -1
  106. package/esm/vs/base/common/uri.js +2 -2
  107. package/esm/vs/base/common/uri.js.map +1 -1
  108. package/esm/vs/editor/browser/config/editorConfiguration.js +1 -1
  109. package/esm/vs/editor/browser/config/fontMeasurements.js +19 -6
  110. package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
  111. package/esm/vs/editor/browser/controller/dragScrolling.js +3 -3
  112. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +11 -5
  113. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  114. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -38
  115. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  116. package/esm/vs/editor/browser/controller/editContext/native/screenReaderContentRich.js +3 -3
  117. package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +6 -6
  118. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +12 -10
  119. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  120. package/esm/vs/editor/browser/controller/mouseHandler.js +7 -7
  121. package/esm/vs/editor/browser/controller/mouseTarget.js +3 -3
  122. package/esm/vs/editor/browser/coreCommands.js +2 -2
  123. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  124. package/esm/vs/editor/browser/editorMarkdownSanitizer.js +19 -0
  125. package/esm/vs/editor/browser/editorMarkdownSanitizer.js.map +1 -0
  126. package/esm/vs/editor/browser/gpu/rectangleRenderer.js +1 -1
  127. package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
  128. package/esm/vs/editor/browser/observableCodeEditor.js +1 -1
  129. package/esm/vs/editor/browser/services/editorWorkerService.js +3 -2
  130. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  131. package/esm/vs/editor/browser/services/openerService.js +6 -2
  132. package/esm/vs/editor/browser/services/openerService.js.map +1 -1
  133. package/esm/vs/editor/browser/view/domLineBreaksComputer.js +34 -11
  134. package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
  135. package/esm/vs/editor/browser/view/viewController.js +7 -7
  136. package/esm/vs/editor/browser/view/viewController.js.map +1 -1
  137. package/esm/vs/editor/browser/view/viewLayer.js +1 -1
  138. package/esm/vs/editor/browser/view/viewOverlays.js +4 -4
  139. package/esm/vs/editor/browser/view.js +5 -5
  140. package/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.js +1 -1
  141. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +11 -3
  142. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  143. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +6 -6
  144. package/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js +12 -12
  145. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +9 -2
  146. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
  147. package/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js +2 -2
  148. package/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js +2 -2
  149. package/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js +2 -2
  150. package/esm/vs/editor/browser/viewParts/margin/margin.js +2 -2
  151. package/esm/vs/editor/browser/viewParts/minimap/minimap.js +6 -6
  152. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +9 -2
  153. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
  154. package/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js +5 -5
  155. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +3 -3
  156. package/esm/vs/editor/browser/viewParts/rulers/rulers.js +2 -2
  157. package/esm/vs/editor/browser/viewParts/rulersGpu/rulersGpu.js +1 -1
  158. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +3 -3
  159. package/esm/vs/editor/browser/viewParts/selections/selections.js +2 -2
  160. package/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js +2 -2
  161. package/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js +6 -6
  162. package/esm/vs/editor/browser/viewParts/viewLines/viewLineOptions.js +5 -5
  163. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +11 -11
  164. package/esm/vs/editor/browser/viewParts/viewLinesGpu/viewLinesGpu.js +1 -1
  165. package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +2 -2
  166. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +4 -4
  167. package/esm/vs/editor/browser/viewParts/wordWrapIndicator/wordWrapIndicator.js +2 -2
  168. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +22 -21
  169. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  170. package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
  171. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +18 -18
  172. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
  173. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/diffEditorViewZones.js +3 -3
  174. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +10 -10
  175. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js.map +1 -1
  176. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js +2 -2
  177. package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +4 -4
  178. package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js +21 -3
  179. package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js.map +1 -1
  180. package/esm/vs/editor/browser/widget/diffEditor/features/gutterFeature.js +1 -1
  181. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +10 -10
  182. package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
  183. package/esm/vs/editor/browser/widget/diffEditor/features/overviewRulerFeature.js +1 -1
  184. package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
  185. package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
  186. package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
  187. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js +2 -2
  188. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js.map +1 -1
  189. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js +21 -2
  190. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js.map +1 -1
  191. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -2
  192. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +11 -3
  193. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  194. package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js +1 -0
  195. package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js.map +1 -1
  196. package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js +64 -0
  197. package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js.map +1 -0
  198. package/esm/vs/editor/common/config/editorConfigurationSchema.js +68 -58
  199. package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
  200. package/esm/vs/editor/common/config/editorOptions.js +560 -500
  201. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  202. package/esm/vs/editor/common/core/editorColorRegistry.js +71 -71
  203. package/esm/vs/editor/common/core/edits/textEdit.js +16 -0
  204. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  205. package/esm/vs/editor/common/cursor/cursor.js +20 -10
  206. package/esm/vs/editor/common/cursor/cursor.js.map +1 -1
  207. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +67 -14
  208. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
  209. package/esm/vs/editor/common/cursor/cursorTypeOperations.js +2 -2
  210. package/esm/vs/editor/common/cursor/cursorTypeOperations.js.map +1 -1
  211. package/esm/vs/editor/common/cursorCommon.js +22 -21
  212. package/esm/vs/editor/common/cursorCommon.js.map +1 -1
  213. package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js +21 -8
  214. package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js.map +1 -1
  215. package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
  216. package/esm/vs/editor/common/diff/externalLinesDiffComputer.js +38 -26
  217. package/esm/vs/editor/common/diff/externalLinesDiffComputer.js.map +1 -1
  218. package/esm/vs/editor/common/diff/rangeMapping.js +11 -1
  219. package/esm/vs/editor/common/diff/rangeMapping.js.map +1 -1
  220. package/esm/vs/editor/common/diff/verifyLinesDiff.js +28 -0
  221. package/esm/vs/editor/common/diff/verifyLinesDiff.js.map +1 -0
  222. package/esm/vs/editor/common/editorContextKeys.js +53 -53
  223. package/esm/vs/editor/common/languages/languageConfiguration.js +8 -0
  224. package/esm/vs/editor/common/languages/languageConfiguration.js.map +1 -1
  225. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  226. package/esm/vs/editor/common/languages.js +56 -56
  227. package/esm/vs/editor/common/model/editStack.js +1 -1
  228. package/esm/vs/editor/common/services/editorWebWorker.js +27 -6
  229. package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
  230. package/esm/vs/editor/common/services/editorWorker.js.map +1 -1
  231. package/esm/vs/editor/common/services/languageService.js +6 -4
  232. package/esm/vs/editor/common/services/languageService.js.map +1 -1
  233. package/esm/vs/editor/common/services/markerDecorationsService.js +21 -2
  234. package/esm/vs/editor/common/services/markerDecorationsService.js.map +1 -1
  235. package/esm/vs/editor/common/standalone/standaloneEnums.js +100 -97
  236. package/esm/vs/editor/common/standalone/standaloneEnums.js.map +1 -1
  237. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  238. package/esm/vs/editor/common/textModelEditSource.js +9 -0
  239. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  240. package/esm/vs/editor/common/viewLayout/viewLayout.js +16 -16
  241. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  242. package/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js +1 -1
  243. package/esm/vs/editor/common/viewModel/viewModelImpl.js +19 -19
  244. package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
  245. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  246. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +9 -9
  247. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  248. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  249. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +23 -20
  250. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  251. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  252. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  253. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  254. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  255. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  256. package/esm/vs/editor/contrib/codeAction/browser/codeActionModel.js +1 -1
  257. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  258. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  259. package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +25 -10
  260. package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
  261. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  262. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  263. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerContribution.js +1 -1
  264. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +3 -3
  265. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  266. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerParticipant.js +1 -1
  267. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  268. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +17 -17
  269. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
  270. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  271. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  272. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +39 -39
  273. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  274. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  275. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  276. package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js +19 -0
  277. package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js.map +1 -0
  278. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +26 -18
  279. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js.map +1 -1
  280. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  281. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js.map +1 -1
  282. package/esm/vs/editor/contrib/find/browser/findController.js +18 -18
  283. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  284. package/esm/vs/editor/contrib/find/browser/findModel.js +6 -6
  285. package/esm/vs/editor/contrib/find/browser/findWidget.js +40 -40
  286. package/esm/vs/editor/contrib/find/browser/findWidget.js.map +1 -1
  287. package/esm/vs/editor/contrib/folding/browser/folding.js +23 -23
  288. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  289. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  290. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  291. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  292. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  293. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  294. package/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +3 -3
  295. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +2 -2
  296. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +4 -4
  297. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js.map +1 -1
  298. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  299. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  300. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  301. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  302. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  303. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +9 -3
  304. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
  305. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +2 -2
  306. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +2 -1
  307. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  308. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  309. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  310. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  311. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -8
  312. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  313. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +6 -6
  314. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  315. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  316. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +5 -5
  317. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +9 -9
  318. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js +3 -3
  319. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js.map +1 -1
  320. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
  321. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
  322. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -7
  323. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  324. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +6 -5
  325. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js.map +1 -1
  326. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +1 -1
  327. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
  328. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +7 -7
  329. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  330. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
  331. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
  332. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  333. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  334. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  335. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  336. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +5 -4
  337. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js.map +1 -1
  338. package/esm/vs/editor/contrib/links/browser/links.js +16 -15
  339. package/esm/vs/editor/contrib/links/browser/links.js.map +1 -1
  340. package/esm/vs/editor/contrib/longLinesHelper/browser/longLinesHelper.js +1 -1
  341. package/esm/vs/editor/contrib/message/browser/messageController.js +16 -12
  342. package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
  343. package/esm/vs/editor/contrib/middleScroll/browser/middleScrollController.js +1 -1
  344. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +91 -55
  345. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js.map +1 -1
  346. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  347. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js +3 -3
  348. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js.map +1 -1
  349. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +6 -4
  350. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
  351. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  352. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  353. package/esm/vs/editor/contrib/placeholderText/browser/placeholderTextContribution.js +1 -1
  354. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +1 -1
  355. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +12 -12
  356. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  357. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +3 -3
  358. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  359. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  360. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +6 -6
  361. package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +23 -13
  362. package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js.map +1 -1
  363. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +5 -5
  364. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +5 -5
  365. package/esm/vs/editor/contrib/snippet/browser/snippetSession.js +2 -2
  366. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  367. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  368. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +10 -8
  369. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  370. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider.js +1 -1
  371. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js +2 -2
  372. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +6 -6
  373. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
  374. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +15 -15
  375. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +2 -2
  376. package/esm/vs/editor/contrib/suggest/browser/suggestModel.js +11 -11
  377. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +27 -27
  378. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +8 -6
  379. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  380. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +5 -5
  381. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +3 -3
  382. package/esm/vs/editor/contrib/suggest/browser/wordDistance.js +1 -1
  383. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  384. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  385. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  386. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  387. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +27 -27
  388. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +9 -9
  389. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  390. package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js +1 -1
  391. package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js.map +1 -1
  392. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +50 -14
  393. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
  394. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +6 -6
  395. package/esm/vs/editor/editor.api.d.ts +133 -98
  396. package/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js +1 -1
  397. package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js +5 -3
  398. package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js.map +1 -1
  399. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +15 -1
  400. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
  401. package/esm/vs/nls.js.map +1 -1
  402. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +72 -66
  403. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js.map +1 -1
  404. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  405. package/esm/vs/platform/actionWidget/browser/actionList.js +434 -136
  406. package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
  407. package/esm/vs/platform/actionWidget/browser/actionWidget.css +74 -4
  408. package/esm/vs/platform/actionWidget/browser/actionWidget.js +24 -26
  409. package/esm/vs/platform/actionWidget/browser/actionWidget.js.map +1 -1
  410. package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js +16 -0
  411. package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js.map +1 -0
  412. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +15 -17
  413. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
  414. package/esm/vs/platform/actions/browser/toolbar.js +25 -12
  415. package/esm/vs/platform/actions/browser/toolbar.js.map +1 -1
  416. package/esm/vs/platform/actions/common/actions.js +4 -2
  417. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  418. package/esm/vs/platform/actions/common/menuService.js +15 -8
  419. package/esm/vs/platform/actions/common/menuService.js.map +1 -1
  420. package/esm/vs/platform/configuration/common/configuration.js +3 -1
  421. package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
  422. package/esm/vs/platform/configuration/common/configurationModels.js +16 -11
  423. package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
  424. package/esm/vs/platform/configuration/common/configurationRegistry.js +29 -27
  425. package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
  426. package/esm/vs/platform/configuration/common/configurations.js +13 -1
  427. package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
  428. package/esm/vs/platform/contextkey/browser/contextKeyService.js +2 -2
  429. package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
  430. package/esm/vs/platform/contextkey/common/contextkey.js +28 -14
  431. package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
  432. package/esm/vs/platform/contextkey/common/contextkeys.js +10 -10
  433. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  434. package/esm/vs/platform/contextview/browser/contextMenuHandler.js +17 -4
  435. package/esm/vs/platform/contextview/browser/contextMenuHandler.js.map +1 -1
  436. package/esm/vs/platform/contextview/browser/contextMenuService.js +1 -1
  437. package/esm/vs/platform/contextview/browser/contextMenuService.js.map +1 -1
  438. package/esm/vs/platform/contextview/browser/contextView.js.map +1 -1
  439. package/esm/vs/platform/contextview/browser/contextViewService.js +7 -2
  440. package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
  441. package/esm/vs/platform/editor/common/editor.js +17 -0
  442. package/esm/vs/platform/editor/common/editor.js.map +1 -1
  443. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  444. package/esm/vs/platform/hover/browser/hoverService.js +6 -3
  445. package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
  446. package/esm/vs/platform/hover/browser/hoverWidget.js +38 -6
  447. package/esm/vs/platform/hover/browser/hoverWidget.js.map +1 -1
  448. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +32 -5
  449. package/esm/vs/platform/hover/browser/updatableHoverWidget.js.map +1 -1
  450. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -1
  451. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  452. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +5 -5
  453. package/esm/vs/platform/keybinding/common/keybindingResolver.js +1 -1
  454. package/esm/vs/platform/keybinding/common/keybindingResolver.js.map +1 -1
  455. package/esm/vs/platform/list/browser/listService.js +27 -27
  456. package/esm/vs/platform/markers/common/markerService.js +11 -8
  457. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  458. package/esm/vs/platform/markers/common/markers.js +6 -6
  459. package/esm/vs/platform/markers/common/markers.js.map +1 -1
  460. package/esm/vs/platform/notification/common/notification.js.map +1 -1
  461. package/esm/vs/platform/notification/common/notificationMessage.js +37 -0
  462. package/esm/vs/platform/notification/common/notificationMessage.js.map +1 -0
  463. package/esm/vs/platform/opener/common/opener.js.map +1 -1
  464. package/esm/vs/platform/progress/common/progress.js.map +1 -1
  465. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  466. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  467. package/esm/vs/platform/quickinput/browser/media/quickInput.css +33 -2
  468. package/esm/vs/platform/quickinput/browser/quickAccess.js +7 -4
  469. package/esm/vs/platform/quickinput/browser/quickAccess.js.map +1 -1
  470. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  471. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  472. package/esm/vs/platform/quickinput/browser/quickInputController.js +65 -15
  473. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  474. package/esm/vs/platform/quickinput/browser/quickInputList.js +96 -90
  475. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  476. package/esm/vs/platform/quickinput/browser/quickInputService.js +5 -7
  477. package/esm/vs/platform/quickinput/browser/quickInputService.js.map +1 -1
  478. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  479. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  480. package/esm/vs/platform/quickinput/browser/tree/quickTree.js +1 -1
  481. package/esm/vs/platform/quickinput/common/quickAccess.js.map +1 -1
  482. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  483. package/esm/vs/platform/storage/common/storage.js.map +1 -1
  484. package/esm/vs/platform/theme/common/colorRegistry.js +1 -0
  485. package/esm/vs/platform/theme/common/colorRegistry.js.map +1 -1
  486. package/esm/vs/platform/theme/common/colorUtils.js +11 -3
  487. package/esm/vs/platform/theme/common/colorUtils.js.map +1 -1
  488. package/esm/vs/platform/theme/common/colors/baseColors.js +19 -19
  489. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -9
  490. package/esm/vs/platform/theme/common/colors/chartsColors.js.map +1 -1
  491. package/esm/vs/platform/theme/common/colors/confettiColors.js +14 -0
  492. package/esm/vs/platform/theme/common/colors/confettiColors.js.map +1 -0
  493. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  494. package/esm/vs/platform/theme/common/colors/inputColors.js +48 -48
  495. package/esm/vs/platform/theme/common/colors/inputColors.js.map +1 -1
  496. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  497. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  498. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  499. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  500. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  501. package/esm/vs/platform/theme/common/colors/quickpickColors.js +10 -10
  502. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  503. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  504. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  505. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  506. package/monaco.d.ts +133 -98
  507. package/package.json +3 -3
  508. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/multicursor/browser/multicursor.ts"],"names":[],"mappings":"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","file":"multicursor.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { KeyChord, KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Constants } from '../../../../base/common/uint.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CursorState } from '../../../common/cursorCommon.js';\nimport { CursorChangeReason, ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { CursorMoveCommands } from '../../../common/cursor/cursorMoveCommands.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorContribution, IEditorDecorationsCollection, ScrollType } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { FindMatch, ITextModel } from '../../../common/model.js';\nimport { CommonFindController } from '../../find/browser/findController.js';\nimport { FindOptionOverride, INewFindReplaceState } from '../../find/browser/findState.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getSelectionHighlightDecorationOptions } from '../../wordHighlighter/browser/highlightDecorations.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\n\nfunction announceCursorChange(previousCursorState: CursorState[], cursorState: CursorState[]): void {\n\tconst cursorDiff = cursorState.filter(cs => !previousCursorState.find(pcs => pcs.equals(cs)));\n\tif (cursorDiff.length >= 1) {\n\t\tconst cursorPositions = cursorDiff.map(cs => `line ${cs.viewState.position.lineNumber} column ${cs.viewState.position.column}`).join(', ');\n\t\tconst msg = cursorDiff.length === 1 ? nls.localize('cursorAdded', \"Cursor added: {0}\", cursorPositions) : nls.localize('cursorsAdded', \"Cursors added: {0}\", cursorPositions);\n\t\tstatus(msg);\n\t}\n}\n\ninterface InsertCursorArgs {\n\tsource?: string;\n\tlogicalLine?: boolean;\n}\n\nexport class InsertCursorAbove extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertCursorAbove',\n\t\t\tlabel: nls.localize2('mutlicursor.insertAbove', \"Add Cursor Above\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.UpArrow,\n\t\t\t\tlinux: {\n\t\t\t\t\tprimary: KeyMod.Shift | KeyMod.Alt | KeyCode.UpArrow,\n\t\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow]\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miInsertCursorAbove', comment: ['&& denotes a mnemonic'] }, \"&&Add Cursor Above\"),\n\t\t\t\torder: 2\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: InsertCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet useLogicalLine = true;\n\t\tif (args && args.logicalLine === false) {\n\t\t\tuseLogicalLine = false;\n\t\t}\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tviewModel.setCursorStates(\n\t\t\targs.source,\n\t\t\tCursorChangeReason.Explicit,\n\t\t\tCursorMoveCommands.addCursorUp(viewModel, previousCursorState, useLogicalLine)\n\t\t);\n\t\tviewModel.revealTopMostCursor(args.source);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nexport class InsertCursorBelow extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertCursorBelow',\n\t\t\tlabel: nls.localize2('mutlicursor.insertBelow', \"Add Cursor Below\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.DownArrow,\n\t\t\t\tlinux: {\n\t\t\t\t\tprimary: KeyMod.Shift | KeyMod.Alt | KeyCode.DownArrow,\n\t\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow]\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miInsertCursorBelow', comment: ['&& denotes a mnemonic'] }, \"A&&dd Cursor Below\"),\n\t\t\t\torder: 3\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: InsertCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet useLogicalLine = true;\n\t\tif (args && args.logicalLine === false) {\n\t\t\tuseLogicalLine = false;\n\t\t}\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tviewModel.setCursorStates(\n\t\t\targs.source,\n\t\t\tCursorChangeReason.Explicit,\n\t\t\tCursorMoveCommands.addCursorDown(viewModel, previousCursorState, useLogicalLine)\n\t\t);\n\t\tviewModel.revealBottomMostCursor(args.source);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nclass InsertCursorAtEndOfEachLineSelected extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertCursorAtEndOfEachLineSelected',\n\t\t\tlabel: nls.localize2('mutlicursor.insertAtEndOfEachLineSelected', \"Add Cursors to Line Ends\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Shift | KeyMod.Alt | KeyCode.KeyI,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miInsertCursorAtEndOfEachLineSelected', comment: ['&& denotes a mnemonic'] }, \"Add C&&ursors to Line Ends\"),\n\t\t\t\torder: 4\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getCursorsForSelection(selection: Selection, model: ITextModel, result: Selection[]): void {\n\t\tif (selection.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = selection.startLineNumber; i < selection.endLineNumber; i++) {\n\t\t\tconst currentLineMaxColumn = model.getLineMaxColumn(i);\n\t\t\tresult.push(new Selection(i, currentLineMaxColumn, i, currentLineMaxColumn));\n\t\t}\n\t\tif (selection.endColumn > 1) {\n\t\t\tresult.push(new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn));\n\t\t}\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tconst selections = editor.getSelections();\n\t\tconst viewModel = editor._getViewModel();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tconst newSelections: Selection[] = [];\n\t\tselections.forEach((sel) => this.getCursorsForSelection(sel, model, newSelections));\n\n\t\tif (newSelections.length > 0) {\n\t\t\teditor.setSelections(newSelections);\n\t\t}\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nclass InsertCursorAtEndOfLineSelected extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addCursorsToBottom',\n\t\t\tlabel: nls.localize2('mutlicursor.addCursorsToBottom', \"Add Cursors to Bottom\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\t\tconst lineCount = editor.getModel().getLineCount();\n\n\t\tconst newSelections: Selection[] = [];\n\t\tfor (let i = selections[0].startLineNumber; i <= lineCount; i++) {\n\t\t\tnewSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tif (newSelections.length > 0) {\n\t\t\teditor.setSelections(newSelections);\n\t\t}\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nclass InsertCursorAtTopOfLineSelected extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addCursorsToTop',\n\t\t\tlabel: nls.localize2('mutlicursor.addCursorsToTop', \"Add Cursors to Top\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\n\t\tconst newSelections: Selection[] = [];\n\t\tfor (let i = selections[0].startLineNumber; i >= 1; i--) {\n\t\t\tnewSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tif (newSelections.length > 0) {\n\t\t\teditor.setSelections(newSelections);\n\t\t}\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nexport class MultiCursorSessionResult {\n\tconstructor(\n\t\tpublic readonly selections: Selection[],\n\t\tpublic readonly revealRange: Range,\n\t\tpublic readonly revealScrollType: ScrollType\n\t) { }\n}\n\nexport class MultiCursorSession {\n\n\tpublic static create(editor: ICodeEditor, findController: CommonFindController): MultiCursorSession | null {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst findState = findController.getState();\n\n\t\t// Find widget owns entirely what we search for if:\n\t\t// - focus is not in the editor (i.e. it is in the find widget)\n\t\t// - and the search widget is visible\n\t\t// - and the search string is non-empty\n\t\tif (!editor.hasTextFocus() && findState.isRevealed && findState.searchString.length > 0) {\n\t\t\t// Find widget owns what is searched for\n\t\t\treturn new MultiCursorSession(editor, findController, false, findState.searchString, findState.wholeWord, findState.matchCase, null);\n\t\t}\n\n\t\t// Otherwise, the selection gives the search text, and the find widget gives the search settings\n\t\t// The exception is the find state disassociation case: when beginning with a single, collapsed selection\n\t\tlet isDisconnectedFromFindController = false;\n\t\tlet wholeWord: boolean;\n\t\tlet matchCase: boolean;\n\t\tconst selections = editor.getSelections();\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\tisDisconnectedFromFindController = true;\n\t\t\twholeWord = true;\n\t\t\tmatchCase = true;\n\t\t} else {\n\t\t\twholeWord = findState.wholeWord;\n\t\t\tmatchCase = findState.matchCase;\n\t\t}\n\n\t\t// Selection owns what is searched for\n\t\tconst s = editor.getSelection();\n\n\t\tlet searchText: string;\n\t\tlet currentMatch: Selection | null = null;\n\n\t\tif (s.isEmpty()) {\n\t\t\t// selection is empty => expand to current word\n\t\t\tconst word = editor.getConfiguredWordAtPosition(s.getStartPosition());\n\t\t\tif (!word) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tsearchText = word.word;\n\t\t\tcurrentMatch = new Selection(s.startLineNumber, word.startColumn, s.startLineNumber, word.endColumn);\n\t\t} else {\n\t\t\tsearchText = editor.getModel().getValueInRange(s).replace(/\\r\\n/g, '\\n');\n\t\t}\n\n\t\treturn new MultiCursorSession(editor, findController, isDisconnectedFromFindController, searchText, wholeWord, matchCase, currentMatch);\n\t}\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tpublic readonly findController: CommonFindController,\n\t\tpublic readonly isDisconnectedFromFindController: boolean,\n\t\tpublic readonly searchText: string,\n\t\tpublic readonly wholeWord: boolean,\n\t\tpublic readonly matchCase: boolean,\n\t\tpublic currentMatch: Selection | null\n\t) { }\n\n\tpublic addSelectionToNextFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst nextMatch = this._getNextMatch();\n\t\tif (!nextMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.concat(nextMatch), nextMatch, ScrollType.Smooth);\n\t}\n\n\tpublic moveSelectionToNextFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst nextMatch = this._getNextMatch();\n\t\tif (!nextMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(nextMatch), nextMatch, ScrollType.Smooth);\n\t}\n\n\tprivate _getNextMatch(): Selection | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.currentMatch) {\n\t\t\tconst result = this.currentMatch;\n\t\t\tthis.currentMatch = null;\n\t\t\treturn result;\n\t\t}\n\n\t\tthis.findController.highlightFindOptions();\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\tconst lastAddedSelection = allSelections[allSelections.length - 1];\n\t\tconst nextMatch = this._editor.getModel().findNextMatch(this.searchText, lastAddedSelection.getEndPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false);\n\n\t\tif (!nextMatch) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new Selection(nextMatch.range.startLineNumber, nextMatch.range.startColumn, nextMatch.range.endLineNumber, nextMatch.range.endColumn);\n\t}\n\n\tpublic addSelectionToPreviousFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst previousMatch = this._getPreviousMatch();\n\t\tif (!previousMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.concat(previousMatch), previousMatch, ScrollType.Smooth);\n\t}\n\n\tpublic moveSelectionToPreviousFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst previousMatch = this._getPreviousMatch();\n\t\tif (!previousMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(previousMatch), previousMatch, ScrollType.Smooth);\n\t}\n\n\tprivate _getPreviousMatch(): Selection | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.currentMatch) {\n\t\t\tconst result = this.currentMatch;\n\t\t\tthis.currentMatch = null;\n\t\t\treturn result;\n\t\t}\n\n\t\tthis.findController.highlightFindOptions();\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\tconst lastAddedSelection = allSelections[allSelections.length - 1];\n\t\tconst previousMatch = this._editor.getModel().findPreviousMatch(this.searchText, lastAddedSelection.getStartPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false);\n\n\t\tif (!previousMatch) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new Selection(previousMatch.range.startLineNumber, previousMatch.range.startColumn, previousMatch.range.endLineNumber, previousMatch.range.endColumn);\n\t}\n\n\tpublic selectAll(searchScope: Range[] | null): FindMatch[] {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn [];\n\t\t}\n\n\t\tthis.findController.highlightFindOptions();\n\n\t\tconst editorModel = this._editor.getModel();\n\t\tif (searchScope) {\n\t\t\treturn editorModel.findMatches(this.searchText, searchScope, false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t\t}\n\t\treturn editorModel.findMatches(this.searchText, true, false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t}\n}\n\nexport class MultiCursorSelectionController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.multiCursorController';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate _ignoreSelectionChange: boolean;\n\tprivate _session: MultiCursorSession | null;\n\tprivate readonly _sessionDispose = this._register(new DisposableStore());\n\n\tpublic static get(editor: ICodeEditor): MultiCursorSelectionController | null {\n\t\treturn editor.getContribution<MultiCursorSelectionController>(MultiCursorSelectionController.ID);\n\t}\n\n\tconstructor(editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._ignoreSelectionChange = false;\n\t\tthis._session = null;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._endSession();\n\t\tsuper.dispose();\n\t}\n\n\tprivate _beginSessionIfNeeded(findController: CommonFindController): void {\n\t\tif (!this._session) {\n\t\t\t// Create a new session\n\t\t\tconst session = MultiCursorSession.create(this._editor, findController);\n\t\t\tif (!session) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._session = session;\n\n\t\t\tconst newState: INewFindReplaceState = { searchString: this._session.searchText };\n\t\t\tif (this._session.isDisconnectedFromFindController) {\n\t\t\t\tnewState.wholeWordOverride = FindOptionOverride.True;\n\t\t\t\tnewState.matchCaseOverride = FindOptionOverride.True;\n\t\t\t\tnewState.isRegexOverride = FindOptionOverride.False;\n\t\t\t}\n\t\t\tfindController.getState().change(newState, false);\n\n\t\t\tthis._sessionDispose.add(this._editor.onDidChangeCursorSelection((e) => {\n\t\t\t\tif (this._ignoreSelectionChange) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._endSession();\n\t\t\t}));\n\t\t\tthis._sessionDispose.add(this._editor.onDidBlurEditorText(() => {\n\t\t\t\tthis._endSession();\n\t\t\t}));\n\t\t\tthis._sessionDispose.add(findController.getState().onFindReplaceStateChange((e) => {\n\t\t\t\tif (e.matchCase || e.wholeWord) {\n\t\t\t\t\tthis._endSession();\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t}\n\n\tprivate _endSession(): void {\n\t\tthis._sessionDispose.clear();\n\t\tif (this._session && this._session.isDisconnectedFromFindController) {\n\t\t\tconst newState: INewFindReplaceState = {\n\t\t\t\twholeWordOverride: FindOptionOverride.NotSet,\n\t\t\t\tmatchCaseOverride: FindOptionOverride.NotSet,\n\t\t\t\tisRegexOverride: FindOptionOverride.NotSet,\n\t\t\t};\n\t\t\tthis._session.findController.getState().change(newState, false);\n\t\t}\n\t\tthis._session = null;\n\t}\n\n\tprivate _setSelections(selections: Selection[]): void {\n\t\tthis._ignoreSelectionChange = true;\n\t\tthis._editor.setSelections(selections);\n\t\tthis._ignoreSelectionChange = false;\n\t}\n\n\tprivate _expandEmptyToWord(model: ITextModel, selection: Selection): Selection {\n\t\tif (!selection.isEmpty()) {\n\t\t\treturn selection;\n\t\t}\n\t\tconst word = this._editor.getConfiguredWordAtPosition(selection.getStartPosition());\n\t\tif (!word) {\n\t\t\treturn selection;\n\t\t}\n\t\treturn new Selection(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\n\t}\n\n\tprivate _applySessionResult(result: MultiCursorSessionResult | null): void {\n\t\tif (!result) {\n\t\t\treturn;\n\t\t}\n\t\tthis._setSelections(result.selections);\n\t\tif (result.revealRange) {\n\t\t\tthis._editor.revealRangeInCenterIfOutsideViewport(result.revealRange, result.revealScrollType);\n\t\t}\n\t}\n\n\tpublic getSession(findController: CommonFindController): MultiCursorSession | null {\n\t\treturn this._session;\n\t}\n\n\tpublic addSelectionToNextFindMatch(findController: CommonFindController): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this._session) {\n\t\t\t// If there are multiple cursors, handle the case where they do not all select the same text.\n\t\t\tconst allSelections = this._editor.getSelections();\n\t\t\tif (allSelections.length > 1) {\n\t\t\t\tconst findState = findController.getState();\n\t\t\t\tconst matchCase = findState.matchCase;\n\t\t\t\tconst selectionsContainSameText = modelRangesContainSameText(this._editor.getModel(), allSelections, matchCase);\n\t\t\t\tif (!selectionsContainSameText) {\n\t\t\t\t\tconst model = this._editor.getModel();\n\t\t\t\t\tconst resultingSelections: Selection[] = [];\n\t\t\t\t\tfor (let i = 0, len = allSelections.length; i < len; i++) {\n\t\t\t\t\t\tresultingSelections[i] = this._expandEmptyToWord(model, allSelections[i]);\n\t\t\t\t\t}\n\t\t\t\t\tthis._editor.setSelections(resultingSelections);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.addSelectionToNextFindMatch());\n\t\t}\n\t}\n\n\tpublic addSelectionToPreviousFindMatch(findController: CommonFindController): void {\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.addSelectionToPreviousFindMatch());\n\t\t}\n\t}\n\n\tpublic moveSelectionToNextFindMatch(findController: CommonFindController): void {\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.moveSelectionToNextFindMatch());\n\t\t}\n\t}\n\n\tpublic moveSelectionToPreviousFindMatch(findController: CommonFindController): void {\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.moveSelectionToPreviousFindMatch());\n\t\t}\n\t}\n\n\tpublic selectAll(findController: CommonFindController): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet matches: FindMatch[] | null = null;\n\n\t\tconst findState = findController.getState();\n\n\t\t// Special case: find widget owns entirely what we search for if:\n\t\t// - focus is not in the editor (i.e. it is in the find widget)\n\t\t// - and the search widget is visible\n\t\t// - and the search string is non-empty\n\t\t// - and we're searching for a regex\n\t\tif (findState.isRevealed && findState.searchString.length > 0 && findState.isRegex) {\n\t\t\tconst editorModel = this._editor.getModel();\n\t\t\tif (findState.searchScope) {\n\t\t\t\tmatches = editorModel.findMatches(findState.searchString, findState.searchScope, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t\t\t} else {\n\t\t\t\tmatches = editorModel.findMatches(findState.searchString, true, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis._beginSessionIfNeeded(findController);\n\t\t\tif (!this._session) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmatches = this._session.selectAll(findState.searchScope);\n\t\t}\n\n\t\tif (matches.length > 0) {\n\t\t\tconst editorSelection = this._editor.getSelection();\n\t\t\t// Have the primary cursor remain the one where the action was invoked\n\t\t\tfor (let i = 0, len = matches.length; i < len; i++) {\n\t\t\t\tconst match = matches[i];\n\t\t\t\tconst intersection = match.range.intersectRanges(editorSelection);\n\t\t\t\tif (intersection) {\n\t\t\t\t\t// bingo!\n\t\t\t\t\tmatches[i] = matches[0];\n\t\t\t\t\tmatches[0] = match;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._setSelections(matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn)));\n\t\t}\n\t}\n}\n\nexport abstract class MultiCursorSelectionControllerAction extends EditorAction {\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst multiCursorController = MultiCursorSelectionController.get(editor);\n\t\tif (!multiCursorController) {\n\t\t\treturn;\n\t\t}\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (viewModel) {\n\t\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\t\tconst findController = CommonFindController.get(editor);\n\t\t\tif (findController) {\n\t\t\t\tthis._run(multiCursorController, findController);\n\t\t\t} else {\n\t\t\t\tconst newFindController = accessor.get(IInstantiationService).createInstance(CommonFindController, editor);\n\t\t\t\tthis._run(multiCursorController, newFindController);\n\t\t\t\tnewFindController.dispose();\n\t\t\t}\n\n\t\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t\t}\n\t}\n\n\tprotected abstract _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void;\n}\n\nexport class AddSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addSelectionToNextFindMatch',\n\t\t\tlabel: nls.localize2('addSelectionToNextFindMatch', \"Add Selection to Next Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyD,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miAddSelectionToNextFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add &&Next Occurrence\"),\n\t\t\t\torder: 5\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.addSelectionToNextFindMatch(findController);\n\t}\n}\n\nexport class AddSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addSelectionToPreviousFindMatch',\n\t\t\tlabel: nls.localize2('addSelectionToPreviousFindMatch', \"Add Selection to Previous Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miAddSelectionToPreviousFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add P&&revious Occurrence\"),\n\t\t\t\torder: 6\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.addSelectionToPreviousFindMatch(findController);\n\t}\n}\n\nexport class MoveSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.moveSelectionToNextFindMatch',\n\t\t\tlabel: nls.localize2('moveSelectionToNextFindMatch', \"Move Last Selection to Next Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyD),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.moveSelectionToNextFindMatch(findController);\n\t}\n}\n\nexport class MoveSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.moveSelectionToPreviousFindMatch',\n\t\t\tlabel: nls.localize2('moveSelectionToPreviousFindMatch', \"Move Last Selection to Previous Find Match\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.moveSelectionToPreviousFindMatch(findController);\n\t}\n}\n\nexport class SelectHighlightsAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.selectHighlights',\n\t\t\tlabel: nls.localize2('selectAllOccurrencesOfFindMatch', \"Select All Occurrences of Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyL,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miSelectHighlights', comment: ['&& denotes a mnemonic'] }, \"Select All &&Occurrences\"),\n\t\t\t\torder: 7\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.selectAll(findController);\n\t}\n}\n\nexport class CompatChangeAll extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.changeAll',\n\t\t\tlabel: nls.localize2('changeAll.label', \"Change All Occurrences\"),\n\t\t\tprecondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.editorTextFocus),\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.F2,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tcontextMenuOpts: {\n\t\t\t\tgroup: '1_modification',\n\t\t\t\torder: 1.2\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.selectAll(findController);\n\t}\n}\n\nclass SelectionHighlighterState {\n\tprivate readonly _modelVersionId: number;\n\tprivate _cachedFindMatches: Range[] | null = null;\n\n\tconstructor(\n\t\tprivate readonly _model: ITextModel,\n\t\tprivate readonly _searchText: string,\n\t\tprivate readonly _matchCase: boolean,\n\t\tprivate readonly _wordSeparators: string | null,\n\t\tprevState: SelectionHighlighterState | null\n\t) {\n\t\tthis._modelVersionId = this._model.getVersionId();\n\t\tif (prevState\n\t\t\t&& this._model === prevState._model\n\t\t\t&& this._searchText === prevState._searchText\n\t\t\t&& this._matchCase === prevState._matchCase\n\t\t\t&& this._wordSeparators === prevState._wordSeparators\n\t\t\t&& this._modelVersionId === prevState._modelVersionId\n\t\t) {\n\t\t\tthis._cachedFindMatches = prevState._cachedFindMatches;\n\t\t}\n\t}\n\n\tpublic findMatches(): Range[] {\n\t\tif (this._cachedFindMatches === null) {\n\t\t\tthis._cachedFindMatches = this._model.findMatches(this._searchText, true, false, this._matchCase, this._wordSeparators, false).map(m => m.range);\n\t\t\tthis._cachedFindMatches.sort(Range.compareRangesUsingStarts);\n\t\t}\n\t\treturn this._cachedFindMatches;\n\t}\n}\n\nexport class SelectionHighlighter extends Disposable implements IEditorContribution {\n\tpublic static readonly ID = 'editor.contrib.selectionHighlighter';\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate _isEnabled: boolean;\n\tprivate _isEnabledMultiline: boolean;\n\tprivate _maxLength: number;\n\tprivate readonly _decorations: IEditorDecorationsCollection;\n\tprivate readonly updateSoon: RunOnceScheduler;\n\tprivate state: SelectionHighlighterState | null;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService\n\t) {\n\t\tsuper();\n\t\tthis.editor = editor;\n\t\tthis._isEnabled = editor.getOption(EditorOption.selectionHighlight);\n\t\tthis._isEnabledMultiline = editor.getOption(EditorOption.selectionHighlightMultiline);\n\t\tthis._maxLength = editor.getOption(EditorOption.selectionHighlightMaxLength);\n\t\tthis._decorations = editor.createDecorationsCollection();\n\t\tthis.updateSoon = this._register(new RunOnceScheduler(() => this._update(), 300));\n\t\tthis.state = null;\n\n\t\tthis._register(editor.onDidChangeConfiguration((e) => {\n\t\t\tthis._isEnabled = editor.getOption(EditorOption.selectionHighlight);\n\t\t\tthis._isEnabledMultiline = editor.getOption(EditorOption.selectionHighlightMultiline);\n\t\t\tthis._maxLength = editor.getOption(EditorOption.selectionHighlightMaxLength);\n\t\t}));\n\t\tthis._register(editor.onDidChangeCursorSelection((e: ICursorSelectionChangedEvent) => {\n\n\t\t\tif (!this._isEnabled) {\n\t\t\t\t// Early exit if nothing needs to be done!\n\t\t\t\t// Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.selection.isEmpty()) {\n\t\t\t\tif (e.reason === CursorChangeReason.Explicit) {\n\t\t\t\t\tif (this.state) {\n\t\t\t\t\t\t// no longer valid\n\t\t\t\t\t\tthis._setState(null);\n\t\t\t\t\t}\n\t\t\t\t\tthis.updateSoon.schedule();\n\t\t\t\t} else {\n\t\t\t\t\tthis._setState(null);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._update();\n\t\t\t}\n\t\t}));\n\t\tthis._register(editor.onDidChangeModel((e) => {\n\t\t\tthis._setState(null);\n\t\t}));\n\t\tthis._register(editor.onDidChangeModelContent((e) => {\n\t\t\tif (this._isEnabled) {\n\t\t\t\tthis.updateSoon.schedule();\n\t\t\t}\n\t\t}));\n\t\tconst findController = CommonFindController.get(editor);\n\t\tif (findController) {\n\t\t\tthis._register(findController.getState().onFindReplaceStateChange((e) => {\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t}\n\t\tthis.updateSoon.schedule();\n\t}\n\n\tprivate _update(): void {\n\t\tthis._setState(SelectionHighlighter._createState(this.state, this._isEnabled, this._isEnabledMultiline, this._maxLength, this.editor));\n\t}\n\n\tprivate static _createState(oldState: SelectionHighlighterState | null, isEnabled: boolean, isEnabledMultiline: boolean, maxLength: number, editor: ICodeEditor): SelectionHighlighterState | null {\n\t\tif (!isEnabled) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!isEnabledMultiline) {\n\t\t\tconst s = editor.getSelection();\n\t\t\tif (s.startLineNumber !== s.endLineNumber) {\n\t\t\t\t// multiline forbidden for perf reasons\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tconst multiCursorController = MultiCursorSelectionController.get(editor);\n\t\tif (!multiCursorController) {\n\t\t\treturn null;\n\t\t}\n\t\tconst findController = CommonFindController.get(editor);\n\t\tif (!findController) {\n\t\t\treturn null;\n\t\t}\n\t\tlet r = multiCursorController.getSession(findController);\n\t\tif (!r) {\n\t\t\tconst allSelections = editor.getSelections();\n\t\t\tif (allSelections.length > 1) {\n\t\t\t\tconst findState = findController.getState();\n\t\t\t\tconst matchCase = findState.matchCase;\n\t\t\t\tconst selectionsContainSameText = modelRangesContainSameText(editor.getModel(), allSelections, matchCase);\n\t\t\t\tif (!selectionsContainSameText) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tr = MultiCursorSession.create(editor, findController);\n\t\t}\n\t\tif (!r) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (r.currentMatch) {\n\t\t\t// This is an empty selection\n\t\t\t// Do not interfere with semantic word highlighting in the no selection case\n\t\t\treturn null;\n\t\t}\n\t\tif (/^[ \\t]+$/.test(r.searchText)) {\n\t\t\t// whitespace only selection\n\t\t\treturn null;\n\t\t}\n\t\tif (maxLength > 0 && r.searchText.length > maxLength) {\n\t\t\t// very long selection\n\t\t\treturn null;\n\t\t}\n\n\t\t// TODO: better handling of this case\n\t\tconst findState = findController.getState();\n\t\tconst caseSensitive = findState.matchCase;\n\n\t\t// Return early if the find widget shows the exact same matches\n\t\tif (findState.isRevealed) {\n\t\t\tlet findStateSearchString = findState.searchString;\n\t\t\tif (!caseSensitive) {\n\t\t\t\tfindStateSearchString = findStateSearchString.toLowerCase();\n\t\t\t}\n\n\t\t\tlet mySearchString = r.searchText;\n\t\t\tif (!caseSensitive) {\n\t\t\t\tmySearchString = mySearchString.toLowerCase();\n\t\t\t}\n\n\t\t\tif (findStateSearchString === mySearchString && r.matchCase === findState.matchCase && r.wholeWord === findState.wholeWord && !findState.isRegex) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn new SelectionHighlighterState(editor.getModel(), r.searchText, r.matchCase, r.wholeWord ? editor.getOption(EditorOption.wordSeparators) : null, oldState);\n\t}\n\n\tprivate _setState(newState: SelectionHighlighterState | null): void {\n\t\tthis.state = newState;\n\n\t\tif (!this.state) {\n\t\t\tthis._decorations.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tif (model.isTooLargeForTokenization()) {\n\t\t\t// the file is too large, so searching word under cursor in the whole document would be blocking the UI.\n\t\t\treturn;\n\t\t}\n\n\t\tconst allMatches = this.state.findMatches();\n\n\t\tconst selections = this.editor.getSelections();\n\t\tselections.sort(Range.compareRangesUsingStarts);\n\n\t\t// do not overlap with selection (issue #64 and #512)\n\t\tconst matches: Range[] = [];\n\t\tfor (let i = 0, j = 0, len = allMatches.length, lenJ = selections.length; i < len;) {\n\t\t\tconst match = allMatches[i];\n\n\t\t\tif (j >= lenJ) {\n\t\t\t\t// finished all editor selections\n\t\t\t\tmatches.push(match);\n\t\t\t\ti++;\n\t\t\t} else {\n\t\t\t\tconst cmp = Range.compareRangesUsingStarts(match, selections[j]);\n\t\t\t\tif (cmp < 0) {\n\t\t\t\t\t// match is before sel\n\t\t\t\t\tif (selections[j].isEmpty() || !Range.areIntersecting(match, selections[j])) {\n\t\t\t\t\t\tmatches.push(match);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t} else if (cmp > 0) {\n\t\t\t\t\t// sel is before match\n\t\t\t\t\tj++;\n\t\t\t\t} else {\n\t\t\t\t\t// sel is equal to match\n\t\t\t\t\ti++;\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst occurrenceHighlighting: boolean = this.editor.getOption(EditorOption.occurrencesHighlight) !== 'off';\n\t\tconst hasSemanticHighlights = this._languageFeaturesService.documentHighlightProvider.has(model) && occurrenceHighlighting;\n\t\tconst decorations = matches.map(r => {\n\t\t\treturn {\n\t\t\t\trange: r,\n\t\t\t\toptions: getSelectionHighlightDecorationOptions(hasSemanticHighlights)\n\t\t\t};\n\t\t});\n\n\t\tthis._decorations.set(decorations);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._setState(null);\n\t\tsuper.dispose();\n\t}\n}\n\nfunction modelRangesContainSameText(model: ITextModel, ranges: Range[], matchCase: boolean): boolean {\n\tconst selectedText = getValueInRange(model, ranges[0], !matchCase);\n\tfor (let i = 1, len = ranges.length; i < len; i++) {\n\t\tconst range = ranges[i];\n\t\tif (range.isEmpty()) {\n\t\t\treturn false;\n\t\t}\n\t\tconst thisSelectedText = getValueInRange(model, range, !matchCase);\n\t\tif (selectedText !== thisSelectedText) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction getValueInRange(model: ITextModel, range: Range, toLowerCase: boolean): string {\n\tconst text = model.getValueInRange(range);\n\treturn (toLowerCase ? text.toLowerCase() : text);\n}\n\ninterface FocusCursorArgs {\n\tsource?: string;\n}\n\nexport class FocusNextCursor extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.focusNextCursor',\n\t\t\tlabel: nls.localize2('mutlicursor.focusNextCursor', \"Focus Next Cursor\"),\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize('mutlicursor.focusNextCursor.description', \"Focuses the next cursor\"),\n\t\t\t\targs: [],\n\t\t\t},\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: FocusCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = Array.from(viewModel.getCursorStates());\n\t\tconst firstCursor = previousCursorState.shift();\n\t\tif (!firstCursor) {\n\t\t\treturn;\n\t\t}\n\t\tpreviousCursorState.push(firstCursor);\n\n\t\tviewModel.setCursorStates(args.source, CursorChangeReason.Explicit, previousCursorState);\n\t\tviewModel.revealPrimaryCursor(args.source, true);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nexport class FocusPreviousCursor extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.focusPreviousCursor',\n\t\t\tlabel: nls.localize2('mutlicursor.focusPreviousCursor', \"Focus Previous Cursor\"),\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize('mutlicursor.focusPreviousCursor.description', \"Focuses the previous cursor\"),\n\t\t\t\targs: [],\n\t\t\t},\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: FocusCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = Array.from(viewModel.getCursorStates());\n\t\tconst firstCursor = previousCursorState.pop();\n\t\tif (!firstCursor) {\n\t\t\treturn;\n\t\t}\n\t\tpreviousCursorState.unshift(firstCursor);\n\n\t\tviewModel.setCursorStates(args.source, CursorChangeReason.Explicit, previousCursorState);\n\t\tviewModel.revealPrimaryCursor(args.source, true);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nregisterEditorContribution(MultiCursorSelectionController.ID, MultiCursorSelectionController, EditorContributionInstantiation.Lazy);\nregisterEditorContribution(SelectionHighlighter.ID, SelectionHighlighter, EditorContributionInstantiation.AfterFirstRender);\n\nregisterEditorAction(InsertCursorAbove);\nregisterEditorAction(InsertCursorBelow);\nregisterEditorAction(InsertCursorAtEndOfEachLineSelected);\nregisterEditorAction(AddSelectionToNextFindMatchAction);\nregisterEditorAction(AddSelectionToPreviousFindMatchAction);\nregisterEditorAction(MoveSelectionToNextFindMatchAction);\nregisterEditorAction(MoveSelectionToPreviousFindMatchAction);\nregisterEditorAction(SelectHighlightsAction);\nregisterEditorAction(CompatChangeAll);\nregisterEditorAction(InsertCursorAtEndOfLineSelected);\nregisterEditorAction(InsertCursorAtTopOfLineSelected);\nregisterEditorAction(FocusNextCursor);\nregisterEditorAction(FocusPreviousCursor);\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/multicursor/browser/multicursor.ts"],"names":[],"mappings":"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","file":"multicursor.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { KeyChord, KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Constants } from '../../../../base/common/uint.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CursorState } from '../../../common/cursorCommon.js';\nimport { CursorChangeReason, ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { CursorMoveCommands } from '../../../common/cursor/cursorMoveCommands.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorContribution, IEditorDecorationsCollection, ScrollType } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { FindMatch, ITextModel } from '../../../common/model.js';\nimport { CommonFindController } from '../../find/browser/findController.js';\nimport { FindOptionOverride, INewFindReplaceState } from '../../find/browser/findState.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getSelectionHighlightDecorationOptions } from '../../wordHighlighter/browser/highlightDecorations.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\n\nfunction announceCursorChange(previousCursorState: CursorState[], cursorState: CursorState[]): void {\n\tconst cursorDiff = cursorState.filter(cs => !previousCursorState.find(pcs => pcs.equals(cs)));\n\tif (cursorDiff.length >= 1) {\n\t\tconst cursorPositions = cursorDiff.map(cs => `line ${cs.viewState.position.lineNumber} column ${cs.viewState.position.column}`).join(', ');\n\t\tconst msg = cursorDiff.length === 1 ? nls.localize('cursorAdded', \"Cursor added: {0}\", cursorPositions) : nls.localize('cursorsAdded', \"Cursors added: {0}\", cursorPositions);\n\t\tstatus(msg);\n\t}\n}\n\ninterface InsertCursorArgs {\n\tsource?: string;\n\tlogicalLine?: boolean;\n}\n\nexport class InsertCursorAbove extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertCursorAbove',\n\t\t\tlabel: nls.localize2('mutlicursor.insertAbove', \"Add Cursor Above\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.UpArrow,\n\t\t\t\tlinux: {\n\t\t\t\t\tprimary: KeyMod.Shift | KeyMod.Alt | KeyCode.UpArrow,\n\t\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow]\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miInsertCursorAbove', comment: ['&& denotes a mnemonic'] }, \"&&Add Cursor Above\"),\n\t\t\t\torder: 2\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: InsertCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet useLogicalLine = true;\n\t\tif (args && args.logicalLine === false) {\n\t\t\tuseLogicalLine = false;\n\t\t}\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tviewModel.setCursorStates(\n\t\t\targs.source,\n\t\t\tCursorChangeReason.Explicit,\n\t\t\tCursorMoveCommands.addCursorUp(viewModel, previousCursorState, useLogicalLine)\n\t\t);\n\t\tviewModel.revealTopMostCursor(args.source);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nexport class InsertCursorBelow extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertCursorBelow',\n\t\t\tlabel: nls.localize2('mutlicursor.insertBelow', \"Add Cursor Below\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.DownArrow,\n\t\t\t\tlinux: {\n\t\t\t\t\tprimary: KeyMod.Shift | KeyMod.Alt | KeyCode.DownArrow,\n\t\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow]\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miInsertCursorBelow', comment: ['&& denotes a mnemonic'] }, \"A&&dd Cursor Below\"),\n\t\t\t\torder: 3\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: InsertCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet useLogicalLine = true;\n\t\tif (args && args.logicalLine === false) {\n\t\t\tuseLogicalLine = false;\n\t\t}\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tviewModel.setCursorStates(\n\t\t\targs.source,\n\t\t\tCursorChangeReason.Explicit,\n\t\t\tCursorMoveCommands.addCursorDown(viewModel, previousCursorState, useLogicalLine)\n\t\t);\n\t\tviewModel.revealBottomMostCursor(args.source);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nclass InsertCursorAtEndOfEachLineSelected extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertCursorAtEndOfEachLineSelected',\n\t\t\tlabel: nls.localize2('mutlicursor.insertAtEndOfEachLineSelected', \"Add Cursors to Line Ends\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Shift | KeyMod.Alt | KeyCode.KeyI,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miInsertCursorAtEndOfEachLineSelected', comment: ['&& denotes a mnemonic'] }, \"Add C&&ursors to Line Ends\"),\n\t\t\t\torder: 4\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getCursorsForSelection(selection: Selection, model: ITextModel, result: Selection[]): void {\n\t\tif (selection.isEmpty()) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = selection.startLineNumber; i < selection.endLineNumber; i++) {\n\t\t\tconst currentLineMaxColumn = model.getLineMaxColumn(i);\n\t\t\tresult.push(new Selection(i, currentLineMaxColumn, i, currentLineMaxColumn));\n\t\t}\n\t\tif (selection.endColumn > 1) {\n\t\t\tresult.push(new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn));\n\t\t}\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tconst selections = editor.getSelections();\n\t\tconst viewModel = editor._getViewModel();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tconst newSelections: Selection[] = [];\n\t\tselections.forEach((sel) => this.getCursorsForSelection(sel, model, newSelections));\n\n\t\tif (newSelections.length > 0) {\n\t\t\teditor.setSelections(newSelections);\n\t\t}\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nclass InsertCursorAtEndOfLineSelected extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addCursorsToBottom',\n\t\t\tlabel: nls.localize2('mutlicursor.addCursorsToBottom', \"Add Cursors to Bottom\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\t\tconst lineCount = editor.getModel().getLineCount();\n\n\t\tconst newSelections: Selection[] = [];\n\t\tfor (let i = selections[0].startLineNumber; i <= lineCount; i++) {\n\t\t\tnewSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tif (newSelections.length > 0) {\n\t\t\teditor.setSelections(newSelections);\n\t\t}\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nclass InsertCursorAtTopOfLineSelected extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addCursorsToTop',\n\t\t\tlabel: nls.localize2('mutlicursor.addCursorsToTop', \"Add Cursors to Top\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\n\t\tconst newSelections: Selection[] = [];\n\t\tfor (let i = selections[0].startLineNumber; i >= 1; i--) {\n\t\t\tnewSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\tif (newSelections.length > 0) {\n\t\t\teditor.setSelections(newSelections);\n\t\t}\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nexport class MultiCursorSessionResult {\n\tconstructor(\n\t\tpublic readonly selections: Selection[],\n\t\tpublic readonly revealRange: Range,\n\t\tpublic readonly revealScrollType: ScrollType\n\t) { }\n}\n\nfunction isFindWidgetSearch(editor: ICodeEditor, findController: CommonFindController): boolean {\n\t// Find widget owns entirely what we search for if:\n\t// - focus is not in the editor (i.e. it is in the find widget)\n\t// - and the search widget is visible\n\t// - and the search string is non-empty\n\tconst findState = findController.getState();\n\treturn !editor.hasTextFocus() && findState.isRevealed && findState.searchString.length > 0;\n}\n\nfunction getSelectionSearchOptions(editor: ICodeEditor, findController: CommonFindController): { wholeWord: boolean; matchCase: boolean; usesFindOptions: boolean } {\n\tconst selectedTextMatchMode = editor.getOption(EditorOption.selectedTextMatchMode);\n\tif (selectedTextMatchMode === 'findOptions') {\n\t\tconst findState = findController.getState();\n\t\treturn { wholeWord: findState.wholeWord, matchCase: findState.matchCase, usesFindOptions: true };\n\t}\n\treturn { wholeWord: false, matchCase: selectedTextMatchMode === 'caseSensitive', usesFindOptions: false };\n}\n\nexport class MultiCursorSession {\n\n\tpublic static create(editor: ICodeEditor, findController: CommonFindController): MultiCursorSession | null {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst findState = findController.getState();\n\n\t\tif (isFindWidgetSearch(editor, findController)) {\n\t\t\t// Find widget owns what is searched for\n\t\t\treturn new MultiCursorSession(editor, findController, false, true, findState.searchString, findState.wholeWord, findState.matchCase, null);\n\t\t}\n\n\t\tlet isDisconnectedFromFindController = false;\n\t\tlet wholeWord: boolean;\n\t\tlet matchCase: boolean;\n\t\tlet usesFindOptions: boolean;\n\t\tconst selections = editor.getSelections();\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\tisDisconnectedFromFindController = true;\n\t\t\twholeWord = true;\n\t\t\tmatchCase = true;\n\t\t\tusesFindOptions = true;\n\t\t} else {\n\t\t\tconst selectionSearchOptions = getSelectionSearchOptions(editor, findController);\n\t\t\twholeWord = selectionSearchOptions.wholeWord;\n\t\t\tmatchCase = selectionSearchOptions.matchCase;\n\t\t\tusesFindOptions = selectionSearchOptions.usesFindOptions;\n\t\t}\n\n\t\t// Selection owns what is searched for\n\t\tconst s = editor.getSelection();\n\n\t\tlet searchText: string;\n\t\tlet currentMatch: Selection | null = null;\n\n\t\tif (s.isEmpty()) {\n\t\t\t// selection is empty => expand to current word\n\t\t\tconst word = editor.getConfiguredWordAtPosition(s.getStartPosition());\n\t\t\tif (!word) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tsearchText = word.word;\n\t\t\tcurrentMatch = new Selection(s.startLineNumber, word.startColumn, s.startLineNumber, word.endColumn);\n\t\t} else {\n\t\t\tsearchText = editor.getModel().getValueInRange(s).replace(/\\r\\n/g, '\\n');\n\t\t}\n\n\t\treturn new MultiCursorSession(editor, findController, isDisconnectedFromFindController, usesFindOptions, searchText, wholeWord, matchCase, currentMatch);\n\t}\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tpublic readonly findController: CommonFindController,\n\t\tpublic readonly isDisconnectedFromFindController: boolean,\n\t\tpublic readonly usesFindOptions: boolean,\n\t\tpublic readonly searchText: string,\n\t\tpublic readonly wholeWord: boolean,\n\t\tpublic readonly matchCase: boolean,\n\t\tpublic currentMatch: Selection | null\n\t) { }\n\n\tpublic addSelectionToNextFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst nextMatch = this._getNextMatch();\n\t\tif (!nextMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.concat(nextMatch), nextMatch, ScrollType.Smooth);\n\t}\n\n\tpublic moveSelectionToNextFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst nextMatch = this._getNextMatch();\n\t\tif (!nextMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(nextMatch), nextMatch, ScrollType.Smooth);\n\t}\n\n\tprivate _getNextMatch(): Selection | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.currentMatch) {\n\t\t\tconst result = this.currentMatch;\n\t\t\tthis.currentMatch = null;\n\t\t\treturn result;\n\t\t}\n\n\t\tthis._highlightFindOptions();\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\tconst lastAddedSelection = allSelections[allSelections.length - 1];\n\t\tconst nextMatch = this._editor.getModel().findNextMatch(this.searchText, lastAddedSelection.getEndPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false);\n\n\t\tif (!nextMatch) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new Selection(nextMatch.range.startLineNumber, nextMatch.range.startColumn, nextMatch.range.endLineNumber, nextMatch.range.endColumn);\n\t}\n\n\tpublic addSelectionToPreviousFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst previousMatch = this._getPreviousMatch();\n\t\tif (!previousMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.concat(previousMatch), previousMatch, ScrollType.Smooth);\n\t}\n\n\tpublic moveSelectionToPreviousFindMatch(): MultiCursorSessionResult | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst previousMatch = this._getPreviousMatch();\n\t\tif (!previousMatch) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\treturn new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(previousMatch), previousMatch, ScrollType.Smooth);\n\t}\n\n\tprivate _getPreviousMatch(): Selection | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.currentMatch) {\n\t\t\tconst result = this.currentMatch;\n\t\t\tthis.currentMatch = null;\n\t\t\treturn result;\n\t\t}\n\n\t\tthis._highlightFindOptions();\n\n\t\tconst allSelections = this._editor.getSelections();\n\t\tconst lastAddedSelection = allSelections[allSelections.length - 1];\n\t\tconst previousMatch = this._editor.getModel().findPreviousMatch(this.searchText, lastAddedSelection.getStartPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false);\n\n\t\tif (!previousMatch) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new Selection(previousMatch.range.startLineNumber, previousMatch.range.startColumn, previousMatch.range.endLineNumber, previousMatch.range.endColumn);\n\t}\n\n\tpublic selectAll(searchScope: Range[] | null): FindMatch[] {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn [];\n\t\t}\n\n\t\tthis._highlightFindOptions();\n\n\t\tconst editorModel = this._editor.getModel();\n\t\tif (searchScope) {\n\t\t\treturn editorModel.findMatches(this.searchText, searchScope, false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t\t}\n\t\treturn editorModel.findMatches(this.searchText, true, false, this.matchCase, this.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t}\n\n\tprivate _highlightFindOptions(): void {\n\t\tif (this.usesFindOptions) {\n\t\t\tthis.findController.highlightFindOptions();\n\t\t}\n\t}\n}\n\nexport class MultiCursorSelectionController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.multiCursorController';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate _ignoreSelectionChange: boolean;\n\tprivate _session: MultiCursorSession | null;\n\tprivate readonly _sessionDispose = this._register(new DisposableStore());\n\n\tpublic static get(editor: ICodeEditor): MultiCursorSelectionController | null {\n\t\treturn editor.getContribution<MultiCursorSelectionController>(MultiCursorSelectionController.ID);\n\t}\n\n\tconstructor(editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._ignoreSelectionChange = false;\n\t\tthis._session = null;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._endSession();\n\t\tsuper.dispose();\n\t}\n\n\tprivate _beginSessionIfNeeded(findController: CommonFindController): void {\n\t\tif (!this._session) {\n\t\t\t// Create a new session\n\t\t\tconst session = MultiCursorSession.create(this._editor, findController);\n\t\t\tif (!session) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._session = session;\n\n\t\t\tconst newState: INewFindReplaceState = { searchString: this._session.searchText };\n\t\t\tif (this._session.isDisconnectedFromFindController) {\n\t\t\t\tnewState.wholeWordOverride = FindOptionOverride.True;\n\t\t\t\tnewState.matchCaseOverride = FindOptionOverride.True;\n\t\t\t\tnewState.isRegexOverride = FindOptionOverride.False;\n\t\t\t}\n\t\t\tfindController.getState().change(newState, false);\n\n\t\t\tthis._sessionDispose.add(this._editor.onDidChangeCursorSelection((e) => {\n\t\t\t\tif (this._ignoreSelectionChange) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._endSession();\n\t\t\t}));\n\t\t\tthis._sessionDispose.add(this._editor.onDidBlurEditorText(() => {\n\t\t\t\tthis._endSession();\n\t\t\t}));\n\t\t\tif (this._editor.getOption(EditorOption.selectedTextMatchMode) !== 'findOptions') {\n\t\t\t\tthis._sessionDispose.add(this._editor.onDidFocusEditorText(() => {\n\t\t\t\t\tthis._endSession();\n\t\t\t\t}));\n\t\t\t}\n\t\t\tthis._sessionDispose.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\t\tif (e.hasChanged(EditorOption.selectedTextMatchMode)) {\n\t\t\t\t\tthis._endSession();\n\t\t\t\t}\n\t\t\t}));\n\t\t\tthis._sessionDispose.add(findController.getState().onFindReplaceStateChange((e) => {\n\t\t\t\tif (session.usesFindOptions && (e.matchCase || e.wholeWord)) {\n\t\t\t\t\tthis._endSession();\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t}\n\n\tprivate _endSession(): void {\n\t\tthis._sessionDispose.clear();\n\t\tif (this._session && this._session.isDisconnectedFromFindController) {\n\t\t\tconst newState: INewFindReplaceState = {\n\t\t\t\twholeWordOverride: FindOptionOverride.NotSet,\n\t\t\t\tmatchCaseOverride: FindOptionOverride.NotSet,\n\t\t\t\tisRegexOverride: FindOptionOverride.NotSet,\n\t\t\t};\n\t\t\tthis._session.findController.getState().change(newState, false);\n\t\t}\n\t\tthis._session = null;\n\t}\n\n\tprivate _setSelections(selections: Selection[]): void {\n\t\tthis._ignoreSelectionChange = true;\n\t\tthis._editor.setSelections(selections);\n\t\tthis._ignoreSelectionChange = false;\n\t}\n\n\tprivate _expandEmptyToWord(model: ITextModel, selection: Selection): Selection {\n\t\tif (!selection.isEmpty()) {\n\t\t\treturn selection;\n\t\t}\n\t\tconst word = this._editor.getConfiguredWordAtPosition(selection.getStartPosition());\n\t\tif (!word) {\n\t\t\treturn selection;\n\t\t}\n\t\treturn new Selection(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\n\t}\n\n\tprivate _applySessionResult(result: MultiCursorSessionResult | null): void {\n\t\tif (!result) {\n\t\t\treturn;\n\t\t}\n\t\tthis._setSelections(result.selections);\n\t\tif (result.revealRange) {\n\t\t\tthis._editor.revealRangeInCenterIfOutsideViewport(result.revealRange, result.revealScrollType);\n\t\t}\n\t}\n\n\tpublic getSession(findController: CommonFindController): MultiCursorSession | null {\n\t\treturn this._session;\n\t}\n\n\tpublic addSelectionToNextFindMatch(findController: CommonFindController): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this._session) {\n\t\t\t// If there are multiple cursors, handle the case where they do not all select the same text.\n\t\t\tconst allSelections = this._editor.getSelections();\n\t\t\tif (allSelections.length > 1) {\n\t\t\t\tconst matchCase = isFindWidgetSearch(this._editor, findController)\n\t\t\t\t\t? findController.getState().matchCase\n\t\t\t\t\t: getSelectionSearchOptions(this._editor, findController).matchCase;\n\t\t\t\tconst selectionsContainSameText = modelRangesContainSameText(this._editor.getModel(), allSelections, matchCase);\n\t\t\t\tif (!selectionsContainSameText) {\n\t\t\t\t\tconst model = this._editor.getModel();\n\t\t\t\t\tconst resultingSelections: Selection[] = [];\n\t\t\t\t\tfor (let i = 0, len = allSelections.length; i < len; i++) {\n\t\t\t\t\t\tresultingSelections[i] = this._expandEmptyToWord(model, allSelections[i]);\n\t\t\t\t\t}\n\t\t\t\t\tthis._editor.setSelections(resultingSelections);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.addSelectionToNextFindMatch());\n\t\t}\n\t}\n\n\tpublic addSelectionToPreviousFindMatch(findController: CommonFindController): void {\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.addSelectionToPreviousFindMatch());\n\t\t}\n\t}\n\n\tpublic moveSelectionToNextFindMatch(findController: CommonFindController): void {\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.moveSelectionToNextFindMatch());\n\t\t}\n\t}\n\n\tpublic moveSelectionToPreviousFindMatch(findController: CommonFindController): void {\n\t\tthis._beginSessionIfNeeded(findController);\n\t\tif (this._session) {\n\t\t\tthis._applySessionResult(this._session.moveSelectionToPreviousFindMatch());\n\t\t}\n\t}\n\n\tpublic selectAll(findController: CommonFindController): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet matches: FindMatch[] | null = null;\n\n\t\tconst findState = findController.getState();\n\n\t\t// Special case: find widget owns entirely what we search for if:\n\t\t// - focus is not in the editor (i.e. it is in the find widget)\n\t\t// - and the search widget is visible\n\t\t// - and the search string is non-empty\n\t\t// - and we're searching for a regex\n\t\tconst allowFindRegex = this._editor.getOption(EditorOption.selectedTextMatchMode) === 'findOptions'\n\t\t\t|| !this._editor.hasTextFocus();\n\t\tif (allowFindRegex && findState.isRevealed && findState.searchString.length > 0 && findState.isRegex) {\n\t\t\tconst editorModel = this._editor.getModel();\n\t\t\tif (findState.searchScope) {\n\t\t\t\tmatches = editorModel.findMatches(findState.searchString, findState.searchScope, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t\t\t} else {\n\t\t\t\tmatches = editorModel.findMatches(findState.searchString, true, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(EditorOption.wordSeparators) : null, false, Constants.MAX_SAFE_SMALL_INTEGER);\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis._beginSessionIfNeeded(findController);\n\t\t\tif (!this._session) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmatches = this._session.selectAll(findState.searchScope);\n\t\t}\n\n\t\tif (matches.length > 0) {\n\t\t\tconst editorSelection = this._editor.getSelection();\n\t\t\t// Have the primary cursor remain the one where the action was invoked\n\t\t\tfor (let i = 0, len = matches.length; i < len; i++) {\n\t\t\t\tconst match = matches[i];\n\t\t\t\tconst intersection = match.range.intersectRanges(editorSelection);\n\t\t\t\tif (intersection) {\n\t\t\t\t\t// bingo!\n\t\t\t\t\tmatches[i] = matches[0];\n\t\t\t\t\tmatches[0] = match;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._setSelections(matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn)));\n\t\t}\n\t}\n}\n\nexport abstract class MultiCursorSelectionControllerAction extends EditorAction {\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst multiCursorController = MultiCursorSelectionController.get(editor);\n\t\tif (!multiCursorController) {\n\t\t\treturn;\n\t\t}\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (viewModel) {\n\t\t\tconst previousCursorState = viewModel.getCursorStates();\n\t\t\tconst findController = CommonFindController.get(editor);\n\t\t\tif (findController) {\n\t\t\t\tthis._run(multiCursorController, findController);\n\t\t\t} else {\n\t\t\t\tconst newFindController = accessor.get(IInstantiationService).createInstance(CommonFindController, editor);\n\t\t\t\tthis._run(multiCursorController, newFindController);\n\t\t\t\tnewFindController.dispose();\n\t\t\t}\n\n\t\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t\t}\n\t}\n\n\tprotected abstract _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void;\n}\n\nexport class AddSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addSelectionToNextFindMatch',\n\t\t\tlabel: nls.localize2('addSelectionToNextFindMatch', \"Add Selection to Next Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyD,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miAddSelectionToNextFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add &&Next Occurrence\"),\n\t\t\t\torder: 5\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.addSelectionToNextFindMatch(findController);\n\t}\n}\n\nexport class AddSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.addSelectionToPreviousFindMatch',\n\t\t\tlabel: nls.localize2('addSelectionToPreviousFindMatch', \"Add Selection to Previous Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miAddSelectionToPreviousFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add P&&revious Occurrence\"),\n\t\t\t\torder: 6\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.addSelectionToPreviousFindMatch(findController);\n\t}\n}\n\nexport class MoveSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.moveSelectionToNextFindMatch',\n\t\t\tlabel: nls.localize2('moveSelectionToNextFindMatch', \"Move Last Selection to Next Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyD),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.moveSelectionToNextFindMatch(findController);\n\t}\n}\n\nexport class MoveSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.moveSelectionToPreviousFindMatch',\n\t\t\tlabel: nls.localize2('moveSelectionToPreviousFindMatch', \"Move Last Selection to Previous Find Match\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.moveSelectionToPreviousFindMatch(findController);\n\t}\n}\n\nexport class SelectHighlightsAction extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.selectHighlights',\n\t\t\tlabel: nls.localize2('selectAllOccurrencesOfFindMatch', \"Select All Occurrences of Find Match\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyL,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '3_multi',\n\t\t\t\ttitle: nls.localize({ key: 'miSelectHighlights', comment: ['&& denotes a mnemonic'] }, \"Select All &&Occurrences\"),\n\t\t\t\torder: 7\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.selectAll(findController);\n\t}\n}\n\nexport class CompatChangeAll extends MultiCursorSelectionControllerAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.changeAll',\n\t\t\tlabel: nls.localize2('changeAll.label', \"Change All Occurrences\"),\n\t\t\tprecondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.editorTextFocus),\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.F2,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tcontextMenuOpts: {\n\t\t\t\tgroup: '1_modification',\n\t\t\t\torder: 1.2\n\t\t\t}\n\t\t});\n\t}\n\tprotected _run(multiCursorController: MultiCursorSelectionController, findController: CommonFindController): void {\n\t\tmultiCursorController.selectAll(findController);\n\t}\n}\n\nclass SelectionHighlighterState {\n\tprivate readonly _modelVersionId: number;\n\tprivate _cachedFindMatches: Range[] | null = null;\n\n\tconstructor(\n\t\tprivate readonly _model: ITextModel,\n\t\tprivate readonly _searchText: string,\n\t\tprivate readonly _matchCase: boolean,\n\t\tprivate readonly _wordSeparators: string | null,\n\t\tprevState: SelectionHighlighterState | null\n\t) {\n\t\tthis._modelVersionId = this._model.getVersionId();\n\t\tif (prevState\n\t\t\t&& this._model === prevState._model\n\t\t\t&& this._searchText === prevState._searchText\n\t\t\t&& this._matchCase === prevState._matchCase\n\t\t\t&& this._wordSeparators === prevState._wordSeparators\n\t\t\t&& this._modelVersionId === prevState._modelVersionId\n\t\t) {\n\t\t\tthis._cachedFindMatches = prevState._cachedFindMatches;\n\t\t}\n\t}\n\n\tpublic findMatches(): Range[] {\n\t\tif (this._cachedFindMatches === null) {\n\t\t\tthis._cachedFindMatches = this._model.findMatches(this._searchText, true, false, this._matchCase, this._wordSeparators, false).map(m => m.range);\n\t\t\tthis._cachedFindMatches.sort(Range.compareRangesUsingStarts);\n\t\t}\n\t\treturn this._cachedFindMatches;\n\t}\n}\n\nexport class SelectionHighlighter extends Disposable implements IEditorContribution {\n\tpublic static readonly ID = 'editor.contrib.selectionHighlighter';\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate _isEnabled: boolean;\n\tprivate _isEnabledMultiline: boolean;\n\tprivate _maxLength: number;\n\tprivate readonly _decorations: IEditorDecorationsCollection;\n\tprivate readonly updateSoon: RunOnceScheduler;\n\tprivate state: SelectionHighlighterState | null;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService\n\t) {\n\t\tsuper();\n\t\tthis.editor = editor;\n\t\tthis._isEnabled = editor.getOption(EditorOption.selectionHighlight);\n\t\tthis._isEnabledMultiline = editor.getOption(EditorOption.selectionHighlightMultiline);\n\t\tthis._maxLength = editor.getOption(EditorOption.selectionHighlightMaxLength);\n\t\tthis._decorations = editor.createDecorationsCollection();\n\t\tthis.updateSoon = this._register(new RunOnceScheduler(() => this._update(), 300));\n\t\tthis.state = null;\n\n\t\tthis._register(editor.onDidChangeConfiguration((e) => {\n\t\t\tthis._isEnabled = editor.getOption(EditorOption.selectionHighlight);\n\t\t\tthis._isEnabledMultiline = editor.getOption(EditorOption.selectionHighlightMultiline);\n\t\t\tthis._maxLength = editor.getOption(EditorOption.selectionHighlightMaxLength);\n\t\t\tif (e.hasChanged(EditorOption.selectedTextMatchMode)) {\n\t\t\t\tthis.updateSoon.schedule(0);\n\t\t\t}\n\t\t}));\n\t\tthis._register(editor.onDidChangeCursorSelection((e: ICursorSelectionChangedEvent) => {\n\n\t\t\tif (!this._isEnabled) {\n\t\t\t\t// Early exit if nothing needs to be done!\n\t\t\t\t// Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.selection.isEmpty()) {\n\t\t\t\tif (e.reason === CursorChangeReason.Explicit) {\n\t\t\t\t\tif (this.state) {\n\t\t\t\t\t\t// no longer valid\n\t\t\t\t\t\tthis._setState(null);\n\t\t\t\t\t}\n\t\t\t\t\tthis.updateSoon.schedule();\n\t\t\t\t} else {\n\t\t\t\t\tthis._setState(null);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._update();\n\t\t\t}\n\t\t}));\n\t\tthis._register(editor.onDidChangeModel((e) => {\n\t\t\tthis._setState(null);\n\t\t}));\n\t\tthis._register(editor.onDidChangeModelContent((e) => {\n\t\t\tif (this._isEnabled) {\n\t\t\t\tthis.updateSoon.schedule();\n\t\t\t}\n\t\t}));\n\t\tconst findController = CommonFindController.get(editor);\n\t\tif (findController) {\n\t\t\tthis._register(findController.getState().onFindReplaceStateChange((e) => {\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t}\n\t\tthis.updateSoon.schedule();\n\t}\n\n\tprivate _update(): void {\n\t\tthis._setState(SelectionHighlighter._createState(this.state, this._isEnabled, this._isEnabledMultiline, this._maxLength, this.editor));\n\t}\n\n\tprivate static _createState(oldState: SelectionHighlighterState | null, isEnabled: boolean, isEnabledMultiline: boolean, maxLength: number, editor: ICodeEditor): SelectionHighlighterState | null {\n\t\tif (!isEnabled) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!isEnabledMultiline) {\n\t\t\tconst s = editor.getSelection();\n\t\t\tif (s.startLineNumber !== s.endLineNumber) {\n\t\t\t\t// multiline forbidden for perf reasons\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tconst multiCursorController = MultiCursorSelectionController.get(editor);\n\t\tif (!multiCursorController) {\n\t\t\treturn null;\n\t\t}\n\t\tconst findController = CommonFindController.get(editor);\n\t\tif (!findController) {\n\t\t\treturn null;\n\t\t}\n\t\tlet r = multiCursorController.getSession(findController);\n\t\tif (!r) {\n\t\t\tconst allSelections = editor.getSelections();\n\t\t\tif (allSelections.length > 1) {\n\t\t\t\tconst findState = findController.getState();\n\t\t\t\tconst matchCase = findState.matchCase;\n\t\t\t\tconst selectionsContainSameText = modelRangesContainSameText(editor.getModel(), allSelections, matchCase);\n\t\t\t\tif (!selectionsContainSameText) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tr = MultiCursorSession.create(editor, findController);\n\t\t}\n\t\tif (!r) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (r.currentMatch) {\n\t\t\t// This is an empty selection\n\t\t\t// Do not interfere with semantic word highlighting in the no selection case\n\t\t\treturn null;\n\t\t}\n\t\tif (/^[ \\t]+$/.test(r.searchText)) {\n\t\t\t// whitespace only selection\n\t\t\treturn null;\n\t\t}\n\t\tif (maxLength > 0 && r.searchText.length > maxLength) {\n\t\t\t// very long selection\n\t\t\treturn null;\n\t\t}\n\n\t\t// TODO: better handling of this case\n\t\tconst findState = findController.getState();\n\t\tconst caseSensitive = findState.matchCase;\n\n\t\t// Return early if the find widget shows the exact same matches\n\t\tif (findState.isRevealed) {\n\t\t\tlet findStateSearchString = findState.searchString;\n\t\t\tif (!caseSensitive) {\n\t\t\t\tfindStateSearchString = findStateSearchString.toLowerCase();\n\t\t\t}\n\n\t\t\tlet mySearchString = r.searchText;\n\t\t\tif (!caseSensitive) {\n\t\t\t\tmySearchString = mySearchString.toLowerCase();\n\t\t\t}\n\n\t\t\tif (findStateSearchString === mySearchString && r.matchCase === findState.matchCase && r.wholeWord === findState.wholeWord && !findState.isRegex) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn new SelectionHighlighterState(editor.getModel(), r.searchText, r.matchCase, r.wholeWord ? editor.getOption(EditorOption.wordSeparators) : null, oldState);\n\t}\n\n\tprivate _setState(newState: SelectionHighlighterState | null): void {\n\t\tthis.state = newState;\n\n\t\tif (!this.state) {\n\t\t\tthis._decorations.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tif (model.isTooLargeForTokenization()) {\n\t\t\t// the file is too large, so searching word under cursor in the whole document would be blocking the UI.\n\t\t\treturn;\n\t\t}\n\n\t\tconst allMatches = this.state.findMatches();\n\n\t\tconst selections = this.editor.getSelections();\n\t\tselections.sort(Range.compareRangesUsingStarts);\n\n\t\t// do not overlap with selection (issue #64 and #512)\n\t\tconst matches: Range[] = [];\n\t\tfor (let i = 0, j = 0, len = allMatches.length, lenJ = selections.length; i < len;) {\n\t\t\tconst match = allMatches[i];\n\n\t\t\tif (j >= lenJ) {\n\t\t\t\t// finished all editor selections\n\t\t\t\tmatches.push(match);\n\t\t\t\ti++;\n\t\t\t} else {\n\t\t\t\tconst cmp = Range.compareRangesUsingStarts(match, selections[j]);\n\t\t\t\tif (cmp < 0) {\n\t\t\t\t\t// match is before sel\n\t\t\t\t\tif (selections[j].isEmpty() || !Range.areIntersecting(match, selections[j])) {\n\t\t\t\t\t\tmatches.push(match);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t} else if (cmp > 0) {\n\t\t\t\t\t// sel is before match\n\t\t\t\t\tj++;\n\t\t\t\t} else {\n\t\t\t\t\t// sel is equal to match\n\t\t\t\t\ti++;\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst occurrenceHighlighting: boolean = this.editor.getOption(EditorOption.occurrencesHighlight) !== 'off';\n\t\tconst hasSemanticHighlights = this._languageFeaturesService.documentHighlightProvider.has(model) && occurrenceHighlighting;\n\t\tconst decorations = matches.map(r => {\n\t\t\treturn {\n\t\t\t\trange: r,\n\t\t\t\toptions: getSelectionHighlightDecorationOptions(hasSemanticHighlights)\n\t\t\t};\n\t\t});\n\n\t\tthis._decorations.set(decorations);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._setState(null);\n\t\tsuper.dispose();\n\t}\n}\n\nfunction modelRangesContainSameText(model: ITextModel, ranges: Range[], matchCase: boolean): boolean {\n\tconst selectedText = getValueInRange(model, ranges[0], !matchCase);\n\tfor (let i = 1, len = ranges.length; i < len; i++) {\n\t\tconst range = ranges[i];\n\t\tif (range.isEmpty()) {\n\t\t\treturn false;\n\t\t}\n\t\tconst thisSelectedText = getValueInRange(model, range, !matchCase);\n\t\tif (selectedText !== thisSelectedText) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction getValueInRange(model: ITextModel, range: Range, toLowerCase: boolean): string {\n\tconst text = model.getValueInRange(range);\n\treturn (toLowerCase ? text.toLowerCase() : text);\n}\n\ninterface FocusCursorArgs {\n\tsource?: string;\n}\n\nexport class FocusNextCursor extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.focusNextCursor',\n\t\t\tlabel: nls.localize2('mutlicursor.focusNextCursor', \"Focus Next Cursor\"),\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize('mutlicursor.focusNextCursor.description', \"Focuses the next cursor\"),\n\t\t\t\targs: [],\n\t\t\t},\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: FocusCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = Array.from(viewModel.getCursorStates());\n\t\tconst firstCursor = previousCursorState.shift();\n\t\tif (!firstCursor) {\n\t\t\treturn;\n\t\t}\n\t\tpreviousCursorState.push(firstCursor);\n\n\t\tviewModel.setCursorStates(args.source, CursorChangeReason.Explicit, previousCursorState);\n\t\tviewModel.revealPrimaryCursor(args.source, true);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nexport class FocusPreviousCursor extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.focusPreviousCursor',\n\t\t\tlabel: nls.localize2('mutlicursor.focusPreviousCursor', \"Focus Previous Cursor\"),\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize('mutlicursor.focusPreviousCursor.description', \"Focuses the previous cursor\"),\n\t\t\t\targs: [],\n\t\t\t},\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: FocusCursorArgs): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewModel = editor._getViewModel();\n\n\t\tif (viewModel.cursorConfig.readOnly) {\n\t\t\treturn;\n\t\t}\n\n\t\tviewModel.model.pushStackElement();\n\t\tconst previousCursorState = Array.from(viewModel.getCursorStates());\n\t\tconst firstCursor = previousCursorState.pop();\n\t\tif (!firstCursor) {\n\t\t\treturn;\n\t\t}\n\t\tpreviousCursorState.unshift(firstCursor);\n\n\t\tviewModel.setCursorStates(args.source, CursorChangeReason.Explicit, previousCursorState);\n\t\tviewModel.revealPrimaryCursor(args.source, true);\n\t\tannounceCursorChange(previousCursorState, viewModel.getCursorStates());\n\t}\n}\n\nregisterEditorContribution(MultiCursorSelectionController.ID, MultiCursorSelectionController, EditorContributionInstantiation.Lazy);\nregisterEditorContribution(SelectionHighlighter.ID, SelectionHighlighter, EditorContributionInstantiation.AfterFirstRender);\n\nregisterEditorAction(InsertCursorAbove);\nregisterEditorAction(InsertCursorBelow);\nregisterEditorAction(InsertCursorAtEndOfEachLineSelected);\nregisterEditorAction(AddSelectionToNextFindMatchAction);\nregisterEditorAction(AddSelectionToPreviousFindMatchAction);\nregisterEditorAction(MoveSelectionToNextFindMatchAction);\nregisterEditorAction(MoveSelectionToPreviousFindMatchAction);\nregisterEditorAction(SelectHighlightsAction);\nregisterEditorAction(CompatChangeAll);\nregisterEditorAction(InsertCursorAtEndOfLineSelected);\nregisterEditorAction(InsertCursorAtTopOfLineSelected);\nregisterEditorAction(FocusNextCursor);\nregisterEditorAction(FocusPreviousCursor);\n"]}
@@ -67,7 +67,7 @@ export class TriggerParameterHintsAction extends EditorAction {
67
67
  constructor() {
68
68
  super({
69
69
  id: 'editor.action.triggerParameterHints',
70
- label: nls.localize2(1377, "Trigger Parameter Hints"),
70
+ label: nls.localize2(1384, "Trigger Parameter Hints"),
71
71
  precondition: EditorContextKeys.hasSignatureHelpProvider,
72
72
  kbOpts: {
73
73
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -88,7 +88,7 @@ export class ParameterHintsModel extends Disposable {
88
88
  const length = this.state.hints.signatures.length;
89
89
  const activeSignature = this.state.hints.activeSignature;
90
90
  const last = (activeSignature % length) === (length - 1);
91
- const cycle = this.editor.getOption(98 /* EditorOption.parameterHints */).cycle;
91
+ const cycle = this.editor.getOption(100 /* EditorOption.parameterHints */).cycle;
92
92
  // If there is only one signature, or we're on last signature of list
93
93
  if ((length < 2 || last) && !cycle) {
94
94
  this.cancel();
@@ -103,7 +103,7 @@ export class ParameterHintsModel extends Disposable {
103
103
  const length = this.state.hints.signatures.length;
104
104
  const activeSignature = this.state.hints.activeSignature;
105
105
  const first = activeSignature === 0;
106
- const cycle = this.editor.getOption(98 /* EditorOption.parameterHints */).cycle;
106
+ const cycle = this.editor.getOption(100 /* EditorOption.parameterHints */).cycle;
107
107
  // If there is only one signature, or we're on first signature of list
108
108
  if ((length < 2 || first) && !cycle) {
109
109
  this.cancel();
@@ -230,7 +230,7 @@ export class ParameterHintsModel extends Disposable {
230
230
  }
231
231
  }
232
232
  onEditorConfigurationChange() {
233
- this.triggerOnType = this.editor.getOption(98 /* EditorOption.parameterHints */).enabled;
233
+ this.triggerOnType = this.editor.getOption(100 /* EditorOption.parameterHints */).enabled;
234
234
  if (!this.triggerOnType) {
235
235
  this.cancel();
236
236
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/parameterHints/browser/parameterHintsModel.ts","vs/editor/contrib/parameterHints/browser/parameterHintsModel.ts"],"names":[],"mappings":"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","file":"parameterHintsModel.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, Delayer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport { ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport * as languages from '../../../common/languages.js';\nimport { provideSignatureHelp } from './provideSignatureHelp.js';\n\nexport interface TriggerContext {\n\treadonly triggerKind: languages.SignatureHelpTriggerKind;\n\treadonly triggerCharacter?: string;\n}\n\nnamespace ParameterHintState {\n\texport const enum Type {\n\t\tDefault,\n\t\tActive,\n\t\tPending,\n\t}\n\n\texport const Default = { type: Type.Default } as const;\n\n\texport class Pending {\n\t\treadonly type = Type.Pending;\n\t\tconstructor(\n\t\t\treadonly request: CancelablePromise<languages.SignatureHelpResult | undefined | null>,\n\t\t\treadonly previouslyActiveHints: languages.SignatureHelp | undefined,\n\t\t) { }\n\t}\n\n\texport class Active {\n\t\treadonly type = Type.Active;\n\t\tconstructor(\n\t\t\treadonly hints: languages.SignatureHelp\n\t\t) { }\n\t}\n\n\texport type State = typeof Default | Pending | Active;\n}\n\nexport class ParameterHintsModel extends Disposable {\n\n\tprivate static readonly DEFAULT_DELAY = 120; // ms\n\n\tprivate readonly _onChangedHints = this._register(new Emitter<languages.SignatureHelp | undefined>());\n\tpublic readonly onChangedHints = this._onChangedHints.event;\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate readonly providers: LanguageFeatureRegistry<languages.SignatureHelpProvider>;\n\n\tprivate triggerOnType = false;\n\tprivate _state: ParameterHintState.State = ParameterHintState.Default;\n\tprivate _pendingTriggers: TriggerContext[] = [];\n\n\tprivate readonly _lastSignatureHelpResult = this._register(new MutableDisposable<languages.SignatureHelpResult>());\n\tprivate readonly triggerChars = new CharacterSet();\n\tprivate readonly retriggerChars = new CharacterSet();\n\n\tprivate readonly throttledDelayer: Delayer<boolean>;\n\tprivate triggerId = 0;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tproviders: LanguageFeatureRegistry<languages.SignatureHelpProvider>,\n\t\tdelay: number = ParameterHintsModel.DEFAULT_DELAY\n\t) {\n\t\tsuper();\n\n\t\tthis.editor = editor;\n\t\tthis.providers = providers;\n\n\t\tthis.throttledDelayer = this._register(new Delayer(delay));\n\n\t\tthis._register(this.editor.onDidBlurEditorWidget(() => this.cancel()));\n\t\tthis._register(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));\n\t\tthis._register(this.editor.onDidChangeModel(e => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeModelLanguage(_ => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));\n\t\tthis._register(this.editor.onDidChangeModelContent(e => this.onModelContentChange()));\n\t\tthis._register(this.providers.onDidChange(this.onModelChanged, this));\n\t\tthis._register(this.editor.onDidType(text => this.onDidType(text)));\n\n\t\tthis.onEditorConfigurationChange();\n\t\tthis.onModelChanged();\n\t}\n\n\tprivate get state() { return this._state; }\n\tprivate set state(value: ParameterHintState.State) {\n\t\tif (this._state.type === ParameterHintState.Type.Pending) {\n\t\t\tthis._state.request.cancel();\n\t\t}\n\t\tthis._state = value;\n\t}\n\n\tcancel(silent: boolean = false): void {\n\t\tthis.state = ParameterHintState.Default;\n\n\t\tthis.throttledDelayer.cancel();\n\n\t\tif (!silent) {\n\t\t\tthis._onChangedHints.fire(undefined);\n\t\t}\n\t}\n\n\ttrigger(context: TriggerContext, delay?: number): void {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this.providers.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst triggerId = ++this.triggerId;\n\n\t\tthis._pendingTriggers.push(context);\n\t\tthis.throttledDelayer.trigger(() => {\n\t\t\treturn this.doTrigger(triggerId);\n\t\t}, delay)\n\t\t\t.catch(onUnexpectedError);\n\t}\n\n\tpublic next(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst last = (activeSignature % length) === (length - 1);\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on last signature of list\n\t\tif ((length < 2 || last) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(last && cycle ? 0 : activeSignature + 1);\n\t}\n\n\tpublic previous(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst first = activeSignature === 0;\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on first signature of list\n\t\tif ((length < 2 || first) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(first && cycle ? length - 1 : activeSignature - 1);\n\t}\n\n\tprivate updateActiveSignature(activeSignature: number) {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = new ParameterHintState.Active({ ...this.state.hints, activeSignature });\n\t\tthis._onChangedHints.fire(this.state.hints);\n\t}\n\n\tprivate async doTrigger(triggerId: number): Promise<boolean> {\n\t\tconst isRetrigger = this.state.type === ParameterHintState.Type.Active || this.state.type === ParameterHintState.Type.Pending;\n\t\tconst activeSignatureHelp = this.getLastActiveHints();\n\t\tthis.cancel(true);\n\n\t\tif (this._pendingTriggers.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst context: TriggerContext = this._pendingTriggers.reduce(mergeTriggerContexts);\n\t\tthis._pendingTriggers = [];\n\n\t\tconst triggerContext = {\n\t\t\ttriggerKind: context.triggerKind,\n\t\t\ttriggerCharacter: context.triggerCharacter,\n\t\t\tisRetrigger: isRetrigger,\n\t\t\tactiveSignatureHelp: activeSignatureHelp\n\t\t};\n\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tconst position = this.editor.getPosition();\n\n\t\tthis.state = new ParameterHintState.Pending(\n\t\t\tcreateCancelablePromise(token => provideSignatureHelp(this.providers, model, position, triggerContext, token)),\n\t\t\tactiveSignatureHelp);\n\n\t\ttry {\n\t\t\tconst result = await this.state.request;\n\n\t\t\t// Check that we are still resolving the correct signature help\n\t\t\tif (triggerId !== this.triggerId) {\n\t\t\t\tresult?.dispose();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!result || !result.value.signatures || result.value.signatures.length === 0) {\n\t\t\t\tresult?.dispose();\n\t\t\t\tthis._lastSignatureHelpResult.clear();\n\t\t\t\tthis.cancel();\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis.state = new ParameterHintState.Active(result.value);\n\t\t\t\tthis._lastSignatureHelpResult.value = result;\n\t\t\t\tthis._onChangedHints.fire(this.state.hints);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (triggerId === this.triggerId) {\n\t\t\t\tthis.state = ParameterHintState.Default;\n\t\t\t}\n\t\t\tonUnexpectedError(error);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate getLastActiveHints(): languages.SignatureHelp | undefined {\n\t\tswitch (this.state.type) {\n\t\t\tcase ParameterHintState.Type.Active: return this.state.hints;\n\t\t\tcase ParameterHintState.Type.Pending: return this.state.previouslyActiveHints;\n\t\t\tdefault: return undefined;\n\t\t}\n\t}\n\n\tprivate get isTriggered(): boolean {\n\t\treturn this.state.type === ParameterHintState.Type.Active\n\t\t\t|| this.state.type === ParameterHintState.Type.Pending\n\t\t\t|| this.throttledDelayer.isTriggered();\n\t}\n\n\tprivate onModelChanged(): void {\n\t\tthis.cancel();\n\n\t\tthis.triggerChars.clear();\n\t\tthis.retriggerChars.clear();\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const support of this.providers.ordered(model)) {\n\t\t\tfor (const ch of support.signatureHelpTriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tconst charCode = ch.charCodeAt(0);\n\t\t\t\t\tthis.triggerChars.add(charCode);\n\n\t\t\t\t\t// All trigger characters are also considered retrigger characters\n\t\t\t\t\tthis.retriggerChars.add(charCode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const ch of support.signatureHelpRetriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tthis.retriggerChars.add(ch.charCodeAt(0));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onDidType(text: string) {\n\t\tif (!this.triggerOnType) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lastCharIndex = text.length - 1;\n\t\tconst triggerCharCode = text.charCodeAt(lastCharIndex);\n\n\t\tif (this.triggerChars.has(triggerCharCode) || this.isTriggered && this.retriggerChars.has(triggerCharCode)) {\n\t\t\tthis.trigger({\n\t\t\t\ttriggerKind: languages.SignatureHelpTriggerKind.TriggerCharacter,\n\t\t\t\ttriggerCharacter: text.charAt(lastCharIndex),\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate onCursorChange(e: ICursorSelectionChangedEvent): void {\n\t\tif (e.source === 'mouse') {\n\t\t\tthis.cancel();\n\t\t} else if (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onModelContentChange(): void {\n\t\tif (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onEditorConfigurationChange(): void {\n\t\tthis.triggerOnType = this.editor.getOption(EditorOption.parameterHints).enabled;\n\n\t\tif (!this.triggerOnType) {\n\t\t\tthis.cancel();\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis.cancel(true);\n\t\tsuper.dispose();\n\t}\n}\n\nfunction mergeTriggerContexts(previous: TriggerContext, current: TriggerContext) {\n\tswitch (current.triggerKind) {\n\t\tcase languages.SignatureHelpTriggerKind.Invoke:\n\t\t\t// Invoke overrides previous triggers.\n\t\t\treturn current;\n\n\t\tcase languages.SignatureHelpTriggerKind.ContentChange:\n\t\t\t// Ignore content changes triggers\n\t\t\treturn previous;\n\n\t\tcase languages.SignatureHelpTriggerKind.TriggerCharacter:\n\t\tdefault:\n\t\t\treturn current;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, Delayer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport { ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport * as languages from '../../../common/languages.js';\nimport { provideSignatureHelp } from './provideSignatureHelp.js';\n\nexport interface TriggerContext {\n\treadonly triggerKind: languages.SignatureHelpTriggerKind;\n\treadonly triggerCharacter?: string;\n}\n\nnamespace ParameterHintState {\n\texport const enum Type {\n\t\tDefault,\n\t\tActive,\n\t\tPending,\n\t}\n\n\texport const Default = { type: Type.Default } as const;\n\n\texport class Pending {\n\t\treadonly type = Type.Pending;\n\t\tconstructor(\n\t\t\treadonly request: CancelablePromise<languages.SignatureHelpResult | undefined | null>,\n\t\t\treadonly previouslyActiveHints: languages.SignatureHelp | undefined,\n\t\t) { }\n\t}\n\n\texport class Active {\n\t\treadonly type = Type.Active;\n\t\tconstructor(\n\t\t\treadonly hints: languages.SignatureHelp\n\t\t) { }\n\t}\n\n\texport type State = typeof Default | Pending | Active;\n}\n\nexport class ParameterHintsModel extends Disposable {\n\n\tprivate static readonly DEFAULT_DELAY = 120; // ms\n\n\tprivate readonly _onChangedHints = this._register(new Emitter<languages.SignatureHelp | undefined>());\n\tpublic readonly onChangedHints = this._onChangedHints.event;\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate readonly providers: LanguageFeatureRegistry<languages.SignatureHelpProvider>;\n\n\tprivate triggerOnType = false;\n\tprivate _state: ParameterHintState.State = ParameterHintState.Default;\n\tprivate _pendingTriggers: TriggerContext[] = [];\n\n\tprivate readonly _lastSignatureHelpResult = this._register(new MutableDisposable<languages.SignatureHelpResult>());\n\tprivate readonly triggerChars = new CharacterSet();\n\tprivate readonly retriggerChars = new CharacterSet();\n\n\tprivate readonly throttledDelayer: Delayer<boolean>;\n\tprivate triggerId = 0;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tproviders: LanguageFeatureRegistry<languages.SignatureHelpProvider>,\n\t\tdelay: number = ParameterHintsModel.DEFAULT_DELAY\n\t) {\n\t\tsuper();\n\n\t\tthis.editor = editor;\n\t\tthis.providers = providers;\n\n\t\tthis.throttledDelayer = this._register(new Delayer(delay));\n\n\t\tthis._register(this.editor.onDidBlurEditorWidget(() => this.cancel()));\n\t\tthis._register(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));\n\t\tthis._register(this.editor.onDidChangeModel(e => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeModelLanguage(_ => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));\n\t\tthis._register(this.editor.onDidChangeModelContent(e => this.onModelContentChange()));\n\t\tthis._register(this.providers.onDidChange(this.onModelChanged, this));\n\t\tthis._register(this.editor.onDidType(text => this.onDidType(text)));\n\n\t\tthis.onEditorConfigurationChange();\n\t\tthis.onModelChanged();\n\t}\n\n\tprivate get state() { return this._state; }\n\tprivate set state(value: ParameterHintState.State) {\n\t\tif (this._state.type === ParameterHintState.Type.Pending) {\n\t\t\tthis._state.request.cancel();\n\t\t}\n\t\tthis._state = value;\n\t}\n\n\tcancel(silent: boolean = false): void {\n\t\tthis.state = ParameterHintState.Default;\n\n\t\tthis.throttledDelayer.cancel();\n\n\t\tif (!silent) {\n\t\t\tthis._onChangedHints.fire(undefined);\n\t\t}\n\t}\n\n\ttrigger(context: TriggerContext, delay?: number): void {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this.providers.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst triggerId = ++this.triggerId;\n\n\t\tthis._pendingTriggers.push(context);\n\t\tthis.throttledDelayer.trigger(() => {\n\t\t\treturn this.doTrigger(triggerId);\n\t\t}, delay)\n\t\t\t.catch(onUnexpectedError);\n\t}\n\n\tpublic next(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst last = (activeSignature % length) === (length - 1);\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on last signature of list\n\t\tif ((length < 2 || last) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(last && cycle ? 0 : activeSignature + 1);\n\t}\n\n\tpublic previous(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst first = activeSignature === 0;\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on first signature of list\n\t\tif ((length < 2 || first) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(first && cycle ? length - 1 : activeSignature - 1);\n\t}\n\n\tprivate updateActiveSignature(activeSignature: number) {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = new ParameterHintState.Active({ ...this.state.hints, activeSignature });\n\t\tthis._onChangedHints.fire(this.state.hints);\n\t}\n\n\tprivate async doTrigger(triggerId: number): Promise<boolean> {\n\t\tconst isRetrigger = this.state.type === ParameterHintState.Type.Active || this.state.type === ParameterHintState.Type.Pending;\n\t\tconst activeSignatureHelp = this.getLastActiveHints();\n\t\tthis.cancel(true);\n\n\t\tif (this._pendingTriggers.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst context: TriggerContext = this._pendingTriggers.reduce(mergeTriggerContexts);\n\t\tthis._pendingTriggers = [];\n\n\t\tconst triggerContext = {\n\t\t\ttriggerKind: context.triggerKind,\n\t\t\ttriggerCharacter: context.triggerCharacter,\n\t\t\tisRetrigger: isRetrigger,\n\t\t\tactiveSignatureHelp: activeSignatureHelp\n\t\t};\n\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tconst position = this.editor.getPosition();\n\n\t\tthis.state = new ParameterHintState.Pending(\n\t\t\tcreateCancelablePromise(token => provideSignatureHelp(this.providers, model, position, triggerContext, token)),\n\t\t\tactiveSignatureHelp);\n\n\t\ttry {\n\t\t\tconst result = await this.state.request;\n\n\t\t\t// Check that we are still resolving the correct signature help\n\t\t\tif (triggerId !== this.triggerId) {\n\t\t\t\tresult?.dispose();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!result || !result.value.signatures || result.value.signatures.length === 0) {\n\t\t\t\tresult?.dispose();\n\t\t\t\tthis._lastSignatureHelpResult.clear();\n\t\t\t\tthis.cancel();\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis.state = new ParameterHintState.Active(result.value);\n\t\t\t\tthis._lastSignatureHelpResult.value = result;\n\t\t\t\tthis._onChangedHints.fire(this.state.hints);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (triggerId === this.triggerId) {\n\t\t\t\tthis.state = ParameterHintState.Default;\n\t\t\t}\n\t\t\tonUnexpectedError(error);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate getLastActiveHints(): languages.SignatureHelp | undefined {\n\t\tswitch (this.state.type) {\n\t\t\tcase ParameterHintState.Type.Active: return this.state.hints;\n\t\t\tcase ParameterHintState.Type.Pending: return this.state.previouslyActiveHints;\n\t\t\tdefault: return undefined;\n\t\t}\n\t}\n\n\tprivate get isTriggered(): boolean {\n\t\treturn this.state.type === ParameterHintState.Type.Active\n\t\t\t|| this.state.type === ParameterHintState.Type.Pending\n\t\t\t|| this.throttledDelayer.isTriggered();\n\t}\n\n\tprivate onModelChanged(): void {\n\t\tthis.cancel();\n\n\t\tthis.triggerChars.clear();\n\t\tthis.retriggerChars.clear();\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const support of this.providers.ordered(model)) {\n\t\t\tfor (const ch of support.signatureHelpTriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tconst charCode = ch.charCodeAt(0);\n\t\t\t\t\tthis.triggerChars.add(charCode);\n\n\t\t\t\t\t// All trigger characters are also considered retrigger characters\n\t\t\t\t\tthis.retriggerChars.add(charCode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const ch of support.signatureHelpRetriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tthis.retriggerChars.add(ch.charCodeAt(0));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onDidType(text: string) {\n\t\tif (!this.triggerOnType) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lastCharIndex = text.length - 1;\n\t\tconst triggerCharCode = text.charCodeAt(lastCharIndex);\n\n\t\tif (this.triggerChars.has(triggerCharCode) || this.isTriggered && this.retriggerChars.has(triggerCharCode)) {\n\t\t\tthis.trigger({\n\t\t\t\ttriggerKind: languages.SignatureHelpTriggerKind.TriggerCharacter,\n\t\t\t\ttriggerCharacter: text.charAt(lastCharIndex),\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate onCursorChange(e: ICursorSelectionChangedEvent): void {\n\t\tif (e.source === 'mouse') {\n\t\t\tthis.cancel();\n\t\t} else if (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onModelContentChange(): void {\n\t\tif (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onEditorConfigurationChange(): void {\n\t\tthis.triggerOnType = this.editor.getOption(EditorOption.parameterHints).enabled;\n\n\t\tif (!this.triggerOnType) {\n\t\t\tthis.cancel();\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis.cancel(true);\n\t\tsuper.dispose();\n\t}\n}\n\nfunction mergeTriggerContexts(previous: TriggerContext, current: TriggerContext) {\n\tswitch (current.triggerKind) {\n\t\tcase languages.SignatureHelpTriggerKind.Invoke:\n\t\t\t// Invoke overrides previous triggers.\n\t\t\treturn current;\n\n\t\tcase languages.SignatureHelpTriggerKind.ContentChange:\n\t\t\t// Ignore content changes triggers\n\t\t\treturn previous;\n\n\t\tcase languages.SignatureHelpTriggerKind.TriggerCharacter:\n\t\tdefault:\n\t\t\treturn current;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/parameterHints/browser/parameterHintsModel.ts","vs/editor/contrib/parameterHints/browser/parameterHintsModel.ts"],"names":[],"mappings":"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","file":"parameterHintsModel.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, Delayer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport { ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport * as languages from '../../../common/languages.js';\nimport { provideSignatureHelp } from './provideSignatureHelp.js';\n\nexport interface TriggerContext {\n\treadonly triggerKind: languages.SignatureHelpTriggerKind;\n\treadonly triggerCharacter?: string;\n}\n\nnamespace ParameterHintState {\n\texport const enum Type {\n\t\tDefault,\n\t\tActive,\n\t\tPending,\n\t}\n\n\texport const Default = { type: Type.Default } as const;\n\n\texport class Pending {\n\t\treadonly type = Type.Pending;\n\t\tconstructor(\n\t\t\treadonly request: CancelablePromise<languages.SignatureHelpResult | undefined | null>,\n\t\t\treadonly previouslyActiveHints: languages.SignatureHelp | undefined,\n\t\t) { }\n\t}\n\n\texport class Active {\n\t\treadonly type = Type.Active;\n\t\tconstructor(\n\t\t\treadonly hints: languages.SignatureHelp\n\t\t) { }\n\t}\n\n\texport type State = typeof Default | Pending | Active;\n}\n\nexport class ParameterHintsModel extends Disposable {\n\n\tprivate static readonly DEFAULT_DELAY = 120; // ms\n\n\tprivate readonly _onChangedHints = this._register(new Emitter<languages.SignatureHelp | undefined>());\n\tpublic readonly onChangedHints = this._onChangedHints.event;\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate readonly providers: LanguageFeatureRegistry<languages.SignatureHelpProvider>;\n\n\tprivate triggerOnType = false;\n\tprivate _state: ParameterHintState.State = ParameterHintState.Default;\n\tprivate _pendingTriggers: TriggerContext[] = [];\n\n\tprivate readonly _lastSignatureHelpResult = this._register(new MutableDisposable<languages.SignatureHelpResult>());\n\tprivate readonly triggerChars = new CharacterSet();\n\tprivate readonly retriggerChars = new CharacterSet();\n\n\tprivate readonly throttledDelayer: Delayer<boolean>;\n\tprivate triggerId = 0;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tproviders: LanguageFeatureRegistry<languages.SignatureHelpProvider>,\n\t\tdelay: number = ParameterHintsModel.DEFAULT_DELAY\n\t) {\n\t\tsuper();\n\n\t\tthis.editor = editor;\n\t\tthis.providers = providers;\n\n\t\tthis.throttledDelayer = this._register(new Delayer(delay));\n\n\t\tthis._register(this.editor.onDidBlurEditorWidget(() => this.cancel()));\n\t\tthis._register(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));\n\t\tthis._register(this.editor.onDidChangeModel(e => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeModelLanguage(_ => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));\n\t\tthis._register(this.editor.onDidChangeModelContent(e => this.onModelContentChange()));\n\t\tthis._register(this.providers.onDidChange(this.onModelChanged, this));\n\t\tthis._register(this.editor.onDidType(text => this.onDidType(text)));\n\n\t\tthis.onEditorConfigurationChange();\n\t\tthis.onModelChanged();\n\t}\n\n\tprivate get state() { return this._state; }\n\tprivate set state(value: ParameterHintState.State) {\n\t\tif (this._state.type === ParameterHintState.Type.Pending) {\n\t\t\tthis._state.request.cancel();\n\t\t}\n\t\tthis._state = value;\n\t}\n\n\tcancel(silent: boolean = false): void {\n\t\tthis.state = ParameterHintState.Default;\n\n\t\tthis.throttledDelayer.cancel();\n\n\t\tif (!silent) {\n\t\t\tthis._onChangedHints.fire(undefined);\n\t\t}\n\t}\n\n\ttrigger(context: TriggerContext, delay?: number): void {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this.providers.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst triggerId = ++this.triggerId;\n\n\t\tthis._pendingTriggers.push(context);\n\t\tthis.throttledDelayer.trigger(() => {\n\t\t\treturn this.doTrigger(triggerId);\n\t\t}, delay)\n\t\t\t.catch(onUnexpectedError);\n\t}\n\n\tpublic next(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst last = (activeSignature % length) === (length - 1);\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on last signature of list\n\t\tif ((length < 2 || last) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(last && cycle ? 0 : activeSignature + 1);\n\t}\n\n\tpublic previous(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst first = activeSignature === 0;\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on first signature of list\n\t\tif ((length < 2 || first) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(first && cycle ? length - 1 : activeSignature - 1);\n\t}\n\n\tprivate updateActiveSignature(activeSignature: number) {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = new ParameterHintState.Active({ ...this.state.hints, activeSignature });\n\t\tthis._onChangedHints.fire(this.state.hints);\n\t}\n\n\tprivate async doTrigger(triggerId: number): Promise<boolean> {\n\t\tconst isRetrigger = this.state.type === ParameterHintState.Type.Active || this.state.type === ParameterHintState.Type.Pending;\n\t\tconst activeSignatureHelp = this.getLastActiveHints();\n\t\tthis.cancel(true);\n\n\t\tif (this._pendingTriggers.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst context: TriggerContext = this._pendingTriggers.reduce(mergeTriggerContexts);\n\t\tthis._pendingTriggers = [];\n\n\t\tconst triggerContext = {\n\t\t\ttriggerKind: context.triggerKind,\n\t\t\ttriggerCharacter: context.triggerCharacter,\n\t\t\tisRetrigger: isRetrigger,\n\t\t\tactiveSignatureHelp: activeSignatureHelp\n\t\t};\n\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tconst position = this.editor.getPosition();\n\n\t\tthis.state = new ParameterHintState.Pending(\n\t\t\tcreateCancelablePromise(token => provideSignatureHelp(this.providers, model, position, triggerContext, token)),\n\t\t\tactiveSignatureHelp);\n\n\t\ttry {\n\t\t\tconst result = await this.state.request;\n\n\t\t\t// Check that we are still resolving the correct signature help\n\t\t\tif (triggerId !== this.triggerId) {\n\t\t\t\tresult?.dispose();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!result || !result.value.signatures || result.value.signatures.length === 0) {\n\t\t\t\tresult?.dispose();\n\t\t\t\tthis._lastSignatureHelpResult.clear();\n\t\t\t\tthis.cancel();\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis.state = new ParameterHintState.Active(result.value);\n\t\t\t\tthis._lastSignatureHelpResult.value = result;\n\t\t\t\tthis._onChangedHints.fire(this.state.hints);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (triggerId === this.triggerId) {\n\t\t\t\tthis.state = ParameterHintState.Default;\n\t\t\t}\n\t\t\tonUnexpectedError(error);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate getLastActiveHints(): languages.SignatureHelp | undefined {\n\t\tswitch (this.state.type) {\n\t\t\tcase ParameterHintState.Type.Active: return this.state.hints;\n\t\t\tcase ParameterHintState.Type.Pending: return this.state.previouslyActiveHints;\n\t\t\tdefault: return undefined;\n\t\t}\n\t}\n\n\tprivate get isTriggered(): boolean {\n\t\treturn this.state.type === ParameterHintState.Type.Active\n\t\t\t|| this.state.type === ParameterHintState.Type.Pending\n\t\t\t|| this.throttledDelayer.isTriggered();\n\t}\n\n\tprivate onModelChanged(): void {\n\t\tthis.cancel();\n\n\t\tthis.triggerChars.clear();\n\t\tthis.retriggerChars.clear();\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const support of this.providers.ordered(model)) {\n\t\t\tfor (const ch of support.signatureHelpTriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tconst charCode = ch.charCodeAt(0);\n\t\t\t\t\tthis.triggerChars.add(charCode);\n\n\t\t\t\t\t// All trigger characters are also considered retrigger characters\n\t\t\t\t\tthis.retriggerChars.add(charCode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const ch of support.signatureHelpRetriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tthis.retriggerChars.add(ch.charCodeAt(0));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onDidType(text: string) {\n\t\tif (!this.triggerOnType) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lastCharIndex = text.length - 1;\n\t\tconst triggerCharCode = text.charCodeAt(lastCharIndex);\n\n\t\tif (this.triggerChars.has(triggerCharCode) || this.isTriggered && this.retriggerChars.has(triggerCharCode)) {\n\t\t\tthis.trigger({\n\t\t\t\ttriggerKind: languages.SignatureHelpTriggerKind.TriggerCharacter,\n\t\t\t\ttriggerCharacter: text.charAt(lastCharIndex),\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate onCursorChange(e: ICursorSelectionChangedEvent): void {\n\t\tif (e.source === 'mouse') {\n\t\t\tthis.cancel();\n\t\t} else if (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onModelContentChange(): void {\n\t\tif (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onEditorConfigurationChange(): void {\n\t\tthis.triggerOnType = this.editor.getOption(EditorOption.parameterHints).enabled;\n\n\t\tif (!this.triggerOnType) {\n\t\t\tthis.cancel();\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis.cancel(true);\n\t\tsuper.dispose();\n\t}\n}\n\nfunction mergeTriggerContexts(previous: TriggerContext, current: TriggerContext) {\n\tswitch (current.triggerKind) {\n\t\tcase languages.SignatureHelpTriggerKind.Invoke:\n\t\t\t// Invoke overrides previous triggers.\n\t\t\treturn current;\n\n\t\tcase languages.SignatureHelpTriggerKind.ContentChange:\n\t\t\t// Ignore content changes triggers\n\t\t\treturn previous;\n\n\t\tcase languages.SignatureHelpTriggerKind.TriggerCharacter:\n\t\tdefault:\n\t\t\treturn current;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, Delayer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport { ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport * as languages from '../../../common/languages.js';\nimport { provideSignatureHelp } from './provideSignatureHelp.js';\n\nexport interface TriggerContext {\n\treadonly triggerKind: languages.SignatureHelpTriggerKind;\n\treadonly triggerCharacter?: string;\n}\n\nnamespace ParameterHintState {\n\texport const enum Type {\n\t\tDefault,\n\t\tActive,\n\t\tPending,\n\t}\n\n\texport const Default = { type: Type.Default } as const;\n\n\texport class Pending {\n\t\treadonly type = Type.Pending;\n\t\tconstructor(\n\t\t\treadonly request: CancelablePromise<languages.SignatureHelpResult | undefined | null>,\n\t\t\treadonly previouslyActiveHints: languages.SignatureHelp | undefined,\n\t\t) { }\n\t}\n\n\texport class Active {\n\t\treadonly type = Type.Active;\n\t\tconstructor(\n\t\t\treadonly hints: languages.SignatureHelp\n\t\t) { }\n\t}\n\n\texport type State = typeof Default | Pending | Active;\n}\n\nexport class ParameterHintsModel extends Disposable {\n\n\tprivate static readonly DEFAULT_DELAY = 120; // ms\n\n\tprivate readonly _onChangedHints = this._register(new Emitter<languages.SignatureHelp | undefined>());\n\tpublic readonly onChangedHints = this._onChangedHints.event;\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate readonly providers: LanguageFeatureRegistry<languages.SignatureHelpProvider>;\n\n\tprivate triggerOnType = false;\n\tprivate _state: ParameterHintState.State = ParameterHintState.Default;\n\tprivate _pendingTriggers: TriggerContext[] = [];\n\n\tprivate readonly _lastSignatureHelpResult = this._register(new MutableDisposable<languages.SignatureHelpResult>());\n\tprivate readonly triggerChars = new CharacterSet();\n\tprivate readonly retriggerChars = new CharacterSet();\n\n\tprivate readonly throttledDelayer: Delayer<boolean>;\n\tprivate triggerId = 0;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tproviders: LanguageFeatureRegistry<languages.SignatureHelpProvider>,\n\t\tdelay: number = ParameterHintsModel.DEFAULT_DELAY\n\t) {\n\t\tsuper();\n\n\t\tthis.editor = editor;\n\t\tthis.providers = providers;\n\n\t\tthis.throttledDelayer = this._register(new Delayer(delay));\n\n\t\tthis._register(this.editor.onDidBlurEditorWidget(() => this.cancel()));\n\t\tthis._register(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));\n\t\tthis._register(this.editor.onDidChangeModel(e => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeModelLanguage(_ => this.onModelChanged()));\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));\n\t\tthis._register(this.editor.onDidChangeModelContent(e => this.onModelContentChange()));\n\t\tthis._register(this.providers.onDidChange(this.onModelChanged, this));\n\t\tthis._register(this.editor.onDidType(text => this.onDidType(text)));\n\n\t\tthis.onEditorConfigurationChange();\n\t\tthis.onModelChanged();\n\t}\n\n\tprivate get state() { return this._state; }\n\tprivate set state(value: ParameterHintState.State) {\n\t\tif (this._state.type === ParameterHintState.Type.Pending) {\n\t\t\tthis._state.request.cancel();\n\t\t}\n\t\tthis._state = value;\n\t}\n\n\tcancel(silent: boolean = false): void {\n\t\tthis.state = ParameterHintState.Default;\n\n\t\tthis.throttledDelayer.cancel();\n\n\t\tif (!silent) {\n\t\t\tthis._onChangedHints.fire(undefined);\n\t\t}\n\t}\n\n\ttrigger(context: TriggerContext, delay?: number): void {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this.providers.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst triggerId = ++this.triggerId;\n\n\t\tthis._pendingTriggers.push(context);\n\t\tthis.throttledDelayer.trigger(() => {\n\t\t\treturn this.doTrigger(triggerId);\n\t\t}, delay)\n\t\t\t.catch(onUnexpectedError);\n\t}\n\n\tpublic next(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst last = (activeSignature % length) === (length - 1);\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on last signature of list\n\t\tif ((length < 2 || last) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(last && cycle ? 0 : activeSignature + 1);\n\t}\n\n\tpublic previous(): void {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst length = this.state.hints.signatures.length;\n\t\tconst activeSignature = this.state.hints.activeSignature;\n\t\tconst first = activeSignature === 0;\n\t\tconst cycle = this.editor.getOption(EditorOption.parameterHints).cycle;\n\n\t\t// If there is only one signature, or we're on first signature of list\n\t\tif ((length < 2 || first) && !cycle) {\n\t\t\tthis.cancel();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateActiveSignature(first && cycle ? length - 1 : activeSignature - 1);\n\t}\n\n\tprivate updateActiveSignature(activeSignature: number) {\n\t\tif (this.state.type !== ParameterHintState.Type.Active) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = new ParameterHintState.Active({ ...this.state.hints, activeSignature });\n\t\tthis._onChangedHints.fire(this.state.hints);\n\t}\n\n\tprivate async doTrigger(triggerId: number): Promise<boolean> {\n\t\tconst isRetrigger = this.state.type === ParameterHintState.Type.Active || this.state.type === ParameterHintState.Type.Pending;\n\t\tconst activeSignatureHelp = this.getLastActiveHints();\n\t\tthis.cancel(true);\n\n\t\tif (this._pendingTriggers.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst context: TriggerContext = this._pendingTriggers.reduce(mergeTriggerContexts);\n\t\tthis._pendingTriggers = [];\n\n\t\tconst triggerContext = {\n\t\t\ttriggerKind: context.triggerKind,\n\t\t\ttriggerCharacter: context.triggerCharacter,\n\t\t\tisRetrigger: isRetrigger,\n\t\t\tactiveSignatureHelp: activeSignatureHelp\n\t\t};\n\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tconst position = this.editor.getPosition();\n\n\t\tthis.state = new ParameterHintState.Pending(\n\t\t\tcreateCancelablePromise(token => provideSignatureHelp(this.providers, model, position, triggerContext, token)),\n\t\t\tactiveSignatureHelp);\n\n\t\ttry {\n\t\t\tconst result = await this.state.request;\n\n\t\t\t// Check that we are still resolving the correct signature help\n\t\t\tif (triggerId !== this.triggerId) {\n\t\t\t\tresult?.dispose();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!result || !result.value.signatures || result.value.signatures.length === 0) {\n\t\t\t\tresult?.dispose();\n\t\t\t\tthis._lastSignatureHelpResult.clear();\n\t\t\t\tthis.cancel();\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis.state = new ParameterHintState.Active(result.value);\n\t\t\t\tthis._lastSignatureHelpResult.value = result;\n\t\t\t\tthis._onChangedHints.fire(this.state.hints);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (triggerId === this.triggerId) {\n\t\t\t\tthis.state = ParameterHintState.Default;\n\t\t\t}\n\t\t\tonUnexpectedError(error);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate getLastActiveHints(): languages.SignatureHelp | undefined {\n\t\tswitch (this.state.type) {\n\t\t\tcase ParameterHintState.Type.Active: return this.state.hints;\n\t\t\tcase ParameterHintState.Type.Pending: return this.state.previouslyActiveHints;\n\t\t\tdefault: return undefined;\n\t\t}\n\t}\n\n\tprivate get isTriggered(): boolean {\n\t\treturn this.state.type === ParameterHintState.Type.Active\n\t\t\t|| this.state.type === ParameterHintState.Type.Pending\n\t\t\t|| this.throttledDelayer.isTriggered();\n\t}\n\n\tprivate onModelChanged(): void {\n\t\tthis.cancel();\n\n\t\tthis.triggerChars.clear();\n\t\tthis.retriggerChars.clear();\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const support of this.providers.ordered(model)) {\n\t\t\tfor (const ch of support.signatureHelpTriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tconst charCode = ch.charCodeAt(0);\n\t\t\t\t\tthis.triggerChars.add(charCode);\n\n\t\t\t\t\t// All trigger characters are also considered retrigger characters\n\t\t\t\t\tthis.retriggerChars.add(charCode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const ch of support.signatureHelpRetriggerCharacters || []) {\n\t\t\t\tif (ch.length) {\n\t\t\t\t\tthis.retriggerChars.add(ch.charCodeAt(0));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onDidType(text: string) {\n\t\tif (!this.triggerOnType) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lastCharIndex = text.length - 1;\n\t\tconst triggerCharCode = text.charCodeAt(lastCharIndex);\n\n\t\tif (this.triggerChars.has(triggerCharCode) || this.isTriggered && this.retriggerChars.has(triggerCharCode)) {\n\t\t\tthis.trigger({\n\t\t\t\ttriggerKind: languages.SignatureHelpTriggerKind.TriggerCharacter,\n\t\t\t\ttriggerCharacter: text.charAt(lastCharIndex),\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate onCursorChange(e: ICursorSelectionChangedEvent): void {\n\t\tif (e.source === 'mouse') {\n\t\t\tthis.cancel();\n\t\t} else if (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onModelContentChange(): void {\n\t\tif (this.isTriggered) {\n\t\t\tthis.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n\t\t}\n\t}\n\n\tprivate onEditorConfigurationChange(): void {\n\t\tthis.triggerOnType = this.editor.getOption(EditorOption.parameterHints).enabled;\n\n\t\tif (!this.triggerOnType) {\n\t\t\tthis.cancel();\n\t\t}\n\t}\n\n\toverride dispose(): void {\n\t\tthis.cancel(true);\n\t\tsuper.dispose();\n\t}\n}\n\nfunction mergeTriggerContexts(previous: TriggerContext, current: TriggerContext) {\n\tswitch (current.triggerKind) {\n\t\tcase languages.SignatureHelpTriggerKind.Invoke:\n\t\t\t// Invoke overrides previous triggers.\n\t\t\treturn current;\n\n\t\tcase languages.SignatureHelpTriggerKind.ContentChange:\n\t\t\t// Ignore content changes triggers\n\t\t\treturn previous;\n\n\t\tcase languages.SignatureHelpTriggerKind.TriggerCharacter:\n\t\tdefault:\n\t\t\treturn current;\n\t}\n}\n"]}