monaco-editor-core 0.56.0-dev-20251124 → 0.56.0-dev-20251217

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 (337) 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 -2
  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/button/button.js +15 -8
  23. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  24. package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
  25. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  26. package/esm/vs/base/browser/ui/list/list.css +1 -0
  27. package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
  28. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  29. package/esm/vs/base/common/async.js +11 -0
  30. package/esm/vs/base/common/async.js.map +1 -1
  31. package/esm/vs/base/common/codiconsLibrary.js +11 -2
  32. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  33. package/esm/vs/base/common/defaultAccount.js +6 -0
  34. package/esm/vs/base/common/defaultAccount.js.map +1 -0
  35. package/esm/vs/base/common/equals.js +73 -24
  36. package/esm/vs/base/common/equals.js.map +1 -1
  37. package/esm/vs/base/common/event.js +14 -4
  38. package/esm/vs/base/common/event.js.map +1 -1
  39. package/esm/vs/base/common/iterator.js.map +1 -1
  40. package/esm/vs/base/common/keybindings.js +0 -8
  41. package/esm/vs/base/common/keybindings.js.map +1 -1
  42. package/esm/vs/base/common/lifecycle.js +2 -2
  43. package/esm/vs/base/common/lifecycle.js.map +1 -1
  44. package/esm/vs/base/common/marshallingIds.js.map +1 -1
  45. package/esm/vs/base/common/observableInternal/index.js +1 -1
  46. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  47. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
  48. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  49. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
  50. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  51. package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
  52. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  53. package/esm/vs/base/common/product.js.map +1 -1
  54. package/esm/vs/base/common/strings.js +3 -1
  55. package/esm/vs/base/common/strings.js.map +1 -1
  56. package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
  57. package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
  58. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
  59. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  60. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
  61. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  62. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
  63. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
  64. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  65. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
  66. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  67. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
  68. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
  69. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
  70. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
  71. package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
  72. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  73. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  74. package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
  75. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  76. package/esm/vs/editor/browser/view.js +11 -2
  77. package/esm/vs/editor/browser/view.js.map +1 -1
  78. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
  79. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  80. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
  81. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  82. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  83. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
  84. package/esm/vs/editor/common/config/fontInfo.js +1 -1
  85. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  86. package/esm/vs/editor/common/core/edits/edit.js +19 -0
  87. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  88. package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
  89. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  90. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  91. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
  92. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
  93. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  94. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  95. package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
  96. package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
  97. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
  98. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
  99. package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
  100. package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
  101. package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
  102. package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
  103. package/esm/vs/editor/common/languages.js +2 -1
  104. package/esm/vs/editor/common/languages.js.map +1 -1
  105. package/esm/vs/editor/common/model/decorationProvider.js +21 -1
  106. package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
  107. package/esm/vs/editor/common/model/textModel.js +49 -30
  108. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  109. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
  110. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
  111. package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
  112. package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
  113. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
  114. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
  115. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
  116. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
  117. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
  118. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
  119. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  120. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  121. package/esm/vs/editor/common/textModelEvents.js.map +1 -1
  122. package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
  123. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
  124. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  125. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
  126. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  127. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
  128. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  129. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  130. package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
  131. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
  132. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  133. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  134. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
  135. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  136. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +2 -0
  137. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
  138. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
  139. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  140. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
  141. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
  142. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
  143. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  144. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  145. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  146. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
  147. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  148. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
  149. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
  150. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
  151. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
  152. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
  153. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
  154. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -65
  155. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  156. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +69 -13
  157. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  158. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +159 -94
  159. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  160. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +124 -50
  161. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  162. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +393 -0
  163. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -0
  164. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  165. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
  166. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
  167. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
  168. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  169. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
  170. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  171. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
  172. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  173. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
  174. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  175. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
  176. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  177. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
  178. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  179. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
  180. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  181. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
  182. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  183. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
  184. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
  185. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
  186. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
  187. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
  188. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
  189. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
  190. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  191. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
  192. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
  193. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
  194. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
  195. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
  196. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
  197. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
  198. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
  199. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
  200. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  201. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
  202. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  203. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
  204. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
  205. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
  206. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
  207. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
  208. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
  209. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
  210. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  211. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
  212. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
  213. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  214. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  215. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  216. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  217. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  218. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  219. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  220. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  221. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  222. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  223. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  224. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  225. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  226. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
  227. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  228. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  229. package/esm/vs/editor/contrib/rename/browser/rename.js +19 -11
  230. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  231. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  232. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
  233. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
  234. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  235. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  236. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
  237. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
  238. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  239. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  240. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
  241. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  242. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
  243. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  244. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
  245. package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
  246. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
  247. package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
  248. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
  249. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
  250. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
  251. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  252. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
  253. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  254. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  255. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  256. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  257. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  258. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  259. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  260. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  261. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  262. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  263. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  264. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
  265. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
  266. package/esm/vs/editor/editor.api.d.ts +37 -2
  267. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
  268. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  269. package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
  270. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  271. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
  272. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
  273. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  274. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  275. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  276. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
  277. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  278. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  279. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  280. package/esm/vs/platform/actions/common/actions.js +11 -4
  281. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  282. package/esm/vs/platform/actions/common/menuService.js +2 -2
  283. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  284. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  285. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  286. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  287. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  288. package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
  289. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
  290. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  291. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  292. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  293. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  294. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
  295. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  296. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  297. package/esm/vs/platform/list/browser/listService.js +27 -27
  298. package/esm/vs/platform/log/common/log.js +1 -1
  299. package/esm/vs/platform/log/common/log.js.map +1 -1
  300. package/esm/vs/platform/markers/common/markerService.js +6 -6
  301. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  302. package/esm/vs/platform/markers/common/markers.js +6 -6
  303. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  304. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  305. package/esm/vs/platform/quickinput/browser/media/quickInput.css +7 -3
  306. package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
  307. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  308. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  309. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  310. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  311. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  312. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  313. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  314. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
  315. package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
  316. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  317. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  318. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  319. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  320. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  321. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  322. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  323. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  324. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  325. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  326. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  327. package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
  328. package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
  329. package/esm/vs/platform/window/common/window.js +1 -1
  330. package/esm/vs/platform/window/common/window.js.map +1 -1
  331. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  332. package/monaco.d.ts +37 -2
  333. package/package.json +2 -2
  334. package/version.txt +1 -1
  335. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
  336. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
  337. package/esm/vs/platform/product/common/productService.js.map +0 -1
