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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/edits/stringEdit.ts","vs/editor/common/core/edits/stringEdit.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGtD,8DAA8D;AAC9D,MAAM,OAAgB,cAAmJ,SAAQ,QAAkB;IAE3L,KAAK,CAAC,IAAY;QACxB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QACtC,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD;AAED,8DAA8D;AAC9D,MAAM,OAAgB,qBAAuF,SAAQ,eAAkB;IACtI,YACC,KAAkB,EACF,OAAe;QAE/B,KAAK,CAAC,KAAK,CAAC,CAAC;QAFG,YAAO,GAAP,OAAO,CAAQ;IAGhC,CAAC;IAED,YAAY,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7C,QAAQ;QAChB,OAAO,GAAG,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,GAAW;QAClB,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjH,CAAC;IAED,wBAAwB,CAAC,YAAoB;QAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAEhG,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACzB,OAAO,CAAC,MAAM,GAAG,SAAS,EAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,EAC/B,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CACzC,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,WAAW,CACnC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,EACnC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,SAAS,CAC1C,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAEnF,OAAO,IAAI,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAEM,2BAA2B,CAAC,MAAc;QAChD,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAEM,kBAAkB,CAAC,MAAc;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,IAAoB,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7G,CAAC;IAEM,kBAAkB,CAAC,MAAc;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,IAAoB,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAChH,CAAC;IAEM,MAAM;QACZ,OAAO,CAAC;YACP,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;YAC5B,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;SAC7B,CAAC,CAAC;IACJ,CAAC;CACD;AAGD;;;EAGE;AACF,MAAM,OAAO,UAAW,SAAQ,cAA6C;aACrD,UAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAE3C,MAAM,CAAC,OAAO,CAAC,KAA4B;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,UAAU,CAAC,KAAK,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY,YAA0C;QACrD,KAAK,CAAC,YAAY,CAAC,CAAC;IACrB,CAAC;IAEkB,UAAU,CAAC,YAA0C;QACvE,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;;AAYF,MAAM,OAAO,iBAAkB,SAAQ,qBAAwC;IACvE,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,IAAY;QAChD,OAAO,IAAI,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAAkB,EAAE,IAAY;QACrD,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEQ,MAAM,CAAC,KAAwB;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;IACvF,CAAC;IAEQ,eAAe,CAAC,KAAwB;QAChD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACrH,CAAC;IAEQ,KAAK,CAAC,KAAkB,EAAE,kBAAgC;QAClE,OAAO,IAAI,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrH,CAAC;CACD;AAED,MAAM,UAAU,kBAAkB,CAAC,YAA2B,EAAE,IAAgB;IAC/E,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;IAEpC,kGAAkG;IAClG,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,OAAO,IAAI,EAAE,CAAC;YACb,iCAAiC;YACjC,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAClD,MAAM;YACP,CAAC;YACD,YAAY,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClD,MAAM;YACP,CAAC;YACD,YAAY,CAAC,KAAK,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAE,CAAC,MAAM,CAAC;YACpD,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5D,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;YAChE,IAAI,wBAAwB,GAAG,CAAC,EAAE,CAAC;gBAClC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACb,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YAED,2CAA2C;YAC3C,qEAAqE;YACrE,6BAA6B;YAC7B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YAEzD,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,MAAM;QACP,CAAC;QACD,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC","file":"stringEdit.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { BaseEdit, BaseReplacement } from './edit.js';\n\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringEdit<T extends BaseStringReplacement<T> = BaseStringReplacement<any>, TEdit extends BaseStringEdit<T, TEdit> = BaseStringEdit<any, any>> extends BaseEdit<T, TEdit> {\n\n\tpublic apply(base: string): string {\n\t\tconst resultText: string[] = [];\n\t\tlet pos = 0;\n\t\tfor (const edit of this.replacements) {\n\t\t\tresultText.push(base.substring(pos, edit.replaceRange.start));\n\t\t\tresultText.push(edit.newText);\n\t\t\tpos = edit.replaceRange.endExclusive;\n\t\t}\n\t\tresultText.push(base.substring(pos));\n\t\treturn resultText.join('');\n\t}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringReplacement<T extends BaseStringReplacement<T> = BaseStringReplacement<any>> extends BaseReplacement<T> {\n\tconstructor(\n\t\trange: OffsetRange,\n\t\tpublic readonly newText: string\n\t) {\n\t\tsuper(range);\n\t}\n\n\tgetNewLength(): number { return this.newText.length; }\n\n\toverride toString(): string {\n\t\treturn `${this.replaceRange} -> ${JSON.stringify(this.newText)}`;\n\t}\n\n\treplace(str: string): string {\n\t\treturn str.substring(0, this.replaceRange.start) + this.newText + str.substring(this.replaceRange.endExclusive);\n\t}\n\n\tremoveCommonSuffixPrefix(originalText: string): StringReplacement {\n\t\tconst oldText = originalText.substring(this.replaceRange.start, this.replaceRange.endExclusive);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tconst suffixLen = Math.min(\n\t\t\toldText.length - prefixLen,\n\t\t\tthis.newText.length - prefixLen,\n\t\t\tcommonSuffixLength(oldText, this.newText)\n\t\t);\n\n\t\tconst replaceRange = new OffsetRange(\n\t\t\tthis.replaceRange.start + prefixLen,\n\t\t\tthis.replaceRange.endExclusive - suffixLen,\n\t\t);\n\t\tconst newText = this.newText.substring(prefixLen, this.newText.length - suffixLen);\n\n\t\treturn new StringReplacement(replaceRange, newText);\n\t}\n\n\tpublic removeCommonSuffixAndPrefix(source: string): T {\n\t\treturn this.removeCommonSuffix(source).removeCommonPrefix(source);\n\t}\n\n\tpublic removeCommonPrefix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tif (prefixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\n\t\treturn this.slice(this.replaceRange.deltaStart(prefixLen), new OffsetRange(prefixLen, this.newText.length));\n\t}\n\n\tpublic removeCommonSuffix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst suffixLen = commonSuffixLength(oldText, this.newText);\n\t\tif (suffixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\t\treturn this.slice(this.replaceRange.deltaEnd(-suffixLen), new OffsetRange(0, this.newText.length - suffixLen));\n\t}\n\n\tpublic toJson(): ISerializedStringReplacement {\n\t\treturn ({\n\t\t\ttxt: this.newText,\n\t\t\tpos: this.replaceRange.start,\n\t\t\tlen: this.replaceRange.length,\n\t\t});\n\t}\n}\n\n\n/**\n * Represents a set of replacements to a string.\n * All these replacements are applied at once.\n*/\nexport class StringEdit extends BaseStringEdit<StringReplacement, StringEdit> {\n\tpublic static readonly empty = new StringEdit([]);\n\n\tpublic static compose(edits: readonly StringEdit[]): StringEdit {\n\t\tif (edits.length === 0) {\n\t\t\treturn StringEdit.empty;\n\t\t}\n\t\tlet result = edits[0];\n\t\tfor (let i = 1; i < edits.length; i++) {\n\t\t\tresult = result.compose(edits[i]);\n\t\t}\n\t\treturn result;\n\t}\n\n\tconstructor(replacements: readonly StringReplacement[]) {\n\t\tsuper(replacements);\n\t}\n\n\tprotected override _createNew(replacements: readonly StringReplacement[]): StringEdit {\n\t\treturn new StringEdit(replacements);\n\t}\n}\n\n/**\n * Warning: Be careful when changing this type, as it is used for serialization!\n*/\nexport interface ISerializedStringReplacement {\n\ttxt: string;\n\tpos: number;\n\tlen: number;\n}\n\nexport class StringReplacement extends BaseStringReplacement<StringReplacement> {\n\tpublic static insert(offset: number, text: string): StringReplacement {\n\t\treturn new StringReplacement(OffsetRange.emptyAt(offset), text);\n\t}\n\n\tpublic static replace(range: OffsetRange, text: string): StringReplacement {\n\t\treturn new StringReplacement(range, text);\n\t}\n\n\toverride equals(other: StringReplacement): boolean {\n\t\treturn this.replaceRange.equals(other.replaceRange) && this.newText === other.newText;\n\t}\n\n\toverride tryJoinTouching(other: StringReplacement): StringReplacement | undefined {\n\t\treturn new StringReplacement(this.replaceRange.joinRightTouching(other.replaceRange), this.newText + other.newText);\n\t}\n\n\toverride slice(range: OffsetRange, rangeInReplacement?: OffsetRange): StringReplacement {\n\t\treturn new StringReplacement(range, rangeInReplacement ? rangeInReplacement.substring(this.newText) : this.newText);\n\t}\n}\n\nexport function applyEditsToRanges(sortedRanges: OffsetRange[], edit: StringEdit): OffsetRange[] {\n\tsortedRanges = sortedRanges.slice();\n\n\t// treat edits as deletion of the replace range and then as insertion that extends the first range\n\tconst result: OffsetRange[] = [];\n\n\tlet offset = 0;\n\n\tfor (const e of edit.replacements) {\n\t\twhile (true) {\n\t\t\t// ranges before the current edit\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || r.endExclusive >= e.replaceRange.start) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tresult.push(r.delta(offset));\n\t\t}\n\n\t\tconst intersecting: OffsetRange[] = [];\n\t\twhile (true) {\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || !r.intersectsOrTouches(e.replaceRange)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tintersecting.push(r);\n\t\t}\n\n\t\tfor (let i = intersecting.length - 1; i >= 0; i--) {\n\t\t\tlet r = intersecting[i];\n\n\t\t\tconst overlap = r.intersect(e.replaceRange)!.length;\n\t\t\tr = r.deltaEnd(-overlap + (i === 0 ? e.newText.length : 0));\n\n\t\t\tconst rangeAheadOfReplaceRange = r.start - e.replaceRange.start;\n\t\t\tif (rangeAheadOfReplaceRange > 0) {\n\t\t\t\tr = r.delta(-rangeAheadOfReplaceRange);\n\t\t\t}\n\n\t\t\tif (i !== 0) {\n\t\t\t\tr = r.delta(e.newText.length);\n\t\t\t}\n\n\t\t\t// We already took our offset into account.\n\t\t\t// Because we add r back to the queue (which then adds offset again),\n\t\t\t// we have to remove it here.\n\t\t\tr = r.delta(-(e.newText.length - e.replaceRange.length));\n\n\t\t\tsortedRanges.unshift(r);\n\t\t}\n\n\t\toffset += e.newText.length - e.replaceRange.length;\n\t}\n\n\twhile (true) {\n\t\tconst r = sortedRanges[0];\n\t\tif (!r) {\n\t\t\tbreak;\n\t\t}\n\t\tsortedRanges.shift();\n\t\tresult.push(r.delta(offset));\n\t}\n\n\treturn result;\n}\n\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { BaseEdit, BaseReplacement } from './edit.js';\n\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringEdit<T extends BaseStringReplacement<T> = BaseStringReplacement<any>, TEdit extends BaseStringEdit<T, TEdit> = BaseStringEdit<any, any>> extends BaseEdit<T, TEdit> {\n\n\tpublic apply(base: string): string {\n\t\tconst resultText: string[] = [];\n\t\tlet pos = 0;\n\t\tfor (const edit of this.replacements) {\n\t\t\tresultText.push(base.substring(pos, edit.replaceRange.start));\n\t\t\tresultText.push(edit.newText);\n\t\t\tpos = edit.replaceRange.endExclusive;\n\t\t}\n\t\tresultText.push(base.substring(pos));\n\t\treturn resultText.join('');\n\t}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringReplacement<T extends BaseStringReplacement<T> = BaseStringReplacement<any>> extends BaseReplacement<T> {\n\tconstructor(\n\t\trange: OffsetRange,\n\t\tpublic readonly newText: string\n\t) {\n\t\tsuper(range);\n\t}\n\n\tgetNewLength(): number { return this.newText.length; }\n\n\toverride toString(): string {\n\t\treturn `${this.replaceRange} -> ${JSON.stringify(this.newText)}`;\n\t}\n\n\treplace(str: string): string {\n\t\treturn str.substring(0, this.replaceRange.start) + this.newText + str.substring(this.replaceRange.endExclusive);\n\t}\n\n\tremoveCommonSuffixPrefix(originalText: string): StringReplacement {\n\t\tconst oldText = originalText.substring(this.replaceRange.start, this.replaceRange.endExclusive);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tconst suffixLen = Math.min(\n\t\t\toldText.length - prefixLen,\n\t\t\tthis.newText.length - prefixLen,\n\t\t\tcommonSuffixLength(oldText, this.newText)\n\t\t);\n\n\t\tconst replaceRange = new OffsetRange(\n\t\t\tthis.replaceRange.start + prefixLen,\n\t\t\tthis.replaceRange.endExclusive - suffixLen,\n\t\t);\n\t\tconst newText = this.newText.substring(prefixLen, this.newText.length - suffixLen);\n\n\t\treturn new StringReplacement(replaceRange, newText);\n\t}\n\n\tpublic removeCommonSuffixAndPrefix(source: string): T {\n\t\treturn this.removeCommonSuffix(source).removeCommonPrefix(source);\n\t}\n\n\tpublic removeCommonPrefix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tif (prefixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\n\t\treturn this.slice(this.replaceRange.deltaStart(prefixLen), new OffsetRange(prefixLen, this.newText.length));\n\t}\n\n\tpublic removeCommonSuffix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst suffixLen = commonSuffixLength(oldText, this.newText);\n\t\tif (suffixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\t\treturn this.slice(this.replaceRange.deltaEnd(-suffixLen), new OffsetRange(0, this.newText.length - suffixLen));\n\t}\n\n\tpublic toJson(): ISerializedStringReplacement {\n\t\treturn ({\n\t\t\ttxt: this.newText,\n\t\t\tpos: this.replaceRange.start,\n\t\t\tlen: this.replaceRange.length,\n\t\t});\n\t}\n}\n\n\n/**\n * Represents a set of replacements to a string.\n * All these replacements are applied at once.\n*/\nexport class StringEdit extends BaseStringEdit<StringReplacement, StringEdit> {\n\tpublic static readonly empty = new StringEdit([]);\n\n\tpublic static compose(edits: readonly StringEdit[]): StringEdit {\n\t\tif (edits.length === 0) {\n\t\t\treturn StringEdit.empty;\n\t\t}\n\t\tlet result = edits[0];\n\t\tfor (let i = 1; i < edits.length; i++) {\n\t\t\tresult = result.compose(edits[i]);\n\t\t}\n\t\treturn result;\n\t}\n\n\tconstructor(replacements: readonly StringReplacement[]) {\n\t\tsuper(replacements);\n\t}\n\n\tprotected override _createNew(replacements: readonly StringReplacement[]): StringEdit {\n\t\treturn new StringEdit(replacements);\n\t}\n}\n\n/**\n * Warning: Be careful when changing this type, as it is used for serialization!\n*/\nexport interface ISerializedStringReplacement {\n\ttxt: string;\n\tpos: number;\n\tlen: number;\n}\n\nexport class StringReplacement extends BaseStringReplacement<StringReplacement> {\n\tpublic static insert(offset: number, text: string): StringReplacement {\n\t\treturn new StringReplacement(OffsetRange.emptyAt(offset), text);\n\t}\n\n\tpublic static replace(range: OffsetRange, text: string): StringReplacement {\n\t\treturn new StringReplacement(range, text);\n\t}\n\n\toverride equals(other: StringReplacement): boolean {\n\t\treturn this.replaceRange.equals(other.replaceRange) && this.newText === other.newText;\n\t}\n\n\toverride tryJoinTouching(other: StringReplacement): StringReplacement | undefined {\n\t\treturn new StringReplacement(this.replaceRange.joinRightTouching(other.replaceRange), this.newText + other.newText);\n\t}\n\n\toverride slice(range: OffsetRange, rangeInReplacement?: OffsetRange): StringReplacement {\n\t\treturn new StringReplacement(range, rangeInReplacement ? rangeInReplacement.substring(this.newText) : this.newText);\n\t}\n}\n\nexport function applyEditsToRanges(sortedRanges: OffsetRange[], edit: StringEdit): OffsetRange[] {\n\tsortedRanges = sortedRanges.slice();\n\n\t// treat edits as deletion of the replace range and then as insertion that extends the first range\n\tconst result: OffsetRange[] = [];\n\n\tlet offset = 0;\n\n\tfor (const e of edit.replacements) {\n\t\twhile (true) {\n\t\t\t// ranges before the current edit\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || r.endExclusive >= e.replaceRange.start) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tresult.push(r.delta(offset));\n\t\t}\n\n\t\tconst intersecting: OffsetRange[] = [];\n\t\twhile (true) {\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || !r.intersectsOrTouches(e.replaceRange)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tintersecting.push(r);\n\t\t}\n\n\t\tfor (let i = intersecting.length - 1; i >= 0; i--) {\n\t\t\tlet r = intersecting[i];\n\n\t\t\tconst overlap = r.intersect(e.replaceRange)!.length;\n\t\t\tr = r.deltaEnd(-overlap + (i === 0 ? e.newText.length : 0));\n\n\t\t\tconst rangeAheadOfReplaceRange = r.start - e.replaceRange.start;\n\t\t\tif (rangeAheadOfReplaceRange > 0) {\n\t\t\t\tr = r.delta(-rangeAheadOfReplaceRange);\n\t\t\t}\n\n\t\t\tif (i !== 0) {\n\t\t\t\tr = r.delta(e.newText.length);\n\t\t\t}\n\n\t\t\t// We already took our offset into account.\n\t\t\t// Because we add r back to the queue (which then adds offset again),\n\t\t\t// we have to remove it here.\n\t\t\tr = r.delta(-(e.newText.length - e.replaceRange.length));\n\n\t\t\tsortedRanges.unshift(r);\n\t\t}\n\n\t\toffset += e.newText.length - e.replaceRange.length;\n\t}\n\n\twhile (true) {\n\t\tconst r = sortedRanges[0];\n\t\tif (!r) {\n\t\t\tbreak;\n\t\t}\n\t\tsortedRanges.shift();\n\t\tresult.push(r.delta(offset));\n\t}\n\n\treturn result;\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/edits/stringEdit.ts","vs/editor/common/core/edits/stringEdit.ts"],"names":[],"mappings":"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","file":"stringEdit.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { BaseEdit, BaseReplacement } from './edit.js';\n\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringEdit<T extends BaseStringReplacement<T> = BaseStringReplacement<any>, TEdit extends BaseStringEdit<T, TEdit> = BaseStringEdit<any, any>> extends BaseEdit<T, TEdit> {\n\n\tpublic apply(base: string): string {\n\t\tconst resultText: string[] = [];\n\t\tlet pos = 0;\n\t\tfor (const edit of this.replacements) {\n\t\t\tresultText.push(base.substring(pos, edit.replaceRange.start));\n\t\t\tresultText.push(edit.newText);\n\t\t\tpos = edit.replaceRange.endExclusive;\n\t\t}\n\t\tresultText.push(base.substring(pos));\n\t\treturn resultText.join('');\n\t}\n\n\tpublic removeCommonSuffixPrefix(originalText: string): StringEdit {\n\t\tconst edits: StringReplacement[] = [];\n\t\tfor (const e of this.replacements) {\n\t\t\tconst edit = e.removeCommonSuffixPrefix(originalText);\n\t\t\tif (!edit.isEmpty) {\n\t\t\t\tedits.push(edit);\n\t\t\t}\n\t\t}\n\t\treturn new StringEdit(edits);\n\t}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringReplacement<T extends BaseStringReplacement<T> = BaseStringReplacement<any>> extends BaseReplacement<T> {\n\tconstructor(\n\t\trange: OffsetRange,\n\t\tpublic readonly newText: string\n\t) {\n\t\tsuper(range);\n\t}\n\n\tgetNewLength(): number { return this.newText.length; }\n\n\toverride toString(): string {\n\t\treturn `${this.replaceRange} -> ${JSON.stringify(this.newText)}`;\n\t}\n\n\treplace(str: string): string {\n\t\treturn str.substring(0, this.replaceRange.start) + this.newText + str.substring(this.replaceRange.endExclusive);\n\t}\n\n\tremoveCommonSuffixPrefix(originalText: string): StringReplacement {\n\t\tconst oldText = originalText.substring(this.replaceRange.start, this.replaceRange.endExclusive);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tconst suffixLen = Math.min(\n\t\t\toldText.length - prefixLen,\n\t\t\tthis.newText.length - prefixLen,\n\t\t\tcommonSuffixLength(oldText, this.newText)\n\t\t);\n\n\t\tconst replaceRange = new OffsetRange(\n\t\t\tthis.replaceRange.start + prefixLen,\n\t\t\tthis.replaceRange.endExclusive - suffixLen,\n\t\t);\n\t\tconst newText = this.newText.substring(prefixLen, this.newText.length - suffixLen);\n\n\t\treturn new StringReplacement(replaceRange, newText);\n\t}\n\n\tpublic removeCommonSuffixAndPrefix(source: string): T {\n\t\treturn this.removeCommonSuffix(source).removeCommonPrefix(source);\n\t}\n\n\tpublic removeCommonPrefix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tif (prefixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\n\t\treturn this.slice(this.replaceRange.deltaStart(prefixLen), new OffsetRange(prefixLen, this.newText.length));\n\t}\n\n\tpublic removeCommonSuffix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst suffixLen = commonSuffixLength(oldText, this.newText);\n\t\tif (suffixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\t\treturn this.slice(this.replaceRange.deltaEnd(-suffixLen), new OffsetRange(0, this.newText.length - suffixLen));\n\t}\n\n\tpublic toJson(): ISerializedStringReplacement {\n\t\treturn ({\n\t\t\ttxt: this.newText,\n\t\t\tpos: this.replaceRange.start,\n\t\t\tlen: this.replaceRange.length,\n\t\t});\n\t}\n}\n\n\n/**\n * Represents a set of replacements to a string.\n * All these replacements are applied at once.\n*/\nexport class StringEdit extends BaseStringEdit<StringReplacement, StringEdit> {\n\tpublic static readonly empty = new StringEdit([]);\n\n\tpublic static replace(range: OffsetRange, replacement: string): StringEdit {\n\t\treturn new StringEdit([new StringReplacement(range, replacement)]);\n\t}\n\n\tpublic static compose(edits: readonly StringEdit[]): StringEdit {\n\t\tif (edits.length === 0) {\n\t\t\treturn StringEdit.empty;\n\t\t}\n\t\tlet result = edits[0];\n\t\tfor (let i = 1; i < edits.length; i++) {\n\t\t\tresult = result.compose(edits[i]);\n\t\t}\n\t\treturn result;\n\t}\n\n\tconstructor(replacements: readonly StringReplacement[]) {\n\t\tsuper(replacements);\n\t}\n\n\tprotected override _createNew(replacements: readonly StringReplacement[]): StringEdit {\n\t\treturn new StringEdit(replacements);\n\t}\n}\n\n/**\n * Warning: Be careful when changing this type, as it is used for serialization!\n*/\nexport interface ISerializedStringReplacement {\n\ttxt: string;\n\tpos: number;\n\tlen: number;\n}\n\nexport class StringReplacement extends BaseStringReplacement<StringReplacement> {\n\tpublic static insert(offset: number, text: string): StringReplacement {\n\t\treturn new StringReplacement(OffsetRange.emptyAt(offset), text);\n\t}\n\n\tpublic static replace(range: OffsetRange, text: string): StringReplacement {\n\t\treturn new StringReplacement(range, text);\n\t}\n\n\toverride equals(other: StringReplacement): boolean {\n\t\treturn this.replaceRange.equals(other.replaceRange) && this.newText === other.newText;\n\t}\n\n\toverride tryJoinTouching(other: StringReplacement): StringReplacement | undefined {\n\t\treturn new StringReplacement(this.replaceRange.joinRightTouching(other.replaceRange), this.newText + other.newText);\n\t}\n\n\toverride slice(range: OffsetRange, rangeInReplacement?: OffsetRange): StringReplacement {\n\t\treturn new StringReplacement(range, rangeInReplacement ? rangeInReplacement.substring(this.newText) : this.newText);\n\t}\n}\n\nexport function applyEditsToRanges(sortedRanges: OffsetRange[], edit: StringEdit): OffsetRange[] {\n\tsortedRanges = sortedRanges.slice();\n\n\t// treat edits as deletion of the replace range and then as insertion that extends the first range\n\tconst result: OffsetRange[] = [];\n\n\tlet offset = 0;\n\n\tfor (const e of edit.replacements) {\n\t\twhile (true) {\n\t\t\t// ranges before the current edit\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || r.endExclusive >= e.replaceRange.start) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tresult.push(r.delta(offset));\n\t\t}\n\n\t\tconst intersecting: OffsetRange[] = [];\n\t\twhile (true) {\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || !r.intersectsOrTouches(e.replaceRange)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tintersecting.push(r);\n\t\t}\n\n\t\tfor (let i = intersecting.length - 1; i >= 0; i--) {\n\t\t\tlet r = intersecting[i];\n\n\t\t\tconst overlap = r.intersect(e.replaceRange)!.length;\n\t\t\tr = r.deltaEnd(-overlap + (i === 0 ? e.newText.length : 0));\n\n\t\t\tconst rangeAheadOfReplaceRange = r.start - e.replaceRange.start;\n\t\t\tif (rangeAheadOfReplaceRange > 0) {\n\t\t\t\tr = r.delta(-rangeAheadOfReplaceRange);\n\t\t\t}\n\n\t\t\tif (i !== 0) {\n\t\t\t\tr = r.delta(e.newText.length);\n\t\t\t}\n\n\t\t\t// We already took our offset into account.\n\t\t\t// Because we add r back to the queue (which then adds offset again),\n\t\t\t// we have to remove it here.\n\t\t\tr = r.delta(-(e.newText.length - e.replaceRange.length));\n\n\t\t\tsortedRanges.unshift(r);\n\t\t}\n\n\t\toffset += e.newText.length - e.replaceRange.length;\n\t}\n\n\twhile (true) {\n\t\tconst r = sortedRanges[0];\n\t\tif (!r) {\n\t\t\tbreak;\n\t\t}\n\t\tsortedRanges.shift();\n\t\tresult.push(r.delta(offset));\n\t}\n\n\treturn result;\n}\n\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { BaseEdit, BaseReplacement } from './edit.js';\n\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringEdit<T extends BaseStringReplacement<T> = BaseStringReplacement<any>, TEdit extends BaseStringEdit<T, TEdit> = BaseStringEdit<any, any>> extends BaseEdit<T, TEdit> {\n\n\tpublic apply(base: string): string {\n\t\tconst resultText: string[] = [];\n\t\tlet pos = 0;\n\t\tfor (const edit of this.replacements) {\n\t\t\tresultText.push(base.substring(pos, edit.replaceRange.start));\n\t\t\tresultText.push(edit.newText);\n\t\t\tpos = edit.replaceRange.endExclusive;\n\t\t}\n\t\tresultText.push(base.substring(pos));\n\t\treturn resultText.join('');\n\t}\n\n\tpublic removeCommonSuffixPrefix(originalText: string): StringEdit {\n\t\tconst edits: StringReplacement[] = [];\n\t\tfor (const e of this.replacements) {\n\t\t\tconst edit = e.removeCommonSuffixPrefix(originalText);\n\t\t\tif (!edit.isEmpty) {\n\t\t\t\tedits.push(edit);\n\t\t\t}\n\t\t}\n\t\treturn new StringEdit(edits);\n\t}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseStringReplacement<T extends BaseStringReplacement<T> = BaseStringReplacement<any>> extends BaseReplacement<T> {\n\tconstructor(\n\t\trange: OffsetRange,\n\t\tpublic readonly newText: string\n\t) {\n\t\tsuper(range);\n\t}\n\n\tgetNewLength(): number { return this.newText.length; }\n\n\toverride toString(): string {\n\t\treturn `${this.replaceRange} -> ${JSON.stringify(this.newText)}`;\n\t}\n\n\treplace(str: string): string {\n\t\treturn str.substring(0, this.replaceRange.start) + this.newText + str.substring(this.replaceRange.endExclusive);\n\t}\n\n\tremoveCommonSuffixPrefix(originalText: string): StringReplacement {\n\t\tconst oldText = originalText.substring(this.replaceRange.start, this.replaceRange.endExclusive);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tconst suffixLen = Math.min(\n\t\t\toldText.length - prefixLen,\n\t\t\tthis.newText.length - prefixLen,\n\t\t\tcommonSuffixLength(oldText, this.newText)\n\t\t);\n\n\t\tconst replaceRange = new OffsetRange(\n\t\t\tthis.replaceRange.start + prefixLen,\n\t\t\tthis.replaceRange.endExclusive - suffixLen,\n\t\t);\n\t\tconst newText = this.newText.substring(prefixLen, this.newText.length - suffixLen);\n\n\t\treturn new StringReplacement(replaceRange, newText);\n\t}\n\n\tpublic removeCommonSuffixAndPrefix(source: string): T {\n\t\treturn this.removeCommonSuffix(source).removeCommonPrefix(source);\n\t}\n\n\tpublic removeCommonPrefix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst prefixLen = commonPrefixLength(oldText, this.newText);\n\t\tif (prefixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\n\t\treturn this.slice(this.replaceRange.deltaStart(prefixLen), new OffsetRange(prefixLen, this.newText.length));\n\t}\n\n\tpublic removeCommonSuffix(source: string): T {\n\t\tconst oldText = this.replaceRange.substring(source);\n\n\t\tconst suffixLen = commonSuffixLength(oldText, this.newText);\n\t\tif (suffixLen === 0) {\n\t\t\treturn this as unknown as T;\n\t\t}\n\t\treturn this.slice(this.replaceRange.deltaEnd(-suffixLen), new OffsetRange(0, this.newText.length - suffixLen));\n\t}\n\n\tpublic toJson(): ISerializedStringReplacement {\n\t\treturn ({\n\t\t\ttxt: this.newText,\n\t\t\tpos: this.replaceRange.start,\n\t\t\tlen: this.replaceRange.length,\n\t\t});\n\t}\n}\n\n\n/**\n * Represents a set of replacements to a string.\n * All these replacements are applied at once.\n*/\nexport class StringEdit extends BaseStringEdit<StringReplacement, StringEdit> {\n\tpublic static readonly empty = new StringEdit([]);\n\n\tpublic static replace(range: OffsetRange, replacement: string): StringEdit {\n\t\treturn new StringEdit([new StringReplacement(range, replacement)]);\n\t}\n\n\tpublic static compose(edits: readonly StringEdit[]): StringEdit {\n\t\tif (edits.length === 0) {\n\t\t\treturn StringEdit.empty;\n\t\t}\n\t\tlet result = edits[0];\n\t\tfor (let i = 1; i < edits.length; i++) {\n\t\t\tresult = result.compose(edits[i]);\n\t\t}\n\t\treturn result;\n\t}\n\n\tconstructor(replacements: readonly StringReplacement[]) {\n\t\tsuper(replacements);\n\t}\n\n\tprotected override _createNew(replacements: readonly StringReplacement[]): StringEdit {\n\t\treturn new StringEdit(replacements);\n\t}\n}\n\n/**\n * Warning: Be careful when changing this type, as it is used for serialization!\n*/\nexport interface ISerializedStringReplacement {\n\ttxt: string;\n\tpos: number;\n\tlen: number;\n}\n\nexport class StringReplacement extends BaseStringReplacement<StringReplacement> {\n\tpublic static insert(offset: number, text: string): StringReplacement {\n\t\treturn new StringReplacement(OffsetRange.emptyAt(offset), text);\n\t}\n\n\tpublic static replace(range: OffsetRange, text: string): StringReplacement {\n\t\treturn new StringReplacement(range, text);\n\t}\n\n\toverride equals(other: StringReplacement): boolean {\n\t\treturn this.replaceRange.equals(other.replaceRange) && this.newText === other.newText;\n\t}\n\n\toverride tryJoinTouching(other: StringReplacement): StringReplacement | undefined {\n\t\treturn new StringReplacement(this.replaceRange.joinRightTouching(other.replaceRange), this.newText + other.newText);\n\t}\n\n\toverride slice(range: OffsetRange, rangeInReplacement?: OffsetRange): StringReplacement {\n\t\treturn new StringReplacement(range, rangeInReplacement ? rangeInReplacement.substring(this.newText) : this.newText);\n\t}\n}\n\nexport function applyEditsToRanges(sortedRanges: OffsetRange[], edit: StringEdit): OffsetRange[] {\n\tsortedRanges = sortedRanges.slice();\n\n\t// treat edits as deletion of the replace range and then as insertion that extends the first range\n\tconst result: OffsetRange[] = [];\n\n\tlet offset = 0;\n\n\tfor (const e of edit.replacements) {\n\t\twhile (true) {\n\t\t\t// ranges before the current edit\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || r.endExclusive >= e.replaceRange.start) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tresult.push(r.delta(offset));\n\t\t}\n\n\t\tconst intersecting: OffsetRange[] = [];\n\t\twhile (true) {\n\t\t\tconst r = sortedRanges[0];\n\t\t\tif (!r || !r.intersectsOrTouches(e.replaceRange)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsortedRanges.shift();\n\t\t\tintersecting.push(r);\n\t\t}\n\n\t\tfor (let i = intersecting.length - 1; i >= 0; i--) {\n\t\t\tlet r = intersecting[i];\n\n\t\t\tconst overlap = r.intersect(e.replaceRange)!.length;\n\t\t\tr = r.deltaEnd(-overlap + (i === 0 ? e.newText.length : 0));\n\n\t\t\tconst rangeAheadOfReplaceRange = r.start - e.replaceRange.start;\n\t\t\tif (rangeAheadOfReplaceRange > 0) {\n\t\t\t\tr = r.delta(-rangeAheadOfReplaceRange);\n\t\t\t}\n\n\t\t\tif (i !== 0) {\n\t\t\t\tr = r.delta(e.newText.length);\n\t\t\t}\n\n\t\t\t// We already took our offset into account.\n\t\t\t// Because we add r back to the queue (which then adds offset again),\n\t\t\t// we have to remove it here.\n\t\t\tr = r.delta(-(e.newText.length - e.replaceRange.length));\n\n\t\t\tsortedRanges.unshift(r);\n\t\t}\n\n\t\toffset += e.newText.length - e.replaceRange.length;\n\t}\n\n\twhile (true) {\n\t\tconst r = sortedRanges[0];\n\t\tif (!r) {\n\t\t\tbreak;\n\t\t}\n\t\tsortedRanges.shift();\n\t\tresult.push(r.delta(offset));\n\t}\n\n\treturn result;\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/edits/textEdit.ts","vs/editor/common/core/edits/textEdit.ts"],"names":[],"mappings":"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","file":"textEdit.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { compareBy } from '../../../../base/common/arrays.js';\nimport { assertFn, checkAdjacentItems } from '../../../../base/common/assert.js';\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { BaseStringEdit, StringReplacement } from './stringEdit.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextLength } from '../text/textLength.js';\nimport { AbstractText, StringText } from '../text/abstractText.js';\n\nexport class TextEdit {\n\tpublic static fromStringEdit(edit: BaseStringEdit, initialState: AbstractText): TextEdit {\n\t\tconst edits = edit.replacements.map(e => TextReplacement.fromStringReplacement(e, initialState));\n\t\treturn new TextEdit(edits);\n\t}\n\n\tpublic static fromParallelReplacementsUnsorted(replacements: readonly TextReplacement[]): TextEdit {\n\t\tconst r = replacements.slice().sort(compareBy(i => i.range, Range.compareRangesUsingStarts));\n\t\treturn new TextEdit(r);\n\t}\n\n\tconstructor(\n\t\tpublic readonly replacements: readonly TextReplacement[]\n\t) {\n\t\tassertFn(() => checkAdjacentItems(replacements, (a, b) => a.range.getEndPosition().isBeforeOrEqual(b.range.getStartPosition())));\n\t}\n\n\tmapPosition(position: Position): Position | Range {\n\t\tlet lineDelta = 0;\n\t\tlet curLine = 0;\n\t\tlet columnDeltaInCurLine = 0;\n\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst start = replacement.range.getStartPosition();\n\n\t\t\tif (position.isBeforeOrEqual(start)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst end = replacement.range.getEndPosition();\n\t\t\tconst len = TextLength.ofText(replacement.text);\n\t\t\tif (position.isBefore(end)) {\n\t\t\t\tconst startPos = new Position(start.lineNumber + lineDelta, start.column + (start.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t\t\t\tconst endPos = len.addToPosition(startPos);\n\t\t\t\treturn rangeFromPositions(startPos, endPos);\n\t\t\t}\n\n\t\t\tif (start.lineNumber + lineDelta !== curLine) {\n\t\t\t\tcolumnDeltaInCurLine = 0;\n\t\t\t}\n\n\t\t\tlineDelta += len.lineCount - (replacement.range.endLineNumber - replacement.range.startLineNumber);\n\n\t\t\tif (len.lineCount === 0) {\n\t\t\t\tif (end.lineNumber !== start.lineNumber) {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - 1);\n\t\t\t\t} else {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - start.column);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcolumnDeltaInCurLine = len.columnCount;\n\t\t\t}\n\t\t\tcurLine = end.lineNumber + lineDelta;\n\t\t}\n\n\t\treturn new Position(position.lineNumber + lineDelta, position.column + (position.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t}\n\n\tmapRange(range: Range): Range {\n\t\tfunction getStart(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getStartPosition();\n\t\t}\n\n\t\tfunction getEnd(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getEndPosition();\n\t\t}\n\n\t\tconst start = getStart(this.mapPosition(range.getStartPosition()));\n\t\tconst end = getEnd(this.mapPosition(range.getEndPosition()));\n\n\t\treturn rangeFromPositions(start, end);\n\t}\n\n\tapply(text: AbstractText): string {\n\t\tlet result = '';\n\t\tlet lastEditEnd = new Position(1, 1);\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst editRange = replacement.range;\n\t\t\tconst editStart = editRange.getStartPosition();\n\t\t\tconst editEnd = editRange.getEndPosition();\n\n\t\t\tconst r = rangeFromPositions(lastEditEnd, editStart);\n\t\t\tif (!r.isEmpty()) {\n\t\t\t\tresult += text.getValueOfRange(r);\n\t\t\t}\n\t\t\tresult += replacement.text;\n\t\t\tlastEditEnd = editEnd;\n\t\t}\n\t\tconst r = rangeFromPositions(lastEditEnd, text.endPositionExclusive);\n\t\tif (!r.isEmpty()) {\n\t\t\tresult += text.getValueOfRange(r);\n\t\t}\n\t\treturn result;\n\t}\n\n\tapplyToString(str: string): string {\n\t\tconst strText = new StringText(str);\n\t\treturn this.apply(strText);\n\t}\n\n\tgetNewRanges(): Range[] {\n\t\tconst newRanges: Range[] = [];\n\t\tlet previousEditEndLineNumber = 0;\n\t\tlet lineOffset = 0;\n\t\tlet columnOffset = 0;\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst textLength = TextLength.ofText(replacement.text);\n\t\t\tconst newRangeStart = Position.lift({\n\t\t\t\tlineNumber: replacement.range.startLineNumber + lineOffset,\n\t\t\t\tcolumn: replacement.range.startColumn + (replacement.range.startLineNumber === previousEditEndLineNumber ? columnOffset : 0)\n\t\t\t});\n\t\t\tconst newRange = textLength.createRange(newRangeStart);\n\t\t\tnewRanges.push(newRange);\n\t\t\tlineOffset = newRange.endLineNumber - replacement.range.endLineNumber;\n\t\t\tcolumnOffset = newRange.endColumn - replacement.range.endColumn;\n\t\t\tpreviousEditEndLineNumber = replacement.range.endLineNumber;\n\t\t}\n\t\treturn newRanges;\n\t}\n\n\ttoReplacement(text: AbstractText): TextReplacement {\n\t\tif (this.replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (this.replacements.length === 1) { return this.replacements[0]; }\n\n\t\tconst startPos = this.replacements[0].range.getStartPosition();\n\t\tconst endPos = this.replacements[this.replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < this.replacements.length; i++) {\n\t\t\tconst curEdit = this.replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < this.replacements.length - 1) {\n\t\t\t\tconst nextEdit = this.replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = text.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\ttoString(text: AbstractText | string | undefined): string {\n\t\tif (text === undefined) {\n\t\t\treturn this.replacements.map(edit => edit.toString()).join('\\n');\n\t\t}\n\n\t\tif (typeof text === 'string') {\n\t\t\treturn this.toString(new StringText(text));\n\t\t}\n\n\t\tif (this.replacements.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn this.replacements.map(r => {\n\t\t\tconst maxLength = 10;\n\t\t\tconst originalText = text.getValueOfRange(r.range);\n\n\t\t\t// Get text before the edit\n\t\t\tconst beforeRange = Range.fromPositions(\n\t\t\t\tnew Position(Math.max(1, r.range.startLineNumber - 1), 1),\n\t\t\t\tr.range.getStartPosition()\n\t\t\t);\n\t\t\tlet beforeText = text.getValueOfRange(beforeRange);\n\t\t\tif (beforeText.length > maxLength) {\n\t\t\t\tbeforeText = '...' + beforeText.substring(beforeText.length - maxLength);\n\t\t\t}\n\n\t\t\t// Get text after the edit\n\t\t\tconst afterRange = Range.fromPositions(\n\t\t\t\tr.range.getEndPosition(),\n\t\t\t\tnew Position(r.range.endLineNumber + 1, 1)\n\t\t\t);\n\t\t\tlet afterText = text.getValueOfRange(afterRange);\n\t\t\tif (afterText.length > maxLength) {\n\t\t\t\tafterText = afterText.substring(0, maxLength) + '...';\n\t\t\t}\n\n\t\t\t// Format the replaced text\n\t\t\tlet replacedText = originalText;\n\t\t\tif (replacedText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\treplacedText = replacedText.substring(0, halfMax) + '...' +\n\t\t\t\t\treplacedText.substring(replacedText.length - halfMax);\n\t\t\t}\n\n\t\t\t// Format the new text\n\t\t\tlet newText = r.text;\n\t\t\tif (newText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\tnewText = newText.substring(0, halfMax) + '...' +\n\t\t\t\t\tnewText.substring(newText.length - halfMax);\n\t\t\t}\n\n\t\t\tif (replacedText.length === 0) {\n\t\t\t\t// allow-any-unicode-next-line\n\t\t\t\treturn `${beforeText}❰${newText}❱${afterText}`;\n\t\t\t}\n\t\t\t// allow-any-unicode-next-line\n\t\t\treturn `${beforeText}❰${replacedText}↦${newText}❱${afterText}`;\n\t\t}).join('\\n');\n\t}\n}\n\nexport class TextReplacement {\n\tpublic static joinReplacements(replacements: TextReplacement[], initialValue: AbstractText): TextReplacement {\n\t\tif (replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (replacements.length === 1) { return replacements[0]; }\n\n\t\tconst startPos = replacements[0].range.getStartPosition();\n\t\tconst endPos = replacements[replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < replacements.length; i++) {\n\t\t\tconst curEdit = replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < replacements.length - 1) {\n\t\t\t\tconst nextEdit = replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = initialValue.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\tpublic static fromStringReplacement(replacement: StringReplacement, initialState: AbstractText): TextReplacement {\n\t\treturn new TextReplacement(initialState.getTransformer().getRange(replacement.replaceRange), replacement.newText);\n\t}\n\n\tpublic static delete(range: Range): TextReplacement {\n\t\treturn new TextReplacement(range, '');\n\t}\n\n\tconstructor(\n\t\tpublic readonly range: Range,\n\t\tpublic readonly text: string,\n\t) {\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.range.isEmpty() && this.text.length === 0;\n\t}\n\n\tstatic equals(first: TextReplacement, second: TextReplacement) {\n\t\treturn first.range.equalsRange(second.range) && first.text === second.text;\n\t}\n\n\tpublic equals(other: TextReplacement): boolean {\n\t\treturn TextReplacement.equals(this, other);\n\t}\n\n\tpublic removeCommonPrefixAndSuffix(text: AbstractText): TextReplacement {\n\t\tconst prefix = this.removeCommonPrefix(text);\n\t\tconst suffix = prefix.removeCommonSuffix(text);\n\t\treturn suffix;\n\t}\n\n\tpublic removeCommonPrefix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonPrefixLen = commonPrefixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst start = TextLength.ofText(normalizedOriginalText.substring(0, commonPrefixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(commonPrefixLen);\n\t\tconst range = Range.fromPositions(start, this.range.getEndPosition());\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic removeCommonSuffix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonSuffixLen = commonSuffixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst end = TextLength.ofText(normalizedOriginalText.substring(0, normalizedOriginalText.length - commonSuffixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(0, normalizedModifiedText.length - commonSuffixLen);\n\t\tconst range = Range.fromPositions(this.range.getStartPosition(), end);\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic toString(): string {\n\t\tconst start = this.range.getStartPosition();\n\t\tconst end = this.range.getEndPosition();\n\t\treturn `(${start.lineNumber},${start.column} -> ${end.lineNumber},${end.column}): \"${this.text}\"`;\n\t}\n}\n\nfunction rangeFromPositions(start: Position, end: Position): Range {\n\tif (start.lineNumber === end.lineNumber && start.column === Number.MAX_SAFE_INTEGER) {\n\t\treturn Range.fromPositions(end, end);\n\t} else if (!start.isBeforeOrEqual(end)) {\n\t\tthrow new BugIndicatingError('start must be before end');\n\t}\n\treturn new Range(start.lineNumber, start.column, end.lineNumber, end.column);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { compareBy } from '../../../../base/common/arrays.js';\nimport { assertFn, checkAdjacentItems } from '../../../../base/common/assert.js';\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { BaseStringEdit, StringReplacement } from './stringEdit.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextLength } from '../text/textLength.js';\nimport { AbstractText, StringText } from '../text/abstractText.js';\n\nexport class TextEdit {\n\tpublic static fromStringEdit(edit: BaseStringEdit, initialState: AbstractText): TextEdit {\n\t\tconst edits = edit.replacements.map(e => TextReplacement.fromStringReplacement(e, initialState));\n\t\treturn new TextEdit(edits);\n\t}\n\n\tpublic static fromParallelReplacementsUnsorted(replacements: readonly TextReplacement[]): TextEdit {\n\t\tconst r = replacements.slice().sort(compareBy(i => i.range, Range.compareRangesUsingStarts));\n\t\treturn new TextEdit(r);\n\t}\n\n\tconstructor(\n\t\tpublic readonly replacements: readonly TextReplacement[]\n\t) {\n\t\tassertFn(() => checkAdjacentItems(replacements, (a, b) => a.range.getEndPosition().isBeforeOrEqual(b.range.getStartPosition())));\n\t}\n\n\tmapPosition(position: Position): Position | Range {\n\t\tlet lineDelta = 0;\n\t\tlet curLine = 0;\n\t\tlet columnDeltaInCurLine = 0;\n\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst start = replacement.range.getStartPosition();\n\n\t\t\tif (position.isBeforeOrEqual(start)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst end = replacement.range.getEndPosition();\n\t\t\tconst len = TextLength.ofText(replacement.text);\n\t\t\tif (position.isBefore(end)) {\n\t\t\t\tconst startPos = new Position(start.lineNumber + lineDelta, start.column + (start.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t\t\t\tconst endPos = len.addToPosition(startPos);\n\t\t\t\treturn rangeFromPositions(startPos, endPos);\n\t\t\t}\n\n\t\t\tif (start.lineNumber + lineDelta !== curLine) {\n\t\t\t\tcolumnDeltaInCurLine = 0;\n\t\t\t}\n\n\t\t\tlineDelta += len.lineCount - (replacement.range.endLineNumber - replacement.range.startLineNumber);\n\n\t\t\tif (len.lineCount === 0) {\n\t\t\t\tif (end.lineNumber !== start.lineNumber) {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - 1);\n\t\t\t\t} else {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - start.column);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcolumnDeltaInCurLine = len.columnCount;\n\t\t\t}\n\t\t\tcurLine = end.lineNumber + lineDelta;\n\t\t}\n\n\t\treturn new Position(position.lineNumber + lineDelta, position.column + (position.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t}\n\n\tmapRange(range: Range): Range {\n\t\tfunction getStart(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getStartPosition();\n\t\t}\n\n\t\tfunction getEnd(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getEndPosition();\n\t\t}\n\n\t\tconst start = getStart(this.mapPosition(range.getStartPosition()));\n\t\tconst end = getEnd(this.mapPosition(range.getEndPosition()));\n\n\t\treturn rangeFromPositions(start, end);\n\t}\n\n\tapply(text: AbstractText): string {\n\t\tlet result = '';\n\t\tlet lastEditEnd = new Position(1, 1);\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst editRange = replacement.range;\n\t\t\tconst editStart = editRange.getStartPosition();\n\t\t\tconst editEnd = editRange.getEndPosition();\n\n\t\t\tconst r = rangeFromPositions(lastEditEnd, editStart);\n\t\t\tif (!r.isEmpty()) {\n\t\t\t\tresult += text.getValueOfRange(r);\n\t\t\t}\n\t\t\tresult += replacement.text;\n\t\t\tlastEditEnd = editEnd;\n\t\t}\n\t\tconst r = rangeFromPositions(lastEditEnd, text.endPositionExclusive);\n\t\tif (!r.isEmpty()) {\n\t\t\tresult += text.getValueOfRange(r);\n\t\t}\n\t\treturn result;\n\t}\n\n\tapplyToString(str: string): string {\n\t\tconst strText = new StringText(str);\n\t\treturn this.apply(strText);\n\t}\n\n\tgetNewRanges(): Range[] {\n\t\tconst newRanges: Range[] = [];\n\t\tlet previousEditEndLineNumber = 0;\n\t\tlet lineOffset = 0;\n\t\tlet columnOffset = 0;\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst textLength = TextLength.ofText(replacement.text);\n\t\t\tconst newRangeStart = Position.lift({\n\t\t\t\tlineNumber: replacement.range.startLineNumber + lineOffset,\n\t\t\t\tcolumn: replacement.range.startColumn + (replacement.range.startLineNumber === previousEditEndLineNumber ? columnOffset : 0)\n\t\t\t});\n\t\t\tconst newRange = textLength.createRange(newRangeStart);\n\t\t\tnewRanges.push(newRange);\n\t\t\tlineOffset = newRange.endLineNumber - replacement.range.endLineNumber;\n\t\t\tcolumnOffset = newRange.endColumn - replacement.range.endColumn;\n\t\t\tpreviousEditEndLineNumber = replacement.range.endLineNumber;\n\t\t}\n\t\treturn newRanges;\n\t}\n\n\ttoReplacement(text: AbstractText): TextReplacement {\n\t\tif (this.replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (this.replacements.length === 1) { return this.replacements[0]; }\n\n\t\tconst startPos = this.replacements[0].range.getStartPosition();\n\t\tconst endPos = this.replacements[this.replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < this.replacements.length; i++) {\n\t\t\tconst curEdit = this.replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < this.replacements.length - 1) {\n\t\t\t\tconst nextEdit = this.replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = text.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\ttoString(text: AbstractText | string | undefined): string {\n\t\tif (text === undefined) {\n\t\t\treturn this.replacements.map(edit => edit.toString()).join('\\n');\n\t\t}\n\n\t\tif (typeof text === 'string') {\n\t\t\treturn this.toString(new StringText(text));\n\t\t}\n\n\t\tif (this.replacements.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn this.replacements.map(r => {\n\t\t\tconst maxLength = 10;\n\t\t\tconst originalText = text.getValueOfRange(r.range);\n\n\t\t\t// Get text before the edit\n\t\t\tconst beforeRange = Range.fromPositions(\n\t\t\t\tnew Position(Math.max(1, r.range.startLineNumber - 1), 1),\n\t\t\t\tr.range.getStartPosition()\n\t\t\t);\n\t\t\tlet beforeText = text.getValueOfRange(beforeRange);\n\t\t\tif (beforeText.length > maxLength) {\n\t\t\t\tbeforeText = '...' + beforeText.substring(beforeText.length - maxLength);\n\t\t\t}\n\n\t\t\t// Get text after the edit\n\t\t\tconst afterRange = Range.fromPositions(\n\t\t\t\tr.range.getEndPosition(),\n\t\t\t\tnew Position(r.range.endLineNumber + 1, 1)\n\t\t\t);\n\t\t\tlet afterText = text.getValueOfRange(afterRange);\n\t\t\tif (afterText.length > maxLength) {\n\t\t\t\tafterText = afterText.substring(0, maxLength) + '...';\n\t\t\t}\n\n\t\t\t// Format the replaced text\n\t\t\tlet replacedText = originalText;\n\t\t\tif (replacedText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\treplacedText = replacedText.substring(0, halfMax) + '...' +\n\t\t\t\t\treplacedText.substring(replacedText.length - halfMax);\n\t\t\t}\n\n\t\t\t// Format the new text\n\t\t\tlet newText = r.text;\n\t\t\tif (newText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\tnewText = newText.substring(0, halfMax) + '...' +\n\t\t\t\t\tnewText.substring(newText.length - halfMax);\n\t\t\t}\n\n\t\t\tif (replacedText.length === 0) {\n\t\t\t\t// allow-any-unicode-next-line\n\t\t\t\treturn `${beforeText}❰${newText}❱${afterText}`;\n\t\t\t}\n\t\t\t// allow-any-unicode-next-line\n\t\t\treturn `${beforeText}❰${replacedText}↦${newText}❱${afterText}`;\n\t\t}).join('\\n');\n\t}\n}\n\nexport class TextReplacement {\n\tpublic static joinReplacements(replacements: TextReplacement[], initialValue: AbstractText): TextReplacement {\n\t\tif (replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (replacements.length === 1) { return replacements[0]; }\n\n\t\tconst startPos = replacements[0].range.getStartPosition();\n\t\tconst endPos = replacements[replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < replacements.length; i++) {\n\t\t\tconst curEdit = replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < replacements.length - 1) {\n\t\t\t\tconst nextEdit = replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = initialValue.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\tpublic static fromStringReplacement(replacement: StringReplacement, initialState: AbstractText): TextReplacement {\n\t\treturn new TextReplacement(initialState.getTransformer().getRange(replacement.replaceRange), replacement.newText);\n\t}\n\n\tpublic static delete(range: Range): TextReplacement {\n\t\treturn new TextReplacement(range, '');\n\t}\n\n\tconstructor(\n\t\tpublic readonly range: Range,\n\t\tpublic readonly text: string,\n\t) {\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.range.isEmpty() && this.text.length === 0;\n\t}\n\n\tstatic equals(first: TextReplacement, second: TextReplacement) {\n\t\treturn first.range.equalsRange(second.range) && first.text === second.text;\n\t}\n\n\tpublic equals(other: TextReplacement): boolean {\n\t\treturn TextReplacement.equals(this, other);\n\t}\n\n\tpublic removeCommonPrefixAndSuffix(text: AbstractText): TextReplacement {\n\t\tconst prefix = this.removeCommonPrefix(text);\n\t\tconst suffix = prefix.removeCommonSuffix(text);\n\t\treturn suffix;\n\t}\n\n\tpublic removeCommonPrefix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonPrefixLen = commonPrefixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst start = TextLength.ofText(normalizedOriginalText.substring(0, commonPrefixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(commonPrefixLen);\n\t\tconst range = Range.fromPositions(start, this.range.getEndPosition());\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic removeCommonSuffix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonSuffixLen = commonSuffixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst end = TextLength.ofText(normalizedOriginalText.substring(0, normalizedOriginalText.length - commonSuffixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(0, normalizedModifiedText.length - commonSuffixLen);\n\t\tconst range = Range.fromPositions(this.range.getStartPosition(), end);\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic toString(): string {\n\t\tconst start = this.range.getStartPosition();\n\t\tconst end = this.range.getEndPosition();\n\t\treturn `(${start.lineNumber},${start.column} -> ${end.lineNumber},${end.column}): \"${this.text}\"`;\n\t}\n}\n\nfunction rangeFromPositions(start: Position, end: Position): Range {\n\tif (start.lineNumber === end.lineNumber && start.column === Number.MAX_SAFE_INTEGER) {\n\t\treturn Range.fromPositions(end, end);\n\t} else if (!start.isBeforeOrEqual(end)) {\n\t\tthrow new BugIndicatingError('start must be before end');\n\t}\n\treturn new Range(start.lineNumber, start.column, end.lineNumber, end.column);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/edits/textEdit.ts","vs/editor/common/core/edits/textEdit.ts"],"names":[],"mappings":"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","file":"textEdit.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { compareBy } from '../../../../base/common/arrays.js';\nimport { assertFn, checkAdjacentItems } from '../../../../base/common/assert.js';\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { BaseStringEdit, StringReplacement } from './stringEdit.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextLength } from '../text/textLength.js';\nimport { AbstractText, StringText } from '../text/abstractText.js';\nimport { IEquatable } from '../../../../base/common/equals.js';\n\nexport class TextEdit {\n\tpublic static fromStringEdit(edit: BaseStringEdit, initialState: AbstractText): TextEdit {\n\t\tconst edits = edit.replacements.map(e => TextReplacement.fromStringReplacement(e, initialState));\n\t\treturn new TextEdit(edits);\n\t}\n\n\tpublic static fromParallelReplacementsUnsorted(replacements: readonly TextReplacement[]): TextEdit {\n\t\tconst r = replacements.slice().sort(compareBy(i => i.range, Range.compareRangesUsingStarts));\n\t\treturn new TextEdit(r);\n\t}\n\n\tconstructor(\n\t\tpublic readonly replacements: readonly TextReplacement[]\n\t) {\n\t\tassertFn(() => checkAdjacentItems(replacements, (a, b) => a.range.getEndPosition().isBeforeOrEqual(b.range.getStartPosition())));\n\t}\n\n\tmapPosition(position: Position): Position | Range {\n\t\tlet lineDelta = 0;\n\t\tlet curLine = 0;\n\t\tlet columnDeltaInCurLine = 0;\n\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst start = replacement.range.getStartPosition();\n\n\t\t\tif (position.isBeforeOrEqual(start)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst end = replacement.range.getEndPosition();\n\t\t\tconst len = TextLength.ofText(replacement.text);\n\t\t\tif (position.isBefore(end)) {\n\t\t\t\tconst startPos = new Position(start.lineNumber + lineDelta, start.column + (start.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t\t\t\tconst endPos = len.addToPosition(startPos);\n\t\t\t\treturn rangeFromPositions(startPos, endPos);\n\t\t\t}\n\n\t\t\tif (start.lineNumber + lineDelta !== curLine) {\n\t\t\t\tcolumnDeltaInCurLine = 0;\n\t\t\t}\n\n\t\t\tlineDelta += len.lineCount - (replacement.range.endLineNumber - replacement.range.startLineNumber);\n\n\t\t\tif (len.lineCount === 0) {\n\t\t\t\tif (end.lineNumber !== start.lineNumber) {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - 1);\n\t\t\t\t} else {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - start.column);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcolumnDeltaInCurLine = len.columnCount;\n\t\t\t}\n\t\t\tcurLine = end.lineNumber + lineDelta;\n\t\t}\n\n\t\treturn new Position(position.lineNumber + lineDelta, position.column + (position.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t}\n\n\tmapRange(range: Range): Range {\n\t\tfunction getStart(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getStartPosition();\n\t\t}\n\n\t\tfunction getEnd(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getEndPosition();\n\t\t}\n\n\t\tconst start = getStart(this.mapPosition(range.getStartPosition()));\n\t\tconst end = getEnd(this.mapPosition(range.getEndPosition()));\n\n\t\treturn rangeFromPositions(start, end);\n\t}\n\n\tapply(text: AbstractText): string {\n\t\tlet result = '';\n\t\tlet lastEditEnd = new Position(1, 1);\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst editRange = replacement.range;\n\t\t\tconst editStart = editRange.getStartPosition();\n\t\t\tconst editEnd = editRange.getEndPosition();\n\n\t\t\tconst r = rangeFromPositions(lastEditEnd, editStart);\n\t\t\tif (!r.isEmpty()) {\n\t\t\t\tresult += text.getValueOfRange(r);\n\t\t\t}\n\t\t\tresult += replacement.text;\n\t\t\tlastEditEnd = editEnd;\n\t\t}\n\t\tconst r = rangeFromPositions(lastEditEnd, text.endPositionExclusive);\n\t\tif (!r.isEmpty()) {\n\t\t\tresult += text.getValueOfRange(r);\n\t\t}\n\t\treturn result;\n\t}\n\n\tapplyToString(str: string): string {\n\t\tconst strText = new StringText(str);\n\t\treturn this.apply(strText);\n\t}\n\n\tgetNewRanges(): Range[] {\n\t\tconst newRanges: Range[] = [];\n\t\tlet previousEditEndLineNumber = 0;\n\t\tlet lineOffset = 0;\n\t\tlet columnOffset = 0;\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst textLength = TextLength.ofText(replacement.text);\n\t\t\tconst newRangeStart = Position.lift({\n\t\t\t\tlineNumber: replacement.range.startLineNumber + lineOffset,\n\t\t\t\tcolumn: replacement.range.startColumn + (replacement.range.startLineNumber === previousEditEndLineNumber ? columnOffset : 0)\n\t\t\t});\n\t\t\tconst newRange = textLength.createRange(newRangeStart);\n\t\t\tnewRanges.push(newRange);\n\t\t\tlineOffset = newRange.endLineNumber - replacement.range.endLineNumber;\n\t\t\tcolumnOffset = newRange.endColumn - replacement.range.endColumn;\n\t\t\tpreviousEditEndLineNumber = replacement.range.endLineNumber;\n\t\t}\n\t\treturn newRanges;\n\t}\n\n\ttoReplacement(text: AbstractText): TextReplacement {\n\t\tif (this.replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (this.replacements.length === 1) { return this.replacements[0]; }\n\n\t\tconst startPos = this.replacements[0].range.getStartPosition();\n\t\tconst endPos = this.replacements[this.replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < this.replacements.length; i++) {\n\t\t\tconst curEdit = this.replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < this.replacements.length - 1) {\n\t\t\t\tconst nextEdit = this.replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = text.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\ttoString(text: AbstractText | string | undefined): string {\n\t\tif (text === undefined) {\n\t\t\treturn this.replacements.map(edit => edit.toString()).join('\\n');\n\t\t}\n\n\t\tif (typeof text === 'string') {\n\t\t\treturn this.toString(new StringText(text));\n\t\t}\n\n\t\tif (this.replacements.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn this.replacements.map(r => {\n\t\t\tconst maxLength = 10;\n\t\t\tconst originalText = text.getValueOfRange(r.range);\n\n\t\t\t// Get text before the edit\n\t\t\tconst beforeRange = Range.fromPositions(\n\t\t\t\tnew Position(Math.max(1, r.range.startLineNumber - 1), 1),\n\t\t\t\tr.range.getStartPosition()\n\t\t\t);\n\t\t\tlet beforeText = text.getValueOfRange(beforeRange);\n\t\t\tif (beforeText.length > maxLength) {\n\t\t\t\tbeforeText = '...' + beforeText.substring(beforeText.length - maxLength);\n\t\t\t}\n\n\t\t\t// Get text after the edit\n\t\t\tconst afterRange = Range.fromPositions(\n\t\t\t\tr.range.getEndPosition(),\n\t\t\t\tnew Position(r.range.endLineNumber + 1, 1)\n\t\t\t);\n\t\t\tlet afterText = text.getValueOfRange(afterRange);\n\t\t\tif (afterText.length > maxLength) {\n\t\t\t\tafterText = afterText.substring(0, maxLength) + '...';\n\t\t\t}\n\n\t\t\t// Format the replaced text\n\t\t\tlet replacedText = originalText;\n\t\t\tif (replacedText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\treplacedText = replacedText.substring(0, halfMax) + '...' +\n\t\t\t\t\treplacedText.substring(replacedText.length - halfMax);\n\t\t\t}\n\n\t\t\t// Format the new text\n\t\t\tlet newText = r.text;\n\t\t\tif (newText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\tnewText = newText.substring(0, halfMax) + '...' +\n\t\t\t\t\tnewText.substring(newText.length - halfMax);\n\t\t\t}\n\n\t\t\tif (replacedText.length === 0) {\n\t\t\t\t// allow-any-unicode-next-line\n\t\t\t\treturn `${beforeText}❰${newText}❱${afterText}`;\n\t\t\t}\n\t\t\t// allow-any-unicode-next-line\n\t\t\treturn `${beforeText}❰${replacedText}↦${newText}❱${afterText}`;\n\t\t}).join('\\n');\n\t}\n}\n\nexport class TextReplacement implements IEquatable<TextReplacement> {\n\tpublic static joinReplacements(replacements: TextReplacement[], initialValue: AbstractText): TextReplacement {\n\t\tif (replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (replacements.length === 1) { return replacements[0]; }\n\n\t\tconst startPos = replacements[0].range.getStartPosition();\n\t\tconst endPos = replacements[replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < replacements.length; i++) {\n\t\t\tconst curEdit = replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < replacements.length - 1) {\n\t\t\t\tconst nextEdit = replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = initialValue.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\tpublic static fromStringReplacement(replacement: StringReplacement, initialState: AbstractText): TextReplacement {\n\t\treturn new TextReplacement(initialState.getTransformer().getRange(replacement.replaceRange), replacement.newText);\n\t}\n\n\tpublic static delete(range: Range): TextReplacement {\n\t\treturn new TextReplacement(range, '');\n\t}\n\n\tconstructor(\n\t\tpublic readonly range: Range,\n\t\tpublic readonly text: string,\n\t) {\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.range.isEmpty() && this.text.length === 0;\n\t}\n\n\tstatic equals(first: TextReplacement, second: TextReplacement) {\n\t\treturn first.range.equalsRange(second.range) && first.text === second.text;\n\t}\n\n\tpublic equals(other: TextReplacement): boolean {\n\t\treturn TextReplacement.equals(this, other);\n\t}\n\n\tpublic removeCommonPrefixAndSuffix(text: AbstractText): TextReplacement {\n\t\tconst prefix = this.removeCommonPrefix(text);\n\t\tconst suffix = prefix.removeCommonSuffix(text);\n\t\treturn suffix;\n\t}\n\n\tpublic removeCommonPrefix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonPrefixLen = commonPrefixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst start = TextLength.ofText(normalizedOriginalText.substring(0, commonPrefixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(commonPrefixLen);\n\t\tconst range = Range.fromPositions(start, this.range.getEndPosition());\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic removeCommonSuffix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonSuffixLen = commonSuffixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst end = TextLength.ofText(normalizedOriginalText.substring(0, normalizedOriginalText.length - commonSuffixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(0, normalizedModifiedText.length - commonSuffixLen);\n\t\tconst range = Range.fromPositions(this.range.getStartPosition(), end);\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic toString(): string {\n\t\tconst start = this.range.getStartPosition();\n\t\tconst end = this.range.getEndPosition();\n\t\treturn `(${start.lineNumber},${start.column} -> ${end.lineNumber},${end.column}): \"${this.text}\"`;\n\t}\n}\n\nfunction rangeFromPositions(start: Position, end: Position): Range {\n\tif (start.lineNumber === end.lineNumber && start.column === Number.MAX_SAFE_INTEGER) {\n\t\treturn Range.fromPositions(end, end);\n\t} else if (!start.isBeforeOrEqual(end)) {\n\t\tthrow new BugIndicatingError('start must be before end');\n\t}\n\treturn new Range(start.lineNumber, start.column, end.lineNumber, end.column);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { compareBy } from '../../../../base/common/arrays.js';\nimport { assertFn, checkAdjacentItems } from '../../../../base/common/assert.js';\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { commonPrefixLength, commonSuffixLength } from '../../../../base/common/strings.js';\nimport { BaseStringEdit, StringReplacement } from './stringEdit.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextLength } from '../text/textLength.js';\nimport { AbstractText, StringText } from '../text/abstractText.js';\nimport { IEquatable } from '../../../../base/common/equals.js';\n\nexport class TextEdit {\n\tpublic static fromStringEdit(edit: BaseStringEdit, initialState: AbstractText): TextEdit {\n\t\tconst edits = edit.replacements.map(e => TextReplacement.fromStringReplacement(e, initialState));\n\t\treturn new TextEdit(edits);\n\t}\n\n\tpublic static fromParallelReplacementsUnsorted(replacements: readonly TextReplacement[]): TextEdit {\n\t\tconst r = replacements.slice().sort(compareBy(i => i.range, Range.compareRangesUsingStarts));\n\t\treturn new TextEdit(r);\n\t}\n\n\tconstructor(\n\t\tpublic readonly replacements: readonly TextReplacement[]\n\t) {\n\t\tassertFn(() => checkAdjacentItems(replacements, (a, b) => a.range.getEndPosition().isBeforeOrEqual(b.range.getStartPosition())));\n\t}\n\n\tmapPosition(position: Position): Position | Range {\n\t\tlet lineDelta = 0;\n\t\tlet curLine = 0;\n\t\tlet columnDeltaInCurLine = 0;\n\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst start = replacement.range.getStartPosition();\n\n\t\t\tif (position.isBeforeOrEqual(start)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst end = replacement.range.getEndPosition();\n\t\t\tconst len = TextLength.ofText(replacement.text);\n\t\t\tif (position.isBefore(end)) {\n\t\t\t\tconst startPos = new Position(start.lineNumber + lineDelta, start.column + (start.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t\t\t\tconst endPos = len.addToPosition(startPos);\n\t\t\t\treturn rangeFromPositions(startPos, endPos);\n\t\t\t}\n\n\t\t\tif (start.lineNumber + lineDelta !== curLine) {\n\t\t\t\tcolumnDeltaInCurLine = 0;\n\t\t\t}\n\n\t\t\tlineDelta += len.lineCount - (replacement.range.endLineNumber - replacement.range.startLineNumber);\n\n\t\t\tif (len.lineCount === 0) {\n\t\t\t\tif (end.lineNumber !== start.lineNumber) {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - 1);\n\t\t\t\t} else {\n\t\t\t\t\tcolumnDeltaInCurLine += len.columnCount - (end.column - start.column);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcolumnDeltaInCurLine = len.columnCount;\n\t\t\t}\n\t\t\tcurLine = end.lineNumber + lineDelta;\n\t\t}\n\n\t\treturn new Position(position.lineNumber + lineDelta, position.column + (position.lineNumber + lineDelta === curLine ? columnDeltaInCurLine : 0));\n\t}\n\n\tmapRange(range: Range): Range {\n\t\tfunction getStart(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getStartPosition();\n\t\t}\n\n\t\tfunction getEnd(p: Position | Range) {\n\t\t\treturn p instanceof Position ? p : p.getEndPosition();\n\t\t}\n\n\t\tconst start = getStart(this.mapPosition(range.getStartPosition()));\n\t\tconst end = getEnd(this.mapPosition(range.getEndPosition()));\n\n\t\treturn rangeFromPositions(start, end);\n\t}\n\n\tapply(text: AbstractText): string {\n\t\tlet result = '';\n\t\tlet lastEditEnd = new Position(1, 1);\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst editRange = replacement.range;\n\t\t\tconst editStart = editRange.getStartPosition();\n\t\t\tconst editEnd = editRange.getEndPosition();\n\n\t\t\tconst r = rangeFromPositions(lastEditEnd, editStart);\n\t\t\tif (!r.isEmpty()) {\n\t\t\t\tresult += text.getValueOfRange(r);\n\t\t\t}\n\t\t\tresult += replacement.text;\n\t\t\tlastEditEnd = editEnd;\n\t\t}\n\t\tconst r = rangeFromPositions(lastEditEnd, text.endPositionExclusive);\n\t\tif (!r.isEmpty()) {\n\t\t\tresult += text.getValueOfRange(r);\n\t\t}\n\t\treturn result;\n\t}\n\n\tapplyToString(str: string): string {\n\t\tconst strText = new StringText(str);\n\t\treturn this.apply(strText);\n\t}\n\n\tgetNewRanges(): Range[] {\n\t\tconst newRanges: Range[] = [];\n\t\tlet previousEditEndLineNumber = 0;\n\t\tlet lineOffset = 0;\n\t\tlet columnOffset = 0;\n\t\tfor (const replacement of this.replacements) {\n\t\t\tconst textLength = TextLength.ofText(replacement.text);\n\t\t\tconst newRangeStart = Position.lift({\n\t\t\t\tlineNumber: replacement.range.startLineNumber + lineOffset,\n\t\t\t\tcolumn: replacement.range.startColumn + (replacement.range.startLineNumber === previousEditEndLineNumber ? columnOffset : 0)\n\t\t\t});\n\t\t\tconst newRange = textLength.createRange(newRangeStart);\n\t\t\tnewRanges.push(newRange);\n\t\t\tlineOffset = newRange.endLineNumber - replacement.range.endLineNumber;\n\t\t\tcolumnOffset = newRange.endColumn - replacement.range.endColumn;\n\t\t\tpreviousEditEndLineNumber = replacement.range.endLineNumber;\n\t\t}\n\t\treturn newRanges;\n\t}\n\n\ttoReplacement(text: AbstractText): TextReplacement {\n\t\tif (this.replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (this.replacements.length === 1) { return this.replacements[0]; }\n\n\t\tconst startPos = this.replacements[0].range.getStartPosition();\n\t\tconst endPos = this.replacements[this.replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < this.replacements.length; i++) {\n\t\t\tconst curEdit = this.replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < this.replacements.length - 1) {\n\t\t\t\tconst nextEdit = this.replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = text.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\ttoString(text: AbstractText | string | undefined): string {\n\t\tif (text === undefined) {\n\t\t\treturn this.replacements.map(edit => edit.toString()).join('\\n');\n\t\t}\n\n\t\tif (typeof text === 'string') {\n\t\t\treturn this.toString(new StringText(text));\n\t\t}\n\n\t\tif (this.replacements.length === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn this.replacements.map(r => {\n\t\t\tconst maxLength = 10;\n\t\t\tconst originalText = text.getValueOfRange(r.range);\n\n\t\t\t// Get text before the edit\n\t\t\tconst beforeRange = Range.fromPositions(\n\t\t\t\tnew Position(Math.max(1, r.range.startLineNumber - 1), 1),\n\t\t\t\tr.range.getStartPosition()\n\t\t\t);\n\t\t\tlet beforeText = text.getValueOfRange(beforeRange);\n\t\t\tif (beforeText.length > maxLength) {\n\t\t\t\tbeforeText = '...' + beforeText.substring(beforeText.length - maxLength);\n\t\t\t}\n\n\t\t\t// Get text after the edit\n\t\t\tconst afterRange = Range.fromPositions(\n\t\t\t\tr.range.getEndPosition(),\n\t\t\t\tnew Position(r.range.endLineNumber + 1, 1)\n\t\t\t);\n\t\t\tlet afterText = text.getValueOfRange(afterRange);\n\t\t\tif (afterText.length > maxLength) {\n\t\t\t\tafterText = afterText.substring(0, maxLength) + '...';\n\t\t\t}\n\n\t\t\t// Format the replaced text\n\t\t\tlet replacedText = originalText;\n\t\t\tif (replacedText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\treplacedText = replacedText.substring(0, halfMax) + '...' +\n\t\t\t\t\treplacedText.substring(replacedText.length - halfMax);\n\t\t\t}\n\n\t\t\t// Format the new text\n\t\t\tlet newText = r.text;\n\t\t\tif (newText.length > maxLength) {\n\t\t\t\tconst halfMax = Math.floor(maxLength / 2);\n\t\t\t\tnewText = newText.substring(0, halfMax) + '...' +\n\t\t\t\t\tnewText.substring(newText.length - halfMax);\n\t\t\t}\n\n\t\t\tif (replacedText.length === 0) {\n\t\t\t\t// allow-any-unicode-next-line\n\t\t\t\treturn `${beforeText}❰${newText}❱${afterText}`;\n\t\t\t}\n\t\t\t// allow-any-unicode-next-line\n\t\t\treturn `${beforeText}❰${replacedText}↦${newText}❱${afterText}`;\n\t\t}).join('\\n');\n\t}\n}\n\nexport class TextReplacement implements IEquatable<TextReplacement> {\n\tpublic static joinReplacements(replacements: TextReplacement[], initialValue: AbstractText): TextReplacement {\n\t\tif (replacements.length === 0) { throw new BugIndicatingError(); }\n\t\tif (replacements.length === 1) { return replacements[0]; }\n\n\t\tconst startPos = replacements[0].range.getStartPosition();\n\t\tconst endPos = replacements[replacements.length - 1].range.getEndPosition();\n\n\t\tlet newText = '';\n\n\t\tfor (let i = 0; i < replacements.length; i++) {\n\t\t\tconst curEdit = replacements[i];\n\t\t\tnewText += curEdit.text;\n\t\t\tif (i < replacements.length - 1) {\n\t\t\t\tconst nextEdit = replacements[i + 1];\n\t\t\t\tconst gapRange = Range.fromPositions(curEdit.range.getEndPosition(), nextEdit.range.getStartPosition());\n\t\t\t\tconst gapText = initialValue.getValueOfRange(gapRange);\n\t\t\t\tnewText += gapText;\n\t\t\t}\n\t\t}\n\t\treturn new TextReplacement(Range.fromPositions(startPos, endPos), newText);\n\t}\n\n\tpublic static fromStringReplacement(replacement: StringReplacement, initialState: AbstractText): TextReplacement {\n\t\treturn new TextReplacement(initialState.getTransformer().getRange(replacement.replaceRange), replacement.newText);\n\t}\n\n\tpublic static delete(range: Range): TextReplacement {\n\t\treturn new TextReplacement(range, '');\n\t}\n\n\tconstructor(\n\t\tpublic readonly range: Range,\n\t\tpublic readonly text: string,\n\t) {\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.range.isEmpty() && this.text.length === 0;\n\t}\n\n\tstatic equals(first: TextReplacement, second: TextReplacement) {\n\t\treturn first.range.equalsRange(second.range) && first.text === second.text;\n\t}\n\n\tpublic equals(other: TextReplacement): boolean {\n\t\treturn TextReplacement.equals(this, other);\n\t}\n\n\tpublic removeCommonPrefixAndSuffix(text: AbstractText): TextReplacement {\n\t\tconst prefix = this.removeCommonPrefix(text);\n\t\tconst suffix = prefix.removeCommonSuffix(text);\n\t\treturn suffix;\n\t}\n\n\tpublic removeCommonPrefix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonPrefixLen = commonPrefixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst start = TextLength.ofText(normalizedOriginalText.substring(0, commonPrefixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(commonPrefixLen);\n\t\tconst range = Range.fromPositions(start, this.range.getEndPosition());\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic removeCommonSuffix(text: AbstractText): TextReplacement {\n\t\tconst normalizedOriginalText = text.getValueOfRange(this.range).replaceAll('\\r\\n', '\\n');\n\t\tconst normalizedModifiedText = this.text.replaceAll('\\r\\n', '\\n');\n\n\t\tconst commonSuffixLen = commonSuffixLength(normalizedOriginalText, normalizedModifiedText);\n\t\tconst end = TextLength.ofText(normalizedOriginalText.substring(0, normalizedOriginalText.length - commonSuffixLen))\n\t\t\t.addToPosition(this.range.getStartPosition());\n\n\t\tconst newText = normalizedModifiedText.substring(0, normalizedModifiedText.length - commonSuffixLen);\n\t\tconst range = Range.fromPositions(this.range.getStartPosition(), end);\n\t\treturn new TextReplacement(range, newText);\n\t}\n\n\tpublic toString(): string {\n\t\tconst start = this.range.getStartPosition();\n\t\tconst end = this.range.getEndPosition();\n\t\treturn `(${start.lineNumber},${start.column} -> ${end.lineNumber},${end.column}): \"${this.text}\"`;\n\t}\n}\n\nfunction rangeFromPositions(start: Position, end: Position): Range {\n\tif (start.lineNumber === end.lineNumber && start.column === Number.MAX_SAFE_INTEGER) {\n\t\treturn Range.fromPositions(end, end);\n\t} else if (!start.isBeforeOrEqual(end)) {\n\t\tthrow new BugIndicatingError('start must be before end');\n\t}\n\treturn new Range(start.lineNumber, start.column, end.lineNumber, end.column);\n}\n"]}
|
|
@@ -41,21 +41,35 @@ export class PositionOffsetTransformer extends PositionOffsetTransformerBase {
|
|
|
41
41
|
constructor(text) {
|
|
42
42
|
super();
|
|
43
43
|
this.text = text;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
}
|
|
45
|
+
get lineStartOffsetByLineIdx() {
|
|
46
|
+
if (!this._lineStartOffsetByLineIdx) {
|
|
47
|
+
this._computeLineOffsets();
|
|
48
|
+
}
|
|
49
|
+
return this._lineStartOffsetByLineIdx;
|
|
50
|
+
}
|
|
51
|
+
get lineEndOffsetByLineIdx() {
|
|
52
|
+
if (!this._lineEndOffsetByLineIdx) {
|
|
53
|
+
this._computeLineOffsets();
|
|
54
|
+
}
|
|
55
|
+
return this._lineEndOffsetByLineIdx;
|
|
56
|
+
}
|
|
57
|
+
_computeLineOffsets() {
|
|
58
|
+
this._lineStartOffsetByLineIdx = [];
|
|
59
|
+
this._lineEndOffsetByLineIdx = [];
|
|
60
|
+
this._lineStartOffsetByLineIdx.push(0);
|
|
61
|
+
for (let i = 0; i < this.text.length; i++) {
|
|
62
|
+
if (this.text.charAt(i) === '\n') {
|
|
63
|
+
this._lineStartOffsetByLineIdx.push(i + 1);
|
|
64
|
+
if (i > 0 && this.text.charAt(i - 1) === '\r') {
|
|
65
|
+
this._lineEndOffsetByLineIdx.push(i - 1);
|
|
52
66
|
}
|
|
53
67
|
else {
|
|
54
|
-
this.
|
|
68
|
+
this._lineEndOffsetByLineIdx.push(i);
|
|
55
69
|
}
|
|
56
70
|
}
|
|
57
71
|
}
|
|
58
|
-
this.
|
|
72
|
+
this._lineEndOffsetByLineIdx.push(this.text.length);
|
|
59
73
|
}
|
|
60
74
|
getOffset(position) {
|
|
61
75
|
const valPos = this._validatePosition(position);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/text/positionToOffsetImpl.ts","vs/editor/common/core/text/positionToOffsetImpl.ts"],"names":[],"mappings":"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","file":"positionToOffsetImpl.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { findLastIdxMonotonous } from '../../../../base/common/arraysFind.js';\nimport { StringEdit, StringReplacement } from '../edits/stringEdit.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextReplacement, TextEdit } from '../edits/textEdit.js';\nimport { TextLength } from '../text/textLength.js';\n\nexport abstract class PositionOffsetTransformerBase {\n\tabstract getOffset(position: Position): number;\n\n\tgetOffsetRange(range: Range): OffsetRange {\n\t\treturn new OffsetRange(\n\t\t\tthis.getOffset(range.getStartPosition()),\n\t\t\tthis.getOffset(range.getEndPosition())\n\t\t);\n\t}\n\n\tabstract getPosition(offset: number): Position;\n\n\tgetRange(offsetRange: OffsetRange): Range {\n\t\treturn Range.fromPositions(\n\t\t\tthis.getPosition(offsetRange.start),\n\t\t\tthis.getPosition(offsetRange.endExclusive)\n\t\t);\n\t}\n\n\tgetStringReplacement(edit: TextReplacement): StringReplacement {\n\t\treturn new Deps.deps.StringReplacement(this.getOffsetRange(edit.range), edit.text);\n\t}\n\n\tgetTextReplacement(edit: StringReplacement): TextReplacement {\n\t\treturn new Deps.deps.TextReplacement(this.getRange(edit.replaceRange), edit.newText);\n\t}\n\n\tgetTextEdit(edit: StringEdit): TextEdit {\n\t\tconst edits = edit.replacements.map(e => this.getTextReplacement(e));\n\t\treturn new Deps.deps.TextEdit(edits);\n\t}\n}\n\ninterface IDeps {\n\tStringEdit: typeof StringEdit;\n\tStringReplacement: typeof StringReplacement;\n\tTextReplacement: typeof TextReplacement;\n\tTextEdit: typeof TextEdit;\n\tTextLength: typeof TextLength;\n}\n\nclass Deps {\n\tstatic _deps: IDeps | undefined = undefined;\n\tstatic get deps(): IDeps {\n\t\tif (!this._deps) {\n\t\t\tthrow new Error('Dependencies not set. Call _setDependencies first.');\n\t\t}\n\t\treturn this._deps;\n\t}\n}\n\n/** This is to break circular module dependencies. */\nexport function _setPositionOffsetTransformerDependencies(deps: IDeps): void {\n\tDeps._deps = deps;\n}\n\nexport class PositionOffsetTransformer extends PositionOffsetTransformerBase {\n\tprivate readonly lineStartOffsetByLineIdx: number[];\n\tprivate readonly lineEndOffsetByLineIdx: number[];\n\n\tconstructor(public readonly text: string) {\n\t\tsuper();\n\n\t\tthis.lineStartOffsetByLineIdx = [];\n\t\tthis.lineEndOffsetByLineIdx = [];\n\n\t\tthis.lineStartOffsetByLineIdx.push(0);\n\t\tfor (let i = 0; i < text.length; i++) {\n\t\t\tif (text.charAt(i) === '\\n') {\n\t\t\t\tthis.lineStartOffsetByLineIdx.push(i + 1);\n\t\t\t\tif (i > 0 && text.charAt(i - 1) === '\\r') {\n\t\t\t\t\tthis.lineEndOffsetByLineIdx.push(i - 1);\n\t\t\t\t} else {\n\t\t\t\t\tthis.lineEndOffsetByLineIdx.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.lineEndOffsetByLineIdx.push(text.length);\n\t}\n\n\toverride getOffset(position: Position): number {\n\t\tconst valPos = this._validatePosition(position);\n\t\treturn this.lineStartOffsetByLineIdx[valPos.lineNumber - 1] + valPos.column - 1;\n\t}\n\n\tprivate _validatePosition(position: Position): Position {\n\t\tif (position.lineNumber < 1) {\n\t\t\treturn new Position(1, 1);\n\t\t}\n\t\tconst lineCount = this.textLength.lineCount + 1;\n\t\tif (position.lineNumber > lineCount) {\n\t\t\tconst lineLength = this.getLineLength(lineCount);\n\t\t\treturn new Position(lineCount, lineLength + 1);\n\t\t}\n\t\tif (position.column < 1) {\n\t\t\treturn new Position(position.lineNumber, 1);\n\t\t}\n\t\tconst lineLength = this.getLineLength(position.lineNumber);\n\t\tif (position.column - 1 > lineLength) {\n\t\t\treturn new Position(position.lineNumber, lineLength + 1);\n\t\t}\n\t\treturn position;\n\t}\n\n\toverride getPosition(offset: number): Position {\n\t\tconst idx = findLastIdxMonotonous(this.lineStartOffsetByLineIdx, i => i <= offset);\n\t\tconst lineNumber = idx + 1;\n\t\tconst column = offset - this.lineStartOffsetByLineIdx[idx] + 1;\n\t\treturn new Position(lineNumber, column);\n\t}\n\n\tget textLength(): TextLength {\n\t\tconst lineIdx = this.lineStartOffsetByLineIdx.length - 1;\n\t\treturn new Deps.deps.TextLength(lineIdx, this.text.length - this.lineStartOffsetByLineIdx[lineIdx]);\n\t}\n\n\tgetLineLength(lineNumber: number): number {\n\t\treturn this.lineEndOffsetByLineIdx[lineNumber - 1] - this.lineStartOffsetByLineIdx[lineNumber - 1];\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { findLastIdxMonotonous } from '../../../../base/common/arraysFind.js';\nimport { StringEdit, StringReplacement } from '../edits/stringEdit.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextReplacement, TextEdit } from '../edits/textEdit.js';\nimport { TextLength } from '../text/textLength.js';\n\nexport abstract class PositionOffsetTransformerBase {\n\tabstract getOffset(position: Position): number;\n\n\tgetOffsetRange(range: Range): OffsetRange {\n\t\treturn new OffsetRange(\n\t\t\tthis.getOffset(range.getStartPosition()),\n\t\t\tthis.getOffset(range.getEndPosition())\n\t\t);\n\t}\n\n\tabstract getPosition(offset: number): Position;\n\n\tgetRange(offsetRange: OffsetRange): Range {\n\t\treturn Range.fromPositions(\n\t\t\tthis.getPosition(offsetRange.start),\n\t\t\tthis.getPosition(offsetRange.endExclusive)\n\t\t);\n\t}\n\n\tgetStringReplacement(edit: TextReplacement): StringReplacement {\n\t\treturn new Deps.deps.StringReplacement(this.getOffsetRange(edit.range), edit.text);\n\t}\n\n\tgetTextReplacement(edit: StringReplacement): TextReplacement {\n\t\treturn new Deps.deps.TextReplacement(this.getRange(edit.replaceRange), edit.newText);\n\t}\n\n\tgetTextEdit(edit: StringEdit): TextEdit {\n\t\tconst edits = edit.replacements.map(e => this.getTextReplacement(e));\n\t\treturn new Deps.deps.TextEdit(edits);\n\t}\n}\n\ninterface IDeps {\n\tStringEdit: typeof StringEdit;\n\tStringReplacement: typeof StringReplacement;\n\tTextReplacement: typeof TextReplacement;\n\tTextEdit: typeof TextEdit;\n\tTextLength: typeof TextLength;\n}\n\nclass Deps {\n\tstatic _deps: IDeps | undefined = undefined;\n\tstatic get deps(): IDeps {\n\t\tif (!this._deps) {\n\t\t\tthrow new Error('Dependencies not set. Call _setDependencies first.');\n\t\t}\n\t\treturn this._deps;\n\t}\n}\n\n/** This is to break circular module dependencies. */\nexport function _setPositionOffsetTransformerDependencies(deps: IDeps): void {\n\tDeps._deps = deps;\n}\n\nexport class PositionOffsetTransformer extends PositionOffsetTransformerBase {\n\tprivate readonly lineStartOffsetByLineIdx: number[];\n\tprivate readonly lineEndOffsetByLineIdx: number[];\n\n\tconstructor(public readonly text: string) {\n\t\tsuper();\n\n\t\tthis.lineStartOffsetByLineIdx = [];\n\t\tthis.lineEndOffsetByLineIdx = [];\n\n\t\tthis.lineStartOffsetByLineIdx.push(0);\n\t\tfor (let i = 0; i < text.length; i++) {\n\t\t\tif (text.charAt(i) === '\\n') {\n\t\t\t\tthis.lineStartOffsetByLineIdx.push(i + 1);\n\t\t\t\tif (i > 0 && text.charAt(i - 1) === '\\r') {\n\t\t\t\t\tthis.lineEndOffsetByLineIdx.push(i - 1);\n\t\t\t\t} else {\n\t\t\t\t\tthis.lineEndOffsetByLineIdx.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.lineEndOffsetByLineIdx.push(text.length);\n\t}\n\n\toverride getOffset(position: Position): number {\n\t\tconst valPos = this._validatePosition(position);\n\t\treturn this.lineStartOffsetByLineIdx[valPos.lineNumber - 1] + valPos.column - 1;\n\t}\n\n\tprivate _validatePosition(position: Position): Position {\n\t\tif (position.lineNumber < 1) {\n\t\t\treturn new Position(1, 1);\n\t\t}\n\t\tconst lineCount = this.textLength.lineCount + 1;\n\t\tif (position.lineNumber > lineCount) {\n\t\t\tconst lineLength = this.getLineLength(lineCount);\n\t\t\treturn new Position(lineCount, lineLength + 1);\n\t\t}\n\t\tif (position.column < 1) {\n\t\t\treturn new Position(position.lineNumber, 1);\n\t\t}\n\t\tconst lineLength = this.getLineLength(position.lineNumber);\n\t\tif (position.column - 1 > lineLength) {\n\t\t\treturn new Position(position.lineNumber, lineLength + 1);\n\t\t}\n\t\treturn position;\n\t}\n\n\toverride getPosition(offset: number): Position {\n\t\tconst idx = findLastIdxMonotonous(this.lineStartOffsetByLineIdx, i => i <= offset);\n\t\tconst lineNumber = idx + 1;\n\t\tconst column = offset - this.lineStartOffsetByLineIdx[idx] + 1;\n\t\treturn new Position(lineNumber, column);\n\t}\n\n\tget textLength(): TextLength {\n\t\tconst lineIdx = this.lineStartOffsetByLineIdx.length - 1;\n\t\treturn new Deps.deps.TextLength(lineIdx, this.text.length - this.lineStartOffsetByLineIdx[lineIdx]);\n\t}\n\n\tgetLineLength(lineNumber: number): number {\n\t\treturn this.lineEndOffsetByLineIdx[lineNumber - 1] - this.lineStartOffsetByLineIdx[lineNumber - 1];\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/text/positionToOffsetImpl.ts","vs/editor/common/core/text/positionToOffsetImpl.ts"],"names":[],"mappings":"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","file":"positionToOffsetImpl.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { findLastIdxMonotonous } from '../../../../base/common/arraysFind.js';\nimport { StringEdit, StringReplacement } from '../edits/stringEdit.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextReplacement, TextEdit } from '../edits/textEdit.js';\nimport { TextLength } from '../text/textLength.js';\n\nexport abstract class PositionOffsetTransformerBase {\n\tabstract getOffset(position: Position): number;\n\n\tgetOffsetRange(range: Range): OffsetRange {\n\t\treturn new OffsetRange(\n\t\t\tthis.getOffset(range.getStartPosition()),\n\t\t\tthis.getOffset(range.getEndPosition())\n\t\t);\n\t}\n\n\tabstract getPosition(offset: number): Position;\n\n\tgetRange(offsetRange: OffsetRange): Range {\n\t\treturn Range.fromPositions(\n\t\t\tthis.getPosition(offsetRange.start),\n\t\t\tthis.getPosition(offsetRange.endExclusive)\n\t\t);\n\t}\n\n\tgetStringReplacement(edit: TextReplacement): StringReplacement {\n\t\treturn new Deps.deps.StringReplacement(this.getOffsetRange(edit.range), edit.text);\n\t}\n\n\tgetTextReplacement(edit: StringReplacement): TextReplacement {\n\t\treturn new Deps.deps.TextReplacement(this.getRange(edit.replaceRange), edit.newText);\n\t}\n\n\tgetTextEdit(edit: StringEdit): TextEdit {\n\t\tconst edits = edit.replacements.map(e => this.getTextReplacement(e));\n\t\treturn new Deps.deps.TextEdit(edits);\n\t}\n}\n\ninterface IDeps {\n\tStringEdit: typeof StringEdit;\n\tStringReplacement: typeof StringReplacement;\n\tTextReplacement: typeof TextReplacement;\n\tTextEdit: typeof TextEdit;\n\tTextLength: typeof TextLength;\n}\n\nclass Deps {\n\tstatic _deps: IDeps | undefined = undefined;\n\tstatic get deps(): IDeps {\n\t\tif (!this._deps) {\n\t\t\tthrow new Error('Dependencies not set. Call _setDependencies first.');\n\t\t}\n\t\treturn this._deps;\n\t}\n}\n\n/** This is to break circular module dependencies. */\nexport function _setPositionOffsetTransformerDependencies(deps: IDeps): void {\n\tDeps._deps = deps;\n}\n\nexport class PositionOffsetTransformer extends PositionOffsetTransformerBase {\n\tprivate _lineStartOffsetByLineIdx: number[] | undefined;\n\tprivate _lineEndOffsetByLineIdx: number[] | undefined;\n\n\tconstructor(public readonly text: string) {\n\t\tsuper();\n\t}\n\n\tprivate get lineStartOffsetByLineIdx(): number[] {\n\t\tif (!this._lineStartOffsetByLineIdx) {\n\t\t\tthis._computeLineOffsets();\n\t\t}\n\t\treturn this._lineStartOffsetByLineIdx!;\n\t}\n\n\tprivate get lineEndOffsetByLineIdx(): number[] {\n\t\tif (!this._lineEndOffsetByLineIdx) {\n\t\t\tthis._computeLineOffsets();\n\t\t}\n\t\treturn this._lineEndOffsetByLineIdx!;\n\t}\n\n\tprivate _computeLineOffsets(): void {\n\t\tthis._lineStartOffsetByLineIdx = [];\n\t\tthis._lineEndOffsetByLineIdx = [];\n\n\t\tthis._lineStartOffsetByLineIdx.push(0);\n\t\tfor (let i = 0; i < this.text.length; i++) {\n\t\t\tif (this.text.charAt(i) === '\\n') {\n\t\t\t\tthis._lineStartOffsetByLineIdx.push(i + 1);\n\t\t\t\tif (i > 0 && this.text.charAt(i - 1) === '\\r') {\n\t\t\t\t\tthis._lineEndOffsetByLineIdx.push(i - 1);\n\t\t\t\t} else {\n\t\t\t\t\tthis._lineEndOffsetByLineIdx.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._lineEndOffsetByLineIdx.push(this.text.length);\n\t}\n\n\toverride getOffset(position: Position): number {\n\t\tconst valPos = this._validatePosition(position);\n\t\treturn this.lineStartOffsetByLineIdx[valPos.lineNumber - 1] + valPos.column - 1;\n\t}\n\n\tprivate _validatePosition(position: Position): Position {\n\t\tif (position.lineNumber < 1) {\n\t\t\treturn new Position(1, 1);\n\t\t}\n\t\tconst lineCount = this.textLength.lineCount + 1;\n\t\tif (position.lineNumber > lineCount) {\n\t\t\tconst lineLength = this.getLineLength(lineCount);\n\t\t\treturn new Position(lineCount, lineLength + 1);\n\t\t}\n\t\tif (position.column < 1) {\n\t\t\treturn new Position(position.lineNumber, 1);\n\t\t}\n\t\tconst lineLength = this.getLineLength(position.lineNumber);\n\t\tif (position.column - 1 > lineLength) {\n\t\t\treturn new Position(position.lineNumber, lineLength + 1);\n\t\t}\n\t\treturn position;\n\t}\n\n\toverride getPosition(offset: number): Position {\n\t\tconst idx = findLastIdxMonotonous(this.lineStartOffsetByLineIdx, i => i <= offset);\n\t\tconst lineNumber = idx + 1;\n\t\tconst column = offset - this.lineStartOffsetByLineIdx[idx] + 1;\n\t\treturn new Position(lineNumber, column);\n\t}\n\n\tget textLength(): TextLength {\n\t\tconst lineIdx = this.lineStartOffsetByLineIdx.length - 1;\n\t\treturn new Deps.deps.TextLength(lineIdx, this.text.length - this.lineStartOffsetByLineIdx[lineIdx]);\n\t}\n\n\tgetLineLength(lineNumber: number): number {\n\t\treturn this.lineEndOffsetByLineIdx[lineNumber - 1] - this.lineStartOffsetByLineIdx[lineNumber - 1];\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { findLastIdxMonotonous } from '../../../../base/common/arraysFind.js';\nimport { StringEdit, StringReplacement } from '../edits/stringEdit.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\nimport { Position } from '../position.js';\nimport { Range } from '../range.js';\nimport { TextReplacement, TextEdit } from '../edits/textEdit.js';\nimport { TextLength } from '../text/textLength.js';\n\nexport abstract class PositionOffsetTransformerBase {\n\tabstract getOffset(position: Position): number;\n\n\tgetOffsetRange(range: Range): OffsetRange {\n\t\treturn new OffsetRange(\n\t\t\tthis.getOffset(range.getStartPosition()),\n\t\t\tthis.getOffset(range.getEndPosition())\n\t\t);\n\t}\n\n\tabstract getPosition(offset: number): Position;\n\n\tgetRange(offsetRange: OffsetRange): Range {\n\t\treturn Range.fromPositions(\n\t\t\tthis.getPosition(offsetRange.start),\n\t\t\tthis.getPosition(offsetRange.endExclusive)\n\t\t);\n\t}\n\n\tgetStringReplacement(edit: TextReplacement): StringReplacement {\n\t\treturn new Deps.deps.StringReplacement(this.getOffsetRange(edit.range), edit.text);\n\t}\n\n\tgetTextReplacement(edit: StringReplacement): TextReplacement {\n\t\treturn new Deps.deps.TextReplacement(this.getRange(edit.replaceRange), edit.newText);\n\t}\n\n\tgetTextEdit(edit: StringEdit): TextEdit {\n\t\tconst edits = edit.replacements.map(e => this.getTextReplacement(e));\n\t\treturn new Deps.deps.TextEdit(edits);\n\t}\n}\n\ninterface IDeps {\n\tStringEdit: typeof StringEdit;\n\tStringReplacement: typeof StringReplacement;\n\tTextReplacement: typeof TextReplacement;\n\tTextEdit: typeof TextEdit;\n\tTextLength: typeof TextLength;\n}\n\nclass Deps {\n\tstatic _deps: IDeps | undefined = undefined;\n\tstatic get deps(): IDeps {\n\t\tif (!this._deps) {\n\t\t\tthrow new Error('Dependencies not set. Call _setDependencies first.');\n\t\t}\n\t\treturn this._deps;\n\t}\n}\n\n/** This is to break circular module dependencies. */\nexport function _setPositionOffsetTransformerDependencies(deps: IDeps): void {\n\tDeps._deps = deps;\n}\n\nexport class PositionOffsetTransformer extends PositionOffsetTransformerBase {\n\tprivate _lineStartOffsetByLineIdx: number[] | undefined;\n\tprivate _lineEndOffsetByLineIdx: number[] | undefined;\n\n\tconstructor(public readonly text: string) {\n\t\tsuper();\n\t}\n\n\tprivate get lineStartOffsetByLineIdx(): number[] {\n\t\tif (!this._lineStartOffsetByLineIdx) {\n\t\t\tthis._computeLineOffsets();\n\t\t}\n\t\treturn this._lineStartOffsetByLineIdx!;\n\t}\n\n\tprivate get lineEndOffsetByLineIdx(): number[] {\n\t\tif (!this._lineEndOffsetByLineIdx) {\n\t\t\tthis._computeLineOffsets();\n\t\t}\n\t\treturn this._lineEndOffsetByLineIdx!;\n\t}\n\n\tprivate _computeLineOffsets(): void {\n\t\tthis._lineStartOffsetByLineIdx = [];\n\t\tthis._lineEndOffsetByLineIdx = [];\n\n\t\tthis._lineStartOffsetByLineIdx.push(0);\n\t\tfor (let i = 0; i < this.text.length; i++) {\n\t\t\tif (this.text.charAt(i) === '\\n') {\n\t\t\t\tthis._lineStartOffsetByLineIdx.push(i + 1);\n\t\t\t\tif (i > 0 && this.text.charAt(i - 1) === '\\r') {\n\t\t\t\t\tthis._lineEndOffsetByLineIdx.push(i - 1);\n\t\t\t\t} else {\n\t\t\t\t\tthis._lineEndOffsetByLineIdx.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._lineEndOffsetByLineIdx.push(this.text.length);\n\t}\n\n\toverride getOffset(position: Position): number {\n\t\tconst valPos = this._validatePosition(position);\n\t\treturn this.lineStartOffsetByLineIdx[valPos.lineNumber - 1] + valPos.column - 1;\n\t}\n\n\tprivate _validatePosition(position: Position): Position {\n\t\tif (position.lineNumber < 1) {\n\t\t\treturn new Position(1, 1);\n\t\t}\n\t\tconst lineCount = this.textLength.lineCount + 1;\n\t\tif (position.lineNumber > lineCount) {\n\t\t\tconst lineLength = this.getLineLength(lineCount);\n\t\t\treturn new Position(lineCount, lineLength + 1);\n\t\t}\n\t\tif (position.column < 1) {\n\t\t\treturn new Position(position.lineNumber, 1);\n\t\t}\n\t\tconst lineLength = this.getLineLength(position.lineNumber);\n\t\tif (position.column - 1 > lineLength) {\n\t\t\treturn new Position(position.lineNumber, lineLength + 1);\n\t\t}\n\t\treturn position;\n\t}\n\n\toverride getPosition(offset: number): Position {\n\t\tconst idx = findLastIdxMonotonous(this.lineStartOffsetByLineIdx, i => i <= offset);\n\t\tconst lineNumber = idx + 1;\n\t\tconst column = offset - this.lineStartOffsetByLineIdx[idx] + 1;\n\t\treturn new Position(lineNumber, column);\n\t}\n\n\tget textLength(): TextLength {\n\t\tconst lineIdx = this.lineStartOffsetByLineIdx.length - 1;\n\t\treturn new Deps.deps.TextLength(lineIdx, this.text.length - this.lineStartOffsetByLineIdx[lineIdx]);\n\t}\n\n\tgetLineLength(lineNumber: number): number {\n\t\treturn this.lineEndOffsetByLineIdx[lineNumber - 1] - this.lineStartOffsetByLineIdx[lineNumber - 1];\n\t}\n}\n"]}
|
|
@@ -143,14 +143,14 @@ export class CursorMoveCommands {
|
|
|
143
143
|
: viewModel.coordinatesConverter.convertModelPositionToViewPosition(position));
|
|
144
144
|
if (!inSelectionMode) {
|
|
145
145
|
// Entering line selection for the first time
|
|
146
|
-
const lineCount = viewModel.getLineCount();
|
|
147
|
-
let selectToLineNumber =
|
|
146
|
+
const lineCount = viewModel.model.getLineCount();
|
|
147
|
+
let selectToLineNumber = position.lineNumber + 1;
|
|
148
148
|
let selectToColumn = 1;
|
|
149
149
|
if (selectToLineNumber > lineCount) {
|
|
150
150
|
selectToLineNumber = lineCount;
|
|
151
|
-
selectToColumn = viewModel.getLineMaxColumn(selectToLineNumber);
|
|
151
|
+
selectToColumn = viewModel.model.getLineMaxColumn(selectToLineNumber);
|
|
152
152
|
}
|
|
153
|
-
return CursorState.
|
|
153
|
+
return CursorState.fromModelState(new SingleCursorState(new Range(position.lineNumber, 1, selectToLineNumber, selectToColumn), 2 /* SelectionStartKind.Line */, 0, new Position(selectToLineNumber, selectToColumn), 0));
|
|
154
154
|
}
|
|
155
155
|
// Continuing line selection
|
|
156
156
|
const enteringLineNumber = cursor.modelState.selectionStart.getStartPosition().lineNumber;
|