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.
- 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 +34 -2
- 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/async.js +11 -0
- package/esm/vs/base/common/async.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.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 +2 -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 -65
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +69 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +159 -94
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +124 -50
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +393 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -0
- 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 -11
- 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 +37 -2
- 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 -4
- 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 +37 -2
- 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,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
|
|
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; }
|
|
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
|
|
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.
|
|
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(
|
|
125
|
-
return new InlineSuggestHint(Range.lift(
|
|
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 =
|
|
147
|
-
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);
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
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(
|
|
277
|
+
return new InlineEditItem(action, data, identity, edits, hint, false, textModel.getVersionId());
|
|
249
278
|
}
|
|
250
|
-
constructor(
|
|
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.
|
|
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
|
-
|
|
266
|
-
return this.
|
|
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.
|
|
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
|
-
|
|
281
|
-
|
|
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
|
-
|
|
287
|
-
if (
|
|
288
|
-
|
|
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 (
|
|
291
|
-
|
|
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
|
-
|
|
294
|
-
|
|
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(
|
|
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
|
|
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:
|
|
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
|
|
452
|
+
editEnd += change.newText.length;
|
|
388
453
|
editHasChanged = true;
|
|
389
454
|
continue;
|
|
390
455
|
}
|