@@ -3,7 +3,6 @@
3
3
  * Licensed under the MIT License. See License.txt in the project root for license information.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { BugIndicatingError } from '../../../../../base/common/errors.js';
6
- import { matchesSubString } from '../../../../../base/common/filters.js';
7
6
  import { observableSignal, observableValue } from '../../../../../base/common/observable.js';
8
7
  import { commonPrefixLength, commonSuffixLength, splitLines } from '../../../../../base/common/strings.js';
9
8
  import { applyEditsToRanges, StringEdit, StringReplacement } from '../../../../common/core/edits/stringEdit.js';
@@ -16,19 +15,25 @@ import { TextLength } from '../../../../common/core/text/textLength.js';
16
15
  import { linesDiffComputers } from '../../../../common/diff/linesDiffComputers.js';
17
16
  import { InlineCompletionTriggerKind } from '../../../../common/languages.js';
18
17
  import { TextModelText } from '../../../../common/model/textModelText.js';
19
- import { singleTextRemoveCommonPrefix } from './singleTextEditHelpers.js';
18
+ import { computeEditKind } from './editKind.js';
19
+ import { inlineCompletionIsVisible } from './inlineCompletionIsVisible.js';
20
+ import { InlineSuggestAlternativeAction } from './InlineSuggestAlternativeAction.js';
20
21
  export var InlineSuggestionItem;
