monaco-editor-core 0.56.0-dev-20251125 → 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.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +30 -4
- package/esm/vs/base/browser/dom.js +1 -4
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/markdownRenderer.js +25 -11
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/ui/button/button.js +15 -8
- package/esm/vs/base/browser/ui/button/button.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/list/list.css +1 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +11 -2
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/defaultAccount.js +6 -0
- package/esm/vs/base/common/defaultAccount.js.map +1 -0
- package/esm/vs/base/common/equals.js +73 -24
- package/esm/vs/base/common/equals.js.map +1 -1
- package/esm/vs/base/common/event.js +14 -4
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/iterator.js.map +1 -1
- package/esm/vs/base/common/keybindings.js +0 -8
- package/esm/vs/base/common/keybindings.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +2 -2
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/marshallingIds.js.map +1 -1
- package/esm/vs/base/common/observableInternal/index.js +1 -1
- package/esm/vs/base/common/observableInternal/index.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
- package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/strings.js +3 -1
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/view.js +11 -2
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
- package/esm/vs/editor/common/config/fontInfo.js +1 -1
- package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
- package/esm/vs/editor/common/core/edits/edit.js +19 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
- package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
- package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
- package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
- package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
- package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
- package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
- package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
- package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
- package/esm/vs/editor/common/languages.js +2 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/decorationProvider.js +21 -1
- package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
- package/esm/vs/editor/common/model/textModel.js +49 -30
- package/esm/vs/editor/common/model/textModel.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
- package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
- package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
- package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
- package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
- package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
- package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
- package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +2 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/textModelEvents.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
- package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +19 -15
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
- package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +34 -3
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/actions.js +11 -5
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
- package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
- package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/log/common/log.js +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/markers/common/markerService.js +6 -6
- package/esm/vs/platform/markers/common/markerService.js.map +1 -1
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +7 -3
- package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
- package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
- package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
- package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
- package/esm/vs/platform/window/common/window.js +1 -1
- package/esm/vs/platform/window/common/window.js.map +1 -1
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +34 -3
- package/package.json +2 -2
- package/version.txt +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
- 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 {
|
|
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,21 +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
|
|
46
|
-
|
|
47
|
-
|
|
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
|
|
63
|
+
get gutterMenuLinkAction() { return this._sourceInlineCompletion.gutterMenuLinkAction; }
|
|
50
64
|
get command() { return this._sourceInlineCompletion.command; }
|
|
51
65
|
get supportsRename() { return this._data.supportsRename; }
|
|
52
|
-
get renameCommand() { return this._data.renameCommand; }
|
|
53
66
|
get warning() { return this._sourceInlineCompletion.warning; }
|
|
54
67
|
get showInlineEditMenu() { return !!this._sourceInlineCompletion.showInlineEditMenu; }
|
|
55
68
|
get hash() {
|
|
56
|
-
return
|
|
57
|
-
this.getSingleTextEdit().text,
|
|
58
|
-
this.getSingleTextEdit().range.getStartPosition().toString()
|
|
59
|
-
]);
|
|
69
|
+
return hashInlineSuggestionAction(this.action);
|
|
60
70
|
}
|
|
61
71
|
get requestUuid() { return this._data.context.requestUuid; }
|
|
62
72
|
get partialAccepts() { return this._data.partialAccepts; }
|
|
@@ -73,8 +83,9 @@ class InlineSuggestionItemBase {
|
|
|
73
83
|
this.identity.removeRef();
|
|
74
84
|
this.source.removeRef();
|
|
75
85
|
}
|
|
76
|
-
reportInlineEditShown(commandService, viewKind, viewData) {
|
|
77
|
-
this.
|
|
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);
|
|
78
89
|
}
|
|
79
90
|
reportPartialAccept(acceptedCharacters, info, partialAcceptance) {
|
|
80
91
|
this._data.reportPartialAccept(acceptedCharacters, info, partialAcceptance);
|
|
@@ -100,8 +111,11 @@ class InlineSuggestionItemBase {
|
|
|
100
111
|
setRenameProcessingInfo(info) {
|
|
101
112
|
this._data.setRenameProcessingInfo(info);
|
|
102
113
|
}
|
|
103
|
-
|
|
104
|
-
return this._data.
|
|
114
|
+
withAction(action) {
|
|
115
|
+
return this._data.withAction(action);
|
|
116
|
+
}
|
|
117
|
+
addPerformanceMarker(marker) {
|
|
118
|
+
this._data.addPerformanceMarker(marker);
|
|
105
119
|
}
|
|
106
120
|
}
|
|
107
121
|
export class InlineSuggestionIdentity {
|
|
@@ -148,15 +162,15 @@ export class InlineSuggestHint {
|
|
|
148
162
|
}
|
|
149
163
|
}
|
|
150
164
|
export class InlineCompletionItem extends InlineSuggestionItemBase {
|
|
151
|
-
static create(data, textModel) {
|
|
165
|
+
static create(data, textModel, action) {
|
|
152
166
|
const identity = new InlineSuggestionIdentity();
|
|
153
167
|
const transformer = getPositionOffsetTransformerFromTextModel(textModel);
|
|
154
|
-
const insertText =
|
|
155
|
-
const edit = reshapeInlineCompletion(new StringReplacement(transformer.getOffsetRange(
|
|
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);
|
|
156
170
|
const trimmedEdit = edit.removeCommonSuffixAndPrefix(textModel.getValue());
|
|
157
171
|
const textEdit = transformer.getTextReplacement(edit);
|
|
158
172
|
const displayLocation = data.hint ? InlineSuggestHint.create(data.hint) : undefined;
|
|
159
|
-
return new InlineCompletionItem(edit, trimmedEdit, textEdit, textEdit.range,
|
|
173
|
+
return new InlineCompletionItem(edit, trimmedEdit, textEdit, textEdit.range, action.snippetInfo, data.additionalTextEdits, data, identity, displayLocation);
|
|
160
174
|
}
|
|
161
175
|
constructor(_edit, _trimmedEdit, _textEdit, _originalRange, snippetInfo, additionalTextEdits, data, identity, displayLocation) {
|
|
162
176
|
super(data, identity, displayLocation);
|
|
@@ -168,6 +182,16 @@ export class InlineCompletionItem extends InlineSuggestionItemBase {
|
|
|
168
182
|
this.additionalTextEdits = additionalTextEdits;
|
|
169
183
|
this.isInlineEdit = false;
|
|
170
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
|
+
}
|
|
171
195
|
get hash() {
|
|
172
196
|
return JSON.stringify(this._trimmedEdit.toJson());
|
|
173
197
|
}
|
|
@@ -206,61 +230,55 @@ export class InlineCompletionItem extends InlineSuggestionItemBase {
|
|
|
206
230
|
const singleTextEdit = this.getSingleTextEdit();
|
|
207
231
|
return inlineCompletionIsVisible(singleTextEdit, this._originalRange, model, cursorPosition);
|
|
208
232
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
const minimizedReplacement = singleTextRemoveCommonPrefix(singleTextEdit, model);
|
|
212
|
-
const editRange = singleTextEdit.range;
|
|
213
|
-
if (!editRange
|
|
214
|
-
|| (originalRange && !originalRange.getStartPosition().equals(editRange.getStartPosition()))
|
|
215
|
-
|| cursorPosition.lineNumber !== minimizedReplacement.range.startLineNumber
|
|
216
|
-
|| 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
|
|
217
|
-
) {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
// We might consider comparing by .toLowerText, but this requires GhostTextReplacement
|
|
221
|
-
const originalValue = model.getValueInRange(minimizedReplacement.range, 1 /* EndOfLinePreference.LF */);
|
|
222
|
-
const filterText = minimizedReplacement.text;
|
|
223
|
-
const cursorPosIndex = Math.max(0, cursorPosition.column - minimizedReplacement.range.startColumn);
|
|
224
|
-
let filterTextBefore = filterText.substring(0, cursorPosIndex);
|
|
225
|
-
let filterTextAfter = filterText.substring(cursorPosIndex);
|
|
226
|
-
let originalValueBefore = originalValue.substring(0, cursorPosIndex);
|
|
227
|
-
let originalValueAfter = originalValue.substring(cursorPosIndex);
|
|
228
|
-
const originalValueIndent = model.getLineIndentColumn(minimizedReplacement.range.startLineNumber);
|
|
229
|
-
if (minimizedReplacement.range.startColumn <= originalValueIndent) {
|
|
230
|
-
// Remove indentation
|
|
231
|
-
originalValueBefore = originalValueBefore.trimStart();
|
|
232
|
-
if (originalValueBefore.length === 0) {
|
|
233
|
-
originalValueAfter = originalValueAfter.trimStart();
|
|
234
|
-
}
|
|
235
|
-
filterTextBefore = filterTextBefore.trimStart();
|
|
236
|
-
if (filterTextBefore.length === 0) {
|
|
237
|
-
filterTextAfter = filterTextAfter.trimStart();
|
|
238
|
-
}
|
|
233
|
+
computeEditKind(model) {
|
|
234
|
+
return computeEditKind(new StringEdit([this._edit]), model);
|
|
239
235
|
}
|
|
240
|
-
return
|
|
241
|
-
&& !!matchesSubString(originalValueAfter, filterTextAfter);
|
|
236
|
+
get editRange() { return this.getSingleTextEdit().range; }
|
|
242
237
|
}
|
|
243
238
|
export class InlineEditItem extends InlineSuggestionItemBase {
|
|
244
|
-
static create(data, textModel) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
+
}
|
|
249
275
|
const identity = new InlineSuggestionIdentity();
|
|
250
|
-
const edits = offsetEdit.replacements.map(edit => {
|
|
251
|
-
const replacedRange = Range.fromPositions(textModel.getPositionAt(edit.replaceRange.start), textModel.getPositionAt(edit.replaceRange.endExclusive));
|
|
252
|
-
const replacedText = textModel.getValueInRange(replacedRange);
|
|
253
|
-
return SingleUpdatedNextEdit.create(edit, replacedText);
|
|
254
|
-
});
|
|
255
276
|
const hint = data.hint ? InlineSuggestHint.create(data.hint) : undefined;
|
|
256
|
-
return new InlineEditItem(
|
|
277
|
+
return new InlineEditItem(action, data, identity, edits, hint, false, textModel.getVersionId());
|
|
257
278
|
}
|
|
258
|
-
constructor(
|
|
259
|
-
_textEdit, uri, data, identity, _edits, hint, _lastChangePartOfInlineEdit = false, _inlineEditModelVersion) {
|
|
279
|
+
constructor(_action, data, identity, _edits, hint, _lastChangePartOfInlineEdit = false, _inlineEditModelVersion) {
|
|
260
280
|
super(data, identity, hint);
|
|
261
|
-
this.
|
|
262
|
-
this._textEdit = _textEdit;
|
|
263
|
-
this.uri = uri;
|
|
281
|
+
this._action = _action;
|
|
264
282
|
this._edits = _edits;
|
|
265
283
|
this._lastChangePartOfInlineEdit = _lastChangePartOfInlineEdit;
|
|
266
284
|
this._inlineEditModelVersion = _inlineEditModelVersion;
|
|
@@ -269,12 +287,12 @@ export class InlineEditItem extends InlineSuggestionItemBase {
|
|
|
269
287
|
this.isInlineEdit = true;
|
|
270
288
|
}
|
|
271
289
|
get updatedEditModelVersion() { return this._inlineEditModelVersion; }
|
|
272
|
-
get updatedEdit() { return this._edit; }
|
|
273
|
-
|
|
274
|
-
return this.
|
|
290
|
+
// public get updatedEdit(): StringEdit { return this._edit; }
|
|
291
|
+
get action() {
|
|
292
|
+
return this._action;
|
|
275
293
|
}
|
|
276
294
|
withIdentity(identity) {
|
|
277
|
-
return new InlineEditItem(this.
|
|
295
|
+
return new InlineEditItem(this._action, this._data, identity, this._edits, this.hint, this._lastChangePartOfInlineEdit, this._inlineEditModelVersion);
|
|
278
296
|
}
|
|
279
297
|
canBeReused(model, position) {
|
|
280
298
|
// TODO@hediet I believe this can be simplified to `return true;`, as applying an edit should kick out this suggestion.
|
|
@@ -285,26 +303,55 @@ export class InlineEditItem extends InlineSuggestionItemBase {
|
|
|
285
303
|
return edit;
|
|
286
304
|
}
|
|
287
305
|
_applyTextModelChanges(textModelChanges, edits, textModel) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
return undefined; // change is invalid, so we will have to drop the completion
|
|
291
|
-
}
|
|
292
|
-
const newTextModelVersion = textModel.getVersionId();
|
|
306
|
+
const positionOffsetTransformer = getPositionOffsetTransformerFromTextModel(textModel);
|
|
307
|
+
let lastChangePartOfInlineEdit = false;
|
|
293
308
|
let inlineEditModelVersion = this._inlineEditModelVersion;
|
|
294
|
-
|
|
295
|
-
if (
|
|
296
|
-
|
|
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
|
+
};
|
|
297
337
|
}
|
|
298
|
-
if (
|
|
299
|
-
|
|
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
|
+
};
|
|
300
351
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
return undefined; // the completion has been typed by the user
|
|
352
|
+
else {
|
|
353
|
+
newAction = undefined;
|
|
304
354
|
}
|
|
305
|
-
const newEdit = new StringEdit(edits.map(edit => edit.edit));
|
|
306
|
-
const positionOffsetTransformer = getPositionOffsetTransformerFromTextModel(textModel);
|
|
307
|
-
const newTextEdit = positionOffsetTransformer.getTextEdit(newEdit).toReplacement(new TextModelText(textModel));
|
|
308
355
|
let newDisplayLocation = this.hint;
|
|
309
356
|
if (newDisplayLocation) {
|
|
310
357
|
newDisplayLocation = newDisplayLocation.withEdit(textModelChanges, positionOffsetTransformer);
|
|
@@ -312,10 +359,17 @@ export class InlineEditItem extends InlineSuggestionItemBase {
|
|
|
312
359
|
return undefined;
|
|
313
360
|
}
|
|
314
361
|
}
|
|
315
|
-
return new InlineEditItem(
|
|
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);
|
|
316
370
|
}
|
|
317
371
|
}
|
|
318
|
-
function
|
|
372
|
+
function getDiffedStringEdit(textModel, editRange, replaceText) {
|
|
319
373
|
const eol = textModel.getEOL();
|
|
320
374
|
const editOriginalText = textModel.getValueInRange(editRange);
|
|
321
375
|
const editReplaceText = replaceText.replace(/\r\n|\r|\n/g, eol);
|
|
@@ -324,7 +378,7 @@ function getStringEdit(textModel, editRange, replaceText) {
|
|
|
324
378
|
ignoreTrimWhitespace: false,
|
|
325
379
|
computeMoves: false,
|
|
326
380
|
extendToSubwords: true,
|
|
327
|
-
maxComputationTimeMs:
|
|
381
|
+
maxComputationTimeMs: 50,
|
|
328
382
|
});
|
|
329
383
|
const innerChanges = lineDiffs.changes.flatMap(c => c.innerChanges ?? []);
|
|
330
384
|
function addRangeToPos(pos, range) {
|
|
@@ -342,6 +396,9 @@ function getStringEdit(textModel, editRange, replaceText) {
|
|
|
342
396
|
}));
|
|
343
397
|
return offsetEdit;
|
|
344
398
|
}
|
|
399
|
+
function getStringEdit(textModel, editRange, replaceText) {
|
|
400
|
+
return new StringEdit([new StringReplacement(getPositionOffsetTransformerFromTextModel(textModel).getOffsetRange(editRange), replaceText)]);
|
|
401
|
+
}
|
|
345
402
|
class SingleUpdatedNextEdit {
|
|
346
403
|
static create(edit, replacedText) {
|
|
347
404
|
const prefixLength = commonPrefixLength(edit.newText, replacedText);
|
|
@@ -392,7 +449,7 @@ class SingleUpdatedNextEdit {
|
|
|
392
449
|
if (isInsertion && !shouldPreserveEditShape && change.replaceRange.start === editStart && editReplaceText.startsWith(change.newText)) {
|
|
393
450
|
editStart += change.newText.length;
|
|
394
451
|
editReplaceText = editReplaceText.substring(change.newText.length);
|
|
395
|
-
editEnd
|
|
452
|
+
editEnd += change.newText.length;
|
|
396
453
|
editHasChanged = true;
|
|
397
454
|
continue;
|
|
398
455
|
}
|