monaco-editor-core 0.56.0-dev-20251125 → 0.56.0-dev-20251218
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -6
- 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/actionbar/actionViewItems.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/findinput/findInput.js +6 -1
- package/esm/vs/base/browser/ui/findinput/findInput.js.map +1 -1
- package/esm/vs/base/browser/ui/inputbox/inputBox.js +17 -1
- package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
- package/esm/vs/base/browser/ui/list/list.css +1 -0
- package/esm/vs/base/browser/ui/toggle/toggle.js +78 -6
- package/esm/vs/base/browser/ui/toggle/toggle.js.map +1 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +11 -2
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/defaultAccount.js +6 -0
- package/esm/vs/base/common/defaultAccount.js.map +1 -0
- package/esm/vs/base/common/equals.js +73 -24
- package/esm/vs/base/common/equals.js.map +1 -1
- package/esm/vs/base/common/event.js +14 -4
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/iterator.js.map +1 -1
- package/esm/vs/base/common/keybindings.js +0 -8
- package/esm/vs/base/common/keybindings.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +2 -2
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/marshallingIds.js.map +1 -1
- package/esm/vs/base/common/observableInternal/index.js +1 -1
- package/esm/vs/base/common/observableInternal/index.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
- package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/strings.js +3 -1
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js +6 -2
- package/esm/vs/editor/browser/services/editorWorkerService.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/editorConfigurationSchema.js +49 -47
- package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +410 -410
- 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/editorColorRegistry.js +69 -69
- package/esm/vs/editor/common/core/edits/edit.js +19 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
- package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
- package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
- package/esm/vs/editor/common/editorContextKeys.js +47 -47
- 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/modesRegistry.js +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 +58 -57
- 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/editStack.js +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/standaloneStrings.js +11 -11
- 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 +3 -3
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +71 -53
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +23 -10
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -10
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- 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/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +50 -21
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +25 -27
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +19 -15
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
- package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +34 -3
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/actions.js +11 -5
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
- package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
- package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/log/common/log.js +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/markers/common/markerService.js +6 -6
- package/esm/vs/platform/markers/common/markerService.js.map +1 -1
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +45 -7
- package/esm/vs/platform/quickinput/browser/quickInput.js +51 -15
- 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/quickInputBox.js +13 -1
- package/esm/vs/platform/quickinput/browser/quickInputBox.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputController.js +22 -12
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js +17 -12
- package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +36 -8
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +3 -3
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +8 -4
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
- package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
- package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
- package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
- package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
- package/esm/vs/platform/window/common/window.js +1 -1
- package/esm/vs/platform/window/common/window.js.map +1 -1
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +34 -3
- package/package.json +2 -2
- package/version.txt +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
- package/esm/vs/platform/product/common/productService.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.ts"],"names":[],"mappings":"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","file":"copyPasteController.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 { addDisposableListener } from '../../../../base/browser/dom.js';\nimport { IAction } from '../../../../base/common/actions.js';\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { CancelablePromise, createCancelablePromise, DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { createStringDataTransferItem, IReadonlyVSDataTransfer, matchesMimeType, UriList, VSDataTransfer } from '../../../../base/common/dataTransfer.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { upcast } from '../../../../base/common/types.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { localize } from '../../../../nls.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { IProgressService, ProgressLocation } from '../../../../platform/progress/common/progress.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from '../../../../platform/quickinput/common/quickInput.js';\nimport { ClipboardEventUtils, InMemoryClipboardMetadataManager } from '../../../browser/controller/editContext/clipboardUtils.js';\nimport { toExternalVSDataTransfer, toVSDataTransfer } from '../../../browser/dataTransfer.js';\nimport { ICodeEditor, PastePayload } from '../../../browser/editorBrowser.js';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { Handler, IEditorContribution } from '../../../common/editorCommon.js';\nimport { DocumentPasteContext, DocumentPasteEdit, DocumentPasteEditProvider, DocumentPasteTriggerKind } from '../../../common/languages.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { InlineProgressManager } from '../../inlineProgress/browser/inlineProgress.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { PreferredPasteConfiguration } from './copyPasteContribution.js';\nimport { DefaultTextPasteOrDropEditProvider } from './defaultProviders.js';\nimport { createCombinedWorkspaceEdit, sortEditsByYieldTo } from './edit.js';\nimport { PostEditWidgetManager } from './postEditWidget.js';\n\nexport const changePasteTypeCommandId = 'editor.changePasteType';\n\nexport const pasteAsPreferenceConfig = 'editor.pasteAs.preferences';\n\nexport const pasteWidgetVisibleCtx = new RawContextKey<boolean>('pasteWidgetVisible', false, localize('pasteWidgetVisible', \"Whether the paste widget is showing\"));\n\nconst vscodeClipboardMime = 'application/vnd.code.copymetadata';\n\ninterface CopyMetadata {\n\treadonly id?: string;\n\treadonly providerCopyMimeTypes?: readonly string[];\n\n\treadonly defaultPastePayload: Omit<PastePayload, 'text'>;\n}\n\ntype PasteEditWithProvider = DocumentPasteEdit & {\n\tprovider: DocumentPasteEditProvider;\n};\n\n\ninterface DocumentPasteWithProviderEditsSession {\n\tedits: readonly PasteEditWithProvider[];\n\tdispose(): void;\n}\n\nexport type PastePreference =\n\t| { readonly only: HierarchicalKind }\n\t| { readonly preferences: readonly HierarchicalKind[] }\n\t| { readonly providerId: string } // Only used internally\n\t;\n\ninterface CopyOperation {\n\treadonly providerMimeTypes: readonly string[];\n\treadonly operation: CancelablePromise<IReadonlyVSDataTransfer | undefined>;\n}\n\nexport class CopyPasteController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.copyPasteActionController';\n\n\tpublic static get(editor: ICodeEditor): CopyPasteController | null {\n\t\treturn editor.getContribution<CopyPasteController>(CopyPasteController.ID);\n\t}\n\n\tprivate static _configureDefaultAction?: IAction;\n\n\t/**\n\t * Global tracking the last copy operation.\n\t *\n\t * This is shared across all editors so that you can copy and paste between groups.\n\t *\n\t * TODO: figure out how to make this work with multiple windows\n\t */\n\tprivate static _currentCopyOperation?: {\n\t\treadonly handle: string;\n\t\treadonly operations: ReadonlyArray<CopyOperation>;\n\t};\n\n\tprivate readonly _editor: ICodeEditor;\n\n\tprivate _currentPasteOperation?: CancelablePromise<void>;\n\tprivate _pasteAsActionContext?: { readonly preferred?: PastePreference };\n\n\tprivate readonly _pasteProgressManager: InlineProgressManager;\n\tprivate readonly _postPasteWidgetManager: PostEditWidgetManager<PasteEditWithProvider>;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t\t@IBulkEditService private readonly _bulkEditService: IBulkEditService,\n\t\t@IClipboardService private readonly _clipboardService: IClipboardService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IConfigurationService private readonly _configService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IQuickInputService private readonly _quickInputService: IQuickInputService,\n\t\t@IProgressService private readonly _progressService: IProgressService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tconst container = editor.getContainerDomNode();\n\t\tthis._register(addDisposableListener(container, 'copy', e => this.handleCopy(e)));\n\t\tthis._register(addDisposableListener(container, 'cut', e => this.handleCopy(e)));\n\t\tthis._register(addDisposableListener(container, 'paste', e => this.handlePaste(e), true));\n\n\t\tthis._pasteProgressManager = this._register(new InlineProgressManager('pasteIntoEditor', editor, instantiationService));\n\n\t\tthis._postPasteWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'pasteIntoEditor', editor, pasteWidgetVisibleCtx,\n\t\t\t{ id: changePasteTypeCommandId, label: localize('postPasteWidgetTitle', \"Show paste options...\") },\n\t\t\t() => CopyPasteController._configureDefaultAction ? [CopyPasteController._configureDefaultAction] : []\n\t\t));\n\t}\n\n\tpublic changePasteType() {\n\t\tthis._postPasteWidgetManager.tryShowSelector();\n\t}\n\n\tpublic async pasteAs(preferred?: PastePreference) {\n\t\tthis._logService.trace('CopyPasteController.pasteAs');\n\t\tthis._editor.focus();\n\t\ttry {\n\t\t\tthis._logService.trace('Before calling editor.action.clipboardPasteAction');\n\t\t\tthis._pasteAsActionContext = { preferred };\n\t\t\tawait this._commandService.executeCommand('editor.action.clipboardPasteAction');\n\t\t} finally {\n\t\t\tthis._pasteAsActionContext = undefined;\n\t\t}\n\t}\n\n\tpublic clearWidgets() {\n\t\tthis._postPasteWidgetManager.clear();\n\t}\n\n\tprivate isPasteAsEnabled(): boolean {\n\t\treturn this._editor.getOption(EditorOption.pasteAs).enabled;\n\t}\n\n\tpublic async finishedPaste(): Promise<void> {\n\t\tawait this._currentPasteOperation;\n\t}\n\n\tprivate handleCopy(e: ClipboardEvent) {\n\t\tlet id: string | null = null;\n\t\tif (e.clipboardData) {\n\t\t\tconst [text, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);\n\t\t\tconst storedMetadata = metadata || InMemoryClipboardMetadataManager.INSTANCE.get(text);\n\t\t\tid = storedMetadata?.id || null;\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy for id : ', id, ' with text.length : ', text.length);\n\t\t} else {\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy');\n\t\t}\n\t\tif (!this._editor.hasTextFocus()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Explicitly clear the clipboard internal state.\n\t\t// This is needed because on web, the browser clipboard is faked out using an in-memory store.\n\t\t// This means the resources clipboard is not properly updated when copying from the editor.\n\t\tthis._clipboardService.clearInternalState?.();\n\n\t\tif (!e.clipboardData || !this.isPasteAsEnabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!model || !selections?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst enableEmptySelectionClipboard = this._editor.getOption(EditorOption.emptySelectionClipboard);\n\n\t\tlet ranges: readonly IRange[] = selections;\n\t\tconst wasFromEmptySelection = selections.length === 1 && selections[0].isEmpty();\n\t\tif (wasFromEmptySelection) {\n\t\t\tif (!enableEmptySelectionClipboard) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tranges = [new Range(ranges[0].startLineNumber, 1, ranges[0].startLineNumber, 1 + model.getLineLength(ranges[0].startLineNumber))];\n\t\t}\n\n\t\tconst toCopy = this._editor._getViewModel()?.getPlainTextToCopy(selections, enableEmptySelectionClipboard, platform.isWindows);\n\t\tconst multicursorText = Array.isArray(toCopy) ? toCopy : null;\n\n\t\tconst defaultPastePayload = {\n\t\t\tmulticursorText,\n\t\t\tpasteOnNewLine: wasFromEmptySelection,\n\t\t\tmode: null\n\t\t};\n\n\t\tconst providers = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(x => !!x.prepareDocumentPaste);\n\t\tif (!providers.length) {\n\t\t\tthis.setCopyMetadata(e.clipboardData, { defaultPastePayload });\n\t\t\treturn;\n\t\t}\n\n\t\tconst dataTransfer = toVSDataTransfer(e.clipboardData);\n\t\tconst providerCopyMimeTypes = providers.flatMap(x => x.copyMimeTypes ?? []);\n\n\t\t// Save off a handle pointing to data that VS Code maintains.\n\t\tconst handle = id ?? generateUuid();\n\t\tthis.setCopyMetadata(e.clipboardData, {\n\t\t\tid: handle,\n\t\t\tproviderCopyMimeTypes,\n\t\t\tdefaultPastePayload\n\t\t});\n\n\t\tconst operations = providers.map((provider): CopyOperation => {\n\t\t\treturn {\n\t\t\t\tproviderMimeTypes: provider.copyMimeTypes,\n\t\t\t\toperation: createCancelablePromise(token =>\n\t\t\t\t\tprovider.prepareDocumentPaste!(model, ranges, dataTransfer, token)\n\t\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}))\n\t\t\t};\n\t\t});\n\n\t\tCopyPasteController._currentCopyOperation?.operations.forEach(entry => entry.operation.cancel());\n\t\tCopyPasteController._currentCopyOperation = { handle, operations };\n\t}\n\n\tprivate async handlePaste(e: ClipboardEvent) {\n\t\tif (e.clipboardData) {\n\t\t\tconst [text, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);\n\t\t\tconst metadataComputed = metadata || InMemoryClipboardMetadataManager.INSTANCE.get(text);\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste for id : ', metadataComputed?.id);\n\t\t} else {\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste');\n\t\t}\n\t\tif (!e.clipboardData || !this._editor.hasTextFocus()) {\n\t\t\treturn;\n\t\t}\n\n\t\tMessageController.get(this._editor)?.closeMessage();\n\t\tthis._currentPasteOperation?.cancel();\n\t\tthis._currentPasteOperation = undefined;\n\n\t\tconst model = this._editor.getModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections?.length || !model) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tthis._editor.getOption(EditorOption.readOnly) // Never enabled if editor is readonly.\n\t\t\t|| (!this.isPasteAsEnabled() && !this._pasteAsActionContext) // Or feature disabled (but still enable if paste was explicitly requested)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst metadata = this.fetchCopyMetadata(e);\n\t\tthis._logService.trace('CopyPasteController#handlePaste with metadata : ', metadata?.id, ' and text.length : ', e.clipboardData.getData('text/plain').length);\n\t\tconst dataTransfer = toExternalVSDataTransfer(e.clipboardData);\n\t\tdataTransfer.delete(vscodeClipboardMime);\n\n\t\tconst fileTypes = Array.from(e.clipboardData.files).map(file => file.type);\n\n\t\tconst allPotentialMimeTypes = [\n\t\t\t...e.clipboardData.types,\n\t\t\t...fileTypes,\n\t\t\t...metadata?.providerCopyMimeTypes ?? [],\n\t\t\t// TODO: always adds `uri-list` because this get set if there are resources in the system clipboard.\n\t\t\t// However we can only check the system clipboard async. For this early check, just add it in.\n\t\t\t// We filter providers again once we have the final dataTransfer we will use.\n\t\t\tMimes.uriList,\n\t\t];\n\n\t\tconst allProviders = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(provider => {\n\t\t\t\t// Filter out providers that don't match the requested paste types\n\t\t\t\tconst preference = this._pasteAsActionContext?.preferred;\n\t\t\t\tif (preference) {\n\t\t\t\t\tif (!this.providerMatchesPreference(provider, preference)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// And providers that don't handle any of mime types in the clipboard\n\t\t\t\treturn provider.pasteMimeTypes?.some(type => matchesMimeType(type, allPotentialMimeTypes));\n\t\t\t});\n\t\tif (!allProviders.length) {\n\t\t\tif (this._pasteAsActionContext?.preferred) {\n\t\t\t\tthis.showPasteAsNoEditMessage(selections, this._pasteAsActionContext.preferred);\n\n\t\t\t\t// Also prevent default paste from applying\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Prevent the editor's default paste handler from running.\n\t\t// Note that after this point, we are fully responsible for handling paste.\n\t\t// If we can't provider a paste for any reason, we need to explicitly delegate pasting back to the editor.\n\t\te.preventDefault();\n\t\te.stopImmediatePropagation();\n\n\t\tif (this._pasteAsActionContext) {\n\t\t\tthis.showPasteAsPick(this._pasteAsActionContext.preferred, allProviders, selections, dataTransfer, metadata);\n\t\t} else {\n\t\t\tthis.doPasteInline(allProviders, selections, dataTransfer, metadata, e);\n\t\t}\n\t}\n\n\tprivate showPasteAsNoEditMessage(selections: readonly Selection[], preference: PastePreference) {\n\t\tconst kindLabel = 'only' in preference\n\t\t\t? preference.only.value\n\t\t\t: 'preferences' in preference\n\t\t\t\t? (preference.preferences.length ? preference.preferences.map(preference => preference.value).join(', ') : localize('noPreferences', \"empty\"))\n\t\t\t\t: preference.providerId;\n\n\t\tMessageController.get(this._editor)?.showMessage(localize('pasteAsError', \"No paste edits for '{0}' found\", kindLabel), selections[0].getStartPosition());\n\t}\n\n\tprivate doPasteInline(allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, clipboardEvent: ClipboardEvent): void {\n\t\tthis._logService.trace('CopyPasteController#doPasteInline');\n\t\tconst editor = this._editor;\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editorStateCts = new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined);\n\n\t\tconst p = createCancelablePromise(async (pToken) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst cts = disposables.add(new CancellationTokenSource(pToken));\n\t\t\tdisposables.add(editorStateCts.token.onCancellationRequested(() => cts.cancel()));\n\n\t\t\tconst token = cts.token;\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, token);\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer));\n\t\t\t\tif (!supportedProviders.length\n\t\t\t\t\t|| (supportedProviders.length === 1 && supportedProviders[0] instanceof DefaultTextPasteOrDropEditProvider) // Only our default text provider is active\n\t\t\t\t) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.Automatic,\n\t\t\t\t};\n\n\t\t\t\tconst editSession = await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, token);\n\t\t\t\tdisposables.add(editSession);\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If the only edit returned is our default text edit, use the default paste handler\n\t\t\t\tif (editSession.edits.length === 1 && editSession.edits[0].provider instanceof DefaultTextPasteOrDropEditProvider) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tif (editSession.edits.length) {\n\t\t\t\t\tconst canShowWidget = editor.getOption(EditorOption.pasteAs).showPasteSelector === 'afterPaste';\n\t\t\t\t\treturn this._postPasteWidgetManager.applyEditAndShowIfNeeded(selections, { activeEditIndex: this.getInitialActiveEditIndex(model, editSession.edits), allEdits: editSession.edits }, canShowWidget, async (edit, resolveToken) => {\n\t\t\t\t\t\tif (!edit.provider.resolveDocumentPasteEdit) {\n\t\t\t\t\t\t\treturn edit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst resolveP = edit.provider.resolveDocumentPasteEdit(edit, resolveToken);\n\t\t\t\t\t\tconst showP = new DeferredPromise<void>();\n\t\t\t\t\t\tconst resolved = await this._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('resolveProcess', \"Resolving paste edit for '{0}'. Click to cancel\", edit.title), raceCancellation(Promise.race([showP.p, resolveP]), resolveToken), {\n\t\t\t\t\t\t\tcancel: () => showP.cancel()\n\t\t\t\t\t\t}, 0);\n\n\t\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\t\tedit.insertText = resolved.insertText;\n\t\t\t\t\t\t\tedit.additionalEdit = resolved.additionalEdit;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn edit;\n\t\t\t\t\t}, token);\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('pasteIntoEditorProgress', \"Running paste handlers. Click to cancel and do basic paste\"), p, {\n\t\t\tcancel: async () => {\n\t\t\t\tp.cancel();\n\t\t\t\tif (editorStateCts.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, editorStateCts.token, clipboardEvent);\n\t\t\t}\n\t\t}).finally(() => {\n\t\t\teditorStateCts.dispose();\n\t\t});\n\t\tthis._currentPasteOperation = p;\n\t}\n\n\tprivate showPasteAsPick(preference: PastePreference | undefined, allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined): void {\n\t\tthis._logService.trace('CopyPasteController#showPasteAsPick');\n\t\tconst p = createCancelablePromise(async (token) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst tokenSource = disposables.add(new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined, token));\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, tokenSource.token);\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any providers the don't match the full data transfer we will send them.\n\t\t\t\tlet supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer, preference));\n\t\t\t\tif (preference) {\n\t\t\t\t\t// We are looking for a specific edit\n\t\t\t\t\tsupportedProviders = supportedProviders.filter(provider => this.providerMatchesPreference(provider, preference));\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.PasteAs,\n\t\t\t\t\tonly: preference && 'only' in preference ? preference.only : undefined,\n\t\t\t\t};\n\t\t\t\tlet editSession = disposables.add(await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, tokenSource.token));\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any edits that don't match the requested kind\n\t\t\t\tif (preference) {\n\t\t\t\t\teditSession = {\n\t\t\t\t\t\tedits: editSession.edits.filter(edit => {\n\t\t\t\t\t\t\tif ('only' in preference) {\n\t\t\t\t\t\t\t\treturn preference.only.contains(edit.kind);\n\t\t\t\t\t\t\t} else if ('preferences' in preference) {\n\t\t\t\t\t\t\t\treturn preference.preferences.some(preference => preference.contains(edit.kind));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn preference.providerId === edit.provider.id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tdispose: editSession.dispose\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (!editSession.edits.length) {\n\t\t\t\t\tif (preference) {\n\t\t\t\t\t\tthis.showPasteAsNoEditMessage(selections, preference);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet pickedEdit: DocumentPasteEdit | undefined;\n\t\t\t\tif (preference) {\n\t\t\t\t\tpickedEdit = editSession.edits.at(0);\n\t\t\t\t} else {\n\t\t\t\t\ttype ItemWithEdit = IQuickPickItem & { edit?: DocumentPasteEdit };\n\t\t\t\t\tconst configureDefaultItem: ItemWithEdit = {\n\t\t\t\t\t\tid: 'editor.pasteAs.default',\n\t\t\t\t\t\tlabel: localize('pasteAsDefault', \"Configure default paste action\"),\n\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst selected = await this._quickInputService.pick<ItemWithEdit>(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t...editSession.edits.map((edit): ItemWithEdit => ({\n\t\t\t\t\t\t\t\tlabel: edit.title,\n\t\t\t\t\t\t\t\tdescription: edit.kind?.value,\n\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t...(CopyPasteController._configureDefaultAction ? [\n\t\t\t\t\t\t\t\tupcast<IQuickPickSeparator>({ type: 'separator' }),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: CopyPasteController._configureDefaultAction.label,\n\t\t\t\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t] : [])\n\t\t\t\t\t\t], {\n\t\t\t\t\t\tplaceHolder: localize('pasteAsPickerPlaceholder', \"Select Paste Action\"),\n\t\t\t\t\t});\n\n\t\t\t\t\tif (selected === configureDefaultItem) {\n\t\t\t\t\t\tCopyPasteController._configureDefaultAction?.run();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tpickedEdit = selected?.edit;\n\t\t\t\t}\n\n\t\t\t\tif (!pickedEdit) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, selections, pickedEdit);\n\t\t\t\tawait this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor });\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._progressService.withProgress({\n\t\t\tlocation: ProgressLocation.Window,\n\t\t\ttitle: localize('pasteAsProgress', \"Running paste handlers\"),\n\t\t}, () => p);\n\t}\n\n\tprivate setCopyMetadata(dataTransfer: DataTransfer, metadata: CopyMetadata) {\n\t\tthis._logService.trace('CopyPasteController#setCopyMetadata new id : ', metadata.id);\n\t\tdataTransfer.setData(vscodeClipboardMime, JSON.stringify(metadata));\n\t}\n\n\tprivate fetchCopyMetadata(e: ClipboardEvent): CopyMetadata | undefined {\n\t\tthis._logService.trace('CopyPasteController#fetchCopyMetadata');\n\t\tif (!e.clipboardData) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Prefer using the clipboard data we saved off\n\t\tconst rawMetadata = e.clipboardData.getData(vscodeClipboardMime);\n\t\tif (rawMetadata) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(rawMetadata);\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\n\t\t// Otherwise try to extract the generic text editor metadata\n\t\tconst [_, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);\n\t\tif (metadata) {\n\t\t\treturn {\n\t\t\t\tdefaultPastePayload: {\n\t\t\t\t\tmode: metadata.mode,\n\t\t\t\t\tmulticursorText: metadata.multicursorText ?? null,\n\t\t\t\t\tpasteOnNewLine: !!metadata.isFromEmptySelection,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate async mergeInDataFromCopy(allProviders: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken): Promise<void> {\n\t\tthis._logService.trace('CopyPasteController#mergeInDataFromCopy with metadata : ', metadata?.id);\n\t\tif (metadata?.id && CopyPasteController._currentCopyOperation?.handle === metadata.id) {\n\t\t\t// Only resolve providers that have data we may care about\n\t\t\tconst toResolve = CopyPasteController._currentCopyOperation.operations\n\t\t\t\t.filter(op => allProviders.some(provider => provider.pasteMimeTypes.some(type => matchesMimeType(type, op.providerMimeTypes))))\n\t\t\t\t.map(op => op.operation);\n\n\t\t\tconst toMergeResults = await Promise.all(toResolve);\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Values from higher priority providers should overwrite values from lower priority ones.\n\t\t\t// Reverse the array to so that the calls to `DataTransfer.replace` later will do this\n\t\t\tfor (const toMergeData of toMergeResults.reverse()) {\n\t\t\t\tif (toMergeData) {\n\t\t\t\t\tfor (const [key, value] of toMergeData) {\n\t\t\t\t\t\tdataTransfer.replace(key, value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!dataTransfer.has(Mimes.uriList)) {\n\t\t\tconst resources = await this._clipboardService.readResources();\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (resources.length) {\n\t\t\t\tdataTransfer.append(Mimes.uriList, createStringDataTransferItem(UriList.create(resources)));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async getPasteEdits(providers: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, model: ITextModel, selections: readonly Selection[], context: DocumentPasteContext, token: CancellationToken): Promise<DocumentPasteWithProviderEditsSession> {\n\t\tconst disposables = new DisposableStore();\n\n\t\tconst results = await raceCancellation(\n\t\t\tPromise.all(providers.map(async provider => {\n\t\t\t\ttry {\n\t\t\t\t\tconst edits = await provider.provideDocumentPasteEdits?.(model, selections, dataTransfer, context, token);\n\t\t\t\t\tif (edits) {\n\t\t\t\t\t\tdisposables.add(edits);\n\t\t\t\t\t}\n\t\t\t\t\treturn edits?.edits?.map(edit => ({ ...edit, provider }));\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!isCancellationError(err)) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t}\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t})),\n\t\t\ttoken);\n\t\tconst edits = coalesce(results ?? []).flat().filter(edit => {\n\t\t\treturn !context.only || context.only.contains(edit.kind);\n\t\t});\n\t\treturn {\n\t\t\tedits: sortEditsByYieldTo(edits),\n\t\t\tdispose: () => disposables.dispose()\n\t\t};\n\t}\n\n\tprivate async applyDefaultPasteHandler(dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken, clipboardEvent: ClipboardEvent) {\n\t\tconst textDataTransfer = dataTransfer.get(Mimes.text) ?? dataTransfer.get('text');\n\t\tconst text = (await textDataTransfer?.asString()) ?? '';\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst payload: PastePayload = {\n\t\t\tclipboardEvent,\n\t\t\ttext,\n\t\t\tpasteOnNewLine: metadata?.defaultPastePayload.pasteOnNewLine ?? false,\n\t\t\tmulticursorText: metadata?.defaultPastePayload.multicursorText ?? null,\n\t\t\tmode: null,\n\t\t};\n\t\tthis._logService.trace('CopyPasteController#applyDefaultPasteHandler for id : ', metadata?.id);\n\t\tthis._editor.trigger('keyboard', Handler.Paste, payload);\n\t}\n\n\t/**\n\t * Filter out providers if they:\n\t * - Don't handle any of the data transfer types we have\n\t * - Don't match the preferred paste kind\n\t */\n\tprivate isSupportedPasteProvider(provider: DocumentPasteEditProvider, dataTransfer: VSDataTransfer, preference?: PastePreference): boolean {\n\t\tif (!provider.pasteMimeTypes?.some(type => dataTransfer.matches(type))) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !preference || this.providerMatchesPreference(provider, preference);\n\t}\n\n\tprivate providerMatchesPreference(provider: DocumentPasteEditProvider, preference: PastePreference): boolean {\n\t\tif ('only' in preference) {\n\t\t\treturn provider.providedPasteEditKinds.some(providedKind => preference.only.contains(providedKind));\n\t\t} else if ('preferences' in preference) {\n\t\t\treturn preference.preferences.some(providedKind => preference.preferences.some(preferredKind => preferredKind.contains(providedKind)));\n\t\t} else {\n\t\t\treturn provider.id === preference.providerId;\n\t\t}\n\t}\n\n\tprivate getInitialActiveEditIndex(model: ITextModel, edits: readonly DocumentPasteEdit[]): number {\n\t\tconst preferredProviders = this._configService.getValue<PreferredPasteConfiguration[]>(pasteAsPreferenceConfig, { resource: model.uri });\n\t\tfor (const config of Array.isArray(preferredProviders) ? preferredProviders : []) {\n\t\t\tconst desiredKind = new HierarchicalKind(config);\n\t\t\tconst editIndex = edits.findIndex(edit => desiredKind.contains(edit.kind));\n\t\t\tif (editIndex >= 0) {\n\t\t\t\treturn editIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.ts"],"names":[],"mappings":"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","file":"copyPasteController.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 { addDisposableListener } from '../../../../base/browser/dom.js';\nimport { IAction } from '../../../../base/common/actions.js';\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { CancelablePromise, createCancelablePromise, DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { createStringDataTransferItem, IReadonlyVSDataTransfer, matchesMimeType, UriList, VSDataTransfer } from '../../../../base/common/dataTransfer.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { upcast } from '../../../../base/common/types.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { localize } from '../../../../nls.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { IProgressService, ProgressLocation } from '../../../../platform/progress/common/progress.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from '../../../../platform/quickinput/common/quickInput.js';\nimport { ClipboardEventUtils, CopyOptions, InMemoryClipboardMetadataManager, PasteOptions } from '../../../browser/controller/editContext/clipboardUtils.js';\nimport { toExternalVSDataTransfer, toVSDataTransfer } from '../../../browser/dataTransfer.js';\nimport { ICodeEditor, PastePayload } from '../../../browser/editorBrowser.js';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { Handler, IEditorContribution } from '../../../common/editorCommon.js';\nimport { DocumentPasteContext, DocumentPasteEdit, DocumentPasteEditProvider, DocumentPasteTriggerKind } from '../../../common/languages.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { InlineProgressManager } from '../../inlineProgress/browser/inlineProgress.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { PreferredPasteConfiguration } from './copyPasteContribution.js';\nimport { DefaultTextPasteOrDropEditProvider } from './defaultProviders.js';\nimport { createCombinedWorkspaceEdit, sortEditsByYieldTo } from './edit.js';\nimport { PostEditWidgetManager } from './postEditWidget.js';\n\nexport const changePasteTypeCommandId = 'editor.changePasteType';\n\nexport const pasteAsPreferenceConfig = 'editor.pasteAs.preferences';\n\nexport const pasteWidgetVisibleCtx = new RawContextKey<boolean>('pasteWidgetVisible', false, localize('pasteWidgetVisible', \"Whether the paste widget is showing\"));\n\nconst vscodeClipboardMime = 'application/vnd.code.copymetadata';\n\ninterface CopyMetadata {\n\treadonly id?: string;\n\treadonly providerCopyMimeTypes?: readonly string[];\n\n\treadonly defaultPastePayload: Omit<PastePayload, 'text'>;\n}\n\ntype PasteEditWithProvider = DocumentPasteEdit & {\n\tprovider: DocumentPasteEditProvider;\n};\n\n\ninterface DocumentPasteWithProviderEditsSession {\n\tedits: readonly PasteEditWithProvider[];\n\tdispose(): void;\n}\n\nexport type PastePreference =\n\t| { readonly only: HierarchicalKind }\n\t| { readonly preferences: readonly HierarchicalKind[] }\n\t| { readonly providerId: string } // Only used internally\n\t;\n\ninterface CopyOperation {\n\treadonly providerMimeTypes: readonly string[];\n\treadonly operation: CancelablePromise<IReadonlyVSDataTransfer | undefined>;\n}\n\nexport class CopyPasteController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.copyPasteActionController';\n\n\tpublic static get(editor: ICodeEditor): CopyPasteController | null {\n\t\treturn editor.getContribution<CopyPasteController>(CopyPasteController.ID);\n\t}\n\n\tprivate static _configureDefaultAction?: IAction;\n\n\t/**\n\t * Global tracking the last copy operation.\n\t *\n\t * This is shared across all editors so that you can copy and paste between groups.\n\t *\n\t * TODO: figure out how to make this work with multiple windows\n\t */\n\tprivate static _currentCopyOperation?: {\n\t\treadonly handle: string;\n\t\treadonly operations: ReadonlyArray<CopyOperation>;\n\t};\n\n\tprivate readonly _editor: ICodeEditor;\n\n\tprivate _currentPasteOperation?: CancelablePromise<void>;\n\tprivate _pasteAsActionContext?: { readonly preferred?: PastePreference };\n\n\tprivate readonly _pasteProgressManager: InlineProgressManager;\n\tprivate readonly _postPasteWidgetManager: PostEditWidgetManager<PasteEditWithProvider>;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t\t@IBulkEditService private readonly _bulkEditService: IBulkEditService,\n\t\t@IClipboardService private readonly _clipboardService: IClipboardService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IConfigurationService private readonly _configService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IQuickInputService private readonly _quickInputService: IQuickInputService,\n\t\t@IProgressService private readonly _progressService: IProgressService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tconst container = editor.getContainerDomNode();\n\t\tthis._register(addDisposableListener(container, 'copy', e => this.handleCopy(e)));\n\t\tthis._register(addDisposableListener(container, 'cut', e => this.handleCopy(e)));\n\t\tthis._register(addDisposableListener(container, 'paste', e => this.handlePaste(e), true));\n\n\t\tthis._pasteProgressManager = this._register(new InlineProgressManager('pasteIntoEditor', editor, instantiationService));\n\n\t\tthis._postPasteWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'pasteIntoEditor', editor, pasteWidgetVisibleCtx,\n\t\t\t{ id: changePasteTypeCommandId, label: localize('postPasteWidgetTitle', \"Show paste options...\") },\n\t\t\t() => CopyPasteController._configureDefaultAction ? [CopyPasteController._configureDefaultAction] : []\n\t\t));\n\t}\n\n\tpublic changePasteType() {\n\t\tthis._postPasteWidgetManager.tryShowSelector();\n\t}\n\n\tpublic async pasteAs(preferred?: PastePreference) {\n\t\tthis._logService.trace('CopyPasteController.pasteAs');\n\t\tthis._editor.focus();\n\t\ttry {\n\t\t\tthis._logService.trace('Before calling editor.action.clipboardPasteAction');\n\t\t\tthis._pasteAsActionContext = { preferred };\n\t\t\tawait this._commandService.executeCommand('editor.action.clipboardPasteAction');\n\t\t} finally {\n\t\t\tthis._pasteAsActionContext = undefined;\n\t\t}\n\t}\n\n\tpublic clearWidgets() {\n\t\tthis._postPasteWidgetManager.clear();\n\t}\n\n\tprivate isPasteAsEnabled(): boolean {\n\t\treturn this._editor.getOption(EditorOption.pasteAs).enabled;\n\t}\n\n\tpublic async finishedPaste(): Promise<void> {\n\t\tawait this._currentPasteOperation;\n\t}\n\n\tprivate handleCopy(e: ClipboardEvent) {\n\t\tCopyOptions.electronBugWorkaroundCopyEventHasFired = true;\n\t\tlet id: string | null = null;\n\t\tif (e.clipboardData) {\n\t\t\tconst [text, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);\n\t\t\tconst storedMetadata = metadata || InMemoryClipboardMetadataManager.INSTANCE.get(text);\n\t\t\tid = storedMetadata?.id || null;\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy for id : ', id, ' with text.length : ', text.length);\n\t\t} else {\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy');\n\t\t}\n\t\tif (!this._editor.hasTextFocus()) {\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy/earlyReturn1');\n\t\t\treturn;\n\t\t}\n\n\t\t// Explicitly clear the clipboard internal state.\n\t\t// This is needed because on web, the browser clipboard is faked out using an in-memory store.\n\t\t// This means the resources clipboard is not properly updated when copying from the editor.\n\t\tthis._clipboardService.clearInternalState?.();\n\n\t\tif (!e.clipboardData || !this.isPasteAsEnabled()) {\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy/earlyReturn2');\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!model || !selections?.length) {\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy/earlyReturn3');\n\t\t\treturn;\n\t\t}\n\n\t\tconst enableEmptySelectionClipboard = this._editor.getOption(EditorOption.emptySelectionClipboard);\n\n\t\tlet ranges: readonly IRange[] = selections;\n\t\tconst wasFromEmptySelection = selections.length === 1 && selections[0].isEmpty();\n\t\tif (wasFromEmptySelection) {\n\t\t\tif (!enableEmptySelectionClipboard) {\n\t\t\t\tthis._logService.trace('CopyPasteController#handleCopy/earlyReturn4');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tranges = [new Range(ranges[0].startLineNumber, 1, ranges[0].startLineNumber, 1 + model.getLineLength(ranges[0].startLineNumber))];\n\t\t}\n\n\t\tconst toCopy = this._editor._getViewModel()?.getPlainTextToCopy(selections, enableEmptySelectionClipboard, platform.isWindows);\n\t\tconst multicursorText = Array.isArray(toCopy) ? toCopy : null;\n\n\t\tconst defaultPastePayload = {\n\t\t\tmulticursorText,\n\t\t\tpasteOnNewLine: wasFromEmptySelection,\n\t\t\tmode: null\n\t\t};\n\n\t\tconst providers = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(x => !!x.prepareDocumentPaste);\n\t\tif (!providers.length) {\n\t\t\tthis.setCopyMetadata(e.clipboardData, { defaultPastePayload });\n\t\t\tthis._logService.trace('CopyPasteController#handleCopy/earlyReturn5');\n\t\t\treturn;\n\t\t}\n\n\t\tconst dataTransfer = toVSDataTransfer(e.clipboardData);\n\t\tconst providerCopyMimeTypes = providers.flatMap(x => x.copyMimeTypes ?? []);\n\n\t\t// Save off a handle pointing to data that VS Code maintains.\n\t\tconst handle = id ?? generateUuid();\n\t\tthis.setCopyMetadata(e.clipboardData, {\n\t\t\tid: handle,\n\t\t\tproviderCopyMimeTypes,\n\t\t\tdefaultPastePayload\n\t\t});\n\n\t\tconst operations = providers.map((provider): CopyOperation => {\n\t\t\treturn {\n\t\t\t\tproviderMimeTypes: provider.copyMimeTypes,\n\t\t\t\toperation: createCancelablePromise(token =>\n\t\t\t\t\tprovider.prepareDocumentPaste!(model, ranges, dataTransfer, token)\n\t\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}))\n\t\t\t};\n\t\t});\n\n\t\tCopyPasteController._currentCopyOperation?.operations.forEach(entry => entry.operation.cancel());\n\t\tCopyPasteController._currentCopyOperation = { handle, operations };\n\t\tthis._logService.trace('CopyPasteController#handleCopy/end');\n\t}\n\n\tprivate async handlePaste(e: ClipboardEvent) {\n\t\tPasteOptions.electronBugWorkaroundPasteEventHasFired = true;\n\t\tif (e.clipboardData) {\n\t\t\tconst [text, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);\n\t\t\tconst metadataComputed = metadata || InMemoryClipboardMetadataManager.INSTANCE.get(text);\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste for id : ', metadataComputed?.id);\n\t\t} else {\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste');\n\t\t}\n\t\tif (!e.clipboardData || !this._editor.hasTextFocus()) {\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste/earlyReturn1');\n\t\t\treturn;\n\t\t}\n\n\t\tMessageController.get(this._editor)?.closeMessage();\n\t\tthis._currentPasteOperation?.cancel();\n\t\tthis._currentPasteOperation = undefined;\n\n\t\tconst model = this._editor.getModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections?.length || !model) {\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste/earlyReturn2');\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tthis._editor.getOption(EditorOption.readOnly) // Never enabled if editor is readonly.\n\t\t\t|| (!this.isPasteAsEnabled() && !this._pasteAsActionContext) // Or feature disabled (but still enable if paste was explicitly requested)\n\t\t) {\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste/earlyReturn3');\n\t\t\treturn;\n\t\t}\n\n\t\tconst metadata = this.fetchCopyMetadata(e);\n\t\tthis._logService.trace('CopyPasteController#handlePaste with metadata : ', metadata?.id, ' and text.length : ', e.clipboardData.getData('text/plain').length);\n\t\tconst dataTransfer = toExternalVSDataTransfer(e.clipboardData);\n\t\tdataTransfer.delete(vscodeClipboardMime);\n\n\t\tconst fileTypes = Array.from(e.clipboardData.files).map(file => file.type);\n\n\t\tconst allPotentialMimeTypes = [\n\t\t\t...e.clipboardData.types,\n\t\t\t...fileTypes,\n\t\t\t...metadata?.providerCopyMimeTypes ?? [],\n\t\t\t// TODO: always adds `uri-list` because this get set if there are resources in the system clipboard.\n\t\t\t// However we can only check the system clipboard async. For this early check, just add it in.\n\t\t\t// We filter providers again once we have the final dataTransfer we will use.\n\t\t\tMimes.uriList,\n\t\t];\n\n\t\tconst allProviders = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(provider => {\n\t\t\t\t// Filter out providers that don't match the requested paste types\n\t\t\t\tconst preference = this._pasteAsActionContext?.preferred;\n\t\t\t\tif (preference) {\n\t\t\t\t\tif (!this.providerMatchesPreference(provider, preference)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// And providers that don't handle any of mime types in the clipboard\n\t\t\t\treturn provider.pasteMimeTypes?.some(type => matchesMimeType(type, allPotentialMimeTypes));\n\t\t\t});\n\t\tif (!allProviders.length) {\n\t\t\tif (this._pasteAsActionContext?.preferred) {\n\t\t\t\tthis.showPasteAsNoEditMessage(selections, this._pasteAsActionContext.preferred);\n\n\t\t\t\t// Also prevent default paste from applying\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t\tthis._logService.trace('CopyPasteController#handlePaste/earlyReturn4');\n\t\t\treturn;\n\t\t}\n\n\t\t// Prevent the editor's default paste handler from running.\n\t\t// Note that after this point, we are fully responsible for handling paste.\n\t\t// If we can't provider a paste for any reason, we need to explicitly delegate pasting back to the editor.\n\t\te.preventDefault();\n\t\te.stopImmediatePropagation();\n\n\t\tif (this._pasteAsActionContext) {\n\t\t\tthis.showPasteAsPick(this._pasteAsActionContext.preferred, allProviders, selections, dataTransfer, metadata);\n\t\t} else {\n\t\t\tthis.doPasteInline(allProviders, selections, dataTransfer, metadata, e);\n\t\t}\n\t\tthis._logService.trace('CopyPasteController#handlePaste/end');\n\t}\n\n\tprivate showPasteAsNoEditMessage(selections: readonly Selection[], preference: PastePreference) {\n\t\tconst kindLabel = 'only' in preference\n\t\t\t? preference.only.value\n\t\t\t: 'preferences' in preference\n\t\t\t\t? (preference.preferences.length ? preference.preferences.map(preference => preference.value).join(', ') : localize('noPreferences', \"empty\"))\n\t\t\t\t: preference.providerId;\n\n\t\tMessageController.get(this._editor)?.showMessage(localize('pasteAsError', \"No paste edits for '{0}' found\", kindLabel), selections[0].getStartPosition());\n\t}\n\n\tprivate doPasteInline(allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, clipboardEvent: ClipboardEvent): void {\n\t\tthis._logService.trace('CopyPasteController#doPasteInline');\n\t\tconst editor = this._editor;\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editorStateCts = new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined);\n\n\t\tconst p = createCancelablePromise(async (pToken) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst cts = disposables.add(new CancellationTokenSource(pToken));\n\t\t\tdisposables.add(editorStateCts.token.onCancellationRequested(() => cts.cancel()));\n\n\t\t\tconst token = cts.token;\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, token);\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer));\n\t\t\t\tif (!supportedProviders.length\n\t\t\t\t\t|| (supportedProviders.length === 1 && supportedProviders[0] instanceof DefaultTextPasteOrDropEditProvider) // Only our default text provider is active\n\t\t\t\t) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.Automatic,\n\t\t\t\t};\n\n\t\t\t\tconst editSession = await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, token);\n\t\t\t\tdisposables.add(editSession);\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If the only edit returned is our default text edit, use the default paste handler\n\t\t\t\tif (editSession.edits.length === 1 && editSession.edits[0].provider instanceof DefaultTextPasteOrDropEditProvider) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tif (editSession.edits.length) {\n\t\t\t\t\tconst canShowWidget = editor.getOption(EditorOption.pasteAs).showPasteSelector === 'afterPaste';\n\t\t\t\t\treturn this._postPasteWidgetManager.applyEditAndShowIfNeeded(selections, { activeEditIndex: this.getInitialActiveEditIndex(model, editSession.edits), allEdits: editSession.edits }, canShowWidget, async (edit, resolveToken) => {\n\t\t\t\t\t\tif (!edit.provider.resolveDocumentPasteEdit) {\n\t\t\t\t\t\t\treturn edit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst resolveP = edit.provider.resolveDocumentPasteEdit(edit, resolveToken);\n\t\t\t\t\t\tconst showP = new DeferredPromise<void>();\n\t\t\t\t\t\tconst resolved = await this._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('resolveProcess', \"Resolving paste edit for '{0}'. Click to cancel\", edit.title), raceCancellation(Promise.race([showP.p, resolveP]), resolveToken), {\n\t\t\t\t\t\t\tcancel: () => showP.cancel()\n\t\t\t\t\t\t}, 0);\n\n\t\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\t\tedit.insertText = resolved.insertText;\n\t\t\t\t\t\t\tedit.additionalEdit = resolved.additionalEdit;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn edit;\n\t\t\t\t\t}, token);\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('pasteIntoEditorProgress', \"Running paste handlers. Click to cancel and do basic paste\"), p, {\n\t\t\tcancel: async () => {\n\t\t\t\tp.cancel();\n\t\t\t\tif (editorStateCts.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, editorStateCts.token, clipboardEvent);\n\t\t\t}\n\t\t}).finally(() => {\n\t\t\teditorStateCts.dispose();\n\t\t});\n\t\tthis._currentPasteOperation = p;\n\t}\n\n\tprivate showPasteAsPick(preference: PastePreference | undefined, allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined): void {\n\t\tthis._logService.trace('CopyPasteController#showPasteAsPick');\n\t\tconst p = createCancelablePromise(async (token) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst tokenSource = disposables.add(new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined, token));\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, tokenSource.token);\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any providers the don't match the full data transfer we will send them.\n\t\t\t\tlet supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer, preference));\n\t\t\t\tif (preference) {\n\t\t\t\t\t// We are looking for a specific edit\n\t\t\t\t\tsupportedProviders = supportedProviders.filter(provider => this.providerMatchesPreference(provider, preference));\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.PasteAs,\n\t\t\t\t\tonly: preference && 'only' in preference ? preference.only : undefined,\n\t\t\t\t};\n\t\t\t\tlet editSession = disposables.add(await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, tokenSource.token));\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any edits that don't match the requested kind\n\t\t\t\tif (preference) {\n\t\t\t\t\teditSession = {\n\t\t\t\t\t\tedits: editSession.edits.filter(edit => {\n\t\t\t\t\t\t\tif ('only' in preference) {\n\t\t\t\t\t\t\t\treturn preference.only.contains(edit.kind);\n\t\t\t\t\t\t\t} else if ('preferences' in preference) {\n\t\t\t\t\t\t\t\treturn preference.preferences.some(preference => preference.contains(edit.kind));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn preference.providerId === edit.provider.id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tdispose: editSession.dispose\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (!editSession.edits.length) {\n\t\t\t\t\tif (preference) {\n\t\t\t\t\t\tthis.showPasteAsNoEditMessage(selections, preference);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet pickedEdit: DocumentPasteEdit | undefined;\n\t\t\t\tif (preference) {\n\t\t\t\t\tpickedEdit = editSession.edits.at(0);\n\t\t\t\t} else {\n\t\t\t\t\ttype ItemWithEdit = IQuickPickItem & { edit?: DocumentPasteEdit };\n\t\t\t\t\tconst configureDefaultItem: ItemWithEdit = {\n\t\t\t\t\t\tid: 'editor.pasteAs.default',\n\t\t\t\t\t\tlabel: localize('pasteAsDefault', \"Configure default paste action\"),\n\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst selected = await this._quickInputService.pick<ItemWithEdit>(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t...editSession.edits.map((edit): ItemWithEdit => ({\n\t\t\t\t\t\t\t\tlabel: edit.title,\n\t\t\t\t\t\t\t\tdescription: edit.kind?.value,\n\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t...(CopyPasteController._configureDefaultAction ? [\n\t\t\t\t\t\t\t\tupcast<IQuickPickSeparator>({ type: 'separator' }),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: CopyPasteController._configureDefaultAction.label,\n\t\t\t\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t] : [])\n\t\t\t\t\t\t], {\n\t\t\t\t\t\tplaceHolder: localize('pasteAsPickerPlaceholder', \"Select Paste Action\"),\n\t\t\t\t\t});\n\n\t\t\t\t\tif (selected === configureDefaultItem) {\n\t\t\t\t\t\tCopyPasteController._configureDefaultAction?.run();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tpickedEdit = selected?.edit;\n\t\t\t\t}\n\n\t\t\t\tif (!pickedEdit) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, selections, pickedEdit);\n\t\t\t\tawait this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor });\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._progressService.withProgress({\n\t\t\tlocation: ProgressLocation.Window,\n\t\t\ttitle: localize('pasteAsProgress', \"Running paste handlers\"),\n\t\t}, () => p);\n\t}\n\n\tprivate setCopyMetadata(dataTransfer: DataTransfer, metadata: CopyMetadata) {\n\t\tthis._logService.trace('CopyPasteController#setCopyMetadata new id : ', metadata.id);\n\t\tdataTransfer.setData(vscodeClipboardMime, JSON.stringify(metadata));\n\t}\n\n\tprivate fetchCopyMetadata(e: ClipboardEvent): CopyMetadata | undefined {\n\t\tthis._logService.trace('CopyPasteController#fetchCopyMetadata');\n\t\tif (!e.clipboardData) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Prefer using the clipboard data we saved off\n\t\tconst rawMetadata = e.clipboardData.getData(vscodeClipboardMime);\n\t\tif (rawMetadata) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(rawMetadata);\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\n\t\t// Otherwise try to extract the generic text editor metadata\n\t\tconst [_, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);\n\t\tif (metadata) {\n\t\t\treturn {\n\t\t\t\tdefaultPastePayload: {\n\t\t\t\t\tmode: metadata.mode,\n\t\t\t\t\tmulticursorText: metadata.multicursorText ?? null,\n\t\t\t\t\tpasteOnNewLine: !!metadata.isFromEmptySelection,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate async mergeInDataFromCopy(allProviders: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken): Promise<void> {\n\t\tthis._logService.trace('CopyPasteController#mergeInDataFromCopy with metadata : ', metadata?.id);\n\t\tif (metadata?.id && CopyPasteController._currentCopyOperation?.handle === metadata.id) {\n\t\t\t// Only resolve providers that have data we may care about\n\t\t\tconst toResolve = CopyPasteController._currentCopyOperation.operations\n\t\t\t\t.filter(op => allProviders.some(provider => provider.pasteMimeTypes.some(type => matchesMimeType(type, op.providerMimeTypes))))\n\t\t\t\t.map(op => op.operation);\n\n\t\t\tconst toMergeResults = await Promise.all(toResolve);\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Values from higher priority providers should overwrite values from lower priority ones.\n\t\t\t// Reverse the array to so that the calls to `DataTransfer.replace` later will do this\n\t\t\tfor (const toMergeData of toMergeResults.reverse()) {\n\t\t\t\tif (toMergeData) {\n\t\t\t\t\tfor (const [key, value] of toMergeData) {\n\t\t\t\t\t\tdataTransfer.replace(key, value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!dataTransfer.has(Mimes.uriList)) {\n\t\t\tconst resources = await this._clipboardService.readResources();\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (resources.length) {\n\t\t\t\tdataTransfer.append(Mimes.uriList, createStringDataTransferItem(UriList.create(resources)));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async getPasteEdits(providers: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, model: ITextModel, selections: readonly Selection[], context: DocumentPasteContext, token: CancellationToken): Promise<DocumentPasteWithProviderEditsSession> {\n\t\tconst disposables = new DisposableStore();\n\n\t\tconst results = await raceCancellation(\n\t\t\tPromise.all(providers.map(async provider => {\n\t\t\t\ttry {\n\t\t\t\t\tconst edits = await provider.provideDocumentPasteEdits?.(model, selections, dataTransfer, context, token);\n\t\t\t\t\tif (edits) {\n\t\t\t\t\t\tdisposables.add(edits);\n\t\t\t\t\t}\n\t\t\t\t\treturn edits?.edits?.map(edit => ({ ...edit, provider }));\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!isCancellationError(err)) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t}\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t})),\n\t\t\ttoken);\n\t\tconst edits = coalesce(results ?? []).flat().filter(edit => {\n\t\t\treturn !context.only || context.only.contains(edit.kind);\n\t\t});\n\t\treturn {\n\t\t\tedits: sortEditsByYieldTo(edits),\n\t\t\tdispose: () => disposables.dispose()\n\t\t};\n\t}\n\n\tprivate async applyDefaultPasteHandler(dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken, clipboardEvent: ClipboardEvent) {\n\t\tconst textDataTransfer = dataTransfer.get(Mimes.text) ?? dataTransfer.get('text');\n\t\tconst text = (await textDataTransfer?.asString()) ?? '';\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst payload: PastePayload = {\n\t\t\tclipboardEvent,\n\t\t\ttext,\n\t\t\tpasteOnNewLine: metadata?.defaultPastePayload.pasteOnNewLine ?? false,\n\t\t\tmulticursorText: metadata?.defaultPastePayload.multicursorText ?? null,\n\t\t\tmode: null,\n\t\t};\n\t\tthis._logService.trace('CopyPasteController#applyDefaultPasteHandler for id : ', metadata?.id);\n\t\tthis._editor.trigger('keyboard', Handler.Paste, payload);\n\t}\n\n\t/**\n\t * Filter out providers if they:\n\t * - Don't handle any of the data transfer types we have\n\t * - Don't match the preferred paste kind\n\t */\n\tprivate isSupportedPasteProvider(provider: DocumentPasteEditProvider, dataTransfer: VSDataTransfer, preference?: PastePreference): boolean {\n\t\tif (!provider.pasteMimeTypes?.some(type => dataTransfer.matches(type))) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !preference || this.providerMatchesPreference(provider, preference);\n\t}\n\n\tprivate providerMatchesPreference(provider: DocumentPasteEditProvider, preference: PastePreference): boolean {\n\t\tif ('only' in preference) {\n\t\t\treturn provider.providedPasteEditKinds.some(providedKind => preference.only.contains(providedKind));\n\t\t} else if ('preferences' in preference) {\n\t\t\treturn preference.preferences.some(providedKind => preference.preferences.some(preferredKind => preferredKind.contains(providedKind)));\n\t\t} else {\n\t\t\treturn provider.id === preference.providerId;\n\t\t}\n\t}\n\n\tprivate getInitialActiveEditIndex(model: ITextModel, edits: readonly DocumentPasteEdit[]): number {\n\t\tconst preferredProviders = this._configService.getValue<PreferredPasteConfiguration[]>(pasteAsPreferenceConfig, { resource: model.uri });\n\t\tfor (const config of Array.isArray(preferredProviders) ? preferredProviders : []) {\n\t\t\tconst desiredKind = new HierarchicalKind(config);\n\t\t\tconst editIndex = edits.findIndex(edit => desiredKind.contains(edit.kind));\n\t\t\tif (editIndex >= 0) {\n\t\t\t\treturn editIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n}\n"]}
|
|
@@ -72,7 +72,7 @@ export class DefaultTextPasteOrDropEditProvider extends SimplePasteAndDropProvid
|
|
|
72
72
|
const insertText = await textEntry.asString();
|
|
73
73
|
return {
|
|
74
74
|
handledMimeType: Mimes.text,
|
|
75
|
-
title: localize(
|
|
75
|
+
title: localize(933, "Insert Plain Text"),
|
|
76
76
|
insertText,
|
|
77
77
|
kind: this.kind,
|
|
78
78
|
};
|
|
@@ -105,14 +105,14 @@ class PathProvider extends SimplePasteAndDropProvider {
|
|
|
105
105
|
if (uriCount > 0) {
|
|
106
106
|
// Dropping at least one generic uri (such as https) so use most generic label
|
|
107
107
|
label = entries.length > 1
|
|
108
|
-
? localize(
|
|
109
|
-
: localize(
|
|
108
|
+
? localize(934, "Insert Uris")
|
|
109
|
+
: localize(935, "Insert Uri");
|
|
110
110
|
}
|
|
111
111
|
else {
|
|
112
112
|
// All the paths are file paths
|
|
113
113
|
label = entries.length > 1
|
|
114
|
-
? localize(
|
|
115
|
-
: localize(
|
|
114
|
+
? localize(936, "Insert Paths")
|
|
115
|
+
: localize(937, "Insert Path");
|
|
116
116
|
}
|
|
117
117
|
return {
|
|
118
118
|
handledMimeType: Mimes.uriList,
|
|
@@ -145,8 +145,8 @@ let RelativePathProvider = class RelativePathProvider extends SimplePasteAndDrop
|
|
|
145
145
|
handledMimeType: Mimes.uriList,
|
|
146
146
|
insertText: relativeUris.join(' '),
|
|
147
147
|
title: entries.length > 1
|
|
148
|
-
? localize(
|
|
149
|
-
: localize(
|
|
148
|
+
? localize(938, "Insert Relative Paths")
|
|
149
|
+
: localize(939, "Insert Relative Path"),
|
|
150
150
|
kind: this.kind,
|
|
151
151
|
};
|
|
152
152
|
}
|
|
@@ -176,7 +176,7 @@ class PasteHtmlProvider {
|
|
|
176
176
|
edits: [{
|
|
177
177
|
insertText: htmlText,
|
|
178
178
|
yieldTo: this._yieldTo,
|
|
179
|
-
title: localize(
|
|
179
|
+
title: localize(940, 'Insert HTML'),
|
|
180
180
|
kind: this.kind,
|
|
181
181
|
}],
|
|
182
182
|
};
|
|
@@ -34,7 +34,7 @@ import { sortEditsByYieldTo } from './edit.js';
|
|
|
34
34
|
import { PostEditWidgetManager } from './postEditWidget.js';
|
|
35
35
|
export const dropAsPreferenceConfig = 'editor.dropIntoEditor.preferences';
|
|
36
36
|
export const changeDropTypeCommandId = 'editor.changeDropType';
|
|
37
|
-
export const dropWidgetVisibleCtx = new RawContextKey('dropWidgetVisible', false, localize(
|
|
37
|
+
export const dropWidgetVisibleCtx = new RawContextKey('dropWidgetVisible', false, localize(941, "Whether the drop widget is showing"));
|
|
38
38
|
let DropIntoEditorController = class DropIntoEditorController extends Disposable {
|
|
39
39
|
static { DropIntoEditorController_1 = this; }
|
|
40
40
|
static { this.ID = 'editor.contrib.dropIntoEditorController'; }
|
|
@@ -48,7 +48,7 @@ let DropIntoEditorController = class DropIntoEditorController extends Disposable
|
|
|
48
48
|
this._treeViewsDragAndDropService = _treeViewsDragAndDropService;
|
|
49
49
|
this.treeItemsTransfer = LocalSelectionTransfer.getInstance();
|
|
50
50
|
this._dropProgressManager = this._register(instantiationService.createInstance(InlineProgressManager, 'dropIntoEditor', editor));
|
|
51
|
-
this._postDropWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'dropIntoEditor', editor, dropWidgetVisibleCtx, { id: changeDropTypeCommandId, label: localize(
|
|
51
|
+
this._postDropWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'dropIntoEditor', editor, dropWidgetVisibleCtx, { id: changeDropTypeCommandId, label: localize(942, "Show drop options...") }, () => DropIntoEditorController_1._configureDefaultAction ? [DropIntoEditorController_1._configureDefaultAction] : []));
|
|
52
52
|
this._register(editor.onDropIntoEditor(e => this.onDropIntoEditor(editor, e.position, e.event)));
|
|
53
53
|
}
|
|
54
54
|
clearWidgets() {
|
|
@@ -103,7 +103,7 @@ let DropIntoEditorController = class DropIntoEditorController extends Disposable
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
|
-
this._dropProgressManager.showWhile(position, localize(
|
|
106
|
+
this._dropProgressManager.showWhile(position, localize(943, "Running drop handlers. Click to cancel"), p, { cancel: () => p.cancel() });
|
|
107
107
|
DropIntoEditorController_1._currentDropOperation = p;
|
|
108
108
|
}
|
|
109
109
|
async getDropEdits(providers, model, position, dataTransfer, token) {
|
|
@@ -162,7 +162,7 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
162
162
|
resolvedEdit = await raceCancellationError(resolve(edit, editorStateCts.token), editorStateCts.token);
|
|
163
163
|
}
|
|
164
164
|
catch (e) {
|
|
165
|
-
return handleError(e, localize(
|
|
165
|
+
return handleError(e, localize(944, "Error resolving edit '{0}':\n{1}", edit.title, toErrorMessage(e)));
|
|
166
166
|
}
|
|
167
167
|
finally {
|
|
168
168
|
editorStateCts.dispose();
|
|
@@ -185,7 +185,7 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
185
185
|
editRange = model.getDecorationRange(editTrackingDecoration[0]);
|
|
186
186
|
}
|
|
187
187
|
catch (e) {
|
|
188
|
-
return handleError(e, localize(
|
|
188
|
+
return handleError(e, localize(945, "Error applying edit '{0}':\n{1}", edit.title, toErrorMessage(e)));
|
|
189
189
|
}
|
|
190
190
|
finally {
|
|
191
191
|
model.deltaDecorations(editTrackingDecoration, []);
|
|
@@ -10,7 +10,7 @@ import { createDecorator } from '../../../../platform/instantiation/common/insta
|
|
|
10
10
|
import { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
|
|
11
11
|
import { localize } from '../../../../nls.js';
|
|
12
12
|
const IEditorCancellationTokens = createDecorator('IEditorCancelService');
|
|
13
|
-
const ctxCancellableOperation = new RawContextKey('cancellableOperation', false, localize(
|
|
13
|
+
const ctxCancellableOperation = new RawContextKey('cancellableOperation', false, localize(946, 'Whether the editor runs a cancellable operation, e.g. like \'Peek References\''));
|
|
14
14
|
registerSingleton(IEditorCancellationTokens, class {
|
|
15
15
|
constructor() {
|
|
16
16
|
this._tokens = new WeakMap();
|
|
@@ -311,7 +311,7 @@ let CommonFindController = class CommonFindController extends Disposable {
|
|
|
311
311
|
replaceAll() {
|
|
312
312
|
if (this._model) {
|
|
313
313
|
if (this._editor.getModel()?.isTooLargeForHeapOperation()) {
|
|
314
|
-
this._notificationService.warn(nls.localize(
|
|
314
|
+
this._notificationService.warn(nls.localize(947, "The file is too large to perform a replace all operation."));
|
|
315
315
|
return false;
|
|
316
316
|
}
|
|
317
317
|
this._model.replaceAll();
|
|
@@ -428,7 +428,7 @@ FindController = __decorate([
|
|
|
428
428
|
export { FindController };
|
|
429
429
|
export const StartFindAction = registerMultiEditorAction(new MultiEditorAction({
|
|
430
430
|
id: FIND_IDS.StartFindAction,
|
|
431
|
-
label: nls.localize2(
|
|
431
|
+
label: nls.localize2(954, "Find"),
|
|
432
432
|
precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),
|
|
433
433
|
kbOpts: {
|
|
434
434
|
kbExpr: null,
|
|
@@ -438,7 +438,7 @@ export const StartFindAction = registerMultiEditorAction(new MultiEditorAction({
|
|
|
438
438
|
menuOpts: {
|
|
439
439
|
menuId: MenuId.MenubarEditMenu,
|
|
440
440
|
group: '3_find',
|
|
441
|
-
title: nls.localize(
|
|
441
|
+
title: nls.localize(948, "&&Find"),
|
|
442
442
|
order: 1
|
|
443
443
|
}
|
|
444
444
|
}));
|
|
@@ -479,7 +479,7 @@ export class StartFindWithArgsAction extends EditorAction {
|
|
|
479
479
|
constructor() {
|
|
480
480
|
super({
|
|
481
481
|
id: FIND_IDS.StartFindWithArgs,
|
|
482
|
-
label: nls.localize2(
|
|
482
|
+
label: nls.localize2(955, "Find with Arguments"),
|
|
483
483
|
precondition: undefined,
|
|
484
484
|
kbOpts: {
|
|
485
485
|
kbExpr: null,
|
|
@@ -523,7 +523,7 @@ export class StartFindWithSelectionAction extends EditorAction {
|
|
|
523
523
|
constructor() {
|
|
524
524
|
super({
|
|
525
525
|
id: FIND_IDS.StartFindWithSelection,
|
|
526
|
-
label: nls.localize2(
|
|
526
|
+
label: nls.localize2(956, "Find with Selection"),
|
|
527
527
|
precondition: undefined,
|
|
528
528
|
kbOpts: {
|
|
529
529
|
kbExpr: null,
|
|
@@ -581,7 +581,7 @@ async function matchFindAction(editor, next) {
|
|
|
581
581
|
}
|
|
582
582
|
export const NextMatchFindAction = registerMultiEditorAction(new MultiEditorAction({
|
|
583
583
|
id: FIND_IDS.NextMatchFindAction,
|
|
584
|
-
label: nls.localize2(
|
|
584
|
+
label: nls.localize2(957, "Find Next"),
|
|
585
585
|
precondition: undefined,
|
|
586
586
|
kbOpts: [{
|
|
587
587
|
kbExpr: EditorContextKeys.focus,
|
|
@@ -599,7 +599,7 @@ NextMatchFindAction.addImplementation(0, async (accessor, editor, args) => {
|
|
|
599
599
|
});
|
|
600
600
|
export const PreviousMatchFindAction = registerMultiEditorAction(new MultiEditorAction({
|
|
601
601
|
id: FIND_IDS.PreviousMatchFindAction,
|
|
602
|
-
label: nls.localize2(
|
|
602
|
+
label: nls.localize2(958, "Find Previous"),
|
|
603
603
|
precondition: undefined,
|
|
604
604
|
kbOpts: [{
|
|
605
605
|
kbExpr: EditorContextKeys.focus,
|
|
@@ -619,7 +619,7 @@ export class MoveToMatchFindAction extends EditorAction {
|
|
|
619
619
|
constructor() {
|
|
620
620
|
super({
|
|
621
621
|
id: FIND_IDS.GoToMatchFindAction,
|
|
622
|
-
label: nls.localize2(
|
|
622
|
+
label: nls.localize2(959, "Go to Match..."),
|
|
623
623
|
precondition: CONTEXT_FIND_WIDGET_VISIBLE
|
|
624
624
|
});
|
|
625
625
|
this._highlightDecorations = [];
|
|
@@ -634,14 +634,14 @@ export class MoveToMatchFindAction extends EditorAction {
|
|
|
634
634
|
const notificationService = accessor.get(INotificationService);
|
|
635
635
|
notificationService.notify({
|
|
636
636
|
severity: Severity.Warning,
|
|
637
|
-
message: nls.localize(
|
|
637
|
+
message: nls.localize(949, "No matches. Try searching for something else.")
|
|
638
638
|
});
|
|
639
639
|
return;
|
|
640
640
|
}
|
|
641
641
|
const quickInputService = accessor.get(IQuickInputService);
|
|
642
642
|
const disposables = new DisposableStore();
|
|
643
643
|
const inputBox = disposables.add(quickInputService.createInputBox());
|
|
644
|
-
inputBox.placeholder = nls.localize(
|
|
644
|
+
inputBox.placeholder = nls.localize(950, "Type a number to go to a specific match (between 1 and {0})", matchesCount);
|
|
645
645
|
const toFindMatchIndex = (value) => {
|
|
646
646
|
const index = parseInt(value);
|
|
647
647
|
if (isNaN(index)) {
|
|
@@ -668,7 +668,7 @@ export class MoveToMatchFindAction extends EditorAction {
|
|
|
668
668
|
}
|
|
669
669
|
}
|
|
670
670
|
else {
|
|
671
|
-
inputBox.validationMessage = nls.localize(
|
|
671
|
+
inputBox.validationMessage = nls.localize(951, "Please type a number between 1 and {0}", controller.getState().matchesCount);
|
|
672
672
|
this.clearDecorations(editor);
|
|
673
673
|
}
|
|
674
674
|
};
|
|
@@ -682,7 +682,7 @@ export class MoveToMatchFindAction extends EditorAction {
|
|
|
682
682
|
inputBox.hide();
|
|
683
683
|
}
|
|
684
684
|
else {
|
|
685
|
-
inputBox.validationMessage = nls.localize(
|
|
685
|
+
inputBox.validationMessage = nls.localize(952, "Please type a number between 1 and {0}", controller.getState().matchesCount);
|
|
686
686
|
}
|
|
687
687
|
}));
|
|
688
688
|
disposables.add(inputBox.onDidHide(() => {
|
|
@@ -750,7 +750,7 @@ export class NextSelectionMatchFindAction extends SelectionMatchFindAction {
|
|
|
750
750
|
constructor() {
|
|
751
751
|
super({
|
|
752
752
|
id: FIND_IDS.NextSelectionMatchFindAction,
|
|
753
|
-
label: nls.localize2(
|
|
753
|
+
label: nls.localize2(960, "Find Next Selection"),
|
|
754
754
|
precondition: undefined,
|
|
755
755
|
kbOpts: {
|
|
756
756
|
kbExpr: EditorContextKeys.focus,
|
|
@@ -767,7 +767,7 @@ export class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {
|
|
|
767
767
|
constructor() {
|
|
768
768
|
super({
|
|
769
769
|
id: FIND_IDS.PreviousSelectionMatchFindAction,
|
|
770
|
-
label: nls.localize2(
|
|
770
|
+
label: nls.localize2(961, "Find Previous Selection"),
|
|
771
771
|
precondition: undefined,
|
|
772
772
|
kbOpts: {
|
|
773
773
|
kbExpr: EditorContextKeys.focus,
|
|
@@ -782,7 +782,7 @@ export class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {
|
|
|
782
782
|
}
|
|
783
783
|
export const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorAction({
|
|
784
784
|
id: FIND_IDS.StartFindReplaceAction,
|
|
785
|
-
label: nls.localize2(
|
|
785
|
+
label: nls.localize2(962, "Replace"),
|
|
786
786
|
precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),
|
|
787
787
|
kbOpts: {
|
|
788
788
|
kbExpr: null,
|
|
@@ -793,7 +793,7 @@ export const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorA
|
|
|
793
793
|
menuOpts: {
|
|
794
794
|
menuId: MenuId.MenubarEditMenu,
|
|
795
795
|
group: '3_find',
|
|
796
|
-
title: nls.localize(
|
|
796
|
+
title: nls.localize(953, "&&Replace"),
|
|
797
797
|
order: 2
|
|
798
798
|
}
|
|
799
799
|
}));
|
|
@@ -26,28 +26,28 @@ import { ThemeIcon } from '../../../../base/common/themables.js';
|
|
|
26
26
|
import { isHighContrast } from '../../../../platform/theme/common/theme.js';
|
|
27
27
|
import { assertReturnsDefined } from '../../../../base/common/types.js';
|
|
28
28
|
import { defaultInputBoxStyles, defaultToggleStyles } from '../../../../platform/theme/browser/defaultStyles.js';
|
|
29
|
-
const findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize(
|
|
30
|
-
const findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize(
|
|
31
|
-
export const findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize(
|
|
32
|
-
export const findReplaceIcon = registerIcon('find-replace', Codicon.replace, nls.localize(
|
|
33
|
-
export const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll, nls.localize(
|
|
34
|
-
export const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp, nls.localize(
|
|
35
|
-
export const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown, nls.localize(
|
|
36
|
-
const NLS_FIND_DIALOG_LABEL = nls.localize(
|
|
37
|
-
const NLS_FIND_INPUT_LABEL = nls.localize(
|
|
38
|
-
const NLS_FIND_INPUT_PLACEHOLDER = nls.localize(
|
|
39
|
-
const NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize(
|
|
40
|
-
const NLS_NEXT_MATCH_BTN_LABEL = nls.localize(
|
|
41
|
-
const NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize(
|
|
42
|
-
const NLS_CLOSE_BTN_LABEL = nls.localize(
|
|
43
|
-
const NLS_REPLACE_INPUT_LABEL = nls.localize(
|
|
44
|
-
const NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize(
|
|
45
|
-
const NLS_REPLACE_BTN_LABEL = nls.localize(
|
|
46
|
-
const NLS_REPLACE_ALL_BTN_LABEL = nls.localize(
|
|
47
|
-
const NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize(
|
|
48
|
-
const NLS_MATCHES_COUNT_LIMIT_TITLE = nls.localize(
|
|
49
|
-
export const NLS_MATCHES_LOCATION = nls.localize(
|
|
50
|
-
export const NLS_NO_RESULTS = nls.localize(
|
|
29
|
+
const findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize(963, 'Icon to indicate that the editor find widget is collapsed.'));
|
|
30
|
+
const findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize(964, 'Icon to indicate that the editor find widget is expanded.'));
|
|
31
|
+
export const findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize(965, 'Icon for \'Find in Selection\' in the editor find widget.'));
|
|
32
|
+
export const findReplaceIcon = registerIcon('find-replace', Codicon.replace, nls.localize(966, 'Icon for \'Replace\' in the editor find widget.'));
|
|
33
|
+
export const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll, nls.localize(967, 'Icon for \'Replace All\' in the editor find widget.'));
|
|
34
|
+
export const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp, nls.localize(968, 'Icon for \'Find Previous\' in the editor find widget.'));
|
|
35
|
+
export const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown, nls.localize(969, 'Icon for \'Find Next\' in the editor find widget.'));
|
|
36
|
+
const NLS_FIND_DIALOG_LABEL = nls.localize(970, "Find / Replace");
|
|
37
|
+
const NLS_FIND_INPUT_LABEL = nls.localize(971, "Find");
|
|
38
|
+
const NLS_FIND_INPUT_PLACEHOLDER = nls.localize(972, "Find");
|
|
39
|
+
const NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize(973, "Previous Match");
|
|
40
|
+
const NLS_NEXT_MATCH_BTN_LABEL = nls.localize(974, "Next Match");
|
|
41
|
+
const NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize(975, "Find in Selection");
|
|
42
|
+
const NLS_CLOSE_BTN_LABEL = nls.localize(976, "Close");
|
|
43
|
+
const NLS_REPLACE_INPUT_LABEL = nls.localize(977, "Replace");
|
|
44
|
+
const NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize(978, "Replace");
|
|
45
|
+
const NLS_REPLACE_BTN_LABEL = nls.localize(979, "Replace");
|
|
46
|
+
const NLS_REPLACE_ALL_BTN_LABEL = nls.localize(980, "Replace All");
|
|
47
|
+
const NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize(981, "Toggle Replace");
|
|
48
|
+
const NLS_MATCHES_COUNT_LIMIT_TITLE = nls.localize(982, "Only the first {0} results are highlighted, but all find operations work on the entire text.", MATCHES_LIMIT);
|
|
49
|
+
export const NLS_MATCHES_LOCATION = nls.localize(983, "{0} of {1}");
|
|
50
|
+
export const NLS_NO_RESULTS = nls.localize(984, "No results");
|
|
51
51
|
const FIND_WIDGET_INITIAL_WIDTH = 419;
|
|
52
52
|
const PART_WIDTH = 275;
|
|
53
53
|
const FIND_INPUT_AREA_WIDTH = PART_WIDTH - 54;
|
|
@@ -324,11 +324,11 @@ export class FindWidget extends Widget {
|
|
|
324
324
|
_getAriaLabel(label, currentMatch, searchString) {
|
|
325
325
|
if (label === NLS_NO_RESULTS) {
|
|
326
326
|
return searchString === ''
|
|
327
|
-
? nls.localize(
|
|
328
|
-
: nls.localize(
|
|
327
|
+
? nls.localize(985, "{0} found", label)
|
|
328
|
+
: nls.localize(986, "{0} found for '{1}'", label, searchString);
|
|
329
329
|
}
|
|
330
330
|
if (currentMatch) {
|
|
331
|
-
const ariaLabel = nls.localize(
|
|
331
|
+
const ariaLabel = nls.localize(987, "{0} found for '{1}', at {2}", label, searchString, currentMatch.startLineNumber + ':' + currentMatch.startColumn);
|
|
332
332
|
const model = this._codeEditor.getModel();
|
|
333
333
|
if (model && (currentMatch.startLineNumber <= model.getLineCount()) && (currentMatch.startLineNumber >= 1)) {
|
|
334
334
|
const lineContent = model.getLineContent(currentMatch.startLineNumber);
|
|
@@ -336,7 +336,7 @@ export class FindWidget extends Widget {
|
|
|
336
336
|
}
|
|
337
337
|
return ariaLabel;
|
|
338
338
|
}
|
|
339
|
-
return nls.localize(
|
|
339
|
+
return nls.localize(988, "{0} found for '{1}'", label, searchString);
|
|
340
340
|
}
|
|
341
341
|
/**
|
|
342
342
|
* If 'selection find' is ON we should not disable the button (its function is to cancel 'selection find').
|