monaco-editor-core 0.55.0-dev-20251028 → 0.55.0-dev-20251030
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 +14 -0
- package/esm/vs/base/browser/markdownRenderer.js +53 -1
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/common/codiconsLibrary.js +6 -3
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/glob.js +41 -31
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/htmlContent.js +5 -1
- package/esm/vs/base/common/htmlContent.js.map +1 -1
- package/esm/vs/base/common/network.js +2 -6
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/strings.js +8 -6
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/editorExtensions.js +5 -0
- package/esm/vs/editor/browser/editorExtensions.js.map +1 -1
- package/esm/vs/editor/browser/triggerInlineEditCommandsRegistry.js +17 -0
- package/esm/vs/editor/browser/triggerInlineEditCommandsRegistry.js.map +1 -0
- package/esm/vs/editor/common/textModelEditSource.js +1 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +2 -1
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +4 -0
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +16 -12
- package/esm/vs/editor/contrib/comment/browser/comment.js.map +1 -1
- 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 +7 -5
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- 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/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/contentHoverRendered.js +17 -6
- package/esm/vs/editor/contrib/hover/browser/contentHoverRendered.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/contentHoverWidgetWrapper.js +6 -3
- package/esm/vs/editor/contrib/hover/browser/contentHoverWidgetWrapper.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hover.css +36 -0
- 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 +51 -0
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js.map +1 -0
- package/esm/vs/editor/contrib/hover/browser/hoverTypes.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +25 -9
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +8 -5
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +29 -27
- package/esm/vs/editor/contrib/indentation/browser/indentation.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +3 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +4 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- 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 +87 -62
- 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 +8 -8
- 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 +13 -12
- 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/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- 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/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- 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 +27 -24
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- 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 +9 -9
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.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.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 +2 -0
- 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/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +2 -2
- package/esm/vs/platform/hover/browser/hoverWidget.js.map +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +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/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
- 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 +11 -11
- 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 +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/package.json +2 -2
|
@@ -18,6 +18,7 @@ import { ITelemetryService } from '../../platform/telemetry/common/telemetry.js'
|
|
|
18
18
|
import { assertType } from '../../base/common/types.js';
|
|
19
19
|
import { ILogService } from '../../platform/log/common/log.js';
|
|
20
20
|
import { getActiveElement } from '../../base/browser/dom.js';
|
|
21
|
+
import { TriggerInlineEditCommandsRegistry } from './triggerInlineEditCommandsRegistry.js';
|
|
21
22
|
export class Command {
|
|
22
23
|
constructor(opts) {
|
|
23
24
|
this.id = opts.id;
|
|
@@ -25,6 +26,7 @@ export class Command {
|
|
|
25
26
|
this._kbOpts = opts.kbOpts;
|
|
26
27
|
this._menuOpts = opts.menuOpts;
|
|
27
28
|
this.metadata = opts.metadata;
|
|
29
|
+
this.canTriggerInlineEdits = opts.canTriggerInlineEdits;
|
|
28
30
|
}
|
|
29
31
|
register() {
|
|
30
32
|
if (Array.isArray(this._menuOpts)) {
|
|
@@ -64,6 +66,9 @@ export class Command {
|
|
|
64
66
|
handler: (accessor, args) => this.runCommand(accessor, args),
|
|
65
67
|
metadata: this.metadata
|
|
66
68
|
});
|
|
69
|
+
if (this.canTriggerInlineEdits) {
|
|
70
|
+
TriggerInlineEditCommandsRegistry.registerCommand(this.id);
|
|
71
|
+
}
|
|
67
72
|
}
|
|
68
73
|
_registerMenuItem(item) {
|
|
69
74
|
MenuRegistry.appendMenuItem(item.menuId, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/browser/editorExtensions.ts"],"names":[],"mappings":"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","file":"editorExtensions.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 * as nls from '../../nls.js';\nimport { URI } from '../../base/common/uri.js';\nimport { ICodeEditor, IDiffEditor } from './editorBrowser.js';\nimport { ICodeEditorService } from './services/codeEditorService.js';\nimport { Position } from '../common/core/position.js';\nimport { IEditorContribution, IDiffEditorContribution } from '../common/editorCommon.js';\nimport { ITextModel } from '../common/model.js';\nimport { IModelService } from '../common/services/model.js';\nimport { ITextModelService } from '../common/services/resolverService.js';\nimport { MenuId, MenuRegistry, Action2 } from '../../platform/actions/common/actions.js';\nimport { CommandsRegistry, ICommandMetadata } from '../../platform/commands/common/commands.js';\nimport { ContextKeyExpr, IContextKeyService, ContextKeyExpression } from '../../platform/contextkey/common/contextkey.js';\nimport { ServicesAccessor as InstantiationServicesAccessor, BrandedService, IInstantiationService, IConstructorSignature } from '../../platform/instantiation/common/instantiation.js';\nimport { IKeybindings, KeybindingsRegistry, KeybindingWeight } from '../../platform/keybinding/common/keybindingsRegistry.js';\nimport { Registry } from '../../platform/registry/common/platform.js';\nimport { ITelemetryService } from '../../platform/telemetry/common/telemetry.js';\nimport { assertType } from '../../base/common/types.js';\nimport { ThemeIcon } from '../../base/common/themables.js';\nimport { IDisposable } from '../../base/common/lifecycle.js';\nimport { KeyMod, KeyCode } from '../../base/common/keyCodes.js';\nimport { ILogService } from '../../platform/log/common/log.js';\nimport { getActiveElement } from '../../base/browser/dom.js';\n\nexport type ServicesAccessor = InstantiationServicesAccessor;\nexport type EditorContributionCtor = IConstructorSignature<IEditorContribution, [ICodeEditor]>;\nexport type DiffEditorContributionCtor = IConstructorSignature<IDiffEditorContribution, [IDiffEditor]>;\n\nexport const enum EditorContributionInstantiation {\n\t/**\n\t * The contribution is created eagerly when the {@linkcode ICodeEditor} is instantiated.\n\t * Only Eager contributions can participate in saving or restoring of view state.\n\t */\n\tEager,\n\n\t/**\n\t * The contribution is created at the latest 50ms after the first render after attaching a text model.\n\t * If the contribution is explicitly requested via `getContribution`, it will be instantiated sooner.\n\t * If there is idle time available, it will be instantiated sooner.\n\t */\n\tAfterFirstRender,\n\n\t/**\n\t * The contribution is created before the editor emits events produced by user interaction (mouse events, keyboard events).\n\t * If the contribution is explicitly requested via `getContribution`, it will be instantiated sooner.\n\t * If there is idle time available, it will be instantiated sooner.\n\t */\n\tBeforeFirstInteraction,\n\n\t/**\n\t * The contribution is created when there is idle time available, at the latest 5000ms after the editor creation.\n\t * If the contribution is explicitly requested via `getContribution`, it will be instantiated sooner.\n\t */\n\tEventually,\n\n\t/**\n\t * The contribution is created only when explicitly requested via `getContribution`.\n\t */\n\tLazy,\n}\n\nexport interface IEditorContributionDescription {\n\treadonly id: string;\n\treadonly ctor: EditorContributionCtor;\n\treadonly instantiation: EditorContributionInstantiation;\n}\n\nexport interface IDiffEditorContributionDescription {\n\tctor: DiffEditorContributionCtor;\n}\n\n//#region Command\n\nexport interface ICommandKeybindingsOptions extends IKeybindings {\n\tkbExpr?: ContextKeyExpression | null;\n\tweight: number;\n\t/**\n\t * the default keybinding arguments\n\t */\n\targs?: unknown;\n}\nexport interface ICommandMenuOptions {\n\tmenuId: MenuId;\n\tgroup: string;\n\torder: number;\n\twhen?: ContextKeyExpression;\n\ttitle: string;\n\ticon?: ThemeIcon;\n}\nexport interface ICommandOptions {\n\tid: string;\n\tprecondition: ContextKeyExpression | undefined;\n\tkbOpts?: ICommandKeybindingsOptions | ICommandKeybindingsOptions[];\n\tmetadata?: ICommandMetadata;\n\tmenuOpts?: ICommandMenuOptions | ICommandMenuOptions[];\n}\nexport abstract class Command {\n\tpublic readonly id: string;\n\tpublic readonly precondition: ContextKeyExpression | undefined;\n\tprivate readonly _kbOpts: ICommandKeybindingsOptions | ICommandKeybindingsOptions[] | undefined;\n\tprivate readonly _menuOpts: ICommandMenuOptions | ICommandMenuOptions[] | undefined;\n\tpublic readonly metadata: ICommandMetadata | undefined;\n\n\tconstructor(opts: ICommandOptions) {\n\t\tthis.id = opts.id;\n\t\tthis.precondition = opts.precondition;\n\t\tthis._kbOpts = opts.kbOpts;\n\t\tthis._menuOpts = opts.menuOpts;\n\t\tthis.metadata = opts.metadata;\n\t}\n\n\tpublic register(): void {\n\n\t\tif (Array.isArray(this._menuOpts)) {\n\t\t\tthis._menuOpts.forEach(this._registerMenuItem, this);\n\t\t} else if (this._menuOpts) {\n\t\t\tthis._registerMenuItem(this._menuOpts);\n\t\t}\n\n\t\tif (this._kbOpts) {\n\t\t\tconst kbOptsArr = Array.isArray(this._kbOpts) ? this._kbOpts : [this._kbOpts];\n\t\t\tfor (const kbOpts of kbOptsArr) {\n\t\t\t\tlet kbWhen = kbOpts.kbExpr;\n\t\t\t\tif (this.precondition) {\n\t\t\t\t\tif (kbWhen) {\n\t\t\t\t\t\tkbWhen = ContextKeyExpr.and(kbWhen, this.precondition);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tkbWhen = this.precondition;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst desc = {\n\t\t\t\t\tid: this.id,\n\t\t\t\t\tweight: kbOpts.weight,\n\t\t\t\t\targs: kbOpts.args,\n\t\t\t\t\twhen: kbWhen,\n\t\t\t\t\tprimary: kbOpts.primary,\n\t\t\t\t\tsecondary: kbOpts.secondary,\n\t\t\t\t\twin: kbOpts.win,\n\t\t\t\t\tlinux: kbOpts.linux,\n\t\t\t\t\tmac: kbOpts.mac,\n\t\t\t\t};\n\n\t\t\t\tKeybindingsRegistry.registerKeybindingRule(desc);\n\t\t\t}\n\t\t}\n\n\t\tCommandsRegistry.registerCommand({\n\t\t\tid: this.id,\n\t\t\thandler: (accessor, args) => this.runCommand(accessor, args),\n\t\t\tmetadata: this.metadata\n\t\t});\n\t}\n\n\tprivate _registerMenuItem(item: ICommandMenuOptions): void {\n\t\tMenuRegistry.appendMenuItem(item.menuId, {\n\t\t\tgroup: item.group,\n\t\t\tcommand: {\n\t\t\t\tid: this.id,\n\t\t\t\ttitle: item.title,\n\t\t\t\ticon: item.icon,\n\t\t\t\tprecondition: this.precondition\n\t\t\t},\n\t\t\twhen: item.when,\n\t\t\torder: item.order\n\t\t});\n\t}\n\n\tpublic abstract runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void>;\n}\n\n//#endregion Command\n\n//#region MultiplexingCommand\n\n/**\n * Potential override for a command.\n *\n * @return `true` or a Promise if the command was successfully run. This stops other overrides from being executed.\n */\nexport type CommandImplementation = (accessor: ServicesAccessor, args: unknown) => boolean | Promise<void>;\n\ninterface ICommandImplementationRegistration {\n\tpriority: number;\n\tname: string;\n\timplementation: CommandImplementation;\n\twhen?: ContextKeyExpression;\n}\n\nexport class MultiCommand extends Command {\n\n\tprivate readonly _implementations: ICommandImplementationRegistration[] = [];\n\n\t/**\n\t * A higher priority gets to be looked at first\n\t */\n\tpublic addImplementation(priority: number, name: string, implementation: CommandImplementation, when?: ContextKeyExpression): IDisposable {\n\t\tthis._implementations.push({ priority, name, implementation, when });\n\t\tthis._implementations.sort((a, b) => b.priority - a.priority);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tfor (let i = 0; i < this._implementations.length; i++) {\n\t\t\t\t\tif (this._implementations[i].implementation === implementation) {\n\t\t\t\t\t\tthis._implementations.splice(i, 1);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void> {\n\t\tconst logService = accessor.get(ILogService);\n\t\tconst contextKeyService = accessor.get(IContextKeyService);\n\t\tlogService.trace(`Executing Command '${this.id}' which has ${this._implementations.length} bound.`);\n\t\tfor (const impl of this._implementations) {\n\t\t\tif (impl.when) {\n\t\t\t\tconst context = contextKeyService.getContext(getActiveElement());\n\t\t\t\tconst value = impl.when.evaluate(context);\n\t\t\t\tif (!value) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst result = impl.implementation(accessor, args);\n\t\t\tif (result) {\n\t\t\t\tlogService.trace(`Command '${this.id}' was handled by '${impl.name}'.`);\n\t\t\t\tif (typeof result === 'boolean') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tlogService.trace(`The Command '${this.id}' was not handled by any implementation.`);\n\t}\n}\n\n//#endregion\n\n/**\n * A command that delegates to another command's implementation.\n *\n * This lets different commands be registered but share the same implementation\n */\nexport class ProxyCommand extends Command {\n\tconstructor(\n\t\tprivate readonly command: Command,\n\t\topts: ICommandOptions\n\t) {\n\t\tsuper(opts);\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void> {\n\t\treturn this.command.runCommand(accessor, args);\n\t}\n}\n\n//#region EditorCommand\n\nexport interface IContributionCommandOptions<T> extends ICommandOptions {\n\thandler: (controller: T, args: unknown) => void;\n}\nexport interface EditorControllerCommand<T extends IEditorContribution> {\n\tnew(opts: IContributionCommandOptions<T>): EditorCommand;\n}\nexport abstract class EditorCommand extends Command {\n\n\t/**\n\t * Create a command class that is bound to a certain editor contribution.\n\t */\n\tpublic static bindToContribution<T extends IEditorContribution>(controllerGetter: (editor: ICodeEditor) => T | null): EditorControllerCommand<T> {\n\t\treturn class EditorControllerCommandImpl extends EditorCommand {\n\t\t\tprivate readonly _callback: (controller: T, args: unknown) => void;\n\n\t\t\tconstructor(opts: IContributionCommandOptions<T>) {\n\t\t\t\tsuper(opts);\n\n\t\t\t\tthis._callback = opts.handler;\n\t\t\t}\n\n\t\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\t\t\tconst controller = controllerGetter(editor);\n\t\t\t\tif (controller) {\n\t\t\t\t\tthis._callback(controller, args);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static runEditorCommand<T = unknown>(\n\t\taccessor: ServicesAccessor,\n\t\targs: T,\n\t\tprecondition: ContextKeyExpression | undefined,\n\t\trunner: (accessor: ServicesAccessor, editor: ICodeEditor, args: T) => void | Promise<void>\n\t): void | Promise<void> {\n\t\tconst codeEditorService = accessor.get(ICodeEditorService);\n\n\t\t// Find the editor with text focus or active\n\t\tconst editor = codeEditorService.getFocusedCodeEditor() || codeEditorService.getActiveCodeEditor();\n\t\tif (!editor) {\n\t\t\t// well, at least we tried...\n\t\t\treturn;\n\t\t}\n\n\t\treturn editor.invokeWithinContext((editorAccessor) => {\n\t\t\tconst kbService = editorAccessor.get(IContextKeyService);\n\t\t\tif (!kbService.contextMatchesRules(precondition ?? undefined)) {\n\t\t\t\t// precondition does not hold\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn runner(editorAccessor, editor, args);\n\t\t});\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void> {\n\t\treturn EditorCommand.runEditorCommand(accessor, args, this.precondition, (accessor, editor, args) => this.runEditorCommand(accessor, editor, args));\n\t}\n\n\tpublic abstract runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void>;\n}\n\n//#endregion EditorCommand\n\n//#region EditorAction\n\nexport interface IEditorActionContextMenuOptions {\n\tgroup: string;\n\torder: number;\n\twhen?: ContextKeyExpression;\n}\nexport type IActionOptions = ICommandOptions & {\n\tcontextMenuOpts?: IEditorActionContextMenuOptions | IEditorActionContextMenuOptions[];\n} & ({\n\tlabel: nls.ILocalizedString;\n\talias?: string;\n} | {\n\tlabel: string;\n\talias: string;\n});\n\nexport abstract class EditorAction extends EditorCommand {\n\n\tprivate static convertOptions(opts: IActionOptions): ICommandOptions {\n\n\t\tlet menuOpts: ICommandMenuOptions[];\n\t\tif (Array.isArray(opts.menuOpts)) {\n\t\t\tmenuOpts = opts.menuOpts;\n\t\t} else if (opts.menuOpts) {\n\t\t\tmenuOpts = [opts.menuOpts];\n\t\t} else {\n\t\t\tmenuOpts = [];\n\t\t}\n\n\t\tfunction withDefaults(item: Partial<ICommandMenuOptions>): ICommandMenuOptions {\n\t\t\tif (!item.menuId) {\n\t\t\t\titem.menuId = MenuId.EditorContext;\n\t\t\t}\n\t\t\tif (!item.title) {\n\t\t\t\titem.title = typeof opts.label === 'string' ? opts.label : opts.label.value;\n\t\t\t}\n\t\t\titem.when = ContextKeyExpr.and(opts.precondition, item.when);\n\t\t\treturn <ICommandMenuOptions>item;\n\t\t}\n\n\t\tif (Array.isArray(opts.contextMenuOpts)) {\n\t\t\tmenuOpts.push(...opts.contextMenuOpts.map(withDefaults));\n\t\t} else if (opts.contextMenuOpts) {\n\t\t\tmenuOpts.push(withDefaults(opts.contextMenuOpts));\n\t\t}\n\n\t\topts.menuOpts = menuOpts;\n\t\treturn <ICommandOptions>opts;\n\t}\n\n\tpublic readonly label: string;\n\tpublic readonly alias: string;\n\n\tconstructor(opts: IActionOptions) {\n\t\tsuper(EditorAction.convertOptions(opts));\n\t\tif (typeof opts.label === 'string') {\n\t\t\tthis.label = opts.label;\n\t\t\tthis.alias = opts.alias ?? opts.label;\n\t\t} else {\n\t\t\tthis.label = opts.label.value;\n\t\t\tthis.alias = opts.alias ?? opts.label.original;\n\t\t}\n\t}\n\n\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\tthis.reportTelemetry(accessor, editor);\n\t\treturn this.run(accessor, editor, args || {});\n\t}\n\n\tprotected reportTelemetry(accessor: ServicesAccessor, editor: ICodeEditor) {\n\t\ttype EditorActionInvokedClassification = {\n\t\t\towner: 'alexdima';\n\t\t\tcomment: 'An editor action has been invoked.';\n\t\t\tname: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The label of the action that was invoked.' };\n\t\t\tid: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The identifier of the action that was invoked.' };\n\t\t};\n\t\ttype EditorActionInvokedEvent = {\n\t\t\tname: string;\n\t\t\tid: string;\n\t\t};\n\t\taccessor.get(ITelemetryService).publicLog2<EditorActionInvokedEvent, EditorActionInvokedClassification>('editorActionInvoked', { name: this.label, id: this.id });\n\t}\n\n\tpublic abstract run(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void>;\n}\n\nexport type EditorActionImplementation = (accessor: ServicesAccessor, editor: ICodeEditor, args: unknown) => boolean | Promise<void>;\n\nexport class MultiEditorAction extends EditorAction {\n\n\tprivate readonly _implementations: [number, EditorActionImplementation][] = [];\n\n\t/**\n\t * A higher priority gets to be looked at first\n\t */\n\tpublic addImplementation(priority: number, implementation: EditorActionImplementation): IDisposable {\n\t\tthis._implementations.push([priority, implementation]);\n\t\tthis._implementations.sort((a, b) => b[0] - a[0]);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tfor (let i = 0; i < this._implementations.length; i++) {\n\t\t\t\t\tif (this._implementations[i][1] === implementation) {\n\t\t\t\t\t\tthis._implementations.splice(i, 1);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\tfor (const impl of this._implementations) {\n\t\t\tconst result = impl[1](accessor, editor, args);\n\t\t\tif (result) {\n\t\t\t\tif (typeof result === 'boolean') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n//#endregion EditorAction\n\n//#region EditorAction2\n\nexport abstract class EditorAction2 extends Action2 {\n\n\trun(accessor: ServicesAccessor, ...args: unknown[]) {\n\t\t// Find the editor with text focus or active\n\t\tconst codeEditorService = accessor.get(ICodeEditorService);\n\t\tconst editor = codeEditorService.getFocusedCodeEditor() || codeEditorService.getActiveCodeEditor();\n\t\tif (!editor) {\n\t\t\t// well, at least we tried...\n\t\t\treturn;\n\t\t}\n\t\t// precondition does hold\n\t\treturn editor.invokeWithinContext((editorAccessor) => {\n\t\t\tconst kbService = editorAccessor.get(IContextKeyService);\n\t\t\tconst logService = editorAccessor.get(ILogService);\n\t\t\tconst enabled = kbService.contextMatchesRules(this.desc.precondition ?? undefined);\n\t\t\tif (!enabled) {\n\t\t\t\tlogService.debug(`[EditorAction2] NOT running command because its precondition is FALSE`, this.desc.id, this.desc.precondition?.serialize());\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn this.runEditorCommand(editorAccessor, editor, ...args);\n\t\t});\n\t}\n\n\tabstract runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, ...args: unknown[]): unknown;\n}\n\n//#endregion\n\n// --- Registration of commands and actions\n\n\nexport function registerModelAndPositionCommand(id: string, handler: (accessor: ServicesAccessor, model: ITextModel, position: Position, ...args: unknown[]) => unknown) {\n\tCommandsRegistry.registerCommand(id, function (accessor, ...args) {\n\n\t\tconst instaService = accessor.get(IInstantiationService);\n\n\t\tconst [resource, position] = args;\n\t\tassertType(URI.isUri(resource));\n\t\tassertType(Position.isIPosition(position));\n\n\t\tconst model = accessor.get(IModelService).getModel(resource);\n\t\tif (model) {\n\t\t\tconst editorPosition = Position.lift(position);\n\t\t\treturn instaService.invokeFunction(handler, model, editorPosition, ...args.slice(2));\n\t\t}\n\n\t\treturn accessor.get(ITextModelService).createModelReference(resource).then(reference => {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = instaService.invokeFunction(handler, reference.object.textEditorModel, Position.lift(position), args.slice(2));\n\t\t\t\t\tresolve(result);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t}\n\t\t\t}).finally(() => {\n\t\t\t\treference.dispose();\n\t\t\t});\n\t\t});\n\t});\n}\n\nexport function registerEditorCommand<T extends EditorCommand>(editorCommand: T): T {\n\tEditorContributionRegistry.INSTANCE.registerEditorCommand(editorCommand);\n\treturn editorCommand;\n}\n\nexport function registerEditorAction<T extends EditorAction>(ctor: { new(): T }): T {\n\tconst action = new ctor();\n\tEditorContributionRegistry.INSTANCE.registerEditorAction(action);\n\treturn action;\n}\n\nexport function registerMultiEditorAction<T extends MultiEditorAction>(action: T): T {\n\tEditorContributionRegistry.INSTANCE.registerEditorAction(action);\n\treturn action;\n}\n\nexport function registerInstantiatedEditorAction(editorAction: EditorAction): void {\n\tEditorContributionRegistry.INSTANCE.registerEditorAction(editorAction);\n}\n\n/**\n * Registers an editor contribution. Editor contributions have a lifecycle which is bound\n * to a specific code editor instance.\n */\nexport function registerEditorContribution<Services extends BrandedService[]>(id: string, ctor: { new(editor: ICodeEditor, ...services: Services): IEditorContribution }, instantiation: EditorContributionInstantiation): void {\n\tEditorContributionRegistry.INSTANCE.registerEditorContribution(id, ctor, instantiation);\n}\n\nexport namespace EditorExtensionsRegistry {\n\n\texport function getEditorCommand(commandId: string): EditorCommand {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorCommand(commandId);\n\t}\n\n\texport function getEditorActions(): Iterable<EditorAction> {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorActions();\n\t}\n\n\texport function getEditorContributions(): IEditorContributionDescription[] {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorContributions();\n\t}\n\n\texport function getSomeEditorContributions(ids: string[]): IEditorContributionDescription[] {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorContributions().filter(c => ids.indexOf(c.id) >= 0);\n\t}\n\n\texport function getDiffEditorContributions(): IDiffEditorContributionDescription[] {\n\t\treturn EditorContributionRegistry.INSTANCE.getDiffEditorContributions();\n\t}\n}\n\n// Editor extension points\nconst Extensions = {\n\tEditorCommonContributions: 'editor.contributions'\n};\n\nclass EditorContributionRegistry {\n\n\tpublic static readonly INSTANCE = new EditorContributionRegistry();\n\n\tprivate readonly editorContributions: IEditorContributionDescription[] = [];\n\tprivate readonly diffEditorContributions: IDiffEditorContributionDescription[] = [];\n\tprivate readonly editorActions: EditorAction[] = [];\n\tprivate readonly editorCommands: { [commandId: string]: EditorCommand } = Object.create(null);\n\n\tconstructor() {\n\t}\n\n\tpublic registerEditorContribution<Services extends BrandedService[]>(id: string, ctor: { new(editor: ICodeEditor, ...services: Services): IEditorContribution }, instantiation: EditorContributionInstantiation): void {\n\t\tthis.editorContributions.push({ id, ctor: ctor as EditorContributionCtor, instantiation });\n\t}\n\n\tpublic getEditorContributions(): IEditorContributionDescription[] {\n\t\treturn this.editorContributions.slice(0);\n\t}\n\n\tpublic getDiffEditorContributions(): IDiffEditorContributionDescription[] {\n\t\treturn this.diffEditorContributions.slice(0);\n\t}\n\n\tpublic registerEditorAction(action: EditorAction) {\n\t\taction.register();\n\t\tthis.editorActions.push(action);\n\t}\n\n\tpublic getEditorActions(): Iterable<EditorAction> {\n\t\treturn this.editorActions;\n\t}\n\n\tpublic registerEditorCommand(editorCommand: EditorCommand) {\n\t\teditorCommand.register();\n\t\tthis.editorCommands[editorCommand.id] = editorCommand;\n\t}\n\n\tpublic getEditorCommand(commandId: string): EditorCommand {\n\t\treturn (this.editorCommands[commandId] || null);\n\t}\n\n}\nRegistry.add(Extensions.EditorCommonContributions, EditorContributionRegistry.INSTANCE);\n\nfunction registerCommand<T extends Command>(command: T): T {\n\tcommand.register();\n\treturn command;\n}\n\nexport const UndoCommand = registerCommand(new MultiCommand({\n\tid: 'undo',\n\tprecondition: undefined,\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorCore,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyZ\n\t},\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, \"&&Undo\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('undo', \"Undo\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize('undo', \"Undo\"),\n\t\torder: 1\n\t}]\n}));\n\nregisterCommand(new ProxyCommand(UndoCommand, { id: 'default:undo', precondition: undefined }));\n\nexport const RedoCommand = registerCommand(new MultiCommand({\n\tid: 'redo',\n\tprecondition: undefined,\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorCore,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyY,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyZ],\n\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyZ }\n\t},\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, \"&&Redo\"),\n\t\torder: 2\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('redo', \"Redo\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize('redo', \"Redo\"),\n\t\torder: 2\n\t}]\n}));\n\nregisterCommand(new ProxyCommand(RedoCommand, { id: 'default:redo', precondition: undefined }));\n\nexport const SelectAllCommand = registerCommand(new MultiCommand({\n\tid: 'editor.action.selectAll',\n\tprecondition: undefined,\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorCore,\n\t\tkbExpr: null,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyA\n\t},\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\tgroup: '1_basic',\n\t\ttitle: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, \"&&Select All\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('selectAll', \"Select All\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: '9_select',\n\t\ttitle: nls.localize('selectAll', \"Select All\"),\n\t\torder: 1\n\t}]\n}));\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/browser/editorExtensions.ts"],"names":[],"mappings":"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","file":"editorExtensions.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 * as nls from '../../nls.js';\nimport { URI } from '../../base/common/uri.js';\nimport { ICodeEditor, IDiffEditor } from './editorBrowser.js';\nimport { ICodeEditorService } from './services/codeEditorService.js';\nimport { Position } from '../common/core/position.js';\nimport { IEditorContribution, IDiffEditorContribution } from '../common/editorCommon.js';\nimport { ITextModel } from '../common/model.js';\nimport { IModelService } from '../common/services/model.js';\nimport { ITextModelService } from '../common/services/resolverService.js';\nimport { MenuId, MenuRegistry, Action2 } from '../../platform/actions/common/actions.js';\nimport { CommandsRegistry, ICommandMetadata } from '../../platform/commands/common/commands.js';\nimport { ContextKeyExpr, IContextKeyService, ContextKeyExpression } from '../../platform/contextkey/common/contextkey.js';\nimport { ServicesAccessor as InstantiationServicesAccessor, BrandedService, IInstantiationService, IConstructorSignature } from '../../platform/instantiation/common/instantiation.js';\nimport { IKeybindings, KeybindingsRegistry, KeybindingWeight } from '../../platform/keybinding/common/keybindingsRegistry.js';\nimport { Registry } from '../../platform/registry/common/platform.js';\nimport { ITelemetryService } from '../../platform/telemetry/common/telemetry.js';\nimport { assertType } from '../../base/common/types.js';\nimport { ThemeIcon } from '../../base/common/themables.js';\nimport { IDisposable } from '../../base/common/lifecycle.js';\nimport { KeyMod, KeyCode } from '../../base/common/keyCodes.js';\nimport { ILogService } from '../../platform/log/common/log.js';\nimport { getActiveElement } from '../../base/browser/dom.js';\nimport { TriggerInlineEditCommandsRegistry } from './triggerInlineEditCommandsRegistry.js';\n\nexport type ServicesAccessor = InstantiationServicesAccessor;\nexport type EditorContributionCtor = IConstructorSignature<IEditorContribution, [ICodeEditor]>;\nexport type DiffEditorContributionCtor = IConstructorSignature<IDiffEditorContribution, [IDiffEditor]>;\n\nexport const enum EditorContributionInstantiation {\n\t/**\n\t * The contribution is created eagerly when the {@linkcode ICodeEditor} is instantiated.\n\t * Only Eager contributions can participate in saving or restoring of view state.\n\t */\n\tEager,\n\n\t/**\n\t * The contribution is created at the latest 50ms after the first render after attaching a text model.\n\t * If the contribution is explicitly requested via `getContribution`, it will be instantiated sooner.\n\t * If there is idle time available, it will be instantiated sooner.\n\t */\n\tAfterFirstRender,\n\n\t/**\n\t * The contribution is created before the editor emits events produced by user interaction (mouse events, keyboard events).\n\t * If the contribution is explicitly requested via `getContribution`, it will be instantiated sooner.\n\t * If there is idle time available, it will be instantiated sooner.\n\t */\n\tBeforeFirstInteraction,\n\n\t/**\n\t * The contribution is created when there is idle time available, at the latest 5000ms after the editor creation.\n\t * If the contribution is explicitly requested via `getContribution`, it will be instantiated sooner.\n\t */\n\tEventually,\n\n\t/**\n\t * The contribution is created only when explicitly requested via `getContribution`.\n\t */\n\tLazy,\n}\n\nexport interface IEditorContributionDescription {\n\treadonly id: string;\n\treadonly ctor: EditorContributionCtor;\n\treadonly instantiation: EditorContributionInstantiation;\n}\n\nexport interface IDiffEditorContributionDescription {\n\tctor: DiffEditorContributionCtor;\n}\n\n//#region Command\n\nexport interface ICommandKeybindingsOptions extends IKeybindings {\n\tkbExpr?: ContextKeyExpression | null;\n\tweight: number;\n\t/**\n\t * the default keybinding arguments\n\t */\n\targs?: unknown;\n}\nexport interface ICommandMenuOptions {\n\tmenuId: MenuId;\n\tgroup: string;\n\torder: number;\n\twhen?: ContextKeyExpression;\n\ttitle: string;\n\ticon?: ThemeIcon;\n}\nexport interface ICommandOptions {\n\tid: string;\n\tprecondition: ContextKeyExpression | undefined;\n\tkbOpts?: ICommandKeybindingsOptions | ICommandKeybindingsOptions[];\n\tmetadata?: ICommandMetadata;\n\tmenuOpts?: ICommandMenuOptions | ICommandMenuOptions[];\n\tcanTriggerInlineEdits?: boolean;\n}\nexport abstract class Command {\n\tpublic readonly id: string;\n\tpublic readonly precondition: ContextKeyExpression | undefined;\n\tprivate readonly _kbOpts: ICommandKeybindingsOptions | ICommandKeybindingsOptions[] | undefined;\n\tprivate readonly _menuOpts: ICommandMenuOptions | ICommandMenuOptions[] | undefined;\n\tpublic readonly metadata: ICommandMetadata | undefined;\n\tpublic readonly canTriggerInlineEdits: boolean | undefined;\n\n\tconstructor(opts: ICommandOptions) {\n\t\tthis.id = opts.id;\n\t\tthis.precondition = opts.precondition;\n\t\tthis._kbOpts = opts.kbOpts;\n\t\tthis._menuOpts = opts.menuOpts;\n\t\tthis.metadata = opts.metadata;\n\t\tthis.canTriggerInlineEdits = opts.canTriggerInlineEdits;\n\t}\n\n\tpublic register(): void {\n\n\t\tif (Array.isArray(this._menuOpts)) {\n\t\t\tthis._menuOpts.forEach(this._registerMenuItem, this);\n\t\t} else if (this._menuOpts) {\n\t\t\tthis._registerMenuItem(this._menuOpts);\n\t\t}\n\n\t\tif (this._kbOpts) {\n\t\t\tconst kbOptsArr = Array.isArray(this._kbOpts) ? this._kbOpts : [this._kbOpts];\n\t\t\tfor (const kbOpts of kbOptsArr) {\n\t\t\t\tlet kbWhen = kbOpts.kbExpr;\n\t\t\t\tif (this.precondition) {\n\t\t\t\t\tif (kbWhen) {\n\t\t\t\t\t\tkbWhen = ContextKeyExpr.and(kbWhen, this.precondition);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tkbWhen = this.precondition;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst desc = {\n\t\t\t\t\tid: this.id,\n\t\t\t\t\tweight: kbOpts.weight,\n\t\t\t\t\targs: kbOpts.args,\n\t\t\t\t\twhen: kbWhen,\n\t\t\t\t\tprimary: kbOpts.primary,\n\t\t\t\t\tsecondary: kbOpts.secondary,\n\t\t\t\t\twin: kbOpts.win,\n\t\t\t\t\tlinux: kbOpts.linux,\n\t\t\t\t\tmac: kbOpts.mac,\n\t\t\t\t};\n\n\t\t\t\tKeybindingsRegistry.registerKeybindingRule(desc);\n\t\t\t}\n\t\t}\n\n\t\tCommandsRegistry.registerCommand({\n\t\t\tid: this.id,\n\t\t\thandler: (accessor, args) => this.runCommand(accessor, args),\n\t\t\tmetadata: this.metadata\n\t\t});\n\n\t\tif (this.canTriggerInlineEdits) {\n\t\t\tTriggerInlineEditCommandsRegistry.registerCommand(this.id);\n\t\t}\n\t}\n\n\tprivate _registerMenuItem(item: ICommandMenuOptions): void {\n\t\tMenuRegistry.appendMenuItem(item.menuId, {\n\t\t\tgroup: item.group,\n\t\t\tcommand: {\n\t\t\t\tid: this.id,\n\t\t\t\ttitle: item.title,\n\t\t\t\ticon: item.icon,\n\t\t\t\tprecondition: this.precondition\n\t\t\t},\n\t\t\twhen: item.when,\n\t\t\torder: item.order\n\t\t});\n\t}\n\n\tpublic abstract runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void>;\n}\n\n//#endregion Command\n\n//#region MultiplexingCommand\n\n/**\n * Potential override for a command.\n *\n * @return `true` or a Promise if the command was successfully run. This stops other overrides from being executed.\n */\nexport type CommandImplementation = (accessor: ServicesAccessor, args: unknown) => boolean | Promise<void>;\n\ninterface ICommandImplementationRegistration {\n\tpriority: number;\n\tname: string;\n\timplementation: CommandImplementation;\n\twhen?: ContextKeyExpression;\n}\n\nexport class MultiCommand extends Command {\n\n\tprivate readonly _implementations: ICommandImplementationRegistration[] = [];\n\n\t/**\n\t * A higher priority gets to be looked at first\n\t */\n\tpublic addImplementation(priority: number, name: string, implementation: CommandImplementation, when?: ContextKeyExpression): IDisposable {\n\t\tthis._implementations.push({ priority, name, implementation, when });\n\t\tthis._implementations.sort((a, b) => b.priority - a.priority);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tfor (let i = 0; i < this._implementations.length; i++) {\n\t\t\t\t\tif (this._implementations[i].implementation === implementation) {\n\t\t\t\t\t\tthis._implementations.splice(i, 1);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void> {\n\t\tconst logService = accessor.get(ILogService);\n\t\tconst contextKeyService = accessor.get(IContextKeyService);\n\t\tlogService.trace(`Executing Command '${this.id}' which has ${this._implementations.length} bound.`);\n\t\tfor (const impl of this._implementations) {\n\t\t\tif (impl.when) {\n\t\t\t\tconst context = contextKeyService.getContext(getActiveElement());\n\t\t\t\tconst value = impl.when.evaluate(context);\n\t\t\t\tif (!value) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst result = impl.implementation(accessor, args);\n\t\t\tif (result) {\n\t\t\t\tlogService.trace(`Command '${this.id}' was handled by '${impl.name}'.`);\n\t\t\t\tif (typeof result === 'boolean') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tlogService.trace(`The Command '${this.id}' was not handled by any implementation.`);\n\t}\n}\n\n//#endregion\n\n/**\n * A command that delegates to another command's implementation.\n *\n * This lets different commands be registered but share the same implementation\n */\nexport class ProxyCommand extends Command {\n\tconstructor(\n\t\tprivate readonly command: Command,\n\t\topts: ICommandOptions\n\t) {\n\t\tsuper(opts);\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void> {\n\t\treturn this.command.runCommand(accessor, args);\n\t}\n}\n\n//#region EditorCommand\n\nexport interface IContributionCommandOptions<T> extends ICommandOptions {\n\thandler: (controller: T, args: unknown) => void;\n}\nexport interface EditorControllerCommand<T extends IEditorContribution> {\n\tnew(opts: IContributionCommandOptions<T>): EditorCommand;\n}\nexport abstract class EditorCommand extends Command {\n\n\t/**\n\t * Create a command class that is bound to a certain editor contribution.\n\t */\n\tpublic static bindToContribution<T extends IEditorContribution>(controllerGetter: (editor: ICodeEditor) => T | null): EditorControllerCommand<T> {\n\t\treturn class EditorControllerCommandImpl extends EditorCommand {\n\t\t\tprivate readonly _callback: (controller: T, args: unknown) => void;\n\n\t\t\tconstructor(opts: IContributionCommandOptions<T>) {\n\t\t\t\tsuper(opts);\n\n\t\t\t\tthis._callback = opts.handler;\n\t\t\t}\n\n\t\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\t\t\tconst controller = controllerGetter(editor);\n\t\t\t\tif (controller) {\n\t\t\t\t\tthis._callback(controller, args);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static runEditorCommand<T = unknown>(\n\t\taccessor: ServicesAccessor,\n\t\targs: T,\n\t\tprecondition: ContextKeyExpression | undefined,\n\t\trunner: (accessor: ServicesAccessor, editor: ICodeEditor, args: T) => void | Promise<void>\n\t): void | Promise<void> {\n\t\tconst codeEditorService = accessor.get(ICodeEditorService);\n\n\t\t// Find the editor with text focus or active\n\t\tconst editor = codeEditorService.getFocusedCodeEditor() || codeEditorService.getActiveCodeEditor();\n\t\tif (!editor) {\n\t\t\t// well, at least we tried...\n\t\t\treturn;\n\t\t}\n\n\t\treturn editor.invokeWithinContext((editorAccessor) => {\n\t\t\tconst kbService = editorAccessor.get(IContextKeyService);\n\t\t\tif (!kbService.contextMatchesRules(precondition ?? undefined)) {\n\t\t\t\t// precondition does not hold\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn runner(editorAccessor, editor, args);\n\t\t});\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void | Promise<void> {\n\t\treturn EditorCommand.runEditorCommand(accessor, args, this.precondition, (accessor, editor, args) => this.runEditorCommand(accessor, editor, args));\n\t}\n\n\tpublic abstract runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void>;\n}\n\n//#endregion EditorCommand\n\n//#region EditorAction\n\nexport interface IEditorActionContextMenuOptions {\n\tgroup: string;\n\torder: number;\n\twhen?: ContextKeyExpression;\n}\nexport type IActionOptions = ICommandOptions & {\n\tcontextMenuOpts?: IEditorActionContextMenuOptions | IEditorActionContextMenuOptions[];\n} & ({\n\tlabel: nls.ILocalizedString;\n\talias?: string;\n} | {\n\tlabel: string;\n\talias: string;\n});\n\nexport abstract class EditorAction extends EditorCommand {\n\n\tprivate static convertOptions(opts: IActionOptions): ICommandOptions {\n\n\t\tlet menuOpts: ICommandMenuOptions[];\n\t\tif (Array.isArray(opts.menuOpts)) {\n\t\t\tmenuOpts = opts.menuOpts;\n\t\t} else if (opts.menuOpts) {\n\t\t\tmenuOpts = [opts.menuOpts];\n\t\t} else {\n\t\t\tmenuOpts = [];\n\t\t}\n\n\t\tfunction withDefaults(item: Partial<ICommandMenuOptions>): ICommandMenuOptions {\n\t\t\tif (!item.menuId) {\n\t\t\t\titem.menuId = MenuId.EditorContext;\n\t\t\t}\n\t\t\tif (!item.title) {\n\t\t\t\titem.title = typeof opts.label === 'string' ? opts.label : opts.label.value;\n\t\t\t}\n\t\t\titem.when = ContextKeyExpr.and(opts.precondition, item.when);\n\t\t\treturn <ICommandMenuOptions>item;\n\t\t}\n\n\t\tif (Array.isArray(opts.contextMenuOpts)) {\n\t\t\tmenuOpts.push(...opts.contextMenuOpts.map(withDefaults));\n\t\t} else if (opts.contextMenuOpts) {\n\t\t\tmenuOpts.push(withDefaults(opts.contextMenuOpts));\n\t\t}\n\n\t\topts.menuOpts = menuOpts;\n\t\treturn <ICommandOptions>opts;\n\t}\n\n\tpublic readonly label: string;\n\tpublic readonly alias: string;\n\n\tconstructor(opts: IActionOptions) {\n\t\tsuper(EditorAction.convertOptions(opts));\n\t\tif (typeof opts.label === 'string') {\n\t\t\tthis.label = opts.label;\n\t\t\tthis.alias = opts.alias ?? opts.label;\n\t\t} else {\n\t\t\tthis.label = opts.label.value;\n\t\t\tthis.alias = opts.alias ?? opts.label.original;\n\t\t}\n\t}\n\n\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\tthis.reportTelemetry(accessor, editor);\n\t\treturn this.run(accessor, editor, args || {});\n\t}\n\n\tprotected reportTelemetry(accessor: ServicesAccessor, editor: ICodeEditor) {\n\t\ttype EditorActionInvokedClassification = {\n\t\t\towner: 'alexdima';\n\t\t\tcomment: 'An editor action has been invoked.';\n\t\t\tname: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The label of the action that was invoked.' };\n\t\t\tid: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The identifier of the action that was invoked.' };\n\t\t};\n\t\ttype EditorActionInvokedEvent = {\n\t\t\tname: string;\n\t\t\tid: string;\n\t\t};\n\t\taccessor.get(ITelemetryService).publicLog2<EditorActionInvokedEvent, EditorActionInvokedClassification>('editorActionInvoked', { name: this.label, id: this.id });\n\t}\n\n\tpublic abstract run(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void>;\n}\n\nexport type EditorActionImplementation = (accessor: ServicesAccessor, editor: ICodeEditor, args: unknown) => boolean | Promise<void>;\n\nexport class MultiEditorAction extends EditorAction {\n\n\tprivate readonly _implementations: [number, EditorActionImplementation][] = [];\n\n\t/**\n\t * A higher priority gets to be looked at first\n\t */\n\tpublic addImplementation(priority: number, implementation: EditorActionImplementation): IDisposable {\n\t\tthis._implementations.push([priority, implementation]);\n\t\tthis._implementations.sort((a, b) => b[0] - a[0]);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tfor (let i = 0; i < this._implementations.length; i++) {\n\t\t\t\t\tif (this._implementations[i][1] === implementation) {\n\t\t\t\t\t\tthis._implementations.splice(i, 1);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\tfor (const impl of this._implementations) {\n\t\t\tconst result = impl[1](accessor, editor, args);\n\t\t\tif (result) {\n\t\t\t\tif (typeof result === 'boolean') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\n//#endregion EditorAction\n\n//#region EditorAction2\n\nexport abstract class EditorAction2 extends Action2 {\n\n\trun(accessor: ServicesAccessor, ...args: unknown[]) {\n\t\t// Find the editor with text focus or active\n\t\tconst codeEditorService = accessor.get(ICodeEditorService);\n\t\tconst editor = codeEditorService.getFocusedCodeEditor() || codeEditorService.getActiveCodeEditor();\n\t\tif (!editor) {\n\t\t\t// well, at least we tried...\n\t\t\treturn;\n\t\t}\n\t\t// precondition does hold\n\t\treturn editor.invokeWithinContext((editorAccessor) => {\n\t\t\tconst kbService = editorAccessor.get(IContextKeyService);\n\t\t\tconst logService = editorAccessor.get(ILogService);\n\t\t\tconst enabled = kbService.contextMatchesRules(this.desc.precondition ?? undefined);\n\t\t\tif (!enabled) {\n\t\t\t\tlogService.debug(`[EditorAction2] NOT running command because its precondition is FALSE`, this.desc.id, this.desc.precondition?.serialize());\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn this.runEditorCommand(editorAccessor, editor, ...args);\n\t\t});\n\t}\n\n\tabstract runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, ...args: unknown[]): unknown;\n}\n\n//#endregion\n\n// --- Registration of commands and actions\n\n\nexport function registerModelAndPositionCommand(id: string, handler: (accessor: ServicesAccessor, model: ITextModel, position: Position, ...args: unknown[]) => unknown) {\n\tCommandsRegistry.registerCommand(id, function (accessor, ...args) {\n\n\t\tconst instaService = accessor.get(IInstantiationService);\n\n\t\tconst [resource, position] = args;\n\t\tassertType(URI.isUri(resource));\n\t\tassertType(Position.isIPosition(position));\n\n\t\tconst model = accessor.get(IModelService).getModel(resource);\n\t\tif (model) {\n\t\t\tconst editorPosition = Position.lift(position);\n\t\t\treturn instaService.invokeFunction(handler, model, editorPosition, ...args.slice(2));\n\t\t}\n\n\t\treturn accessor.get(ITextModelService).createModelReference(resource).then(reference => {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = instaService.invokeFunction(handler, reference.object.textEditorModel, Position.lift(position), args.slice(2));\n\t\t\t\t\tresolve(result);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t}\n\t\t\t}).finally(() => {\n\t\t\t\treference.dispose();\n\t\t\t});\n\t\t});\n\t});\n}\n\nexport function registerEditorCommand<T extends EditorCommand>(editorCommand: T): T {\n\tEditorContributionRegistry.INSTANCE.registerEditorCommand(editorCommand);\n\treturn editorCommand;\n}\n\nexport function registerEditorAction<T extends EditorAction>(ctor: { new(): T }): T {\n\tconst action = new ctor();\n\tEditorContributionRegistry.INSTANCE.registerEditorAction(action);\n\treturn action;\n}\n\nexport function registerMultiEditorAction<T extends MultiEditorAction>(action: T): T {\n\tEditorContributionRegistry.INSTANCE.registerEditorAction(action);\n\treturn action;\n}\n\nexport function registerInstantiatedEditorAction(editorAction: EditorAction): void {\n\tEditorContributionRegistry.INSTANCE.registerEditorAction(editorAction);\n}\n\n/**\n * Registers an editor contribution. Editor contributions have a lifecycle which is bound\n * to a specific code editor instance.\n */\nexport function registerEditorContribution<Services extends BrandedService[]>(id: string, ctor: { new(editor: ICodeEditor, ...services: Services): IEditorContribution }, instantiation: EditorContributionInstantiation): void {\n\tEditorContributionRegistry.INSTANCE.registerEditorContribution(id, ctor, instantiation);\n}\n\nexport namespace EditorExtensionsRegistry {\n\n\texport function getEditorCommand(commandId: string): EditorCommand {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorCommand(commandId);\n\t}\n\n\texport function getEditorActions(): Iterable<EditorAction> {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorActions();\n\t}\n\n\texport function getEditorContributions(): IEditorContributionDescription[] {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorContributions();\n\t}\n\n\texport function getSomeEditorContributions(ids: string[]): IEditorContributionDescription[] {\n\t\treturn EditorContributionRegistry.INSTANCE.getEditorContributions().filter(c => ids.indexOf(c.id) >= 0);\n\t}\n\n\texport function getDiffEditorContributions(): IDiffEditorContributionDescription[] {\n\t\treturn EditorContributionRegistry.INSTANCE.getDiffEditorContributions();\n\t}\n}\n\n// Editor extension points\nconst Extensions = {\n\tEditorCommonContributions: 'editor.contributions'\n};\n\nclass EditorContributionRegistry {\n\n\tpublic static readonly INSTANCE = new EditorContributionRegistry();\n\n\tprivate readonly editorContributions: IEditorContributionDescription[] = [];\n\tprivate readonly diffEditorContributions: IDiffEditorContributionDescription[] = [];\n\tprivate readonly editorActions: EditorAction[] = [];\n\tprivate readonly editorCommands: { [commandId: string]: EditorCommand } = Object.create(null);\n\n\tconstructor() {\n\t}\n\n\tpublic registerEditorContribution<Services extends BrandedService[]>(id: string, ctor: { new(editor: ICodeEditor, ...services: Services): IEditorContribution }, instantiation: EditorContributionInstantiation): void {\n\t\tthis.editorContributions.push({ id, ctor: ctor as EditorContributionCtor, instantiation });\n\t}\n\n\tpublic getEditorContributions(): IEditorContributionDescription[] {\n\t\treturn this.editorContributions.slice(0);\n\t}\n\n\tpublic getDiffEditorContributions(): IDiffEditorContributionDescription[] {\n\t\treturn this.diffEditorContributions.slice(0);\n\t}\n\n\tpublic registerEditorAction(action: EditorAction) {\n\t\taction.register();\n\t\tthis.editorActions.push(action);\n\t}\n\n\tpublic getEditorActions(): Iterable<EditorAction> {\n\t\treturn this.editorActions;\n\t}\n\n\tpublic registerEditorCommand(editorCommand: EditorCommand) {\n\t\teditorCommand.register();\n\t\tthis.editorCommands[editorCommand.id] = editorCommand;\n\t}\n\n\tpublic getEditorCommand(commandId: string): EditorCommand {\n\t\treturn (this.editorCommands[commandId] || null);\n\t}\n\n}\nRegistry.add(Extensions.EditorCommonContributions, EditorContributionRegistry.INSTANCE);\n\nfunction registerCommand<T extends Command>(command: T): T {\n\tcommand.register();\n\treturn command;\n}\n\nexport const UndoCommand = registerCommand(new MultiCommand({\n\tid: 'undo',\n\tprecondition: undefined,\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorCore,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyZ\n\t},\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, \"&&Undo\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('undo', \"Undo\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize('undo', \"Undo\"),\n\t\torder: 1\n\t}]\n}));\n\nregisterCommand(new ProxyCommand(UndoCommand, { id: 'default:undo', precondition: undefined }));\n\nexport const RedoCommand = registerCommand(new MultiCommand({\n\tid: 'redo',\n\tprecondition: undefined,\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorCore,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyY,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyZ],\n\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyZ }\n\t},\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, \"&&Redo\"),\n\t\torder: 2\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('redo', \"Redo\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: '1_do',\n\t\ttitle: nls.localize('redo', \"Redo\"),\n\t\torder: 2\n\t}]\n}));\n\nregisterCommand(new ProxyCommand(RedoCommand, { id: 'default:redo', precondition: undefined }));\n\nexport const SelectAllCommand = registerCommand(new MultiCommand({\n\tid: 'editor.action.selectAll',\n\tprecondition: undefined,\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorCore,\n\t\tkbExpr: null,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyA\n\t},\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\tgroup: '1_basic',\n\t\ttitle: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, \"&&Select All\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('selectAll', \"Select All\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: '9_select',\n\t\ttitle: nls.localize('selectAll', \"Select All\"),\n\t\torder: 1\n\t}]\n}));\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* Registry for commands that can trigger Inline Edits (NES) when invoked.
|
|
7
|
+
*/
|
|
8
|
+
export class TriggerInlineEditCommandsRegistry {
|
|
9
|
+
static { this.REGISTERED_COMMANDS = new Set(); }
|
|
10
|
+
static getRegisteredCommands() {
|
|
11
|
+
return [...TriggerInlineEditCommandsRegistry.REGISTERED_COMMANDS];
|
|
12
|
+
}
|
|
13
|
+
static registerCommand(commandId) {
|
|
14
|
+
TriggerInlineEditCommandsRegistry.REGISTERED_COMMANDS.add(commandId);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=triggerInlineEditCommandsRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/triggerInlineEditCommandsRegistry.ts","vs/editor/browser/triggerInlineEditCommandsRegistry.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;GAEG;AACH,MAAM,OAAgB,iCAAiC;aAEvC,wBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD,MAAM,CAAC,qBAAqB;QAClC,OAAO,CAAC,GAAG,iCAAiC,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,SAAiB;QAC9C,iCAAiC,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC","file":"triggerInlineEditCommandsRegistry.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\n/**\n * Registry for commands that can trigger Inline Edits (NES) when invoked.\n */\nexport abstract class TriggerInlineEditCommandsRegistry {\n\n\tprivate static REGISTERED_COMMANDS = new Set<string>();\n\n\tpublic static getRegisteredCommands(): readonly string[] {\n\t\treturn [...TriggerInlineEditCommandsRegistry.REGISTERED_COMMANDS];\n\t}\n\n\tpublic static registerCommand(commandId: string): void {\n\t\tTriggerInlineEditCommandsRegistry.REGISTERED_COMMANDS.add(commandId);\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n/**\n * Registry for commands that can trigger Inline Edits (NES) when invoked.\n */\nexport abstract class TriggerInlineEditCommandsRegistry {\n\n\tprivate static REGISTERED_COMMANDS = new Set<string>();\n\n\tpublic static getRegisteredCommands(): readonly string[] {\n\t\treturn [...TriggerInlineEditCommandsRegistry.REGISTERED_COMMANDS];\n\t}\n\n\tpublic static registerCommand(commandId: string): void {\n\t\tTriggerInlineEditCommandsRegistry.REGISTERED_COMMANDS.add(commandId);\n\t}\n}\n"]}
|
|
@@ -91,6 +91,7 @@ export const EditSources = {
|
|
|
91
91
|
$modelId: avoidPathRedaction(data.modelId),
|
|
92
92
|
$extensionId: data.extensionId?.extensionId,
|
|
93
93
|
$extensionVersion: data.extensionId?.version,
|
|
94
|
+
$$sessionId: data.sessionId,
|
|
94
95
|
$$requestId: data.requestId,
|
|
95
96
|
$$languageId: data.languageId,
|
|
96
97
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/textModelEditSource.ts","vs/editor/common/textModelEditSource.ts"],"names":[],"mappings":"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","file":"textModelEditSource.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { prefixedUuid } from '../../base/common/uuid.js';\nimport { TextLength } from './core/text/textLength.js';\nimport { ProviderId, VersionedExtensionId } from './languages.js';\n\nconst privateSymbol = Symbol('TextModelEditSource');\n\nexport class TextModelEditSource {\n\tconstructor(\n\t\tpublic readonly metadata: ITextModelEditSourceMetadata,\n\t\t_privateCtorGuard: typeof privateSymbol,\n\t) { }\n\n\tpublic toString(): string {\n\t\treturn `${this.metadata.source}`;\n\t}\n\n\tpublic getType(): string {\n\t\tconst metadata = this.metadata;\n\t\tswitch (metadata.source) {\n\t\t\tcase 'cursor':\n\t\t\t\treturn metadata.kind;\n\t\t\tcase 'inlineCompletionAccept':\n\t\t\t\treturn metadata.source + (metadata.$nes ? ':nes' : '');\n\t\t\tcase 'unknown':\n\t\t\t\treturn metadata.name || 'unknown';\n\t\t\tdefault:\n\t\t\t\treturn metadata.source;\n\t\t}\n\t}\n\n\t/**\n\t * Converts the metadata to a key string.\n\t * Only includes properties/values that have `level` many `$` prefixes or less.\n\t*/\n\tpublic toKey(level: number, filter: { [TKey in ITextModelEditSourceMetadataKeys]?: boolean } = {}): string {\n\t\tconst metadata = this.metadata;\n\t\tconst keys = Object.entries(metadata).filter(([key, value]) => {\n\t\t\tconst filterVal = (filter as Record<string, boolean>)[key];\n\t\t\tif (filterVal !== undefined) {\n\t\t\t\treturn filterVal;\n\t\t\t}\n\n\t\t\tconst prefixCount = (key.match(/\\$/g) || []).length;\n\t\t\treturn prefixCount <= level && value !== undefined && value !== null && value !== '';\n\t\t}).map(([key, value]) => `${key}:${value}`);\n\t\treturn keys.join('-');\n\t}\n}\n\ntype TextModelEditSourceT<T> = TextModelEditSource & {\n\tmetadataT: T;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createEditSource<T extends Record<string, any>>(metadata: T): TextModelEditSourceT<T> {\n\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\treturn new TextModelEditSource(metadata as any, privateSymbol) as any;\n}\n\nexport const EditSources = {\n\tunknown(data: { name?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'unknown',\n\t\t\tname: data.name,\n\t\t} as const);\n\t},\n\n\trename: () => createEditSource({ source: 'rename' } as const),\n\n\tchatApplyEdits(data: {\n\t\tmodelId: string | undefined;\n\t\tsessionId: string | undefined;\n\t\trequestId: string | undefined;\n\t\tlanguageId: string;\n\t\tmode: string | undefined;\n\t\textensionId: VersionedExtensionId | undefined;\n\t\tcodeBlockSuggestionId: EditSuggestionId | undefined;\n\t}) {\n\t\treturn createEditSource({\n\t\t\tsource: 'Chat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$languageId: data.languageId,\n\t\t\t$$sessionId: data.sessionId,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$mode: data.mode,\n\t\t\t$$codeBlockSuggestionId: data.codeBlockSuggestionId,\n\t\t} as const);\n\t},\n\n\tchatUndoEdits: () => createEditSource({ source: 'Chat.undoEdits' } as const),\n\tchatReset: () => createEditSource({ source: 'Chat.reset' } as const),\n\n\tinlineCompletionAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionAccept',\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineCompletionPartialAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId; type: 'word' | 'line' }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionPartialAccept',\n\t\t\ttype: data.type,\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineChatApplyEdit(data: { modelId: string | undefined; requestId: string | undefined; languageId: string; extensionId: VersionedExtensionId | undefined }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineChat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\treloadFromDisk: () => createEditSource({ source: 'reloadFromDisk' } as const),\n\n\tcursor(data: { kind: 'compositionType' | 'compositionEnd' | 'type' | 'paste' | 'cut' | 'executeCommands' | 'executeCommand'; detailedSource?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'cursor',\n\t\t\tkind: data.kind,\n\t\t\tdetailedSource: data.detailedSource,\n\t\t} as const);\n\t},\n\n\tsetValue: () => createEditSource({ source: 'setValue' } as const),\n\teolChange: () => createEditSource({ source: 'eolChange' } as const),\n\tapplyEdits: () => createEditSource({ source: 'applyEdits' } as const),\n\tsnippet: () => createEditSource({ source: 'snippet' } as const),\n\tsuggest: (data: { providerId: ProviderId | undefined }) => createEditSource({ source: 'suggest', ...toProperties(data.providerId) } as const),\n\n\tcodeAction: (data: { kind: string | undefined; providerId: ProviderId | undefined }) => createEditSource({ source: 'codeAction', $kind: data.kind, ...toProperties(data.providerId) } as const)\n};\n\nfunction toProperties(version: ProviderId | undefined) {\n\tif (!version) {\n\t\treturn {};\n\t}\n\treturn {\n\t\t$extensionId: version.extensionId,\n\t\t$extensionVersion: version.extensionVersion,\n\t\t$providerId: version.providerId,\n\t};\n}\n\ntype Values<T> = T[keyof T];\nexport type ITextModelEditSourceMetadata = Values<{ [TKey in keyof typeof EditSources]: ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\ntype ITextModelEditSourceMetadataKeys = Values<{ [TKey in keyof typeof EditSources]: keyof ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\n\n\nfunction avoidPathRedaction(str: string | undefined): string | undefined {\n\tif (str === undefined) {\n\t\treturn undefined;\n\t}\n\t// To avoid false-positive file path redaction.\n\treturn str.replaceAll('/', '|');\n}\n\n\nexport class EditDeltaInfo {\n\tpublic static fromText(text: string): EditDeltaInfo {\n\t\tconst linesAdded = TextLength.ofText(text).lineCount;\n\t\tconst charsAdded = text.length;\n\t\treturn new EditDeltaInfo(linesAdded, 0, charsAdded, 0);\n\t}\n\n\tpublic static tryCreate(\n\t\tlinesAdded: number | undefined,\n\t\tlinesRemoved: number | undefined,\n\t\tcharsAdded: number | undefined,\n\t\tcharsRemoved: number | undefined\n\t): EditDeltaInfo | undefined {\n\t\tif (linesAdded === undefined || linesRemoved === undefined || charsAdded === undefined || charsRemoved === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn new EditDeltaInfo(linesAdded, linesRemoved, charsAdded, charsRemoved);\n\t}\n\n\tconstructor(\n\t\tpublic readonly linesAdded: number,\n\t\tpublic readonly linesRemoved: number,\n\t\tpublic readonly charsAdded: number,\n\t\tpublic readonly charsRemoved: number\n\t) { }\n}\n\n\n/**\n * This is an opaque serializable type that represents a unique identity for an edit.\n */\nexport interface EditSuggestionId {\n}\n\nexport namespace EditSuggestionId {\n\t/**\n\t * Use AiEditTelemetryServiceImpl to create a new id!\n\t*/\n\texport function newId(): EditSuggestionId {\n\t\tconst id = prefixedUuid('sgt');\n\t\treturn toEditIdentity(id);\n\t}\n}\n\nfunction toEditIdentity(id: string): EditSuggestionId {\n\treturn id as unknown as EditSuggestionId;\n}\n","\nimport { prefixedUuid } from '../../base/common/uuid.js';\nimport { TextLength } from './core/text/textLength.js';\nimport { ProviderId, VersionedExtensionId } from './languages.js';\n\nconst privateSymbol = Symbol('TextModelEditSource');\n\nexport class TextModelEditSource {\n\tconstructor(\n\t\tpublic readonly metadata: ITextModelEditSourceMetadata,\n\t\t_privateCtorGuard: typeof privateSymbol,\n\t) { }\n\n\tpublic toString(): string {\n\t\treturn `${this.metadata.source}`;\n\t}\n\n\tpublic getType(): string {\n\t\tconst metadata = this.metadata;\n\t\tswitch (metadata.source) {\n\t\t\tcase 'cursor':\n\t\t\t\treturn metadata.kind;\n\t\t\tcase 'inlineCompletionAccept':\n\t\t\t\treturn metadata.source + (metadata.$nes ? ':nes' : '');\n\t\t\tcase 'unknown':\n\t\t\t\treturn metadata.name || 'unknown';\n\t\t\tdefault:\n\t\t\t\treturn metadata.source;\n\t\t}\n\t}\n\n\t/**\n\t * Converts the metadata to a key string.\n\t * Only includes properties/values that have `level` many `$` prefixes or less.\n\t*/\n\tpublic toKey(level: number, filter: { [TKey in ITextModelEditSourceMetadataKeys]?: boolean } = {}): string {\n\t\tconst metadata = this.metadata;\n\t\tconst keys = Object.entries(metadata).filter(([key, value]) => {\n\t\t\tconst filterVal = (filter as Record<string, boolean>)[key];\n\t\t\tif (filterVal !== undefined) {\n\t\t\t\treturn filterVal;\n\t\t\t}\n\n\t\t\tconst prefixCount = (key.match(/\\$/g) || []).length;\n\t\t\treturn prefixCount <= level && value !== undefined && value !== null && value !== '';\n\t\t}).map(([key, value]) => `${key}:${value}`);\n\t\treturn keys.join('-');\n\t}\n}\n\ntype TextModelEditSourceT<T> = TextModelEditSource & {\n\tmetadataT: T;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createEditSource<T extends Record<string, any>>(metadata: T): TextModelEditSourceT<T> {\n\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\treturn new TextModelEditSource(metadata as any, privateSymbol) as any;\n}\n\nexport const EditSources = {\n\tunknown(data: { name?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'unknown',\n\t\t\tname: data.name,\n\t\t} as const);\n\t},\n\n\trename: () => createEditSource({ source: 'rename' } as const),\n\n\tchatApplyEdits(data: {\n\t\tmodelId: string | undefined;\n\t\tsessionId: string | undefined;\n\t\trequestId: string | undefined;\n\t\tlanguageId: string;\n\t\tmode: string | undefined;\n\t\textensionId: VersionedExtensionId | undefined;\n\t\tcodeBlockSuggestionId: EditSuggestionId | undefined;\n\t}) {\n\t\treturn createEditSource({\n\t\t\tsource: 'Chat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$languageId: data.languageId,\n\t\t\t$$sessionId: data.sessionId,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$mode: data.mode,\n\t\t\t$$codeBlockSuggestionId: data.codeBlockSuggestionId,\n\t\t} as const);\n\t},\n\n\tchatUndoEdits: () => createEditSource({ source: 'Chat.undoEdits' } as const),\n\tchatReset: () => createEditSource({ source: 'Chat.reset' } as const),\n\n\tinlineCompletionAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionAccept',\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineCompletionPartialAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId; type: 'word' | 'line' }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionPartialAccept',\n\t\t\ttype: data.type,\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineChatApplyEdit(data: { modelId: string | undefined; requestId: string | undefined; languageId: string; extensionId: VersionedExtensionId | undefined }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineChat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\treloadFromDisk: () => createEditSource({ source: 'reloadFromDisk' } as const),\n\n\tcursor(data: { kind: 'compositionType' | 'compositionEnd' | 'type' | 'paste' | 'cut' | 'executeCommands' | 'executeCommand'; detailedSource?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'cursor',\n\t\t\tkind: data.kind,\n\t\t\tdetailedSource: data.detailedSource,\n\t\t} as const);\n\t},\n\n\tsetValue: () => createEditSource({ source: 'setValue' } as const),\n\teolChange: () => createEditSource({ source: 'eolChange' } as const),\n\tapplyEdits: () => createEditSource({ source: 'applyEdits' } as const),\n\tsnippet: () => createEditSource({ source: 'snippet' } as const),\n\tsuggest: (data: { providerId: ProviderId | undefined }) => createEditSource({ source: 'suggest', ...toProperties(data.providerId) } as const),\n\n\tcodeAction: (data: { kind: string | undefined; providerId: ProviderId | undefined }) => createEditSource({ source: 'codeAction', $kind: data.kind, ...toProperties(data.providerId) } as const)\n};\n\nfunction toProperties(version: ProviderId | undefined) {\n\tif (!version) {\n\t\treturn {};\n\t}\n\treturn {\n\t\t$extensionId: version.extensionId,\n\t\t$extensionVersion: version.extensionVersion,\n\t\t$providerId: version.providerId,\n\t};\n}\n\ntype Values<T> = T[keyof T];\nexport type ITextModelEditSourceMetadata = Values<{ [TKey in keyof typeof EditSources]: ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\ntype ITextModelEditSourceMetadataKeys = Values<{ [TKey in keyof typeof EditSources]: keyof ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\n\n\nfunction avoidPathRedaction(str: string | undefined): string | undefined {\n\tif (str === undefined) {\n\t\treturn undefined;\n\t}\n\t// To avoid false-positive file path redaction.\n\treturn str.replaceAll('/', '|');\n}\n\n\nexport class EditDeltaInfo {\n\tpublic static fromText(text: string): EditDeltaInfo {\n\t\tconst linesAdded = TextLength.ofText(text).lineCount;\n\t\tconst charsAdded = text.length;\n\t\treturn new EditDeltaInfo(linesAdded, 0, charsAdded, 0);\n\t}\n\n\tpublic static tryCreate(\n\t\tlinesAdded: number | undefined,\n\t\tlinesRemoved: number | undefined,\n\t\tcharsAdded: number | undefined,\n\t\tcharsRemoved: number | undefined\n\t): EditDeltaInfo | undefined {\n\t\tif (linesAdded === undefined || linesRemoved === undefined || charsAdded === undefined || charsRemoved === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn new EditDeltaInfo(linesAdded, linesRemoved, charsAdded, charsRemoved);\n\t}\n\n\tconstructor(\n\t\tpublic readonly linesAdded: number,\n\t\tpublic readonly linesRemoved: number,\n\t\tpublic readonly charsAdded: number,\n\t\tpublic readonly charsRemoved: number\n\t) { }\n}\n\n\n/**\n * This is an opaque serializable type that represents a unique identity for an edit.\n */\nexport interface EditSuggestionId {\n}\n\nexport namespace EditSuggestionId {\n\t/**\n\t * Use AiEditTelemetryServiceImpl to create a new id!\n\t*/\n\texport function newId(): EditSuggestionId {\n\t\tconst id = prefixedUuid('sgt');\n\t\treturn toEditIdentity(id);\n\t}\n}\n\nfunction toEditIdentity(id: string): EditSuggestionId {\n\treturn id as unknown as EditSuggestionId;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/textModelEditSource.ts","vs/editor/common/textModelEditSource.ts"],"names":[],"mappings":"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","file":"textModelEditSource.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { prefixedUuid } from '../../base/common/uuid.js';\nimport { TextLength } from './core/text/textLength.js';\nimport { ProviderId, VersionedExtensionId } from './languages.js';\n\nconst privateSymbol = Symbol('TextModelEditSource');\n\nexport class TextModelEditSource {\n\tconstructor(\n\t\tpublic readonly metadata: ITextModelEditSourceMetadata,\n\t\t_privateCtorGuard: typeof privateSymbol,\n\t) { }\n\n\tpublic toString(): string {\n\t\treturn `${this.metadata.source}`;\n\t}\n\n\tpublic getType(): string {\n\t\tconst metadata = this.metadata;\n\t\tswitch (metadata.source) {\n\t\t\tcase 'cursor':\n\t\t\t\treturn metadata.kind;\n\t\t\tcase 'inlineCompletionAccept':\n\t\t\t\treturn metadata.source + (metadata.$nes ? ':nes' : '');\n\t\t\tcase 'unknown':\n\t\t\t\treturn metadata.name || 'unknown';\n\t\t\tdefault:\n\t\t\t\treturn metadata.source;\n\t\t}\n\t}\n\n\t/**\n\t * Converts the metadata to a key string.\n\t * Only includes properties/values that have `level` many `$` prefixes or less.\n\t*/\n\tpublic toKey(level: number, filter: { [TKey in ITextModelEditSourceMetadataKeys]?: boolean } = {}): string {\n\t\tconst metadata = this.metadata;\n\t\tconst keys = Object.entries(metadata).filter(([key, value]) => {\n\t\t\tconst filterVal = (filter as Record<string, boolean>)[key];\n\t\t\tif (filterVal !== undefined) {\n\t\t\t\treturn filterVal;\n\t\t\t}\n\n\t\t\tconst prefixCount = (key.match(/\\$/g) || []).length;\n\t\t\treturn prefixCount <= level && value !== undefined && value !== null && value !== '';\n\t\t}).map(([key, value]) => `${key}:${value}`);\n\t\treturn keys.join('-');\n\t}\n}\n\ntype TextModelEditSourceT<T> = TextModelEditSource & {\n\tmetadataT: T;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createEditSource<T extends Record<string, any>>(metadata: T): TextModelEditSourceT<T> {\n\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\treturn new TextModelEditSource(metadata as any, privateSymbol) as any;\n}\n\nexport const EditSources = {\n\tunknown(data: { name?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'unknown',\n\t\t\tname: data.name,\n\t\t} as const);\n\t},\n\n\trename: () => createEditSource({ source: 'rename' } as const),\n\n\tchatApplyEdits(data: {\n\t\tmodelId: string | undefined;\n\t\tsessionId: string | undefined;\n\t\trequestId: string | undefined;\n\t\tlanguageId: string;\n\t\tmode: string | undefined;\n\t\textensionId: VersionedExtensionId | undefined;\n\t\tcodeBlockSuggestionId: EditSuggestionId | undefined;\n\t}) {\n\t\treturn createEditSource({\n\t\t\tsource: 'Chat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$languageId: data.languageId,\n\t\t\t$$sessionId: data.sessionId,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$mode: data.mode,\n\t\t\t$$codeBlockSuggestionId: data.codeBlockSuggestionId,\n\t\t} as const);\n\t},\n\n\tchatUndoEdits: () => createEditSource({ source: 'Chat.undoEdits' } as const),\n\tchatReset: () => createEditSource({ source: 'Chat.reset' } as const),\n\n\tinlineCompletionAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionAccept',\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineCompletionPartialAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId; type: 'word' | 'line' }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionPartialAccept',\n\t\t\ttype: data.type,\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineChatApplyEdit(data: { modelId: string | undefined; requestId: string | undefined; sessionId: string | undefined; languageId: string; extensionId: VersionedExtensionId | undefined }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineChat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$sessionId: data.sessionId,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\treloadFromDisk: () => createEditSource({ source: 'reloadFromDisk' } as const),\n\n\tcursor(data: { kind: 'compositionType' | 'compositionEnd' | 'type' | 'paste' | 'cut' | 'executeCommands' | 'executeCommand'; detailedSource?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'cursor',\n\t\t\tkind: data.kind,\n\t\t\tdetailedSource: data.detailedSource,\n\t\t} as const);\n\t},\n\n\tsetValue: () => createEditSource({ source: 'setValue' } as const),\n\teolChange: () => createEditSource({ source: 'eolChange' } as const),\n\tapplyEdits: () => createEditSource({ source: 'applyEdits' } as const),\n\tsnippet: () => createEditSource({ source: 'snippet' } as const),\n\tsuggest: (data: { providerId: ProviderId | undefined }) => createEditSource({ source: 'suggest', ...toProperties(data.providerId) } as const),\n\n\tcodeAction: (data: { kind: string | undefined; providerId: ProviderId | undefined }) => createEditSource({ source: 'codeAction', $kind: data.kind, ...toProperties(data.providerId) } as const)\n};\n\nfunction toProperties(version: ProviderId | undefined) {\n\tif (!version) {\n\t\treturn {};\n\t}\n\treturn {\n\t\t$extensionId: version.extensionId,\n\t\t$extensionVersion: version.extensionVersion,\n\t\t$providerId: version.providerId,\n\t};\n}\n\ntype Values<T> = T[keyof T];\nexport type ITextModelEditSourceMetadata = Values<{ [TKey in keyof typeof EditSources]: ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\ntype ITextModelEditSourceMetadataKeys = Values<{ [TKey in keyof typeof EditSources]: keyof ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\n\n\nfunction avoidPathRedaction(str: string | undefined): string | undefined {\n\tif (str === undefined) {\n\t\treturn undefined;\n\t}\n\t// To avoid false-positive file path redaction.\n\treturn str.replaceAll('/', '|');\n}\n\n\nexport class EditDeltaInfo {\n\tpublic static fromText(text: string): EditDeltaInfo {\n\t\tconst linesAdded = TextLength.ofText(text).lineCount;\n\t\tconst charsAdded = text.length;\n\t\treturn new EditDeltaInfo(linesAdded, 0, charsAdded, 0);\n\t}\n\n\tpublic static tryCreate(\n\t\tlinesAdded: number | undefined,\n\t\tlinesRemoved: number | undefined,\n\t\tcharsAdded: number | undefined,\n\t\tcharsRemoved: number | undefined\n\t): EditDeltaInfo | undefined {\n\t\tif (linesAdded === undefined || linesRemoved === undefined || charsAdded === undefined || charsRemoved === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn new EditDeltaInfo(linesAdded, linesRemoved, charsAdded, charsRemoved);\n\t}\n\n\tconstructor(\n\t\tpublic readonly linesAdded: number,\n\t\tpublic readonly linesRemoved: number,\n\t\tpublic readonly charsAdded: number,\n\t\tpublic readonly charsRemoved: number\n\t) { }\n}\n\n\n/**\n * This is an opaque serializable type that represents a unique identity for an edit.\n */\nexport interface EditSuggestionId {\n}\n\nexport namespace EditSuggestionId {\n\t/**\n\t * Use AiEditTelemetryServiceImpl to create a new id!\n\t*/\n\texport function newId(): EditSuggestionId {\n\t\tconst id = prefixedUuid('sgt');\n\t\treturn toEditIdentity(id);\n\t}\n}\n\nfunction toEditIdentity(id: string): EditSuggestionId {\n\treturn id as unknown as EditSuggestionId;\n}\n","\nimport { prefixedUuid } from '../../base/common/uuid.js';\nimport { TextLength } from './core/text/textLength.js';\nimport { ProviderId, VersionedExtensionId } from './languages.js';\n\nconst privateSymbol = Symbol('TextModelEditSource');\n\nexport class TextModelEditSource {\n\tconstructor(\n\t\tpublic readonly metadata: ITextModelEditSourceMetadata,\n\t\t_privateCtorGuard: typeof privateSymbol,\n\t) { }\n\n\tpublic toString(): string {\n\t\treturn `${this.metadata.source}`;\n\t}\n\n\tpublic getType(): string {\n\t\tconst metadata = this.metadata;\n\t\tswitch (metadata.source) {\n\t\t\tcase 'cursor':\n\t\t\t\treturn metadata.kind;\n\t\t\tcase 'inlineCompletionAccept':\n\t\t\t\treturn metadata.source + (metadata.$nes ? ':nes' : '');\n\t\t\tcase 'unknown':\n\t\t\t\treturn metadata.name || 'unknown';\n\t\t\tdefault:\n\t\t\t\treturn metadata.source;\n\t\t}\n\t}\n\n\t/**\n\t * Converts the metadata to a key string.\n\t * Only includes properties/values that have `level` many `$` prefixes or less.\n\t*/\n\tpublic toKey(level: number, filter: { [TKey in ITextModelEditSourceMetadataKeys]?: boolean } = {}): string {\n\t\tconst metadata = this.metadata;\n\t\tconst keys = Object.entries(metadata).filter(([key, value]) => {\n\t\t\tconst filterVal = (filter as Record<string, boolean>)[key];\n\t\t\tif (filterVal !== undefined) {\n\t\t\t\treturn filterVal;\n\t\t\t}\n\n\t\t\tconst prefixCount = (key.match(/\\$/g) || []).length;\n\t\t\treturn prefixCount <= level && value !== undefined && value !== null && value !== '';\n\t\t}).map(([key, value]) => `${key}:${value}`);\n\t\treturn keys.join('-');\n\t}\n}\n\ntype TextModelEditSourceT<T> = TextModelEditSource & {\n\tmetadataT: T;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createEditSource<T extends Record<string, any>>(metadata: T): TextModelEditSourceT<T> {\n\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\treturn new TextModelEditSource(metadata as any, privateSymbol) as any;\n}\n\nexport const EditSources = {\n\tunknown(data: { name?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'unknown',\n\t\t\tname: data.name,\n\t\t} as const);\n\t},\n\n\trename: () => createEditSource({ source: 'rename' } as const),\n\n\tchatApplyEdits(data: {\n\t\tmodelId: string | undefined;\n\t\tsessionId: string | undefined;\n\t\trequestId: string | undefined;\n\t\tlanguageId: string;\n\t\tmode: string | undefined;\n\t\textensionId: VersionedExtensionId | undefined;\n\t\tcodeBlockSuggestionId: EditSuggestionId | undefined;\n\t}) {\n\t\treturn createEditSource({\n\t\t\tsource: 'Chat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$languageId: data.languageId,\n\t\t\t$$sessionId: data.sessionId,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$mode: data.mode,\n\t\t\t$$codeBlockSuggestionId: data.codeBlockSuggestionId,\n\t\t} as const);\n\t},\n\n\tchatUndoEdits: () => createEditSource({ source: 'Chat.undoEdits' } as const),\n\tchatReset: () => createEditSource({ source: 'Chat.reset' } as const),\n\n\tinlineCompletionAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionAccept',\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineCompletionPartialAccept(data: { nes: boolean; requestUuid: string; languageId: string; providerId?: ProviderId; type: 'word' | 'line' }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineCompletionPartialAccept',\n\t\t\ttype: data.type,\n\t\t\t$nes: data.nes,\n\t\t\t...toProperties(data.providerId),\n\t\t\t$$requestUuid: data.requestUuid,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\tinlineChatApplyEdit(data: { modelId: string | undefined; requestId: string | undefined; sessionId: string | undefined; languageId: string; extensionId: VersionedExtensionId | undefined }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'inlineChat.applyEdits',\n\t\t\t$modelId: avoidPathRedaction(data.modelId),\n\t\t\t$extensionId: data.extensionId?.extensionId,\n\t\t\t$extensionVersion: data.extensionId?.version,\n\t\t\t$$sessionId: data.sessionId,\n\t\t\t$$requestId: data.requestId,\n\t\t\t$$languageId: data.languageId,\n\t\t} as const);\n\t},\n\n\treloadFromDisk: () => createEditSource({ source: 'reloadFromDisk' } as const),\n\n\tcursor(data: { kind: 'compositionType' | 'compositionEnd' | 'type' | 'paste' | 'cut' | 'executeCommands' | 'executeCommand'; detailedSource?: string | null }) {\n\t\treturn createEditSource({\n\t\t\tsource: 'cursor',\n\t\t\tkind: data.kind,\n\t\t\tdetailedSource: data.detailedSource,\n\t\t} as const);\n\t},\n\n\tsetValue: () => createEditSource({ source: 'setValue' } as const),\n\teolChange: () => createEditSource({ source: 'eolChange' } as const),\n\tapplyEdits: () => createEditSource({ source: 'applyEdits' } as const),\n\tsnippet: () => createEditSource({ source: 'snippet' } as const),\n\tsuggest: (data: { providerId: ProviderId | undefined }) => createEditSource({ source: 'suggest', ...toProperties(data.providerId) } as const),\n\n\tcodeAction: (data: { kind: string | undefined; providerId: ProviderId | undefined }) => createEditSource({ source: 'codeAction', $kind: data.kind, ...toProperties(data.providerId) } as const)\n};\n\nfunction toProperties(version: ProviderId | undefined) {\n\tif (!version) {\n\t\treturn {};\n\t}\n\treturn {\n\t\t$extensionId: version.extensionId,\n\t\t$extensionVersion: version.extensionVersion,\n\t\t$providerId: version.providerId,\n\t};\n}\n\ntype Values<T> = T[keyof T];\nexport type ITextModelEditSourceMetadata = Values<{ [TKey in keyof typeof EditSources]: ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\ntype ITextModelEditSourceMetadataKeys = Values<{ [TKey in keyof typeof EditSources]: keyof ReturnType<typeof EditSources[TKey]>['metadataT'] }>;\n\n\nfunction avoidPathRedaction(str: string | undefined): string | undefined {\n\tif (str === undefined) {\n\t\treturn undefined;\n\t}\n\t// To avoid false-positive file path redaction.\n\treturn str.replaceAll('/', '|');\n}\n\n\nexport class EditDeltaInfo {\n\tpublic static fromText(text: string): EditDeltaInfo {\n\t\tconst linesAdded = TextLength.ofText(text).lineCount;\n\t\tconst charsAdded = text.length;\n\t\treturn new EditDeltaInfo(linesAdded, 0, charsAdded, 0);\n\t}\n\n\tpublic static tryCreate(\n\t\tlinesAdded: number | undefined,\n\t\tlinesRemoved: number | undefined,\n\t\tcharsAdded: number | undefined,\n\t\tcharsRemoved: number | undefined\n\t): EditDeltaInfo | undefined {\n\t\tif (linesAdded === undefined || linesRemoved === undefined || charsAdded === undefined || charsRemoved === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn new EditDeltaInfo(linesAdded, linesRemoved, charsAdded, charsRemoved);\n\t}\n\n\tconstructor(\n\t\tpublic readonly linesAdded: number,\n\t\tpublic readonly linesRemoved: number,\n\t\tpublic readonly charsAdded: number,\n\t\tpublic readonly charsRemoved: number\n\t) { }\n}\n\n\n/**\n * This is an opaque serializable type that represents a unique identity for an edit.\n */\nexport interface EditSuggestionId {\n}\n\nexport namespace EditSuggestionId {\n\t/**\n\t * Use AiEditTelemetryServiceImpl to create a new id!\n\t*/\n\texport function newId(): EditSuggestionId {\n\t\tconst id = prefixedUuid('sgt');\n\t\treturn toEditIdentity(id);\n\t}\n}\n\nfunction toEditIdentity(id: string): EditSuggestionId {\n\treturn id as unknown as EditSuggestionId;\n}\n"]}
|
|
@@ -75,7 +75,8 @@ class RemoveBracketsAction extends EditorAction {
|
|
|
75
75
|
kbExpr: EditorContextKeys.editorTextFocus,
|
|
76
76
|
primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 1 /* KeyCode.Backspace */,
|
|
77
77
|
weight: 100 /* KeybindingWeight.EditorContrib */
|
|
78
|
-
}
|
|
78
|
+
},
|
|
79
|
+
canTriggerInlineEdits: true,
|
|
79
80
|
});
|
|
80
81
|
}
|
|
81
82
|
run(accessor, editor) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/bracketMatching/browser/bracketMatching.ts"],"names":[],"mappings":"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","file":"bracketMatching.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 { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport './bracketMatching.css';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorContribution, IEditorDecorationsCollection } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IModelDeltaDecoration, OverviewRulerLane, TrackedRangeStickiness } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\n\nconst overviewRulerBracketMatchForeground = registerColor('editorOverviewRuler.bracketMatchForeground', '#A0A0A0', nls.localize('overviewRulerBracketMatchForeground', 'Overview ruler marker color for matching brackets.'));\n\nclass JumpToBracketAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.jumpToBracket',\n\t\t\tlabel: nls.localize2('smartSelect.jumpBracket', \"Go to Bracket\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Backslash,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tBracketMatchingController.get(editor)?.jumpToBracket();\n\t}\n}\n\nclass SelectToBracketAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.selectToBracket',\n\t\t\tlabel: nls.localize2('smartSelect.selectToBracket', \"Select to Bracket\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('smartSelect.selectToBracketDescription', \"Select the text inside and including the brackets or curly braces\"),\n\t\t\t\targs: [{\n\t\t\t\t\tname: 'args',\n\t\t\t\t\tschema: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t'selectBrackets': {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\tdefault: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void {\n\t\tlet selectBrackets = true;\n\t\tif (args && args.selectBrackets === false) {\n\t\t\tselectBrackets = false;\n\t\t}\n\t\tBracketMatchingController.get(editor)?.selectToBracket(selectBrackets);\n\t}\n}\nclass RemoveBracketsAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.removeBrackets',\n\t\t\tlabel: nls.localize2('smartSelect.removeBrackets', \"Remove Brackets\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Backspace,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tBracketMatchingController.get(editor)?.removeBrackets(this.id);\n\t}\n}\n\ntype Brackets = [Range, Range];\n\nclass BracketsData {\n\tpublic readonly position: Position;\n\tpublic readonly brackets: Brackets | null;\n\tpublic readonly options: ModelDecorationOptions;\n\n\tconstructor(position: Position, brackets: Brackets | null, options: ModelDecorationOptions) {\n\t\tthis.position = position;\n\t\tthis.brackets = brackets;\n\t\tthis.options = options;\n\t}\n}\n\nexport class BracketMatchingController extends Disposable implements IEditorContribution {\n\tpublic static readonly ID = 'editor.contrib.bracketMatchingController';\n\n\tpublic static get(editor: ICodeEditor): BracketMatchingController | null {\n\t\treturn editor.getContribution<BracketMatchingController>(BracketMatchingController.ID);\n\t}\n\n\tprivate readonly _editor: ICodeEditor;\n\n\tprivate _lastBracketsData: BracketsData[];\n\tprivate _lastVersionId: number;\n\tprivate readonly _decorations: IEditorDecorationsCollection;\n\tprivate readonly _updateBracketsSoon: RunOnceScheduler;\n\tprivate _matchBrackets: 'never' | 'near' | 'always';\n\n\tconstructor(\n\t\teditor: ICodeEditor\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._lastBracketsData = [];\n\t\tthis._lastVersionId = 0;\n\t\tthis._decorations = this._editor.createDecorationsCollection();\n\t\tthis._updateBracketsSoon = this._register(new RunOnceScheduler(() => this._updateBrackets(), 50));\n\t\tthis._matchBrackets = this._editor.getOption(EditorOption.matchBrackets);\n\n\t\tthis._updateBracketsSoon.schedule();\n\t\tthis._register(editor.onDidChangeCursorPosition((e) => {\n\n\t\t\tif (this._matchBrackets === 'never') {\n\t\t\t\t// Early exit if nothing needs to be done!\n\t\t\t\t// Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeModelContent((e) => {\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeModel((e) => {\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeModelLanguageConfiguration((e) => {\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeConfiguration((e) => {\n\t\t\tif (e.hasChanged(EditorOption.matchBrackets)) {\n\t\t\t\tthis._matchBrackets = this._editor.getOption(EditorOption.matchBrackets);\n\t\t\t\tthis._decorations.clear();\n\t\t\t\tthis._lastBracketsData = [];\n\t\t\t\tthis._lastVersionId = 0;\n\t\t\t\tthis._updateBracketsSoon.schedule();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(editor.onDidBlurEditorWidget(() => {\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\n\t\tthis._register(editor.onDidFocusEditorWidget(() => {\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t}\n\n\tpublic jumpToBracket(): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst newSelections = this._editor.getSelections().map(selection => {\n\t\t\tconst position = selection.getStartPosition();\n\n\t\t\t// find matching brackets if position is on a bracket\n\t\t\tconst brackets = model.bracketPairs.matchBracket(position);\n\t\t\tlet newCursorPosition: Position | null = null;\n\t\t\tif (brackets) {\n\t\t\t\tif (brackets[0].containsPosition(position) && !brackets[1].containsPosition(position)) {\n\t\t\t\t\tnewCursorPosition = brackets[1].getStartPosition();\n\t\t\t\t} else if (brackets[1].containsPosition(position)) {\n\t\t\t\t\tnewCursorPosition = brackets[0].getStartPosition();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// find the enclosing brackets if the position isn't on a matching bracket\n\t\t\t\tconst enclosingBrackets = model.bracketPairs.findEnclosingBrackets(position);\n\t\t\t\tif (enclosingBrackets) {\n\t\t\t\t\tnewCursorPosition = enclosingBrackets[1].getStartPosition();\n\t\t\t\t} else {\n\t\t\t\t\t// no enclosing brackets, try the very first next bracket\n\t\t\t\t\tconst nextBracket = model.bracketPairs.findNextBracket(position);\n\t\t\t\t\tif (nextBracket && nextBracket.range) {\n\t\t\t\t\t\tnewCursorPosition = nextBracket.range.getStartPosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newCursorPosition) {\n\t\t\t\treturn new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\n\t\t\t}\n\t\t\treturn new Selection(position.lineNumber, position.column, position.lineNumber, position.column);\n\t\t});\n\n\t\tthis._editor.setSelections(newSelections);\n\t\tthis._editor.revealRange(newSelections[0]);\n\t}\n\n\tpublic selectToBracket(selectBrackets: boolean): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst newSelections: Selection[] = [];\n\n\t\tthis._editor.getSelections().forEach(selection => {\n\t\t\tconst position = selection.getStartPosition();\n\t\t\tlet brackets = model.bracketPairs.matchBracket(position);\n\n\t\t\tif (!brackets) {\n\t\t\t\tbrackets = model.bracketPairs.findEnclosingBrackets(position);\n\t\t\t\tif (!brackets) {\n\t\t\t\t\tconst nextBracket = model.bracketPairs.findNextBracket(position);\n\t\t\t\t\tif (nextBracket && nextBracket.range) {\n\t\t\t\t\t\tbrackets = model.bracketPairs.matchBracket(nextBracket.range.getStartPosition());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet selectFrom: Position | null = null;\n\t\t\tlet selectTo: Position | null = null;\n\n\t\t\tif (brackets) {\n\t\t\t\tbrackets.sort(Range.compareRangesUsingStarts);\n\t\t\t\tconst [open, close] = brackets;\n\t\t\t\tselectFrom = selectBrackets ? open.getStartPosition() : open.getEndPosition();\n\t\t\t\tselectTo = selectBrackets ? close.getEndPosition() : close.getStartPosition();\n\n\t\t\t\tif (close.containsPosition(position)) {\n\t\t\t\t\t// select backwards if the cursor was on the closing bracket\n\t\t\t\t\tconst tmp = selectFrom;\n\t\t\t\t\tselectFrom = selectTo;\n\t\t\t\t\tselectTo = tmp;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (selectFrom && selectTo) {\n\t\t\t\tnewSelections.push(new Selection(selectFrom.lineNumber, selectFrom.column, selectTo.lineNumber, selectTo.column));\n\t\t\t}\n\t\t});\n\n\t\tif (newSelections.length > 0) {\n\t\t\tthis._editor.setSelections(newSelections);\n\t\t\tthis._editor.revealRange(newSelections[0]);\n\t\t}\n\t}\n\tpublic removeBrackets(editSource?: string): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tthis._editor.getSelections().forEach((selection) => {\n\t\t\tconst position = selection.getPosition();\n\n\t\t\tlet brackets = model.bracketPairs.matchBracket(position);\n\t\t\tif (!brackets) {\n\t\t\t\tbrackets = model.bracketPairs.findEnclosingBrackets(position);\n\t\t\t}\n\t\t\tif (brackets) {\n\t\t\t\tthis._editor.pushUndoStop();\n\t\t\t\tthis._editor.executeEdits(\n\t\t\t\t\teditSource,\n\t\t\t\t\t[\n\t\t\t\t\t\t{ range: brackets[0], text: '' },\n\t\t\t\t\t\t{ range: brackets[1], text: '' }\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t\tthis._editor.pushUndoStop();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate static readonly _DECORATION_OPTIONS_WITH_OVERVIEW_RULER = ModelDecorationOptions.register({\n\t\tdescription: 'bracket-match-overview',\n\t\tstickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n\t\tclassName: 'bracket-match',\n\t\toverviewRuler: {\n\t\t\tcolor: themeColorFromId(overviewRulerBracketMatchForeground),\n\t\t\tposition: OverviewRulerLane.Center\n\t\t}\n\t});\n\n\tprivate static readonly _DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER = ModelDecorationOptions.register({\n\t\tdescription: 'bracket-match-no-overview',\n\t\tstickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n\t\tclassName: 'bracket-match'\n\t});\n\n\tprivate _updateBrackets(): void {\n\t\tif (this._matchBrackets === 'never') {\n\t\t\treturn;\n\t\t}\n\t\tthis._recomputeBrackets();\n\n\t\tconst newDecorations: IModelDeltaDecoration[] = [];\n\t\tlet newDecorationsLen = 0;\n\t\tfor (const bracketData of this._lastBracketsData) {\n\t\t\tconst brackets = bracketData.brackets;\n\t\t\tif (brackets) {\n\t\t\t\tnewDecorations[newDecorationsLen++] = { range: brackets[0], options: bracketData.options };\n\t\t\t\tnewDecorations[newDecorationsLen++] = { range: brackets[1], options: bracketData.options };\n\t\t\t}\n\t\t}\n\n\t\tthis._decorations.set(newDecorations);\n\t}\n\n\tprivate _recomputeBrackets(): void {\n\t\tif (!this._editor.hasModel() || !this._editor.hasWidgetFocus()) {\n\t\t\t// no model or no focus => no brackets!\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._lastVersionId = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = this._editor.getSelections();\n\t\tif (selections.length > 100) {\n\t\t\t// no bracket matching for high numbers of selections\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._lastVersionId = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst versionId = model.getVersionId();\n\t\tlet previousData: BracketsData[] = [];\n\t\tif (this._lastVersionId === versionId) {\n\t\t\t// use the previous data only if the model is at the same version id\n\t\t\tpreviousData = this._lastBracketsData;\n\t\t}\n\n\t\tconst positions: Position[] = [];\n\t\tlet positionsLen = 0;\n\t\tfor (let i = 0, len = selections.length; i < len; i++) {\n\t\t\tconst selection = selections[i];\n\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\t// will bracket match a cursor only if the selection is collapsed\n\t\t\t\tpositions[positionsLen++] = selection.getStartPosition();\n\t\t\t}\n\t\t}\n\n\t\t// sort positions for `previousData` cache hits\n\t\tif (positions.length > 1) {\n\t\t\tpositions.sort(Position.compare);\n\t\t}\n\n\t\tconst newData: BracketsData[] = [];\n\t\tlet newDataLen = 0;\n\t\tlet previousIndex = 0;\n\t\tconst previousLen = previousData.length;\n\t\tfor (let i = 0, len = positions.length; i < len; i++) {\n\t\t\tconst position = positions[i];\n\n\t\t\twhile (previousIndex < previousLen && previousData[previousIndex].position.isBefore(position)) {\n\t\t\t\tpreviousIndex++;\n\t\t\t}\n\n\t\t\tif (previousIndex < previousLen && previousData[previousIndex].position.equals(position)) {\n\t\t\t\tnewData[newDataLen++] = previousData[previousIndex];\n\t\t\t} else {\n\t\t\t\tlet brackets = model.bracketPairs.matchBracket(position, 20 /* give at most 20ms to compute */);\n\t\t\t\tlet options = BracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;\n\t\t\t\tif (!brackets && this._matchBrackets === 'always') {\n\t\t\t\t\tbrackets = model.bracketPairs.findEnclosingBrackets(position, 20 /* give at most 20ms to compute */);\n\t\t\t\t\toptions = BracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER;\n\t\t\t\t}\n\t\t\t\tnewData[newDataLen++] = new BracketsData(position, brackets, options);\n\t\t\t}\n\t\t}\n\n\t\tthis._lastBracketsData = newData;\n\t\tthis._lastVersionId = versionId;\n\t}\n}\n\nregisterEditorContribution(BracketMatchingController.ID, BracketMatchingController, EditorContributionInstantiation.AfterFirstRender);\nregisterEditorAction(SelectToBracketAction);\nregisterEditorAction(JumpToBracketAction);\nregisterEditorAction(RemoveBracketsAction);\n\n// Go to menu\nMenuRegistry.appendMenuItem(MenuId.MenubarGoMenu, {\n\tgroup: '5_infile_nav',\n\tcommand: {\n\t\tid: 'editor.action.jumpToBracket',\n\t\ttitle: nls.localize({ key: 'miGoToBracket', comment: ['&& denotes a mnemonic'] }, \"Go to &&Bracket\")\n\t},\n\torder: 2\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/bracketMatching/browser/bracketMatching.ts"],"names":[],"mappings":"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","file":"bracketMatching.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 { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport './bracketMatching.css';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorContribution, IEditorDecorationsCollection } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IModelDeltaDecoration, OverviewRulerLane, TrackedRangeStickiness } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\n\nconst overviewRulerBracketMatchForeground = registerColor('editorOverviewRuler.bracketMatchForeground', '#A0A0A0', nls.localize('overviewRulerBracketMatchForeground', 'Overview ruler marker color for matching brackets.'));\n\nclass JumpToBracketAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.jumpToBracket',\n\t\t\tlabel: nls.localize2('smartSelect.jumpBracket', \"Go to Bracket\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Backslash,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tBracketMatchingController.get(editor)?.jumpToBracket();\n\t}\n}\n\nclass SelectToBracketAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.selectToBracket',\n\t\t\tlabel: nls.localize2('smartSelect.selectToBracket', \"Select to Bracket\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('smartSelect.selectToBracketDescription', \"Select the text inside and including the brackets or curly braces\"),\n\t\t\t\targs: [{\n\t\t\t\t\tname: 'args',\n\t\t\t\t\tschema: {\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t'selectBrackets': {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\tdefault: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void {\n\t\tlet selectBrackets = true;\n\t\tif (args && args.selectBrackets === false) {\n\t\t\tselectBrackets = false;\n\t\t}\n\t\tBracketMatchingController.get(editor)?.selectToBracket(selectBrackets);\n\t}\n}\n\nclass RemoveBracketsAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.removeBrackets',\n\t\t\tlabel: nls.localize2('smartSelect.removeBrackets', \"Remove Brackets\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Backspace,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tcanTriggerInlineEdits: true,\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tBracketMatchingController.get(editor)?.removeBrackets(this.id);\n\t}\n}\n\ntype Brackets = [Range, Range];\n\nclass BracketsData {\n\tpublic readonly position: Position;\n\tpublic readonly brackets: Brackets | null;\n\tpublic readonly options: ModelDecorationOptions;\n\n\tconstructor(position: Position, brackets: Brackets | null, options: ModelDecorationOptions) {\n\t\tthis.position = position;\n\t\tthis.brackets = brackets;\n\t\tthis.options = options;\n\t}\n}\n\nexport class BracketMatchingController extends Disposable implements IEditorContribution {\n\tpublic static readonly ID = 'editor.contrib.bracketMatchingController';\n\n\tpublic static get(editor: ICodeEditor): BracketMatchingController | null {\n\t\treturn editor.getContribution<BracketMatchingController>(BracketMatchingController.ID);\n\t}\n\n\tprivate readonly _editor: ICodeEditor;\n\n\tprivate _lastBracketsData: BracketsData[];\n\tprivate _lastVersionId: number;\n\tprivate readonly _decorations: IEditorDecorationsCollection;\n\tprivate readonly _updateBracketsSoon: RunOnceScheduler;\n\tprivate _matchBrackets: 'never' | 'near' | 'always';\n\n\tconstructor(\n\t\teditor: ICodeEditor\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._lastBracketsData = [];\n\t\tthis._lastVersionId = 0;\n\t\tthis._decorations = this._editor.createDecorationsCollection();\n\t\tthis._updateBracketsSoon = this._register(new RunOnceScheduler(() => this._updateBrackets(), 50));\n\t\tthis._matchBrackets = this._editor.getOption(EditorOption.matchBrackets);\n\n\t\tthis._updateBracketsSoon.schedule();\n\t\tthis._register(editor.onDidChangeCursorPosition((e) => {\n\n\t\t\tif (this._matchBrackets === 'never') {\n\t\t\t\t// Early exit if nothing needs to be done!\n\t\t\t\t// Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeModelContent((e) => {\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeModel((e) => {\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeModelLanguageConfiguration((e) => {\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t\tthis._register(editor.onDidChangeConfiguration((e) => {\n\t\t\tif (e.hasChanged(EditorOption.matchBrackets)) {\n\t\t\t\tthis._matchBrackets = this._editor.getOption(EditorOption.matchBrackets);\n\t\t\t\tthis._decorations.clear();\n\t\t\t\tthis._lastBracketsData = [];\n\t\t\t\tthis._lastVersionId = 0;\n\t\t\t\tthis._updateBracketsSoon.schedule();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(editor.onDidBlurEditorWidget(() => {\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\n\t\tthis._register(editor.onDidFocusEditorWidget(() => {\n\t\t\tthis._updateBracketsSoon.schedule();\n\t\t}));\n\t}\n\n\tpublic jumpToBracket(): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst newSelections = this._editor.getSelections().map(selection => {\n\t\t\tconst position = selection.getStartPosition();\n\n\t\t\t// find matching brackets if position is on a bracket\n\t\t\tconst brackets = model.bracketPairs.matchBracket(position);\n\t\t\tlet newCursorPosition: Position | null = null;\n\t\t\tif (brackets) {\n\t\t\t\tif (brackets[0].containsPosition(position) && !brackets[1].containsPosition(position)) {\n\t\t\t\t\tnewCursorPosition = brackets[1].getStartPosition();\n\t\t\t\t} else if (brackets[1].containsPosition(position)) {\n\t\t\t\t\tnewCursorPosition = brackets[0].getStartPosition();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// find the enclosing brackets if the position isn't on a matching bracket\n\t\t\t\tconst enclosingBrackets = model.bracketPairs.findEnclosingBrackets(position);\n\t\t\t\tif (enclosingBrackets) {\n\t\t\t\t\tnewCursorPosition = enclosingBrackets[1].getStartPosition();\n\t\t\t\t} else {\n\t\t\t\t\t// no enclosing brackets, try the very first next bracket\n\t\t\t\t\tconst nextBracket = model.bracketPairs.findNextBracket(position);\n\t\t\t\t\tif (nextBracket && nextBracket.range) {\n\t\t\t\t\t\tnewCursorPosition = nextBracket.range.getStartPosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newCursorPosition) {\n\t\t\t\treturn new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\n\t\t\t}\n\t\t\treturn new Selection(position.lineNumber, position.column, position.lineNumber, position.column);\n\t\t});\n\n\t\tthis._editor.setSelections(newSelections);\n\t\tthis._editor.revealRange(newSelections[0]);\n\t}\n\n\tpublic selectToBracket(selectBrackets: boolean): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst newSelections: Selection[] = [];\n\n\t\tthis._editor.getSelections().forEach(selection => {\n\t\t\tconst position = selection.getStartPosition();\n\t\t\tlet brackets = model.bracketPairs.matchBracket(position);\n\n\t\t\tif (!brackets) {\n\t\t\t\tbrackets = model.bracketPairs.findEnclosingBrackets(position);\n\t\t\t\tif (!brackets) {\n\t\t\t\t\tconst nextBracket = model.bracketPairs.findNextBracket(position);\n\t\t\t\t\tif (nextBracket && nextBracket.range) {\n\t\t\t\t\t\tbrackets = model.bracketPairs.matchBracket(nextBracket.range.getStartPosition());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet selectFrom: Position | null = null;\n\t\t\tlet selectTo: Position | null = null;\n\n\t\t\tif (brackets) {\n\t\t\t\tbrackets.sort(Range.compareRangesUsingStarts);\n\t\t\t\tconst [open, close] = brackets;\n\t\t\t\tselectFrom = selectBrackets ? open.getStartPosition() : open.getEndPosition();\n\t\t\t\tselectTo = selectBrackets ? close.getEndPosition() : close.getStartPosition();\n\n\t\t\t\tif (close.containsPosition(position)) {\n\t\t\t\t\t// select backwards if the cursor was on the closing bracket\n\t\t\t\t\tconst tmp = selectFrom;\n\t\t\t\t\tselectFrom = selectTo;\n\t\t\t\t\tselectTo = tmp;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (selectFrom && selectTo) {\n\t\t\t\tnewSelections.push(new Selection(selectFrom.lineNumber, selectFrom.column, selectTo.lineNumber, selectTo.column));\n\t\t\t}\n\t\t});\n\n\t\tif (newSelections.length > 0) {\n\t\t\tthis._editor.setSelections(newSelections);\n\t\t\tthis._editor.revealRange(newSelections[0]);\n\t\t}\n\t}\n\tpublic removeBrackets(editSource?: string): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tthis._editor.getSelections().forEach((selection) => {\n\t\t\tconst position = selection.getPosition();\n\n\t\t\tlet brackets = model.bracketPairs.matchBracket(position);\n\t\t\tif (!brackets) {\n\t\t\t\tbrackets = model.bracketPairs.findEnclosingBrackets(position);\n\t\t\t}\n\t\t\tif (brackets) {\n\t\t\t\tthis._editor.pushUndoStop();\n\t\t\t\tthis._editor.executeEdits(\n\t\t\t\t\teditSource,\n\t\t\t\t\t[\n\t\t\t\t\t\t{ range: brackets[0], text: '' },\n\t\t\t\t\t\t{ range: brackets[1], text: '' }\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t\tthis._editor.pushUndoStop();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate static readonly _DECORATION_OPTIONS_WITH_OVERVIEW_RULER = ModelDecorationOptions.register({\n\t\tdescription: 'bracket-match-overview',\n\t\tstickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n\t\tclassName: 'bracket-match',\n\t\toverviewRuler: {\n\t\t\tcolor: themeColorFromId(overviewRulerBracketMatchForeground),\n\t\t\tposition: OverviewRulerLane.Center\n\t\t}\n\t});\n\n\tprivate static readonly _DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER = ModelDecorationOptions.register({\n\t\tdescription: 'bracket-match-no-overview',\n\t\tstickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n\t\tclassName: 'bracket-match'\n\t});\n\n\tprivate _updateBrackets(): void {\n\t\tif (this._matchBrackets === 'never') {\n\t\t\treturn;\n\t\t}\n\t\tthis._recomputeBrackets();\n\n\t\tconst newDecorations: IModelDeltaDecoration[] = [];\n\t\tlet newDecorationsLen = 0;\n\t\tfor (const bracketData of this._lastBracketsData) {\n\t\t\tconst brackets = bracketData.brackets;\n\t\t\tif (brackets) {\n\t\t\t\tnewDecorations[newDecorationsLen++] = { range: brackets[0], options: bracketData.options };\n\t\t\t\tnewDecorations[newDecorationsLen++] = { range: brackets[1], options: bracketData.options };\n\t\t\t}\n\t\t}\n\n\t\tthis._decorations.set(newDecorations);\n\t}\n\n\tprivate _recomputeBrackets(): void {\n\t\tif (!this._editor.hasModel() || !this._editor.hasWidgetFocus()) {\n\t\t\t// no model or no focus => no brackets!\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._lastVersionId = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = this._editor.getSelections();\n\t\tif (selections.length > 100) {\n\t\t\t// no bracket matching for high numbers of selections\n\t\t\tthis._lastBracketsData = [];\n\t\t\tthis._lastVersionId = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst versionId = model.getVersionId();\n\t\tlet previousData: BracketsData[] = [];\n\t\tif (this._lastVersionId === versionId) {\n\t\t\t// use the previous data only if the model is at the same version id\n\t\t\tpreviousData = this._lastBracketsData;\n\t\t}\n\n\t\tconst positions: Position[] = [];\n\t\tlet positionsLen = 0;\n\t\tfor (let i = 0, len = selections.length; i < len; i++) {\n\t\t\tconst selection = selections[i];\n\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\t// will bracket match a cursor only if the selection is collapsed\n\t\t\t\tpositions[positionsLen++] = selection.getStartPosition();\n\t\t\t}\n\t\t}\n\n\t\t// sort positions for `previousData` cache hits\n\t\tif (positions.length > 1) {\n\t\t\tpositions.sort(Position.compare);\n\t\t}\n\n\t\tconst newData: BracketsData[] = [];\n\t\tlet newDataLen = 0;\n\t\tlet previousIndex = 0;\n\t\tconst previousLen = previousData.length;\n\t\tfor (let i = 0, len = positions.length; i < len; i++) {\n\t\t\tconst position = positions[i];\n\n\t\t\twhile (previousIndex < previousLen && previousData[previousIndex].position.isBefore(position)) {\n\t\t\t\tpreviousIndex++;\n\t\t\t}\n\n\t\t\tif (previousIndex < previousLen && previousData[previousIndex].position.equals(position)) {\n\t\t\t\tnewData[newDataLen++] = previousData[previousIndex];\n\t\t\t} else {\n\t\t\t\tlet brackets = model.bracketPairs.matchBracket(position, 20 /* give at most 20ms to compute */);\n\t\t\t\tlet options = BracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;\n\t\t\t\tif (!brackets && this._matchBrackets === 'always') {\n\t\t\t\t\tbrackets = model.bracketPairs.findEnclosingBrackets(position, 20 /* give at most 20ms to compute */);\n\t\t\t\t\toptions = BracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER;\n\t\t\t\t}\n\t\t\t\tnewData[newDataLen++] = new BracketsData(position, brackets, options);\n\t\t\t}\n\t\t}\n\n\t\tthis._lastBracketsData = newData;\n\t\tthis._lastVersionId = versionId;\n\t}\n}\n\nregisterEditorContribution(BracketMatchingController.ID, BracketMatchingController, EditorContributionInstantiation.AfterFirstRender);\nregisterEditorAction(SelectToBracketAction);\nregisterEditorAction(JumpToBracketAction);\nregisterEditorAction(RemoveBracketsAction);\n\n// Go to menu\nMenuRegistry.appendMenuItem(MenuId.MenubarGoMenu, {\n\tgroup: '5_infile_nav',\n\tcommand: {\n\t\tid: 'editor.action.jumpToBracket',\n\t\ttitle: nls.localize({ key: 'miGoToBracket', comment: ['&& denotes a mnemonic'] }, \"Go to &&Bracket\")\n\t},\n\torder: 2\n});\n"]}
|
package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js
CHANGED
|
@@ -17,6 +17,7 @@ import { ColorDetector } from '../colorDetector.js';
|
|
|
17
17
|
import { ColorPickerWidget } from '../colorPickerWidget.js';
|
|
18
18
|
import { RenderedHoverParts } from '../../../hover/browser/hoverTypes.js';
|
|
19
19
|
import { IThemeService } from '../../../../../platform/theme/common/themeService.js';
|
|
20
|
+
import * as nls from '../../../../../nls.js';
|
|
20
21
|
import { createColorHover, updateColorPresentations, updateEditorModel } from '../colorPickerParticipantUtils.js';
|
|
21
22
|
import { Dimension } from '../../../../../base/browser/dom.js';
|
|
22
23
|
import { DisposableStore } from '../../../../../base/common/lifecycle.js';
|
|
@@ -125,6 +126,9 @@ let HoverColorPickerParticipant = class HoverColorPickerParticipant {
|
|
|
125
126
|
};
|
|
126
127
|
return new RenderedHoverParts([renderedHoverPart]);
|
|
127
128
|
}
|
|
129
|
+
getAccessibleContent(hoverPart) {
|
|
130
|
+
return nls.localize(887, 'There is a color picker here.');
|
|
131
|
+
}
|
|
128
132
|
handleResize() {
|
|
129
133
|
this._colorPicker?.layout();
|
|
130
134
|
}
|