monaco-editor-core 0.56.0-dev-20251125 → 0.56.0-dev-20251218

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 (410) 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 +34 -6
  18. package/esm/vs/base/browser/dom.js +1 -4
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/markdownRenderer.js +25 -11
  21. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  22. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
  23. package/esm/vs/base/browser/ui/button/button.js +15 -8
  24. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  25. package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
  26. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  27. package/esm/vs/base/browser/ui/findinput/findInput.js +6 -1
  28. package/esm/vs/base/browser/ui/findinput/findInput.js.map +1 -1
  29. package/esm/vs/base/browser/ui/inputbox/inputBox.js +17 -1
  30. package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
  31. package/esm/vs/base/browser/ui/list/list.css +1 -0
  32. package/esm/vs/base/browser/ui/toggle/toggle.js +78 -6
  33. package/esm/vs/base/browser/ui/toggle/toggle.js.map +1 -1
  34. package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
  35. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  36. package/esm/vs/base/common/codiconsLibrary.js +11 -2
  37. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  38. package/esm/vs/base/common/defaultAccount.js +6 -0
  39. package/esm/vs/base/common/defaultAccount.js.map +1 -0
  40. package/esm/vs/base/common/equals.js +73 -24
  41. package/esm/vs/base/common/equals.js.map +1 -1
  42. package/esm/vs/base/common/event.js +14 -4
  43. package/esm/vs/base/common/event.js.map +1 -1
  44. package/esm/vs/base/common/iterator.js.map +1 -1
  45. package/esm/vs/base/common/keybindings.js +0 -8
  46. package/esm/vs/base/common/keybindings.js.map +1 -1
  47. package/esm/vs/base/common/lifecycle.js +2 -2
  48. package/esm/vs/base/common/lifecycle.js.map +1 -1
  49. package/esm/vs/base/common/marshallingIds.js.map +1 -1
  50. package/esm/vs/base/common/observableInternal/index.js +1 -1
  51. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  52. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
  53. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  54. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
  55. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  56. package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
  57. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  58. package/esm/vs/base/common/product.js.map +1 -1
  59. package/esm/vs/base/common/strings.js +3 -1
  60. package/esm/vs/base/common/strings.js.map +1 -1
  61. package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
  62. package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
  63. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
  64. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  65. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
  66. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  67. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
  68. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
  69. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  70. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
  71. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  72. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
  73. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
  74. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
  75. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
  76. package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
  77. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  78. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  79. package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
  80. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  81. package/esm/vs/editor/browser/services/editorWorkerService.js +6 -2
  82. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  83. package/esm/vs/editor/browser/view.js +11 -2
  84. package/esm/vs/editor/browser/view.js.map +1 -1
  85. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
  86. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  87. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
  88. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  89. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  90. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
  91. package/esm/vs/editor/common/config/editorConfigurationSchema.js +49 -47
  92. package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
  93. package/esm/vs/editor/common/config/editorOptions.js +410 -410
  94. package/esm/vs/editor/common/config/fontInfo.js +1 -1
  95. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  96. package/esm/vs/editor/common/core/editorColorRegistry.js +69 -69
  97. package/esm/vs/editor/common/core/edits/edit.js +19 -0
  98. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  99. package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
  100. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  101. package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
  102. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  103. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
  104. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
  105. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  106. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  107. package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
  108. package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
  109. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  110. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
  111. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
  112. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  113. package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
  114. package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
  115. package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
  116. package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
  117. package/esm/vs/editor/common/languages.js +58 -57
  118. package/esm/vs/editor/common/languages.js.map +1 -1
  119. package/esm/vs/editor/common/model/decorationProvider.js +21 -1
  120. package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
  121. package/esm/vs/editor/common/model/editStack.js +1 -1
  122. package/esm/vs/editor/common/model/textModel.js +49 -30
  123. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  124. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
  125. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
  126. package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
  127. package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
  128. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
  129. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
  130. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
  131. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
  132. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
  133. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
  134. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  135. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  136. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  137. package/esm/vs/editor/common/textModelEvents.js.map +1 -1
  138. package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
  139. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +3 -3
  140. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  141. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  142. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  143. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  144. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  145. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +71 -53
  146. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  147. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  148. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  149. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  150. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  151. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  152. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  153. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  154. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  155. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  156. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  157. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  158. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  159. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  160. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  161. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  162. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +23 -10
  163. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  164. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  165. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  166. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  167. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  168. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  169. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  170. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  171. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  172. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  173. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  174. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  175. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  176. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  177. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  178. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  179. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  180. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  181. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  182. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  183. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  184. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  185. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  186. package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
  187. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  188. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  189. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  190. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -10
  191. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  192. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  193. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  194. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  195. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
  196. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  197. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  198. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
  199. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
  200. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +50 -21
  201. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  202. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
  203. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
  204. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
  205. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  206. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  207. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  208. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
  209. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  210. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
  211. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
  212. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
  213. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
  214. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
  215. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
  216. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
  217. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  218. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
  219. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  220. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
  221. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  222. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
  223. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  224. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
  225. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
  226. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  227. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
  228. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
  229. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
  230. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  231. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
  232. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  233. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
  234. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  235. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
  236. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  237. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
  238. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  239. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
  240. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  241. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
  242. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  243. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
  244. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  245. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
  246. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
  247. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
  248. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
  249. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
  250. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
  251. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
  252. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  253. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
  254. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
  255. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
  256. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
  257. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
  258. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
  259. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
  260. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
  261. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
  262. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  263. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
  264. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  265. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
  266. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
  267. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
  268. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
  269. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
  270. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
  271. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
  272. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  273. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
  274. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
  275. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  276. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  277. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  278. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  279. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  280. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  281. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  282. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  283. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  284. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  285. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  286. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  287. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  288. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +25 -27
  289. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  290. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  291. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  292. package/esm/vs/editor/contrib/rename/browser/rename.js +19 -15
  293. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  294. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  295. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
  296. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
  297. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  298. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  299. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
  300. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
  301. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  302. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  303. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
  304. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  305. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
  306. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  307. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
  308. package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
  309. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
  310. package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
  311. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
  312. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
  313. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
  314. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  315. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
  316. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  317. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  318. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  319. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  320. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  321. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  322. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  323. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  324. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  325. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  326. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  327. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
  328. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
  329. package/esm/vs/editor/editor.api.d.ts +34 -3
  330. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
  331. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  332. package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
  333. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  334. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
  335. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
  336. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  337. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  338. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  339. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
  340. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  341. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  342. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  343. package/esm/vs/platform/actions/common/actions.js +11 -5
  344. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  345. package/esm/vs/platform/actions/common/menuService.js +2 -2
  346. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  347. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  348. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  349. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  350. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  351. package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
  352. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
  353. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  354. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  355. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  356. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  357. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
  358. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  359. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  360. package/esm/vs/platform/list/browser/listService.js +27 -27
  361. package/esm/vs/platform/log/common/log.js +1 -1
  362. package/esm/vs/platform/log/common/log.js.map +1 -1
  363. package/esm/vs/platform/markers/common/markerService.js +6 -6
  364. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  365. package/esm/vs/platform/markers/common/markers.js +6 -6
  366. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  367. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  368. package/esm/vs/platform/quickinput/browser/media/quickInput.css +45 -7
  369. package/esm/vs/platform/quickinput/browser/quickInput.js +51 -15
  370. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  371. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  372. package/esm/vs/platform/quickinput/browser/quickInputBox.js +13 -1
  373. package/esm/vs/platform/quickinput/browser/quickInputBox.js.map +1 -1
  374. package/esm/vs/platform/quickinput/browser/quickInputController.js +22 -12
  375. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  376. package/esm/vs/platform/quickinput/browser/quickInputList.js +17 -12
  377. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  378. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +36 -8
  379. package/esm/vs/platform/quickinput/browser/quickInputUtils.js.map +1 -1
  380. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  381. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +3 -3
  382. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  383. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +8 -4
  384. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
  385. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  386. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  387. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
  388. package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
  389. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  390. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  391. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  392. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  393. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  394. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  395. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  396. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  397. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  398. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  399. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  400. package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
  401. package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
  402. package/esm/vs/platform/window/common/window.js +1 -1
  403. package/esm/vs/platform/window/common/window.js.map +1 -1
  404. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  405. package/monaco.d.ts +34 -3
  406. package/package.json +2 -2
  407. package/version.txt +1 -1
  408. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
  409. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
  410. package/esm/vs/platform/product/common/productService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.ts"],"names":[],"mappings":"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","file":"inlineCompletionsController.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 { alert } from '../../../../../base/browser/ui/aria/aria.js';\nimport { timeout } from '../../../../../base/common/async.js';\nimport { cancelOnDispose } from '../../../../../base/common/cancellation.js';\nimport { createHotClass } from '../../../../../base/common/hotReloadHelpers.js';\nimport { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { ITransaction, autorun, derived, derivedDisposable, derivedObservableWithCache, observableFromEvent, observableSignal, observableValue, runOnChange, runOnChangeWithStore, transaction, waitForState } from '../../../../../base/common/observable.js';\nimport { isEqual } from '../../../../../base/common/resources.js';\nimport { isUndefined } from '../../../../../base/common/types.js';\nimport { localize } from '../../../../../nls.js';\nimport { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { ICommandService } from '../../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { hotClassGetOriginalInstance } from '../../../../../platform/observable/common/wrapInHotClass.js';\nimport { CoreEditingCommands } from '../../../../browser/coreCommands.js';\nimport { ICodeEditor } from '../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../browser/observableCodeEditor.js';\nimport { TriggerInlineEditCommandsRegistry } from '../../../../browser/triggerInlineEditCommandsRegistry.js';\nimport { getOuterEditor } from '../../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { CursorChangeReason } from '../../../../common/cursorEvents.js';\nimport { ILanguageFeatureDebounceService } from '../../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nimport { FIND_IDS } from '../../../find/browser/findModel.js';\nimport { InsertLineAfterAction, InsertLineBeforeAction } from '../../../linesOperations/browser/linesOperations.js';\nimport { InlineSuggestionHintsContentWidget } from '../hintsWidget/inlineCompletionsHintsWidget.js';\nimport { TextModelChangeRecorder } from '../model/changeRecorder.js';\nimport { InlineCompletionsModel } from '../model/inlineCompletionsModel.js';\nimport { ObservableSuggestWidgetAdapter } from '../model/suggestWidgetAdapter.js';\nimport { ObservableContextKeyService } from '../utils.js';\nimport { InlineSuggestionsView } from '../view/inlineSuggestionsView.js';\nimport { inlineSuggestCommitId } from './commandIds.js';\nimport { InlineCompletionContextKeys } from './inlineCompletionContextKeys.js';\n\nexport class InlineCompletionsController extends Disposable {\n\tprivate static readonly _instances = new Set<InlineCompletionsController>();\n\n\tpublic static hot = createHotClass(this);\n\tpublic static ID = 'editor.contrib.inlineCompletionsController';\n\n\t/**\n\t * Find the controller in the focused editor or in the outer editor (if applicable)\n\t */\n\tpublic static getInFocusedEditorOrParent(accessor: ServicesAccessor): InlineCompletionsController | null {\n\t\tconst outerEditor = getOuterEditor(accessor);\n\t\tif (!outerEditor) {\n\t\t\treturn null;\n\t\t}\n\t\treturn InlineCompletionsController.get(outerEditor);\n\t}\n\n\tpublic static get(editor: ICodeEditor): InlineCompletionsController | null {\n\t\treturn hotClassGetOriginalInstance(editor.getContribution<InlineCompletionsController>(InlineCompletionsController.ID));\n\t}\n\n\tprivate readonly _editorObs;\n\tprivate readonly _positions;\n\n\tprivate readonly _suggestWidgetAdapter;\n\n\tprivate readonly _enabledInConfig;\n\tprivate readonly _isScreenReaderEnabled;\n\tprivate readonly _editorDictationInProgress;\n\tprivate readonly _enabled = derived(this, reader => this._enabledInConfig.read(reader) && (!this._isScreenReaderEnabled.read(reader) || !this._editorDictationInProgress.read(reader)));\n\n\tprivate readonly _debounceValue;\n\n\tprivate readonly _focusIsInMenu = observableValue<boolean>(this, false);\n\tprivate readonly _focusIsInEditorOrMenu = derived(this, reader => {\n\t\tconst editorHasFocus = this._editorObs.isFocused.read(reader);\n\t\tconst menuHasFocus = this._focusIsInMenu.read(reader);\n\t\treturn editorHasFocus || menuHasFocus;\n\t});\n\n\tprivate readonly _cursorIsInIndentation = derived(this, reader => {\n\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\tif (cursorPos === null) { return false; }\n\t\tconst model = this._editorObs.model.read(reader);\n\t\tif (!model) { return false; }\n\t\tthis._editorObs.versionId.read(reader);\n\t\tconst indentMaxColumn = model.getLineIndentColumn(cursorPos.lineNumber);\n\t\treturn cursorPos.column <= indentMaxColumn;\n\t});\n\n\tpublic readonly model = derivedDisposable<InlineCompletionsModel | undefined>(this, reader => {\n\t\tif (this._editorObs.isReadonly.read(reader)) { return undefined; }\n\t\tconst textModel = this._editorObs.model.read(reader);\n\t\tif (!textModel) { return undefined; }\n\n\t\tconst model: InlineCompletionsModel = this._instantiationService.createInstance(\n\t\t\tInlineCompletionsModel,\n\t\t\ttextModel,\n\t\t\tthis._suggestWidgetAdapter.selectedItem,\n\t\t\tthis._editorObs.versionId,\n\t\t\tthis._positions,\n\t\t\tthis._debounceValue,\n\t\t\tthis._enabled,\n\t\t\tthis.editor,\n\t\t);\n\t\treturn model;\n\t});\n\n\tprivate readonly _playAccessibilitySignal = observableSignal(this);\n\n\tprivate readonly _hideInlineEditOnSelectionChange;\n\n\tprotected readonly _view = derived(reader => reader.store.add(this._instantiationService.createInstance(InlineSuggestionsView.hot.read(reader), this.editor, this.model, this._focusIsInMenu)));\n\n\tconstructor(\n\t\tpublic readonly editor: ICodeEditor,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@ILanguageFeatureDebounceService private readonly _debounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IAccessibilityService private readonly _accessibilityService: IAccessibilityService\n\t) {\n\t\tsuper();\n\t\tthis._editorObs = observableCodeEditor(this.editor);\n\t\tthis._positions = derived(this, reader => this._editorObs.selections.read(reader)?.map(s => s.getEndPosition()) ?? [new Position(1, 1)]);\n\t\tthis._suggestWidgetAdapter = this._register(new ObservableSuggestWidgetAdapter(\n\t\t\tthis._editorObs,\n\t\t\titem => this.model.get()?.handleSuggestAccepted(item),\n\t\t\t() => this.model.get()?.selectedInlineCompletion.get()?.getSingleTextEdit(),\n\t\t));\n\t\tthis._enabledInConfig = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.inlineSuggest).enabled);\n\t\tthis._isScreenReaderEnabled = observableFromEvent(this, this._accessibilityService.onDidChangeScreenReaderOptimized, () => this._accessibilityService.isScreenReaderOptimized());\n\t\tthis._editorDictationInProgress = observableFromEvent(this,\n\t\t\tthis._contextKeyService.onDidChangeContext,\n\t\t\t() => this._contextKeyService.getContext(this.editor.getDomNode()).getValue('editorDictation.inProgress') === true\n\t\t);\n\n\t\tthis._debounceValue = this._debounceService.for(\n\t\t\tthis._languageFeaturesService.inlineCompletionsProvider,\n\t\t\t'InlineCompletionsDebounce',\n\t\t\t{ min: 50, max: 50 }\n\t\t);\n\t\tthis.model.recomputeInitiallyAndOnChange(this._store);\n\t\tthis._hideInlineEditOnSelectionChange = this._editorObs.getOption(EditorOption.inlineSuggest).map(val => true);\n\n\t\tthis._view.recomputeInitiallyAndOnChange(this._store);\n\n\t\tInlineCompletionsController._instances.add(this);\n\t\tthis._register(toDisposable(() => InlineCompletionsController._instances.delete(this)));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tconst state = model.state.read(reader);\n\t\t\tif (!state) { return; }\n\t\t\tif (!this._focusIsInEditorOrMenu.read(undefined)) { return; }\n\n\t\t\t// This controller is in focus, hence reject others.\n\t\t\t// However if we display a NES that relates to another edit then trigger NES on that related controller\n\t\t\tconst nextEditUri = state.kind === 'inlineEdit' ? state.nextEditUri : undefined;\n\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\tif (ctrl === this) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (nextEditUri && isEqual(nextEditUri, ctrl.editor.getModel()?.uri)) {\n\t\t\t\t\t// The next edit in other edito is related to this controller, trigger it.\n\t\t\t\t\tctrl.model.read(undefined)?.trigger();\n\t\t\t\t} else {\n\t\t\t\t\tctrl.reject();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst uri = this.editor.getModel()?.uri;\n\t\t\tif (!model || !uri) { return; }\n\n\t\t\t// This NES was accepted, its possible there is an NES that points to this editor.\n\t\t\t// I.e. there's an NES that reads `Go To Next Edit`,\n\t\t\t// If there is one that points to this editor, then we need to hide that as this NES was accepted.\n\t\t\treader.store.add(model.onDidAccept(() => {\n\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\tif (ctrl === this) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// Find the nes from another editor that points to this.\n\t\t\t\t\tconst state = ctrl.model.read(undefined)?.state.read(undefined);\n\t\t\t\t\tif (state?.kind === 'inlineEdit' && isEqual(state.nextEditUri, uri)) {\n\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidType, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidPaste, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\t// These commands don't trigger onDidType.\n\t\tconst triggerCommands = new Set([\n\t\t\tCoreEditingCommands.Tab.id,\n\t\t\tCoreEditingCommands.DeleteLeft.id,\n\t\t\tCoreEditingCommands.DeleteRight.id,\n\t\t\tinlineSuggestCommitId,\n\t\t\t'acceptSelectedSuggestion',\n\t\t\tInsertLineAfterAction.ID,\n\t\t\tInsertLineBeforeAction.ID,\n\t\t\tFIND_IDS.NextMatchFindAction,\n\t\t\t...TriggerInlineEditCommandsRegistry.getRegisteredCommands(),\n\t\t]);\n\t\tthis._register(this._commandService.onDidExecuteCommand((e) => {\n\t\t\tif (triggerCommands.has(e.commandId) && editor.hasTextFocus() && this._enabled.get()) {\n\t\t\t\tlet noDelay = false;\n\t\t\t\tif (e.commandId === inlineSuggestCommitId) {\n\t\t\t\t\tnoDelay = true;\n\t\t\t\t}\n\t\t\t\tthis._editorObs.forceUpdate(tx => {\n\t\t\t\t\t/** @description onDidExecuteCommand */\n\t\t\t\t\tthis.model.get()?.trigger(tx, { noDelay });\n\t\t\t\t});\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.selections, (_value, _, changes) => {\n\t\t\tif (changes.some(e => e.reason === CursorChangeReason.Explicit || e.source === 'api')) {\n\t\t\t\tif (!this._hideInlineEditOnSelectionChange.get() && this.model.get()?.state.get()?.kind === 'inlineEdit') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst m = this.model.get();\n\t\t\t\tif (!m) { return; }\n\t\t\t\tif (m.state.get()?.kind === 'ghostText') {\n\t\t\t\t\tthis.model.get()?.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isFocused = this._focusIsInEditorOrMenu.read(reader);\n\t\t\tconst model = this.model.read(undefined);\n\t\t\tif (isFocused) {\n\t\t\t\t// If this model already has an NES for another editor, then leave as is\n\t\t\t\t// Else stop other models.\n\t\t\t\tconst state = model?.state.read(undefined);\n\t\t\t\tif (!state || state.kind !== 'inlineEdit' || !state.nextEditUri) {\n\t\t\t\t\ttransaction(tx => {\n\t\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic', tx);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This is a hidden setting very useful for debugging\n\t\t\tif (this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown')\n\t\t\t\t|| this._configurationService.getValue('editor.inlineSuggest.keepOnBlur')\n\t\t\t\t|| editor.getOption(EditorOption.inlineSuggest).keepOnBlur\n\t\t\t\t|| InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!model) { return; }\n\t\t\tif (model.state.read(undefined)?.inlineSuggestion?.isFromExplicitRequest && model.inlineEditAvailable.read(undefined)) {\n\t\t\t\t// dont hide inline edits on blur when requested explicitly\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttransaction(tx => {\n\t\t\t\t/** @description InlineCompletionsController.onDidBlurEditorWidget */\n\t\t\t\tmodel.stop('automatic', tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description InlineCompletionsController.forceRenderingAbove */\n\t\t\tconst state = this.model.read(reader)?.inlineCompletionState.read(reader);\n\t\t\tif (state?.suggestItem) {\n\t\t\t\tif (state.primaryGhostText.lineCount >= 2) {\n\t\t\t\t\tthis._suggestWidgetAdapter.forceRenderingAbove();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t\t}\n\t\t}));\n\t\tthis._register(toDisposable(() => {\n\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t}));\n\n\t\tconst currentInlineCompletionBySemanticId = derivedObservableWithCache<string | undefined>(this, (reader, last) => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.state.read(reader);\n\t\t\tif (this._suggestWidgetAdapter.selectedItem.get()) {\n\t\t\t\treturn last;\n\t\t\t}\n\t\t\treturn state?.inlineSuggestion?.semanticId;\n\t\t});\n\t\tthis._register(runOnChangeWithStore(derived(reader => {\n\t\t\tthis._playAccessibilitySignal.read(reader);\n\t\t\tcurrentInlineCompletionBySemanticId.read(reader);\n\t\t\treturn {};\n\t\t}), async (_value, _, _deltas, store) => {\n\t\t\t/** @description InlineCompletionsController.playAccessibilitySignalAndReadSuggestion */\n\t\t\tlet model = this.model.get();\n\t\t\tlet state = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\n\t\t\tawait timeout(50, cancelOnDispose(store));\n\t\t\tawait waitForState(this._suggestWidgetAdapter.selectedItem, isUndefined, () => false, cancelOnDispose(store));\n\n\t\t\tmodel = this.model.get();\n\t\t\tstate = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\t\t\tconst lineText = state.kind === 'ghostText' ? model.textModel.getLineContent(state.primaryGhostText.lineNumber) : '';\n\t\t\tthis._accessibilitySignalService.playSignal(state.kind === 'ghostText' ? AccessibilitySignal.inlineSuggestion : AccessibilitySignal.nextEditSuggestion);\n\n\t\t\tif (this.editor.getOption(EditorOption.screenReaderAnnounceInlineSuggestion)) {\n\t\t\t\tif (state.kind === 'ghostText') {\n\t\t\t\t\tthis._provideScreenReaderUpdate(state.primaryGhostText.renderForScreenReader(lineText));\n\t\t\t\t} else {\n\t\t\t\t\tthis._provideScreenReaderUpdate(''); // Only announce Alt+F2\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\t// TODO@hediet\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration('accessibility.verbosity.inlineCompletions')) {\n\t\t\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\t\t\t}\n\t\t}));\n\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\n\t\tconst contextKeySvcObs = new ObservableContextKeyService(this._contextKeyService);\n\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorInIndentation, this._cursorIsInIndentation));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.hasSelection, reader => !this._editorObs.cursorSelection.read(reader)?.isEmpty()));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorAtInlineEdit, this.model.map((m, reader) => m?.inlineEditState?.read(reader)?.cursorAtInlineEdit.read(reader))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldAcceptInlineEdit, this.model.map((m, r) => !!m?.tabShouldAcceptInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldJumpToInlineEdit, this.model.map((m, r) => !!m?.tabShouldJumpToInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineEditVisible, reader => this.model.read(reader)?.inlineEditState.read(reader) !== undefined));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentation,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentation\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentationLessThanTabSize\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.suppressSuggestions, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn state?.primaryGhostText && state?.inlineSuggestion ? state.inlineSuggestion.source.inlineSuggestions.suppressSuggestions : undefined;\n\t\t}));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionVisible, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn !!state?.inlineSuggestion && state?.primaryGhostText !== undefined && !state?.primaryGhostText.isEmpty();\n\t\t}));\n\t\tconst firstGhostTextPos = derived(this, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\tconst primaryGhostText = state?.primaryGhostText;\n\t\t\tif (!primaryGhostText || primaryGhostText.isEmpty()) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst firstPartPos = new Position(primaryGhostText.lineNumber, primaryGhostText.parts[0].column);\n\t\t\treturn firstPartPos;\n\t\t});\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorBeforeGhostText, reader => {\n\t\t\tconst firstPartPos = firstGhostTextPos.read(reader);\n\t\t\tif (!firstPartPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (!cursorPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn firstPartPos.equals(cursorPos);\n\t\t}));\n\n\t\tthis._register(this._instantiationService.createInstance(TextModelChangeRecorder, this.editor));\n\t}\n\n\tpublic playAccessibilitySignal(tx: ITransaction) {\n\t\tthis._playAccessibilitySignal.trigger(tx);\n\t}\n\n\tprivate _provideScreenReaderUpdate(content: string): void {\n\t\tconst accessibleViewShowing = this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown');\n\t\tconst accessibleViewKeybinding = this._keybindingService.lookupKeybinding('editor.action.accessibleView');\n\t\tlet hint: string | undefined;\n\t\tif (!accessibleViewShowing && accessibleViewKeybinding && this.editor.getOption(EditorOption.inlineCompletionsAccessibilityVerbose)) {\n\t\t\thint = localize('showAccessibleViewHint', \"Inspect this in the accessible view ({0})\", accessibleViewKeybinding.getAriaLabel());\n\t\t}\n\t\talert(hint ? content + ', ' + hint : content);\n\t}\n\n\tpublic shouldShowHoverAt(range: Range) {\n\t\tconst ghostText = this.model.get()?.primaryGhostText.get();\n\t\tif (!ghostText) {\n\t\t\treturn false;\n\t\t}\n\t\treturn ghostText.parts.some(p => range.containsPosition(new Position(ghostText.lineNumber, p.column)));\n\t}\n\n\tpublic shouldShowHoverAtViewZone(viewZoneId: string): boolean {\n\t\treturn this._view.get().shouldShowHoverAtViewZone(viewZoneId);\n\t}\n\n\tpublic reject(): void {\n\t\ttransaction(tx => {\n\t\t\tconst m = this.model.get();\n\t\t\tif (m) {\n\t\t\t\tm.stop('explicitCancel', tx);\n\t\t\t\t// Only if this controller is in focus can we cancel others.\n\t\t\t\tif (this._focusIsInEditorOrMenu.get()) {\n\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\tctrl.model.get()?.stop('automatic', tx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic jump(): void {\n\t\tconst m = this.model.get();\n\t\tif (m) {\n\t\t\tm.jump();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.ts"],"names":[],"mappings":"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","file":"inlineCompletionsController.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 { alert } from '../../../../../base/browser/ui/aria/aria.js';\nimport { timeout } from '../../../../../base/common/async.js';\nimport { cancelOnDispose } from '../../../../../base/common/cancellation.js';\nimport { createHotClass } from '../../../../../base/common/hotReloadHelpers.js';\nimport { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { ITransaction, autorun, derived, derivedDisposable, derivedObservableWithCache, observableFromEvent, observableSignal, observableValue, runOnChange, runOnChangeWithStore, transaction, waitForState } from '../../../../../base/common/observable.js';\nimport { isEqual } from '../../../../../base/common/resources.js';\nimport { isUndefined } from '../../../../../base/common/types.js';\nimport { localize } from '../../../../../nls.js';\nimport { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { ICommandService } from '../../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { hotClassGetOriginalInstance } from '../../../../../platform/observable/common/wrapInHotClass.js';\nimport { CoreEditingCommands } from '../../../../browser/coreCommands.js';\nimport { ICodeEditor } from '../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../browser/observableCodeEditor.js';\nimport { TriggerInlineEditCommandsRegistry } from '../../../../browser/triggerInlineEditCommandsRegistry.js';\nimport { getOuterEditor } from '../../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { CursorChangeReason } from '../../../../common/cursorEvents.js';\nimport { ILanguageFeatureDebounceService } from '../../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nimport { FIND_IDS } from '../../../find/browser/findModel.js';\nimport { InsertLineAfterAction, InsertLineBeforeAction } from '../../../linesOperations/browser/linesOperations.js';\nimport { InlineSuggestionHintsContentWidget } from '../hintsWidget/inlineCompletionsHintsWidget.js';\nimport { TextModelChangeRecorder } from '../model/changeRecorder.js';\nimport { InlineCompletionsModel } from '../model/inlineCompletionsModel.js';\nimport { ObservableSuggestWidgetAdapter } from '../model/suggestWidgetAdapter.js';\nimport { ObservableContextKeyService } from '../utils.js';\nimport { InlineSuggestionsView } from '../view/inlineSuggestionsView.js';\nimport { inlineSuggestCommitId } from './commandIds.js';\nimport { InlineCompletionContextKeys } from './inlineCompletionContextKeys.js';\n\nexport class InlineCompletionsController extends Disposable {\n\tprivate static readonly _instances = new Set<InlineCompletionsController>();\n\n\tpublic static hot = createHotClass(this);\n\tpublic static ID = 'editor.contrib.inlineCompletionsController';\n\n\t/**\n\t * Find the controller in the focused editor or in the outer editor (if applicable)\n\t */\n\tpublic static getInFocusedEditorOrParent(accessor: ServicesAccessor): InlineCompletionsController | null {\n\t\tconst outerEditor = getOuterEditor(accessor);\n\t\tif (!outerEditor) {\n\t\t\treturn null;\n\t\t}\n\t\treturn InlineCompletionsController.get(outerEditor);\n\t}\n\n\tpublic static get(editor: ICodeEditor): InlineCompletionsController | null {\n\t\treturn hotClassGetOriginalInstance(editor.getContribution<InlineCompletionsController>(InlineCompletionsController.ID));\n\t}\n\n\tprivate readonly _editorObs;\n\tprivate readonly _positions;\n\n\tprivate readonly _suggestWidgetAdapter;\n\n\tprivate readonly _enabledInConfig;\n\tprivate readonly _isScreenReaderEnabled;\n\tprivate readonly _editorDictationInProgress;\n\tprivate readonly _enabled = derived(this, reader => this._enabledInConfig.read(reader) && (!this._isScreenReaderEnabled.read(reader) || !this._editorDictationInProgress.read(reader)));\n\n\tprivate readonly _debounceValue;\n\n\tprivate readonly _focusIsInMenu = observableValue<boolean>(this, false);\n\tprivate readonly _focusIsInEditorOrMenu = derived(this, reader => {\n\t\tconst editorHasFocus = this._editorObs.isFocused.read(reader);\n\t\tconst menuHasFocus = this._focusIsInMenu.read(reader);\n\t\treturn editorHasFocus || menuHasFocus;\n\t});\n\n\tprivate readonly _cursorIsInIndentation = derived(this, reader => {\n\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\tif (cursorPos === null) { return false; }\n\t\tconst model = this._editorObs.model.read(reader);\n\t\tif (!model) { return false; }\n\t\tthis._editorObs.versionId.read(reader);\n\t\tconst indentMaxColumn = model.getLineIndentColumn(cursorPos.lineNumber);\n\t\treturn cursorPos.column <= indentMaxColumn;\n\t});\n\n\tpublic readonly model = derivedDisposable<InlineCompletionsModel | undefined>(this, reader => {\n\t\tif (this._editorObs.isReadonly.read(reader)) { return undefined; }\n\t\tconst textModel = this._editorObs.model.read(reader);\n\t\tif (!textModel) { return undefined; }\n\n\t\tconst model: InlineCompletionsModel = this._instantiationService.createInstance(\n\t\t\tInlineCompletionsModel,\n\t\t\ttextModel,\n\t\t\tthis._suggestWidgetAdapter.selectedItem,\n\t\t\tthis._editorObs.versionId,\n\t\t\tthis._positions,\n\t\t\tthis._debounceValue,\n\t\t\tthis._enabled,\n\t\t\tthis.editor,\n\t\t);\n\t\treturn model;\n\t});\n\n\tprivate readonly _playAccessibilitySignal = observableSignal(this);\n\n\tprivate readonly _hideInlineEditOnSelectionChange;\n\n\tprotected readonly _view = derived(reader => reader.store.add(this._instantiationService.createInstance(InlineSuggestionsView.hot.read(reader), this.editor, this.model, this._focusIsInMenu)));\n\n\tconstructor(\n\t\tpublic readonly editor: ICodeEditor,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@ILanguageFeatureDebounceService private readonly _debounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IAccessibilityService private readonly _accessibilityService: IAccessibilityService\n\t) {\n\t\tsuper();\n\t\tthis._editorObs = observableCodeEditor(this.editor);\n\t\tthis._positions = derived(this, reader => this._editorObs.selections.read(reader)?.map(s => s.getEndPosition()) ?? [new Position(1, 1)]);\n\t\tthis._suggestWidgetAdapter = this._register(new ObservableSuggestWidgetAdapter(\n\t\t\tthis._editorObs,\n\t\t\titem => this.model.get()?.handleSuggestAccepted(item),\n\t\t\t() => this.model.get()?.selectedInlineCompletion.get()?.getSingleTextEdit(),\n\t\t));\n\t\tthis._enabledInConfig = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.inlineSuggest).enabled);\n\t\tthis._isScreenReaderEnabled = observableFromEvent(this, this._accessibilityService.onDidChangeScreenReaderOptimized, () => this._accessibilityService.isScreenReaderOptimized());\n\t\tthis._editorDictationInProgress = observableFromEvent(this,\n\t\t\tthis._contextKeyService.onDidChangeContext,\n\t\t\t() => this._contextKeyService.getContext(this.editor.getDomNode()).getValue('editorDictation.inProgress') === true\n\t\t);\n\n\t\tthis._debounceValue = this._debounceService.for(\n\t\t\tthis._languageFeaturesService.inlineCompletionsProvider,\n\t\t\t'InlineCompletionsDebounce',\n\t\t\t{ min: 50, max: 50 }\n\t\t);\n\t\tthis.model.recomputeInitiallyAndOnChange(this._store);\n\t\tthis._hideInlineEditOnSelectionChange = this._editorObs.getOption(EditorOption.inlineSuggest).map(val => true);\n\n\t\tthis._view.recomputeInitiallyAndOnChange(this._store);\n\n\t\tInlineCompletionsController._instances.add(this);\n\t\tthis._register(toDisposable(() => InlineCompletionsController._instances.delete(this)));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tconst state = model.state.read(reader);\n\t\t\tif (!state) { return; }\n\t\t\tif (!this._focusIsInEditorOrMenu.read(undefined)) { return; }\n\n\t\t\t// This controller is in focus, hence reject others.\n\t\t\t// However if we display a NES that relates to another edit then trigger NES on that related controller\n\t\t\tconst nextEditUri = state.kind === 'inlineEdit' ? state.nextEditUri : undefined;\n\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\tif (ctrl === this) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (nextEditUri && isEqual(nextEditUri, ctrl.editor.getModel()?.uri)) {\n\t\t\t\t\t// The next edit in other edito is related to this controller, trigger it.\n\t\t\t\t\tctrl.model.read(undefined)?.trigger();\n\t\t\t\t} else {\n\t\t\t\t\tctrl.reject();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t\tthis._register(autorun(reader => {\n\t\t\t// Cancel all other inline completions when a new one starts\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst uri = this.editor.getModel()?.uri;\n\t\t\tif (!model || !uri) { return; }\n\n\t\t\t// This NES was accepted, its possible there is an NES that points to this editor.\n\t\t\t// I.e. there's an NES that reads `Go To Next Edit`,\n\t\t\t// If there is one that points to this editor, then we need to hide that as this NES was accepted.\n\t\t\treader.store.add(model.onDidAccept(() => {\n\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\tif (ctrl === this) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// Find the nes from another editor that points to this.\n\t\t\t\t\tconst state = ctrl.model.read(undefined)?.state.read(undefined);\n\t\t\t\t\tif (state?.kind === 'inlineEdit' && isEqual(state.nextEditUri, uri)) {\n\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidType, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.onDidPaste, (_value, _changes) => {\n\t\t\tif (this._enabled.get()) {\n\t\t\t\tthis.model.get()?.trigger();\n\t\t\t}\n\t\t}));\n\n\t\t// These commands don't trigger onDidType.\n\t\tconst triggerCommands = new Set([\n\t\t\tCoreEditingCommands.Tab.id,\n\t\t\tCoreEditingCommands.DeleteLeft.id,\n\t\t\tCoreEditingCommands.DeleteRight.id,\n\t\t\tinlineSuggestCommitId,\n\t\t\t'acceptSelectedSuggestion',\n\t\t\tInsertLineAfterAction.ID,\n\t\t\tInsertLineBeforeAction.ID,\n\t\t\tFIND_IDS.NextMatchFindAction,\n\t\t\t...TriggerInlineEditCommandsRegistry.getRegisteredCommands(),\n\t\t]);\n\t\tthis._register(this._commandService.onDidExecuteCommand((e) => {\n\t\t\tif (triggerCommands.has(e.commandId) && editor.hasTextFocus() && this._enabled.get()) {\n\t\t\t\tlet noDelay = false;\n\t\t\t\tif (e.commandId === inlineSuggestCommitId) {\n\t\t\t\t\tnoDelay = true;\n\t\t\t\t}\n\t\t\t\tthis._editorObs.forceUpdate(tx => {\n\t\t\t\t\t/** @description onDidExecuteCommand */\n\t\t\t\t\tthis.model.get()?.trigger(tx, { noDelay });\n\t\t\t\t});\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(runOnChange(this._editorObs.selections, (_value, _, changes) => {\n\t\t\tif (changes.some(e => e.reason === CursorChangeReason.Explicit || e.source === 'api')) {\n\t\t\t\tif (!this._hideInlineEditOnSelectionChange.get() && this.model.get()?.state.get()?.kind === 'inlineEdit') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst m = this.model.get();\n\t\t\t\tif (!m) { return; }\n\t\t\t\tif (m.state.get()?.kind === 'ghostText') {\n\t\t\t\t\tthis.model.get()?.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isFocused = this._focusIsInEditorOrMenu.read(reader);\n\t\t\tconst model = this.model.read(undefined);\n\t\t\tif (isFocused) {\n\t\t\t\t// If this model already has an NES for another editor, then leave as is\n\t\t\t\t// Else stop other models.\n\t\t\t\tconst state = model?.state.read(undefined);\n\t\t\t\tif (!state || state.kind !== 'inlineEdit' || !state.nextEditUri) {\n\t\t\t\t\ttransaction(tx => {\n\t\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\t\tctrl.model.read(undefined)?.stop('automatic', tx);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This is a hidden setting very useful for debugging\n\t\t\tif (this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown')\n\t\t\t\t|| this._configurationService.getValue('editor.inlineSuggest.keepOnBlur')\n\t\t\t\t|| editor.getOption(EditorOption.inlineSuggest).keepOnBlur\n\t\t\t\t|| InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!model) { return; }\n\t\t\tif (model.state.read(undefined)?.inlineSuggestion?.isFromExplicitRequest && model.inlineEditAvailable.read(undefined)) {\n\t\t\t\t// dont hide inline edits on blur when requested explicitly\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttransaction(tx => {\n\t\t\t\t/** @description InlineCompletionsController.onDidBlurEditorWidget */\n\t\t\t\tmodel.stop('automatic', tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description InlineCompletionsController.forceRenderingAbove */\n\t\t\tconst state = this.model.read(reader)?.inlineCompletionState.read(reader);\n\t\t\tif (state?.suggestItem) {\n\t\t\t\tif (state.primaryGhostText.lineCount >= 2) {\n\t\t\t\t\tthis._suggestWidgetAdapter.forceRenderingAbove();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t\t}\n\t\t}));\n\t\tthis._register(toDisposable(() => {\n\t\t\tthis._suggestWidgetAdapter.stopForceRenderingAbove();\n\t\t}));\n\n\t\tconst currentInlineCompletionBySemanticId = derivedObservableWithCache<string | undefined>(this, (reader, last) => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.state.read(reader);\n\t\t\tif (this._suggestWidgetAdapter.selectedItem.get()) {\n\t\t\t\treturn last;\n\t\t\t}\n\t\t\treturn state?.inlineSuggestion?.semanticId;\n\t\t});\n\t\tthis._register(runOnChangeWithStore(derived(reader => {\n\t\t\tthis._playAccessibilitySignal.read(reader);\n\t\t\tcurrentInlineCompletionBySemanticId.read(reader);\n\t\t\treturn {};\n\t\t}), async (_value, _, _deltas, store) => {\n\t\t\t/** @description InlineCompletionsController.playAccessibilitySignalAndReadSuggestion */\n\t\t\tlet model = this.model.get();\n\t\t\tlet state = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\n\t\t\tawait timeout(50, cancelOnDispose(store));\n\t\t\tawait waitForState(this._suggestWidgetAdapter.selectedItem, isUndefined, () => false, cancelOnDispose(store));\n\n\t\t\tmodel = this.model.get();\n\t\t\tstate = model?.state.get();\n\t\t\tif (!state || !model) { return; }\n\t\t\tconst lineText = state.kind === 'ghostText' ? model.textModel.getLineContent(state.primaryGhostText.lineNumber) : '';\n\t\t\tthis._accessibilitySignalService.playSignal(state.kind === 'ghostText' ? AccessibilitySignal.inlineSuggestion : AccessibilitySignal.nextEditSuggestion);\n\n\t\t\tif (this.editor.getOption(EditorOption.screenReaderAnnounceInlineSuggestion)) {\n\t\t\t\tif (state.kind === 'ghostText') {\n\t\t\t\t\tthis._provideScreenReaderUpdate(state.primaryGhostText.renderForScreenReader(lineText));\n\t\t\t\t} else {\n\t\t\t\t\tthis._provideScreenReaderUpdate(''); // Only announce Alt+F2\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\t// TODO@hediet\n\t\tthis._register(this._configurationService.onDidChangeConfiguration(e => {\n\t\t\tif (e.affectsConfiguration('accessibility.verbosity.inlineCompletions')) {\n\t\t\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\t\t\t}\n\t\t}));\n\t\tthis.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n\n\t\tconst contextKeySvcObs = new ObservableContextKeyService(this._contextKeyService);\n\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorInIndentation, this._cursorIsInIndentation));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.hasSelection, reader => !this._editorObs.cursorSelection.read(reader)?.isEmpty()));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorAtInlineEdit, this.model.map((m, reader) => m?.inlineEditState?.read(reader)?.cursorAtInlineEdit.read(reader))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldAcceptInlineEdit, this.model.map((m, r) => !!m?.tabShouldAcceptInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.tabShouldJumpToInlineEdit, this.model.map((m, r) => !!m?.tabShouldJumpToInlineEdit.read(r))));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineEditVisible, reader => this.model.read(reader)?.inlineEditState.read(reader) !== undefined));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentation,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentation\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize,\n\t\t\treader => this.model.read(reader)?.getIndentationInfo(reader)?.startsWithIndentationLessThanTabSize\n\t\t));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.suppressSuggestions, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn state?.primaryGhostText && state?.inlineSuggestion ? state.inlineSuggestion.source.inlineSuggestions.suppressSuggestions : undefined;\n\t\t}));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionAlternativeActionVisible, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineEditState.read(reader);\n\t\t\tconst action = state?.inlineSuggestion.action;\n\t\t\treturn action && action.kind === 'edit' && action.alternativeAction !== undefined;\n\t\t}));\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.inlineSuggestionVisible, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\treturn !!state?.inlineSuggestion && state?.primaryGhostText !== undefined && !state?.primaryGhostText.isEmpty();\n\t\t}));\n\t\tconst firstGhostTextPos = derived(this, reader => {\n\t\t\tconst model = this.model.read(reader);\n\t\t\tconst state = model?.inlineCompletionState.read(reader);\n\t\t\tconst primaryGhostText = state?.primaryGhostText;\n\t\t\tif (!primaryGhostText || primaryGhostText.isEmpty()) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst firstPartPos = new Position(primaryGhostText.lineNumber, primaryGhostText.parts[0].column);\n\t\t\treturn firstPartPos;\n\t\t});\n\t\tthis._register(contextKeySvcObs.bind(InlineCompletionContextKeys.cursorBeforeGhostText, reader => {\n\t\t\tconst firstPartPos = firstGhostTextPos.read(reader);\n\t\t\tif (!firstPartPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst cursorPos = this._editorObs.cursorPosition.read(reader);\n\t\t\tif (!cursorPos) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn firstPartPos.equals(cursorPos);\n\t\t}));\n\n\t\tthis._register(this._instantiationService.createInstance(TextModelChangeRecorder, this.editor));\n\t}\n\n\tpublic playAccessibilitySignal(tx: ITransaction) {\n\t\tthis._playAccessibilitySignal.trigger(tx);\n\t}\n\n\tprivate _provideScreenReaderUpdate(content: string): void {\n\t\tconst accessibleViewShowing = this._contextKeyService.getContextKeyValue<boolean>('accessibleViewIsShown');\n\t\tconst accessibleViewKeybinding = this._keybindingService.lookupKeybinding('editor.action.accessibleView');\n\t\tlet hint: string | undefined;\n\t\tif (!accessibleViewShowing && accessibleViewKeybinding && this.editor.getOption(EditorOption.inlineCompletionsAccessibilityVerbose)) {\n\t\t\thint = localize('showAccessibleViewHint', \"Inspect this in the accessible view ({0})\", accessibleViewKeybinding.getAriaLabel());\n\t\t}\n\t\talert(hint ? content + ', ' + hint : content);\n\t}\n\n\tpublic shouldShowHoverAt(range: Range) {\n\t\tconst ghostText = this.model.get()?.primaryGhostText.get();\n\t\tif (!ghostText) {\n\t\t\treturn false;\n\t\t}\n\t\treturn ghostText.parts.some(p => range.containsPosition(new Position(ghostText.lineNumber, p.column)));\n\t}\n\n\tpublic shouldShowHoverAtViewZone(viewZoneId: string): boolean {\n\t\treturn this._view.get().shouldShowHoverAtViewZone(viewZoneId);\n\t}\n\n\tpublic reject(): void {\n\t\ttransaction(tx => {\n\t\t\tconst m = this.model.get();\n\t\t\tif (m) {\n\t\t\t\tm.stop('explicitCancel', tx);\n\t\t\t\t// Only if this controller is in focus can we cancel others.\n\t\t\t\tif (this._focusIsInEditorOrMenu.get()) {\n\t\t\t\t\tfor (const ctrl of InlineCompletionsController._instances) {\n\t\t\t\t\t\tif (ctrl !== this) {\n\t\t\t\t\t\t\tctrl.model.get()?.stop('automatic', tx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic jump(): void {\n\t\tconst m = this.model.get();\n\t\tif (m) {\n\t\t\tm.jump();\n\t\t}\n\t}\n}\n"]}
@@ -115,7 +115,7 @@ let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant
115
115
  return new RenderedHoverParts([renderedHoverPart]);
116
116
  }
117
117
  getAccessibleContent(hoverPart) {
118
- return nls.localize(1211, 'There are inline completions here');
118
+ return nls.localize(1214, 'There are inline completions here');
119
119
  }
120
120
  renderScreenReaderText(context, part) {
121
121
  const disposables = new DisposableStore();
@@ -123,7 +123,7 @@ let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant
123
123
  const markdownHoverElement = $('div.hover-row.markdown-hover');
124
124
  const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents', { ['aria-live']: 'assertive' }));
125
125
  const render = (code) => {
126
- const inlineSuggestionAvailable = nls.localize(1212, "Suggestion:");
126
+ const inlineSuggestionAvailable = nls.localize(1215, "Suggestion:");
127
127
  const renderedContents = disposables.add(this._markdownRendererService.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code), {
128
128
  context: this._editor,
129
129
  asyncRenderCallback: () => {
@@ -97,8 +97,8 @@ InlineCompletionsHintsWidget = __decorate([
97
97
  __param(2, IInstantiationService)
98
98
  ], InlineCompletionsHintsWidget);
99
99
  export { InlineCompletionsHintsWidget };
100
- const inlineSuggestionHintsNextIcon = registerIcon('inline-suggestion-hints-next', Codicon.chevronRight, localize(1213, 'Icon for show next parameter hint.'));
101
- const inlineSuggestionHintsPreviousIcon = registerIcon('inline-suggestion-hints-previous', Codicon.chevronLeft, localize(1214, 'Icon for show previous parameter hint.'));
100
+ const inlineSuggestionHintsNextIcon = registerIcon('inline-suggestion-hints-next', Codicon.chevronRight, localize(1216, 'Icon for show next parameter hint.'));
101
+ const inlineSuggestionHintsPreviousIcon = registerIcon('inline-suggestion-hints-previous', Codicon.chevronLeft, localize(1217, 'Icon for show previous parameter hint.'));
102
102
  let InlineSuggestionHintsContentWidget = class InlineSuggestionHintsContentWidget extends Disposable {
103
103
  static { InlineSuggestionHintsContentWidget_1 = this; }
104
104
  static { this.hot = createHotClass(this); }
@@ -110,7 +110,7 @@ let InlineSuggestionHintsContentWidget = class InlineSuggestionHintsContentWidge
110
110
  const kb = this.keybindingService.lookupKeybinding(commandId, this._contextKeyService);
111
111
  let tooltip = label;
112
112
  if (kb) {
113
- tooltip = localize(1215, '{0} ({1})', label, kb.getLabel());
113
+ tooltip = localize(1218, '{0} ({1})', label, kb.getLabel());
114
114
  }
115
115
  action.tooltip = tooltip;
116
116
  return action;
@@ -158,9 +158,9 @@ let InlineSuggestionHintsContentWidget = class InlineSuggestionHintsContentWidge
158
158
  this._warningMessageNode.element,
159
159
  h('div@toolBar'),
160
160
  ]);
161
- this.previousAction = this._register(this.createCommandAction(showPreviousInlineSuggestionActionId, localize(1216, 'Previous'), ThemeIcon.asClassName(inlineSuggestionHintsPreviousIcon)));
161
+ this.previousAction = this._register(this.createCommandAction(showPreviousInlineSuggestionActionId, localize(1219, 'Previous'), ThemeIcon.asClassName(inlineSuggestionHintsPreviousIcon)));
162
162
  this.availableSuggestionCountAction = this._register(new Action('inlineSuggestionHints.availableSuggestionCount', '', undefined, false));
163
- this.nextAction = this._register(this.createCommandAction(showNextInlineSuggestionActionId, localize(1217, 'Next'), ThemeIcon.asClassName(inlineSuggestionHintsNextIcon)));
163
+ this.nextAction = this._register(this.createCommandAction(showNextInlineSuggestionActionId, localize(1220, 'Next'), ThemeIcon.asClassName(inlineSuggestionHintsNextIcon)));
164
164
  this.inlineCompletionsActionsMenus = this._register(this._menuService.createMenu(MenuId.InlineCompletionsActions, this._contextKeyService));
165
165
  this.clearAvailableSuggestionCountLabelDebounced = this._register(new RunOnceScheduler(() => {
166
166
  this.availableSuggestionCountAction.label = '';
@@ -7,7 +7,7 @@ import { registerAction2 } from '../../../../platform/actions/common/actions.js'
7
7
  import { wrapInHotClass1 } from '../../../../platform/observable/common/wrapInHotClass.js';
8
8
  import { registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';
9
9
  import { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';
10
- import { AcceptInlineCompletion, AcceptNextLineOfInlineCompletion, AcceptNextWordOfInlineCompletion, DevExtractReproSample, HideInlineCompletion, JumpToNextInlineEdit, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, ToggleAlwaysShowInlineSuggestionToolbar, TriggerInlineSuggestionAction, ToggleInlineCompletionShowCollapsed } from './controller/commands.js';
10
+ import { AcceptInlineCompletion, AcceptNextLineOfInlineCompletion, AcceptNextWordOfInlineCompletion, DevExtractReproSample, HideInlineCompletion, JumpToNextInlineEdit, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, ToggleAlwaysShowInlineSuggestionToolbar, TriggerInlineSuggestionAction, ToggleInlineCompletionShowCollapsed, AcceptInlineCompletionAlternativeAction } from './controller/commands.js';
11
11
  import { InlineCompletionsController } from './controller/inlineCompletionsController.js';
12
12
  import { InlineCompletionsHoverParticipant } from './hintsWidget/hoverParticipant.js';
13
13
  import { InlineCompletionsAccessibleView } from './inlineCompletionsAccessibleView.js';
@@ -19,6 +19,7 @@ registerEditorAction(ShowPreviousInlineSuggestionAction);
19
19
  registerEditorAction(AcceptNextWordOfInlineCompletion);
20
20
  registerEditorAction(AcceptNextLineOfInlineCompletion);
21
21
  registerEditorAction(AcceptInlineCompletion);
22
+ registerEditorAction(AcceptInlineCompletionAlternativeAction);
22
23
  registerEditorAction(ToggleInlineCompletionShowCollapsed);
23
24
  registerEditorAction(HideInlineCompletion);
24
25
  registerEditorAction(JumpToNextInlineEdit);
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.ts","vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sEAAsE,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAC3F,OAAO,EAAmC,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACzI,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,kCAAkC,EAAE,uCAAuC,EAAE,6BAA6B,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAC;AAC1X,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAE7H,0BAA0B,CAAC,2BAA2B,CAAC,EAAE,EAAE,eAAe,CAAC,2BAA2B,CAAC,GAAG,CAAC,qDAA6C,CAAC;AAEzJ,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;AACpD,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;AACrD,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;AACzD,oBAAoB,CAAC,gCAAgC,CAAC,CAAC;AACvD,oBAAoB,CAAC,gCAAgC,CAAC,CAAC;AACvD,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;AAC7C,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;AAC1D,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAC3C,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAC3C,eAAe,CAAC,uCAAuC,CAAC,CAAC;AACzD,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;AAC5C,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACxC,eAAe,CAAC,4BAA4B,CAAC,CAAC;AAE9C,wBAAwB,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;AACrE,sBAAsB,CAAC,QAAQ,CAAC,IAAI,+BAA+B,EAAE,CAAC,CAAC","file":"inlineCompletions.contribution.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 { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';\nimport { registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { wrapInHotClass1 } from '../../../../platform/observable/common/wrapInHotClass.js';\nimport { EditorContributionInstantiation, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { AcceptInlineCompletion, AcceptNextLineOfInlineCompletion, AcceptNextWordOfInlineCompletion, DevExtractReproSample, HideInlineCompletion, JumpToNextInlineEdit, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, ToggleAlwaysShowInlineSuggestionToolbar, TriggerInlineSuggestionAction, ToggleInlineCompletionShowCollapsed } from './controller/commands.js';\nimport { InlineCompletionsController } from './controller/inlineCompletionsController.js';\nimport { InlineCompletionsHoverParticipant } from './hintsWidget/hoverParticipant.js';\nimport { InlineCompletionsAccessibleView } from './inlineCompletionsAccessibleView.js';\nimport { CancelSnoozeInlineCompletion, SnoozeInlineCompletion } from '../../../browser/services/inlineCompletionsService.js';\n\nregisterEditorContribution(InlineCompletionsController.ID, wrapInHotClass1(InlineCompletionsController.hot), EditorContributionInstantiation.Eventually);\n\nregisterEditorAction(TriggerInlineSuggestionAction);\nregisterEditorAction(ShowNextInlineSuggestionAction);\nregisterEditorAction(ShowPreviousInlineSuggestionAction);\nregisterEditorAction(AcceptNextWordOfInlineCompletion);\nregisterEditorAction(AcceptNextLineOfInlineCompletion);\nregisterEditorAction(AcceptInlineCompletion);\nregisterEditorAction(ToggleInlineCompletionShowCollapsed);\nregisterEditorAction(HideInlineCompletion);\nregisterEditorAction(JumpToNextInlineEdit);\nregisterAction2(ToggleAlwaysShowInlineSuggestionToolbar);\nregisterEditorAction(DevExtractReproSample);\nregisterAction2(SnoozeInlineCompletion);\nregisterAction2(CancelSnoozeInlineCompletion);\n\nHoverParticipantRegistry.register(InlineCompletionsHoverParticipant);\nAccessibleViewRegistry.register(new InlineCompletionsAccessibleView());\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 { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';\nimport { registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { wrapInHotClass1 } from '../../../../platform/observable/common/wrapInHotClass.js';\nimport { EditorContributionInstantiation, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { AcceptInlineCompletion, AcceptNextLineOfInlineCompletion, AcceptNextWordOfInlineCompletion, DevExtractReproSample, HideInlineCompletion, JumpToNextInlineEdit, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, ToggleAlwaysShowInlineSuggestionToolbar, TriggerInlineSuggestionAction, ToggleInlineCompletionShowCollapsed } from './controller/commands.js';\nimport { InlineCompletionsController } from './controller/inlineCompletionsController.js';\nimport { InlineCompletionsHoverParticipant } from './hintsWidget/hoverParticipant.js';\nimport { InlineCompletionsAccessibleView } from './inlineCompletionsAccessibleView.js';\nimport { CancelSnoozeInlineCompletion, SnoozeInlineCompletion } from '../../../browser/services/inlineCompletionsService.js';\n\nregisterEditorContribution(InlineCompletionsController.ID, wrapInHotClass1(InlineCompletionsController.hot), EditorContributionInstantiation.Eventually);\n\nregisterEditorAction(TriggerInlineSuggestionAction);\nregisterEditorAction(ShowNextInlineSuggestionAction);\nregisterEditorAction(ShowPreviousInlineSuggestionAction);\nregisterEditorAction(AcceptNextWordOfInlineCompletion);\nregisterEditorAction(AcceptNextLineOfInlineCompletion);\nregisterEditorAction(AcceptInlineCompletion);\nregisterEditorAction(ToggleInlineCompletionShowCollapsed);\nregisterEditorAction(HideInlineCompletion);\nregisterEditorAction(JumpToNextInlineEdit);\nregisterAction2(ToggleAlwaysShowInlineSuggestionToolbar);\nregisterEditorAction(DevExtractReproSample);\nregisterAction2(SnoozeInlineCompletion);\nregisterAction2(CancelSnoozeInlineCompletion);\n\nHoverParticipantRegistry.register(InlineCompletionsHoverParticipant);\nAccessibleViewRegistry.register(new InlineCompletionsAccessibleView());\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.ts","vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sEAAsE,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAC3F,OAAO,EAAmC,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AACzI,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,kCAAkC,EAAE,uCAAuC,EAAE,6BAA6B,EAAE,mCAAmC,EAAE,uCAAuC,EAAE,MAAM,0BAA0B,CAAC;AACna,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAE7H,0BAA0B,CAAC,2BAA2B,CAAC,EAAE,EAAE,eAAe,CAAC,2BAA2B,CAAC,GAAG,CAAC,qDAA6C,CAAC;AAEzJ,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;AACpD,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;AACrD,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;AACzD,oBAAoB,CAAC,gCAAgC,CAAC,CAAC;AACvD,oBAAoB,CAAC,gCAAgC,CAAC,CAAC;AACvD,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;AAC7C,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;AAC9D,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;AAC1D,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAC3C,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAC3C,eAAe,CAAC,uCAAuC,CAAC,CAAC;AACzD,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;AAC5C,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACxC,eAAe,CAAC,4BAA4B,CAAC,CAAC;AAE9C,wBAAwB,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;AACrE,sBAAsB,CAAC,QAAQ,CAAC,IAAI,+BAA+B,EAAE,CAAC,CAAC","file":"inlineCompletions.contribution.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 { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';\nimport { registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { wrapInHotClass1 } from '../../../../platform/observable/common/wrapInHotClass.js';\nimport { EditorContributionInstantiation, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { AcceptInlineCompletion, AcceptNextLineOfInlineCompletion, AcceptNextWordOfInlineCompletion, DevExtractReproSample, HideInlineCompletion, JumpToNextInlineEdit, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, ToggleAlwaysShowInlineSuggestionToolbar, TriggerInlineSuggestionAction, ToggleInlineCompletionShowCollapsed, AcceptInlineCompletionAlternativeAction } from './controller/commands.js';\nimport { InlineCompletionsController } from './controller/inlineCompletionsController.js';\nimport { InlineCompletionsHoverParticipant } from './hintsWidget/hoverParticipant.js';\nimport { InlineCompletionsAccessibleView } from './inlineCompletionsAccessibleView.js';\nimport { CancelSnoozeInlineCompletion, SnoozeInlineCompletion } from '../../../browser/services/inlineCompletionsService.js';\n\nregisterEditorContribution(InlineCompletionsController.ID, wrapInHotClass1(InlineCompletionsController.hot), EditorContributionInstantiation.Eventually);\n\nregisterEditorAction(TriggerInlineSuggestionAction);\nregisterEditorAction(ShowNextInlineSuggestionAction);\nregisterEditorAction(ShowPreviousInlineSuggestionAction);\nregisterEditorAction(AcceptNextWordOfInlineCompletion);\nregisterEditorAction(AcceptNextLineOfInlineCompletion);\nregisterEditorAction(AcceptInlineCompletion);\nregisterEditorAction(AcceptInlineCompletionAlternativeAction);\nregisterEditorAction(ToggleInlineCompletionShowCollapsed);\nregisterEditorAction(HideInlineCompletion);\nregisterEditorAction(JumpToNextInlineEdit);\nregisterAction2(ToggleAlwaysShowInlineSuggestionToolbar);\nregisterEditorAction(DevExtractReproSample);\nregisterAction2(SnoozeInlineCompletion);\nregisterAction2(CancelSnoozeInlineCompletion);\n\nHoverParticipantRegistry.register(InlineCompletionsHoverParticipant);\nAccessibleViewRegistry.register(new InlineCompletionsAccessibleView());\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 { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';\nimport { registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { wrapInHotClass1 } from '../../../../platform/observable/common/wrapInHotClass.js';\nimport { EditorContributionInstantiation, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { AcceptInlineCompletion, AcceptNextLineOfInlineCompletion, AcceptNextWordOfInlineCompletion, DevExtractReproSample, HideInlineCompletion, JumpToNextInlineEdit, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, ToggleAlwaysShowInlineSuggestionToolbar, TriggerInlineSuggestionAction, ToggleInlineCompletionShowCollapsed, AcceptInlineCompletionAlternativeAction } from './controller/commands.js';\nimport { InlineCompletionsController } from './controller/inlineCompletionsController.js';\nimport { InlineCompletionsHoverParticipant } from './hintsWidget/hoverParticipant.js';\nimport { InlineCompletionsAccessibleView } from './inlineCompletionsAccessibleView.js';\nimport { CancelSnoozeInlineCompletion, SnoozeInlineCompletion } from '../../../browser/services/inlineCompletionsService.js';\n\nregisterEditorContribution(InlineCompletionsController.ID, wrapInHotClass1(InlineCompletionsController.hot), EditorContributionInstantiation.Eventually);\n\nregisterEditorAction(TriggerInlineSuggestionAction);\nregisterEditorAction(ShowNextInlineSuggestionAction);\nregisterEditorAction(ShowPreviousInlineSuggestionAction);\nregisterEditorAction(AcceptNextWordOfInlineCompletion);\nregisterEditorAction(AcceptNextLineOfInlineCompletion);\nregisterEditorAction(AcceptInlineCompletion);\nregisterEditorAction(AcceptInlineCompletionAlternativeAction);\nregisterEditorAction(ToggleInlineCompletionShowCollapsed);\nregisterEditorAction(HideInlineCompletion);\nregisterEditorAction(JumpToNextInlineEdit);\nregisterAction2(ToggleAlwaysShowInlineSuggestionToolbar);\nregisterEditorAction(DevExtractReproSample);\nregisterAction2(SnoozeInlineCompletion);\nregisterAction2(CancelSnoozeInlineCompletion);\n\nHoverParticipantRegistry.register(InlineCompletionsHoverParticipant);\nAccessibleViewRegistry.register(new InlineCompletionsAccessibleView());\n"]}
@@ -0,0 +1,8 @@
1
+ export var InlineSuggestAlternativeAction;
2
+ (function (InlineSuggestAlternativeAction) {
3
+ function toString(action) {
4
+ return action?.command.id ?? undefined;
5
+ }
6
+ InlineSuggestAlternativeAction.toString = toString;
7
+ })(InlineSuggestAlternativeAction || (InlineSuggestAlternativeAction = {}));
8
+ //# sourceMappingURL=InlineSuggestAlternativeAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.ts","vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.ts"],"names":[],"mappings":"AAcA,MAAM,KAAW,8BAA8B,CAI9C;AAJD,WAAiB,8BAA8B;IAC9C,SAAgB,QAAQ,CAAC,MAAkD;QAC1E,OAAO,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC;IACxC,CAAC;IAFe,uCAAQ,WAEvB,CAAA;AACF,CAAC,EAJgB,8BAA8B,KAA9B,8BAA8B,QAI9C","file":"InlineSuggestAlternativeAction.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 *--------------------------------------------------------------------------------------------*/\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { Command } from '../../../../common/languages.js';\n\nexport type InlineSuggestAlternativeAction = {\n\tlabel: string;\n\ticon: ThemeIcon;\n\tcommand: Command;\n\tcount: Promise<number>;\n};\n\nexport namespace InlineSuggestAlternativeAction {\n\texport function toString(action: InlineSuggestAlternativeAction | undefined): string | undefined {\n\t\treturn action?.command.id ?? undefined;\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 *--------------------------------------------------------------------------------------------*/\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { Command } from '../../../../common/languages.js';\n\nexport type InlineSuggestAlternativeAction = {\n\tlabel: string;\n\ticon: ThemeIcon;\n\tcommand: Command;\n\tcount: Promise<number>;\n};\n\nexport namespace InlineSuggestAlternativeAction {\n\texport function toString(action: InlineSuggestAlternativeAction | undefined): string | undefined {\n\t\treturn action?.command.id ?? undefined;\n\t}\n}\n"]}
@@ -0,0 +1,198 @@
1
+ const syntacticalChars = new Set([';', ',', '=', '+', '-', '*', '/', '{', '}', '(', ')', '[', ']', '<', '>', ':', '.', '!', '?', '&', '|', '^', '%', '@', '#', '~', '`', '\\', '\'', '"', '$']);
2
+ function isSyntacticalChar(char) {
3
+ return syntacticalChars.has(char);
4
+ }
5
+ function isIdentifierChar(char) {
6
+ return /[a-zA-Z0-9_]/.test(char);
7
+ }
8
+ function isWhitespaceChar(char) {
9
+ return char === ' ' || char === '\t';
10
+ }
11
+ function analyzeTextShape(text) {
12
+ const lines = text.split(/\r\n|\r|\n/);
13
+ if (lines.length > 1) {
14
+ return {
15
+ kind: 'multiLine',
16
+ lineCount: lines.length,
17
+ };
18
+ }
19
+ const isSingleChar = text.length === 1;
20
+ let singleCharKind;
21
+ if (isSingleChar) {
22
+ if (isSyntacticalChar(text)) {
23
+ singleCharKind = 'syntactical';
24
+ }
25
+ else if (isIdentifierChar(text)) {
26
+ singleCharKind = 'identifier';
27
+ }
28
+ else if (isWhitespaceChar(text)) {
29
+ singleCharKind = 'whitespace';
30
+ }
31
+ }
32
+ // Analyze whitespace patterns
33
+ const whitespaceMatches = text.match(/[ \t]+/g) || [];
34
+ const isMultipleWhitespace = whitespaceMatches.some(ws => ws.length > 1);
35
+ const hasDuplicatedWhitespace = whitespaceMatches.some(ws => (ws.includes(' ') || ws.includes('\t\t')));
36
+ // Analyze word patterns
37
+ const words = text.split(/\s+/).filter(w => w.length > 0);
38
+ const isWord = words.length === 1 && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(words[0]);
39
+ const isMultipleWords = words.length > 1;
40
+ return {
41
+ kind: 'singleLine',
42
+ isSingleCharacter: isSingleChar,
43
+ singleCharacterKind: singleCharKind,
44
+ isWord,
45
+ isMultipleWords,
46
+ isMultipleWhitespace,
47
+ hasDuplicatedWhitespace,
48
+ };
49
+ }
50
+ export class InlineSuggestionEditKind {
51
+ constructor(edits) {
52
+ this.edits = edits;
53
+ }
54
+ toString() {
55
+ return JSON.stringify({ edits: this.edits });
56
+ }
57
+ }
58
+ export function computeEditKind(edit, textModel, cursorPosition) {
59
+ if (edit.replacements.length === 0) {
60
+ // Empty edit - return undefined as there's no edit to classify
61
+ return undefined;
62
+ }
63
+ return new InlineSuggestionEditKind(edit.replacements.map(rep => computeSingleEditKind(rep, textModel, cursorPosition)));
64
+ }
65
+ function countLines(text) {
66
+ if (text.length === 0) {
67
+ return 0;
68
+ }
69
+ return text.split(/\r\n|\r|\n/).length - 1;
70
+ }
71
+ function computeSingleEditKind(replacement, textModel, cursorPosition) {
72
+ const replaceRange = replacement.replaceRange;
73
+ const newText = replacement.newText;
74
+ const deletedLength = replaceRange.length;
75
+ const insertedLength = newText.length;
76
+ const linesInserted = countLines(newText);
77
+ const kind = replaceRange.isEmpty ? 'insert' : (newText.length === 0 ? 'delete' : 'replace');
78
+ switch (kind) {
79
+ case 'insert':
80
+ return {
81
+ operation: 'insert',
82
+ properties: computeInsertProperties(replaceRange.start, newText, textModel, cursorPosition),
83
+ charactersInserted: insertedLength,
84
+ charactersDeleted: 0,
85
+ linesInserted,
86
+ linesDeleted: 0,
87
+ };
88
+ case 'delete': {
89
+ const deletedText = textModel.getValue().substring(replaceRange.start, replaceRange.endExclusive);
90
+ return {
91
+ operation: 'delete',
92
+ properties: computeDeleteProperties(replaceRange.start, replaceRange.endExclusive, textModel),
93
+ charactersInserted: 0,
94
+ charactersDeleted: deletedLength,
95
+ linesInserted: 0,
96
+ linesDeleted: countLines(deletedText),
97
+ };
98
+ }
99
+ case 'replace': {
100
+ const oldText = textModel.getValue().substring(replaceRange.start, replaceRange.endExclusive);
101
+ return {
102
+ operation: 'replace',
103
+ properties: computeReplaceProperties(oldText, newText),
104
+ charactersInserted: insertedLength,
105
+ charactersDeleted: deletedLength,
106
+ linesInserted,
107
+ linesDeleted: countLines(oldText),
108
+ };
109
+ }
110
+ }
111
+ }
112
+ function computeInsertProperties(offset, newText, textModel, cursorPosition) {
113
+ const textShape = analyzeTextShape(newText);
114
+ const insertPosition = textModel.getPositionAt(offset);
115
+ const lineContent = textModel.getLineContent(insertPosition.lineNumber);
116
+ const lineLength = lineContent.length;
117
+ // Determine location shape
118
+ let locationShape;
119
+ const isLineEmpty = lineContent.trim().length === 0;
120
+ const isAtEndOfLine = insertPosition.column > lineLength;
121
+ const isAtStartOfLine = insertPosition.column === 1;
122
+ if (isLineEmpty) {
123
+ locationShape = 'emptyLine';
124
+ }
125
+ else if (isAtEndOfLine) {
126
+ locationShape = 'endOfLine';
127
+ }
128
+ else if (isAtStartOfLine) {
129
+ locationShape = 'startOfLine';
130
+ }
131
+ else {
132
+ locationShape = 'middleOfLine';
133
+ }
134
+ // Compute relative to cursor if cursor position is provided
135
+ let relativeToCursor;
136
+ if (cursorPosition) {
137
+ const cursorLine = cursorPosition.lineNumber;
138
+ const insertLine = insertPosition.lineNumber;
139
+ const cursorColumn = cursorPosition.column;
140
+ const insertColumn = insertPosition.column;
141
+ const atCursor = cursorLine === insertLine && cursorColumn === insertColumn;
142
+ const beforeCursorOnSameLine = cursorLine === insertLine && insertColumn < cursorColumn;
143
+ const afterCursorOnSameLine = cursorLine === insertLine && insertColumn > cursorColumn;
144
+ const linesAbove = insertLine < cursorLine ? cursorLine - insertLine : undefined;
145
+ const linesBelow = insertLine > cursorLine ? insertLine - cursorLine : undefined;
146
+ relativeToCursor = {
147
+ atCursor,
148
+ beforeCursorOnSameLine,
149
+ afterCursorOnSameLine,
150
+ linesAbove,
151
+ linesBelow,
152
+ };
153
+ }
154
+ return {
155
+ textShape,
156
+ locationShape,
157
+ relativeToCursor,
158
+ };
159
+ }
160
+ function computeDeleteProperties(startOffset, endOffset, textModel) {
161
+ const deletedText = textModel.getValue().substring(startOffset, endOffset);
162
+ const textShape = analyzeTextShape(deletedText);
163
+ const startPosition = textModel.getPositionAt(startOffset);
164
+ const endPosition = textModel.getPositionAt(endOffset);
165
+ // Check if delete is at end of line
166
+ const lineContent = textModel.getLineContent(endPosition.lineNumber);
167
+ const isAtEndOfLine = endPosition.column > lineContent.length;
168
+ // Check if entire line content is deleted
169
+ const deletesEntireLineContent = startPosition.lineNumber === endPosition.lineNumber &&
170
+ startPosition.column === 1 &&
171
+ endPosition.column > lineContent.length;
172
+ return {
173
+ textShape,
174
+ isAtEndOfLine,
175
+ deletesEntireLineContent,
176
+ };
177
+ }
178
+ function computeReplaceProperties(oldText, newText) {
179
+ const oldShape = analyzeTextShape(oldText);
180
+ const newShape = analyzeTextShape(newText);
181
+ const oldIsWord = oldShape.kind === 'singleLine' && oldShape.isWord;
182
+ const newIsWord = newShape.kind === 'singleLine' && newShape.isWord;
183
+ const isWordToWordReplacement = oldIsWord && newIsWord;
184
+ const isAdditive = newText.length > oldText.length;
185
+ const isSubtractive = newText.length < oldText.length;
186
+ const isSingleLineToSingleLine = oldShape.kind === 'singleLine' && newShape.kind === 'singleLine';
187
+ const isSingleLineToMultiLine = oldShape.kind === 'singleLine' && newShape.kind === 'multiLine';
188
+ const isMultiLineToSingleLine = oldShape.kind === 'multiLine' && newShape.kind === 'singleLine';
189
+ return {
190
+ isWordToWordReplacement,
191
+ isAdditive,
192
+ isSubtractive,
193
+ isSingleLineToSingleLine,
194
+ isSingleLineToMultiLine,
195
+ isMultiLineToSingleLine,
196
+ };
197
+ }
198
+ //# sourceMappingURL=editKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/model/editKind.ts","vs/editor/contrib/inlineCompletions/browser/model/editKind.ts"],"names":[],"mappings":"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","file":"editKind.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 *--------------------------------------------------------------------------------------------*/\nimport { Position } from '../../../../common/core/position.js';\nimport { StringEdit, StringReplacement } from '../../../../common/core/edits/stringEdit.js';\nimport { ITextModel } from '../../../../common/model.js';\n\nconst syntacticalChars = new Set([';', ',', '=', '+', '-', '*', '/', '{', '}', '(', ')', '[', ']', '<', '>', ':', '.', '!', '?', '&', '|', '^', '%', '@', '#', '~', '`', '\\\\', '\\'', '\"', '$']);\n\nfunction isSyntacticalChar(char: string): boolean {\n\treturn syntacticalChars.has(char);\n}\n\nfunction isIdentifierChar(char: string): boolean {\n\treturn /[a-zA-Z0-9_]/.test(char);\n}\n\nfunction isWhitespaceChar(char: string): boolean {\n\treturn char === ' ' || char === '\\t';\n}\n\ntype SingleCharacterKind = 'syntactical' | 'identifier' | 'whitespace';\n\ninterface SingleLineTextShape {\n\treadonly kind: 'singleLine';\n\treadonly isSingleCharacter: boolean;\n\treadonly singleCharacterKind: SingleCharacterKind | undefined;\n\treadonly isWord: boolean;\n\treadonly isMultipleWords: boolean;\n\treadonly isMultipleWhitespace: boolean;\n\treadonly hasDuplicatedWhitespace: boolean;\n}\n\ninterface MultiLineTextShape {\n\treadonly kind: 'multiLine';\n\treadonly lineCount: number;\n}\n\ntype TextShape = SingleLineTextShape | MultiLineTextShape;\n\nfunction analyzeTextShape(text: string): TextShape {\n\tconst lines = text.split(/\\r\\n|\\r|\\n/);\n\tif (lines.length > 1) {\n\t\treturn {\n\t\t\tkind: 'multiLine',\n\t\t\tlineCount: lines.length,\n\t\t};\n\t}\n\n\tconst isSingleChar = text.length === 1;\n\tlet singleCharKind: SingleCharacterKind | undefined;\n\tif (isSingleChar) {\n\t\tif (isSyntacticalChar(text)) {\n\t\t\tsingleCharKind = 'syntactical';\n\t\t} else if (isIdentifierChar(text)) {\n\t\t\tsingleCharKind = 'identifier';\n\t\t} else if (isWhitespaceChar(text)) {\n\t\t\tsingleCharKind = 'whitespace';\n\t\t}\n\t}\n\n\t// Analyze whitespace patterns\n\tconst whitespaceMatches = text.match(/[ \\t]+/g) || [];\n\tconst isMultipleWhitespace = whitespaceMatches.some(ws => ws.length > 1);\n\tconst hasDuplicatedWhitespace = whitespaceMatches.some(ws =>\n\t\t(ws.includes(' ') || ws.includes('\\t\\t'))\n\t);\n\n\t// Analyze word patterns\n\tconst words = text.split(/\\s+/).filter(w => w.length > 0);\n\tconst isWord = words.length === 1 && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(words[0]);\n\tconst isMultipleWords = words.length > 1;\n\n\treturn {\n\t\tkind: 'singleLine',\n\t\tisSingleCharacter: isSingleChar,\n\t\tsingleCharacterKind: singleCharKind,\n\t\tisWord,\n\t\tisMultipleWords,\n\t\tisMultipleWhitespace,\n\t\thasDuplicatedWhitespace,\n\t};\n}\n\ntype InsertLocationShape = 'endOfLine' | 'emptyLine' | 'startOfLine' | 'middleOfLine';\n\ninterface InsertLocationRelativeToCursor {\n\treadonly atCursor: boolean;\n\treadonly beforeCursorOnSameLine: boolean;\n\treadonly afterCursorOnSameLine: boolean;\n\treadonly linesAbove: number | undefined;\n\treadonly linesBelow: number | undefined;\n}\n\nexport interface InsertProperties {\n\treadonly textShape: TextShape;\n\treadonly locationShape: InsertLocationShape;\n\treadonly relativeToCursor: InsertLocationRelativeToCursor | undefined;\n}\n\nexport interface DeleteProperties {\n\treadonly textShape: TextShape;\n\treadonly isAtEndOfLine: boolean;\n\treadonly deletesEntireLineContent: boolean;\n}\n\nexport interface ReplaceProperties {\n\treadonly isWordToWordReplacement: boolean;\n\treadonly isAdditive: boolean;\n\treadonly isSubtractive: boolean;\n\treadonly isSingleLineToSingleLine: boolean;\n\treadonly isSingleLineToMultiLine: boolean;\n\treadonly isMultiLineToSingleLine: boolean;\n}\n\ntype EditOperation = 'insert' | 'delete' | 'replace';\n\ninterface IInlineSuggestionEditKindEdit {\n\treadonly operation: EditOperation;\n\treadonly properties: InsertProperties | DeleteProperties | ReplaceProperties;\n\treadonly charactersInserted: number;\n\treadonly charactersDeleted: number;\n\treadonly linesInserted: number;\n\treadonly linesDeleted: number;\n}\nexport class InlineSuggestionEditKind {\n\tconstructor(readonly edits: IInlineSuggestionEditKindEdit[]) { }\n\ttoString(): string {\n\t\treturn JSON.stringify({ edits: this.edits });\n\t}\n}\n\nexport function computeEditKind(edit: StringEdit, textModel: ITextModel, cursorPosition?: Position): InlineSuggestionEditKind | undefined {\n\tif (edit.replacements.length === 0) {\n\t\t// Empty edit - return undefined as there's no edit to classify\n\t\treturn undefined;\n\t}\n\n\treturn new InlineSuggestionEditKind(edit.replacements.map(rep => computeSingleEditKind(rep, textModel, cursorPosition)));\n}\n\nfunction countLines(text: string): number {\n\tif (text.length === 0) {\n\t\treturn 0;\n\t}\n\treturn text.split(/\\r\\n|\\r|\\n/).length - 1;\n}\n\nfunction computeSingleEditKind(replacement: StringReplacement, textModel: ITextModel, cursorPosition?: Position): IInlineSuggestionEditKindEdit {\n\tconst replaceRange = replacement.replaceRange;\n\tconst newText = replacement.newText;\n\tconst deletedLength = replaceRange.length;\n\tconst insertedLength = newText.length;\n\tconst linesInserted = countLines(newText);\n\n\tconst kind = replaceRange.isEmpty ? 'insert' : (newText.length === 0 ? 'delete' : 'replace');\n\tswitch (kind) {\n\t\tcase 'insert':\n\t\t\treturn {\n\t\t\t\toperation: 'insert',\n\t\t\t\tproperties: computeInsertProperties(replaceRange.start, newText, textModel, cursorPosition),\n\t\t\t\tcharactersInserted: insertedLength,\n\t\t\t\tcharactersDeleted: 0,\n\t\t\t\tlinesInserted,\n\t\t\t\tlinesDeleted: 0,\n\t\t\t};\n\t\tcase 'delete': {\n\t\t\tconst deletedText = textModel.getValue().substring(replaceRange.start, replaceRange.endExclusive);\n\t\t\treturn {\n\t\t\t\toperation: 'delete',\n\t\t\t\tproperties: computeDeleteProperties(replaceRange.start, replaceRange.endExclusive, textModel),\n\t\t\t\tcharactersInserted: 0,\n\t\t\t\tcharactersDeleted: deletedLength,\n\t\t\t\tlinesInserted: 0,\n\t\t\t\tlinesDeleted: countLines(deletedText),\n\t\t\t};\n\t\t}\n\t\tcase 'replace': {\n\t\t\tconst oldText = textModel.getValue().substring(replaceRange.start, replaceRange.endExclusive);\n\t\t\treturn {\n\t\t\t\toperation: 'replace',\n\t\t\t\tproperties: computeReplaceProperties(oldText, newText),\n\t\t\t\tcharactersInserted: insertedLength,\n\t\t\t\tcharactersDeleted: deletedLength,\n\t\t\t\tlinesInserted,\n\t\t\t\tlinesDeleted: countLines(oldText),\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction computeInsertProperties(offset: number, newText: string, textModel: ITextModel, cursorPosition?: Position): InsertProperties {\n\tconst textShape = analyzeTextShape(newText);\n\tconst insertPosition = textModel.getPositionAt(offset);\n\tconst lineContent = textModel.getLineContent(insertPosition.lineNumber);\n\tconst lineLength = lineContent.length;\n\n\t// Determine location shape\n\tlet locationShape: InsertLocationShape;\n\tconst isLineEmpty = lineContent.trim().length === 0;\n\tconst isAtEndOfLine = insertPosition.column > lineLength;\n\tconst isAtStartOfLine = insertPosition.column === 1;\n\n\tif (isLineEmpty) {\n\t\tlocationShape = 'emptyLine';\n\t} else if (isAtEndOfLine) {\n\t\tlocationShape = 'endOfLine';\n\t} else if (isAtStartOfLine) {\n\t\tlocationShape = 'startOfLine';\n\t} else {\n\t\tlocationShape = 'middleOfLine';\n\t}\n\n\t// Compute relative to cursor if cursor position is provided\n\tlet relativeToCursor: InsertLocationRelativeToCursor | undefined;\n\tif (cursorPosition) {\n\t\tconst cursorLine = cursorPosition.lineNumber;\n\t\tconst insertLine = insertPosition.lineNumber;\n\t\tconst cursorColumn = cursorPosition.column;\n\t\tconst insertColumn = insertPosition.column;\n\n\t\tconst atCursor = cursorLine === insertLine && cursorColumn === insertColumn;\n\t\tconst beforeCursorOnSameLine = cursorLine === insertLine && insertColumn < cursorColumn;\n\t\tconst afterCursorOnSameLine = cursorLine === insertLine && insertColumn > cursorColumn;\n\t\tconst linesAbove = insertLine < cursorLine ? cursorLine - insertLine : undefined;\n\t\tconst linesBelow = insertLine > cursorLine ? insertLine - cursorLine : undefined;\n\n\t\trelativeToCursor = {\n\t\t\tatCursor,\n\t\t\tbeforeCursorOnSameLine,\n\t\t\tafterCursorOnSameLine,\n\t\t\tlinesAbove,\n\t\t\tlinesBelow,\n\t\t};\n\t}\n\n\treturn {\n\t\ttextShape,\n\t\tlocationShape,\n\t\trelativeToCursor,\n\t};\n}\n\nfunction computeDeleteProperties(startOffset: number, endOffset: number, textModel: ITextModel): DeleteProperties {\n\tconst deletedText = textModel.getValue().substring(startOffset, endOffset);\n\tconst textShape = analyzeTextShape(deletedText);\n\n\tconst startPosition = textModel.getPositionAt(startOffset);\n\tconst endPosition = textModel.getPositionAt(endOffset);\n\n\t// Check if delete is at end of line\n\tconst lineContent = textModel.getLineContent(endPosition.lineNumber);\n\tconst isAtEndOfLine = endPosition.column > lineContent.length;\n\n\t// Check if entire line content is deleted\n\tconst deletesEntireLineContent =\n\t\tstartPosition.lineNumber === endPosition.lineNumber &&\n\t\tstartPosition.column === 1 &&\n\t\tendPosition.column > lineContent.length;\n\n\treturn {\n\t\ttextShape,\n\t\tisAtEndOfLine,\n\t\tdeletesEntireLineContent,\n\t};\n}\n\nfunction computeReplaceProperties(oldText: string, newText: string): ReplaceProperties {\n\tconst oldShape = analyzeTextShape(oldText);\n\tconst newShape = analyzeTextShape(newText);\n\n\tconst oldIsWord = oldShape.kind === 'singleLine' && oldShape.isWord;\n\tconst newIsWord = newShape.kind === 'singleLine' && newShape.isWord;\n\tconst isWordToWordReplacement = oldIsWord && newIsWord;\n\n\tconst isAdditive = newText.length > oldText.length;\n\tconst isSubtractive = newText.length < oldText.length;\n\n\tconst isSingleLineToSingleLine = oldShape.kind === 'singleLine' && newShape.kind === 'singleLine';\n\tconst isSingleLineToMultiLine = oldShape.kind === 'singleLine' && newShape.kind === 'multiLine';\n\tconst isMultiLineToSingleLine = oldShape.kind === 'multiLine' && newShape.kind === 'singleLine';\n\n\treturn {\n\t\tisWordToWordReplacement,\n\t\tisAdditive,\n\t\tisSubtractive,\n\t\tisSingleLineToSingleLine,\n\t\tisSingleLineToMultiLine,\n\t\tisMultiLineToSingleLine,\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 *--------------------------------------------------------------------------------------------*/\nimport { Position } from '../../../../common/core/position.js';\nimport { StringEdit, StringReplacement } from '../../../../common/core/edits/stringEdit.js';\nimport { ITextModel } from '../../../../common/model.js';\n\nconst syntacticalChars = new Set([';', ',', '=', '+', '-', '*', '/', '{', '}', '(', ')', '[', ']', '<', '>', ':', '.', '!', '?', '&', '|', '^', '%', '@', '#', '~', '`', '\\\\', '\\'', '\"', '$']);\n\nfunction isSyntacticalChar(char: string): boolean {\n\treturn syntacticalChars.has(char);\n}\n\nfunction isIdentifierChar(char: string): boolean {\n\treturn /[a-zA-Z0-9_]/.test(char);\n}\n\nfunction isWhitespaceChar(char: string): boolean {\n\treturn char === ' ' || char === '\\t';\n}\n\ntype SingleCharacterKind = 'syntactical' | 'identifier' | 'whitespace';\n\ninterface SingleLineTextShape {\n\treadonly kind: 'singleLine';\n\treadonly isSingleCharacter: boolean;\n\treadonly singleCharacterKind: SingleCharacterKind | undefined;\n\treadonly isWord: boolean;\n\treadonly isMultipleWords: boolean;\n\treadonly isMultipleWhitespace: boolean;\n\treadonly hasDuplicatedWhitespace: boolean;\n}\n\ninterface MultiLineTextShape {\n\treadonly kind: 'multiLine';\n\treadonly lineCount: number;\n}\n\ntype TextShape = SingleLineTextShape | MultiLineTextShape;\n\nfunction analyzeTextShape(text: string): TextShape {\n\tconst lines = text.split(/\\r\\n|\\r|\\n/);\n\tif (lines.length > 1) {\n\t\treturn {\n\t\t\tkind: 'multiLine',\n\t\t\tlineCount: lines.length,\n\t\t};\n\t}\n\n\tconst isSingleChar = text.length === 1;\n\tlet singleCharKind: SingleCharacterKind | undefined;\n\tif (isSingleChar) {\n\t\tif (isSyntacticalChar(text)) {\n\t\t\tsingleCharKind = 'syntactical';\n\t\t} else if (isIdentifierChar(text)) {\n\t\t\tsingleCharKind = 'identifier';\n\t\t} else if (isWhitespaceChar(text)) {\n\t\t\tsingleCharKind = 'whitespace';\n\t\t}\n\t}\n\n\t// Analyze whitespace patterns\n\tconst whitespaceMatches = text.match(/[ \\t]+/g) || [];\n\tconst isMultipleWhitespace = whitespaceMatches.some(ws => ws.length > 1);\n\tconst hasDuplicatedWhitespace = whitespaceMatches.some(ws =>\n\t\t(ws.includes(' ') || ws.includes('\\t\\t'))\n\t);\n\n\t// Analyze word patterns\n\tconst words = text.split(/\\s+/).filter(w => w.length > 0);\n\tconst isWord = words.length === 1 && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(words[0]);\n\tconst isMultipleWords = words.length > 1;\n\n\treturn {\n\t\tkind: 'singleLine',\n\t\tisSingleCharacter: isSingleChar,\n\t\tsingleCharacterKind: singleCharKind,\n\t\tisWord,\n\t\tisMultipleWords,\n\t\tisMultipleWhitespace,\n\t\thasDuplicatedWhitespace,\n\t};\n}\n\ntype InsertLocationShape = 'endOfLine' | 'emptyLine' | 'startOfLine' | 'middleOfLine';\n\ninterface InsertLocationRelativeToCursor {\n\treadonly atCursor: boolean;\n\treadonly beforeCursorOnSameLine: boolean;\n\treadonly afterCursorOnSameLine: boolean;\n\treadonly linesAbove: number | undefined;\n\treadonly linesBelow: number | undefined;\n}\n\nexport interface InsertProperties {\n\treadonly textShape: TextShape;\n\treadonly locationShape: InsertLocationShape;\n\treadonly relativeToCursor: InsertLocationRelativeToCursor | undefined;\n}\n\nexport interface DeleteProperties {\n\treadonly textShape: TextShape;\n\treadonly isAtEndOfLine: boolean;\n\treadonly deletesEntireLineContent: boolean;\n}\n\nexport interface ReplaceProperties {\n\treadonly isWordToWordReplacement: boolean;\n\treadonly isAdditive: boolean;\n\treadonly isSubtractive: boolean;\n\treadonly isSingleLineToSingleLine: boolean;\n\treadonly isSingleLineToMultiLine: boolean;\n\treadonly isMultiLineToSingleLine: boolean;\n}\n\ntype EditOperation = 'insert' | 'delete' | 'replace';\n\ninterface IInlineSuggestionEditKindEdit {\n\treadonly operation: EditOperation;\n\treadonly properties: InsertProperties | DeleteProperties | ReplaceProperties;\n\treadonly charactersInserted: number;\n\treadonly charactersDeleted: number;\n\treadonly linesInserted: number;\n\treadonly linesDeleted: number;\n}\nexport class InlineSuggestionEditKind {\n\tconstructor(readonly edits: IInlineSuggestionEditKindEdit[]) { }\n\ttoString(): string {\n\t\treturn JSON.stringify({ edits: this.edits });\n\t}\n}\n\nexport function computeEditKind(edit: StringEdit, textModel: ITextModel, cursorPosition?: Position): InlineSuggestionEditKind | undefined {\n\tif (edit.replacements.length === 0) {\n\t\t// Empty edit - return undefined as there's no edit to classify\n\t\treturn undefined;\n\t}\n\n\treturn new InlineSuggestionEditKind(edit.replacements.map(rep => computeSingleEditKind(rep, textModel, cursorPosition)));\n}\n\nfunction countLines(text: string): number {\n\tif (text.length === 0) {\n\t\treturn 0;\n\t}\n\treturn text.split(/\\r\\n|\\r|\\n/).length - 1;\n}\n\nfunction computeSingleEditKind(replacement: StringReplacement, textModel: ITextModel, cursorPosition?: Position): IInlineSuggestionEditKindEdit {\n\tconst replaceRange = replacement.replaceRange;\n\tconst newText = replacement.newText;\n\tconst deletedLength = replaceRange.length;\n\tconst insertedLength = newText.length;\n\tconst linesInserted = countLines(newText);\n\n\tconst kind = replaceRange.isEmpty ? 'insert' : (newText.length === 0 ? 'delete' : 'replace');\n\tswitch (kind) {\n\t\tcase 'insert':\n\t\t\treturn {\n\t\t\t\toperation: 'insert',\n\t\t\t\tproperties: computeInsertProperties(replaceRange.start, newText, textModel, cursorPosition),\n\t\t\t\tcharactersInserted: insertedLength,\n\t\t\t\tcharactersDeleted: 0,\n\t\t\t\tlinesInserted,\n\t\t\t\tlinesDeleted: 0,\n\t\t\t};\n\t\tcase 'delete': {\n\t\t\tconst deletedText = textModel.getValue().substring(replaceRange.start, replaceRange.endExclusive);\n\t\t\treturn {\n\t\t\t\toperation: 'delete',\n\t\t\t\tproperties: computeDeleteProperties(replaceRange.start, replaceRange.endExclusive, textModel),\n\t\t\t\tcharactersInserted: 0,\n\t\t\t\tcharactersDeleted: deletedLength,\n\t\t\t\tlinesInserted: 0,\n\t\t\t\tlinesDeleted: countLines(deletedText),\n\t\t\t};\n\t\t}\n\t\tcase 'replace': {\n\t\t\tconst oldText = textModel.getValue().substring(replaceRange.start, replaceRange.endExclusive);\n\t\t\treturn {\n\t\t\t\toperation: 'replace',\n\t\t\t\tproperties: computeReplaceProperties(oldText, newText),\n\t\t\t\tcharactersInserted: insertedLength,\n\t\t\t\tcharactersDeleted: deletedLength,\n\t\t\t\tlinesInserted,\n\t\t\t\tlinesDeleted: countLines(oldText),\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction computeInsertProperties(offset: number, newText: string, textModel: ITextModel, cursorPosition?: Position): InsertProperties {\n\tconst textShape = analyzeTextShape(newText);\n\tconst insertPosition = textModel.getPositionAt(offset);\n\tconst lineContent = textModel.getLineContent(insertPosition.lineNumber);\n\tconst lineLength = lineContent.length;\n\n\t// Determine location shape\n\tlet locationShape: InsertLocationShape;\n\tconst isLineEmpty = lineContent.trim().length === 0;\n\tconst isAtEndOfLine = insertPosition.column > lineLength;\n\tconst isAtStartOfLine = insertPosition.column === 1;\n\n\tif (isLineEmpty) {\n\t\tlocationShape = 'emptyLine';\n\t} else if (isAtEndOfLine) {\n\t\tlocationShape = 'endOfLine';\n\t} else if (isAtStartOfLine) {\n\t\tlocationShape = 'startOfLine';\n\t} else {\n\t\tlocationShape = 'middleOfLine';\n\t}\n\n\t// Compute relative to cursor if cursor position is provided\n\tlet relativeToCursor: InsertLocationRelativeToCursor | undefined;\n\tif (cursorPosition) {\n\t\tconst cursorLine = cursorPosition.lineNumber;\n\t\tconst insertLine = insertPosition.lineNumber;\n\t\tconst cursorColumn = cursorPosition.column;\n\t\tconst insertColumn = insertPosition.column;\n\n\t\tconst atCursor = cursorLine === insertLine && cursorColumn === insertColumn;\n\t\tconst beforeCursorOnSameLine = cursorLine === insertLine && insertColumn < cursorColumn;\n\t\tconst afterCursorOnSameLine = cursorLine === insertLine && insertColumn > cursorColumn;\n\t\tconst linesAbove = insertLine < cursorLine ? cursorLine - insertLine : undefined;\n\t\tconst linesBelow = insertLine > cursorLine ? insertLine - cursorLine : undefined;\n\n\t\trelativeToCursor = {\n\t\t\tatCursor,\n\t\t\tbeforeCursorOnSameLine,\n\t\t\tafterCursorOnSameLine,\n\t\t\tlinesAbove,\n\t\t\tlinesBelow,\n\t\t};\n\t}\n\n\treturn {\n\t\ttextShape,\n\t\tlocationShape,\n\t\trelativeToCursor,\n\t};\n}\n\nfunction computeDeleteProperties(startOffset: number, endOffset: number, textModel: ITextModel): DeleteProperties {\n\tconst deletedText = textModel.getValue().substring(startOffset, endOffset);\n\tconst textShape = analyzeTextShape(deletedText);\n\n\tconst startPosition = textModel.getPositionAt(startOffset);\n\tconst endPosition = textModel.getPositionAt(endOffset);\n\n\t// Check if delete is at end of line\n\tconst lineContent = textModel.getLineContent(endPosition.lineNumber);\n\tconst isAtEndOfLine = endPosition.column > lineContent.length;\n\n\t// Check if entire line content is deleted\n\tconst deletesEntireLineContent =\n\t\tstartPosition.lineNumber === endPosition.lineNumber &&\n\t\tstartPosition.column === 1 &&\n\t\tendPosition.column > lineContent.length;\n\n\treturn {\n\t\ttextShape,\n\t\tisAtEndOfLine,\n\t\tdeletesEntireLineContent,\n\t};\n}\n\nfunction computeReplaceProperties(oldText: string, newText: string): ReplaceProperties {\n\tconst oldShape = analyzeTextShape(oldText);\n\tconst newShape = analyzeTextShape(newText);\n\n\tconst oldIsWord = oldShape.kind === 'singleLine' && oldShape.isWord;\n\tconst newIsWord = newShape.kind === 'singleLine' && newShape.isWord;\n\tconst isWordToWordReplacement = oldIsWord && newIsWord;\n\n\tconst isAdditive = newText.length > oldText.length;\n\tconst isSubtractive = newText.length < oldText.length;\n\n\tconst isSingleLineToSingleLine = oldShape.kind === 'singleLine' && newShape.kind === 'singleLine';\n\tconst isSingleLineToMultiLine = oldShape.kind === 'singleLine' && newShape.kind === 'multiLine';\n\tconst isMultiLineToSingleLine = oldShape.kind === 'multiLine' && newShape.kind === 'singleLine';\n\n\treturn {\n\t\tisWordToWordReplacement,\n\t\tisAdditive,\n\t\tisSubtractive,\n\t\tisSingleLineToSingleLine,\n\t\tisSingleLineToMultiLine,\n\t\tisMultiLineToSingleLine,\n\t};\n}\n"]}