21
22
  (function (InlineSuggestionItem) {
22
- function create(data, textModel) {
23
- if (!data.isInlineEdit && !data.uri) {
24
- return InlineCompletionItem.create(data, textModel);
23
+ function create(data, textModel, shouldDiffEdit = true) {
24
+ if (!data.isInlineEdit && !data.action?.uri && data.action?.kind === 'edit') {
25
+ return InlineCompletionItem.create(data, textModel, data.action);
25
26
  }
26
27
  else {
27
- return InlineEditItem.create(data, textModel);
28
+ return InlineEditItem.create(data, textModel, shouldDiffEdit);
28
29
  }
29
30
  }
30
31
  InlineSuggestionItem.create = create;
31
32
  })(InlineSuggestionItem || (InlineSuggestionItem = {}));
33
+ function hashInlineSuggestionAction(action) {
34
+ const obj = action?.kind === 'edit' ? { ...action, alternativeAction: InlineSuggestAlternativeAction.toString(action.alternativeAction) } : action;
35
+ return JSON.stringify(obj);
36
+ }
32
37
  class InlineSuggestionItemBase {
33
38
  constructor(_data, identity, hint) {
34
39
  this._data = _data;
@@ -42,19 +47,26 @@ class InlineSuggestionItemBase {
42
47
  get source() { return this._data.source; }
43
48
  get isFromExplicitRequest() { return this._data.context.triggerKind === InlineCompletionTriggerKind.Explicit; }
44
49
  get forwardStable() { return this.source.inlineSuggestions.enableForwardStability ?? false; }
45
- get editRange() { return this.getSingleTextEdit().range; }
46
- get targetRange() { return this.hint?.range ?? this.editRange; }
47
- get insertText() { return this.getSingleTextEdit().text; }
50
+ get targetRange() {
51
+ if (this.hint) {
52
+ return this.hint.range;
53
+ }
54
+ if (this.action?.kind === 'edit') {
55
+ return this.action.textReplacement.range;
56
+ }
57
+ else if (this.action?.kind === 'jumpTo') {
58
+ return Range.fromPositions(this.action.position);
59
+ }
60
+ throw new BugIndicatingError('InlineSuggestionItem: Either hint or action must be set');
61
+ }
48
62
  get semanticId() { return this.hash; }
49
- get action() { return this._sourceInlineCompletion.gutterMenuLinkAction; }
63
+ get gutterMenuLinkAction() { return this._sourceInlineCompletion.gutterMenuLinkAction; }
50
64
  get command() { return this._sourceInlineCompletion.command; }
65
+ get supportsRename() { return this._data.supportsRename; }
51
66
  get warning() { return this._sourceInlineCompletion.warning; }
52
67
  get showInlineEditMenu() { return !!this._sourceInlineCompletion.showInlineEditMenu; }
53
68
  get hash() {
54
- return JSON.stringify([
55
- this.getSingleTextEdit().text,
56
- this.getSingleTextEdit().range.getStartPosition().toString()
57
- ]);
69
+ return hashInlineSuggestionAction(this.action);
58
70
  }
59
71
  get requestUuid() { return this._data.context.requestUuid; }
60
72
  get partialAccepts() { return this._data.partialAccepts; }
@@ -71,8 +83,9 @@ class InlineSuggestionItemBase {
71
83
  this.identity.removeRef();
72
84
  this.source.removeRef();
73
85
  }
74
- reportInlineEditShown(commandService, viewKind, viewData) {
75
- this._data.reportInlineEditShown(commandService, this.insertText, viewKind, viewData);
86
+ reportInlineEditShown(commandService, viewKind, viewData, model, timeWhenShown) {
87
+ const insertText = this.action?.kind === 'edit' ? this.action.textReplacement.text : ''; // TODO@hediet support insertText === undefined
88
+ this._data.reportInlineEditShown(commandService, insertText, viewKind, viewData, this.computeEditKind(model), timeWhenShown);
76
89
  }
77
90
  reportPartialAccept(acceptedCharacters, info, partialAcceptance) {
78
91
  this._data.reportPartialAccept(acceptedCharacters, info, partialAcceptance);
@@ -95,6 +108,15 @@ class InlineSuggestionItemBase {
95
108
  getSourceCompletion() {
96
109
  return this._sourceInlineCompletion;
97
110
  }
111
+ setRenameProcessingInfo(info) {
112
+ this._data.setRenameProcessingInfo(info);
113
+ }
114
+ withAction(action) {
115
+ return this._data.withAction(action);
116
+ }
117
+ addPerformanceMarker(marker) {
118
+ this._data.addPerformanceMarker(marker);
119
+ }
98
120
  }
99
121
  export class InlineSuggestionIdentity {
100
122
  constructor() {
@@ -121,8 +143,8 @@ export class InlineSuggestionIdentity {
121
143
  }
122
144
  }
123
145
  export class InlineSuggestHint {
124
- static create(displayLocation) {
125
- return new InlineSuggestHint(Range.lift(displayLocation.range), displayLocation.content, displayLocation.style);
146
+ static create(hint) {
147
+ return new InlineSuggestHint(Range.lift(hint.range), hint.content, hint.style);
126
148
  }
127
149
  constructor(range, content, style) {
128
150
  this.range = range;
@@ -140,15 +162,15 @@ export class InlineSuggestHint {
140
162
  }
141
163
  }
142
164
  export class InlineCompletionItem extends InlineSuggestionItemBase {
143
- static create(data, textModel) {
165
+ static create(data, textModel, action) {
144
166
  const identity = new InlineSuggestionIdentity();
145
167
  const transformer = getPositionOffsetTransformerFromTextModel(textModel);
146
- const insertText = data.insertText.replace(/\r\n|\r|\n/g, textModel.getEOL());
147
- const edit = reshapeInlineCompletion(new StringReplacement(transformer.getOffsetRange(data.range), insertText), textModel);
168
+ const insertText = action.insertText.replace(/\r\n|\r|\n/g, textModel.getEOL());
169
+ const edit = reshapeInlineCompletion(new StringReplacement(transformer.getOffsetRange(action.range), insertText), textModel);
148
170
  const trimmedEdit = edit.removeCommonSuffixAndPrefix(textModel.getValue());
149
171
  const textEdit = transformer.getTextReplacement(edit);
150
172
  const displayLocation = data.hint ? InlineSuggestHint.create(data.hint) : undefined;
151
- return new InlineCompletionItem(edit, trimmedEdit, textEdit, textEdit.range, data.snippetInfo, data.additionalTextEdits, data, identity, displayLocation);
173
+ return new InlineCompletionItem(edit, trimmedEdit, textEdit, textEdit.range, action.snippetInfo, data.additionalTextEdits, data, identity, displayLocation);
152
174
  }
153
175
  constructor(_edit, _trimmedEdit, _textEdit, _originalRange, snippetInfo, additionalTextEdits, data, identity, displayLocation) {
154
176
  super(data, identity, displayLocation);
@@ -160,6 +182,16 @@ export class InlineCompletionItem extends InlineSuggestionItemBase {
160
182
  this.additionalTextEdits = additionalTextEdits;
161
183
  this.isInlineEdit = false;
162
184
  }
185
+ get action() {
186
+ return {
187
+ kind: 'edit',
188
+ textReplacement: this.getSingleTextEdit(),
189
+ snippetInfo: this.snippetInfo,
190
+ stringEdit: new StringEdit([this._trimmedEdit]),
191
+ uri: undefined,
192
+ alternativeAction: undefined,
193
+ };
194
+ }
163
195
  get hash() {
164
196
  return JSON.stringify(this._trimmedEdit.toJson());
165
197
  }
@@ -198,61 +230,55 @@ export class InlineCompletionItem extends InlineSuggestionItemBase {
198
230
  const singleTextEdit = this.getSingleTextEdit();
199
231
  return inlineCompletionIsVisible(singleTextEdit, this._originalRange, model, cursorPosition);
200
232
  }
201
- }
202
- export function inlineCompletionIsVisible(singleTextEdit, originalRange, model, cursorPosition) {
203
- const minimizedReplacement = singleTextRemoveCommonPrefix(singleTextEdit, model);
204
- const editRange = singleTextEdit.range;
205
- if (!editRange
206
- || (originalRange && !originalRange.getStartPosition().equals(editRange.getStartPosition()))
207
- || cursorPosition.lineNumber !== minimizedReplacement.range.startLineNumber
208
- || minimizedReplacement.isEmpty // if the completion is empty after removing the common prefix of the completion and the model, the completion item would not be visible
209
- ) {
210
- return false;
211
- }
212
- // We might consider comparing by .toLowerText, but this requires GhostTextReplacement
213
- const originalValue = model.getValueInRange(minimizedReplacement.range, 1 /* EndOfLinePreference.LF */);
214
- const filterText = minimizedReplacement.text;
215
- const cursorPosIndex = Math.max(0, cursorPosition.column - minimizedReplacement.range.startColumn);
216
- let filterTextBefore = filterText.substring(0, cursorPosIndex);
217
- let filterTextAfter = filterText.substring(cursorPosIndex);
218
- let originalValueBefore = originalValue.substring(0, cursorPosIndex);
219
- let originalValueAfter = originalValue.substring(cursorPosIndex);
220
- const originalValueIndent = model.getLineIndentColumn(minimizedReplacement.range.startLineNumber);
221
- if (minimizedReplacement.range.startColumn <= originalValueIndent) {
222
- // Remove indentation
223
- originalValueBefore = originalValueBefore.trimStart();
224
- if (originalValueBefore.length === 0) {
225
- originalValueAfter = originalValueAfter.trimStart();
226
- }
227
- filterTextBefore = filterTextBefore.trimStart();
228
- if (filterTextBefore.length === 0) {
229
- filterTextAfter = filterTextAfter.trimStart();
230
- }
233
+ computeEditKind(model) {
234
+ return computeEditKind(new StringEdit([this._edit]), model);
231
235
  }
232
- return filterTextBefore.startsWith(originalValueBefore)
233
- && !!matchesSubString(originalValueAfter, filterTextAfter);
236
+ get editRange() { return this.getSingleTextEdit().range; }
234
237
  }
235
238
  export class InlineEditItem extends InlineSuggestionItemBase {
236
- static create(data, textModel) {
237
- const offsetEdit = getStringEdit(textModel, data.range, data.insertText); // TODO compute async
238
- const text = new TextModelText(textModel);
239
- const textEdit = TextEdit.fromStringEdit(offsetEdit, text);
240
- const singleTextEdit = offsetEdit.isEmpty() ? new TextReplacement(new Range(1, 1, 1, 1), '') : textEdit.toReplacement(text); // FIXME: .toReplacement() can throw because offsetEdit is empty because we get an empty diff in getStringEdit after diffing
239
+ static create(data, textModel, shouldDiffEdit = true) {
240
+ let action;
241
+ let edits = [];
242
+ if (data.action?.kind === 'edit') {
243
+ const offsetEdit = shouldDiffEdit ? getDiffedStringEdit(textModel, data.action.range, data.action.insertText) : getStringEdit(textModel, data.action.range, data.action.insertText); // TODO compute async
244
+ const text = new TextModelText(textModel);
245
+ const textEdit = TextEdit.fromStringEdit(offsetEdit, text);
246
+ const singleTextEdit = offsetEdit.isEmpty() ? new TextReplacement(new Range(1, 1, 1, 1), '') : textEdit.toReplacement(text); // FIXME: .toReplacement() can throw because offsetEdit is empty because we get an empty diff in getStringEdit after diffing
247
+ edits = offsetEdit.replacements.map(edit => {
248
+ const replacedRange = Range.fromPositions(textModel.getPositionAt(edit.replaceRange.start), textModel.getPositionAt(edit.replaceRange.endExclusive));
249
+ const replacedText = textModel.getValueInRange(replacedRange);
250
+ return SingleUpdatedNextEdit.create(edit, replacedText);
251
+ });
252
+ action = {
253
+ kind: 'edit',
254
+ snippetInfo: data.action.snippetInfo,
255
+ stringEdit: offsetEdit,
256
+ textReplacement: singleTextEdit,
257
+ uri: data.action.uri,
258
+ alternativeAction: data.action.alternativeAction,
259
+ };
260
+ }
261
+ else if (data.action?.kind === 'jumpTo') {
262
+ action = {
263
+ kind: 'jumpTo',
264
+ position: data.action.position,
265
+ offset: textModel.getOffsetAt(data.action.position),
266
+ uri: data.action.uri,
267
+ };
268
+ }
269
+ else {
270
+ action = undefined;
271
+ if (!data.hint) {
272
+ throw new BugIndicatingError('InlineEditItem: action is undefined and no hint is provided');
273
+ }
274
+ }
241
275
  const identity = new InlineSuggestionIdentity();
242
- const edits = offsetEdit.replacements.map(edit => {
243
- const replacedRange = Range.fromPositions(textModel.getPositionAt(edit.replaceRange.start), textModel.getPositionAt(edit.replaceRange.endExclusive));
244
- const replacedText = textModel.getValueInRange(replacedRange);
245
- return SingleUpdatedNextEdit.create(edit, replacedText);
246
- });
247
276
  const hint = data.hint ? InlineSuggestHint.create(data.hint) : undefined;
248
- return new InlineEditItem(offsetEdit, singleTextEdit, data.uri, data, identity, edits, hint, false, textModel.getVersionId());
277
+ return new InlineEditItem(action, data, identity, edits, hint, false, textModel.getVersionId());
249
278
  }
250
- constructor(_edit, // TODO@hediet remove, compute & cache from _edits
251
- _textEdit, uri, data, identity, _edits, hint, _lastChangePartOfInlineEdit = false, _inlineEditModelVersion) {
279
+ constructor(_action, data, identity, _edits, hint, _lastChangePartOfInlineEdit = false, _inlineEditModelVersion) {
252
280
  super(data, identity, hint);
253
- this._edit = _edit;
254
- this._textEdit = _textEdit;
255
- this.uri = uri;
281
+ this._action = _action;
256
282
  this._edits = _edits;
257
283
  this._lastChangePartOfInlineEdit = _lastChangePartOfInlineEdit;
258
284
  this._inlineEditModelVersion = _inlineEditModelVersion;
@@ -261,12 +287,12 @@ export class InlineEditItem extends InlineSuggestionItemBase {
261
287
  this.isInlineEdit = true;
262
288
  }
263
289
  get updatedEditModelVersion() { return this._inlineEditModelVersion; }
264
- get updatedEdit() { return this._edit; }
265
- getSingleTextEdit() {
266
- return this._textEdit;
290
+ // public get updatedEdit(): StringEdit { return this._edit; }
291
+ get action() {
292
+ return this._action;
267
293
  }
268
294
  withIdentity(identity) {
269
- return new InlineEditItem(this._edit, this._textEdit, this.uri, this._data, identity, this._edits, this.hint, this._lastChangePartOfInlineEdit, this._inlineEditModelVersion);
295
+ return new InlineEditItem(this._action, this._data, identity, this._edits, this.hint, this._lastChangePartOfInlineEdit, this._inlineEditModelVersion);
270
296
  }
271
297
  canBeReused(model, position) {
272
298
  // TODO@hediet I believe this can be simplified to `return true;`, as applying an edit should kick out this suggestion.
@@ -277,26 +303,55 @@ export class InlineEditItem extends InlineSuggestionItemBase {
277
303
  return edit;
278
304
  }
279
305
  _applyTextModelChanges(textModelChanges, edits, textModel) {
280
- edits = edits.map(innerEdit => innerEdit.applyTextModelChanges(textModelChanges));
281
- if (edits.some(edit => edit.edit === undefined)) {
282
- return undefined; // change is invalid, so we will have to drop the completion
283
- }
284
- const newTextModelVersion = textModel.getVersionId();
306
+ const positionOffsetTransformer = getPositionOffsetTransformerFromTextModel(textModel);
307
+ let lastChangePartOfInlineEdit = false;
285
308
  let inlineEditModelVersion = this._inlineEditModelVersion;
286
- const lastChangePartOfInlineEdit = edits.some(edit => edit.lastChangeUpdatedEdit);
287
- if (lastChangePartOfInlineEdit) {
288
- inlineEditModelVersion = newTextModelVersion ?? -1;
309
+ let newAction;
310
+ if (this.action?.kind === 'edit') { // TODO What about rename?
311
+ edits = edits.map(innerEdit => innerEdit.applyTextModelChanges(textModelChanges));
312
+ if (edits.some(edit => edit.edit === undefined)) {
313
+ return undefined; // change is invalid, so we will have to drop the completion
314
+ }
315
+ const newTextModelVersion = textModel.getVersionId();
316
+ lastChangePartOfInlineEdit = edits.some(edit => edit.lastChangeUpdatedEdit);
317
+ if (lastChangePartOfInlineEdit) {
318
+ inlineEditModelVersion = newTextModelVersion ?? -1;
319
+ }
320
+ if (newTextModelVersion === null || inlineEditModelVersion + 20 < newTextModelVersion) {
321
+ return undefined; // the completion has been ignored for a while, remove it
322
+ }
323
+ edits = edits.filter(innerEdit => !innerEdit.edit.isEmpty);
324
+ if (edits.length === 0) {
325
+ return undefined; // the completion has been typed by the user
326
+ }
327
+ const newEdit = new StringEdit(edits.map(edit => edit.edit));
328
+ const newTextEdit = positionOffsetTransformer.getTextEdit(newEdit).toReplacement(new TextModelText(textModel));
329
+ newAction = {
330
+ kind: 'edit',
331
+ textReplacement: newTextEdit,
332
+ snippetInfo: this.snippetInfo,
333
+ stringEdit: newEdit,
334
+ uri: this.action.uri,
335
+ alternativeAction: this.action.alternativeAction,
336
+ };
289
337
  }
290
- if (newTextModelVersion === null || inlineEditModelVersion + 20 < newTextModelVersion) {
291
- return undefined; // the completion has been ignored for a while, remove it
338
+ else if (this.action?.kind === 'jumpTo') {
339
+ const jumpToOffset = this.action.offset;
340
+ const newJumpToOffset = textModelChanges.applyToOffsetOrUndefined(jumpToOffset);
341
+ if (newJumpToOffset === undefined) {
342
+ return undefined;
343
+ }
344
+ const newJumpToPosition = positionOffsetTransformer.getPosition(newJumpToOffset);
345
+ newAction = {
346
+ kind: 'jumpTo',
347
+ position: newJumpToPosition,
348
+ offset: newJumpToOffset,
349
+ uri: this.action.uri,
350
+ };
292
351
  }
293
- edits = edits.filter(innerEdit => !innerEdit.edit.isEmpty);
294
- if (edits.length === 0) {
295
- return undefined; // the completion has been typed by the user
352
+ else {
353
+ newAction = undefined;
296
354
  }
297
- const newEdit = new StringEdit(edits.map(edit => edit.edit));
298
- const positionOffsetTransformer = getPositionOffsetTransformerFromTextModel(textModel);
299
- const newTextEdit = positionOffsetTransformer.getTextEdit(newEdit).toReplacement(new TextModelText(textModel));
300
355
  let newDisplayLocation = this.hint;
301
356
  if (newDisplayLocation) {
302
357
  newDisplayLocation = newDisplayLocation.withEdit(textModelChanges, positionOffsetTransformer);
@@ -304,10 +359,17 @@ export class InlineEditItem extends InlineSuggestionItemBase {
304
359
  return undefined;
305
360
  }
306
361
  }
307
- return new InlineEditItem(newEdit, newTextEdit, this.uri, this._data, this.identity, edits, newDisplayLocation, lastChangePartOfInlineEdit, inlineEditModelVersion);
362
+ return new InlineEditItem(newAction, this._data, this.identity, edits, newDisplayLocation, lastChangePartOfInlineEdit, inlineEditModelVersion);
363
+ }
364
+ computeEditKind(model) {
365
+ const edit = this.action?.kind === 'edit' ? this.action.stringEdit : undefined;
366
+ if (!edit) {
367
+ return undefined;
368
+ }
369
+ return computeEditKind(edit, model);
308
370
  }
309
371
  }
310
- function getStringEdit(textModel, editRange, replaceText) {
372
+ function getDiffedStringEdit(textModel, editRange, replaceText) {
311
373
  const eol = textModel.getEOL();
312
374
  const editOriginalText = textModel.getValueInRange(editRange);
313
375
  const editReplaceText = replaceText.replace(/\r\n|\r|\n/g, eol);
@@ -316,7 +378,7 @@ function getStringEdit(textModel, editRange, replaceText) {
316
378
  ignoreTrimWhitespace: false,
317
379
  computeMoves: false,
318
380
  extendToSubwords: true,
319
- maxComputationTimeMs: 500,
381
+ maxComputationTimeMs: 50,
320
382
  });
321
383
  const innerChanges = lineDiffs.changes.flatMap(c => c.innerChanges ?? []);
322
384
  function addRangeToPos(pos, range) {
@@ -334,6 +396,9 @@ function getStringEdit(textModel, editRange, replaceText) {
334
396
  }));
335
397
  return offsetEdit;
336
398
  }
399
+ function getStringEdit(textModel, editRange, replaceText) {
400
+ return new StringEdit([new StringReplacement(getPositionOffsetTransformerFromTextModel(textModel).getOffsetRange(editRange), replaceText)]);
401
+ }
337
402
  class SingleUpdatedNextEdit {
338
403
  static create(edit, replacedText) {
339
404
  const prefixLength = commonPrefixLength(edit.newText, replacedText);
@@ -384,7 +449,7 @@ class SingleUpdatedNextEdit {
384
449
  if (isInsertion && !shouldPreserveEditShape && change.replaceRange.start === editStart && editReplaceText.startsWith(change.newText)) {
385
450
  editStart += change.newText.length;
386
451
  editReplaceText = editReplaceText.substring(change.newText.length);
387
- editEnd = Math.max(editStart, editEnd);
452
+ editEnd += change.newText.length;
388
453
  editHasChanged = true;
389
454
  continue;
390
455
  }