monaco-editor-core 0.54.0 → 0.55.0-dev-20251007
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.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/canIUse.js +1 -0
- package/esm/vs/base/browser/canIUse.js.map +1 -1
- package/esm/vs/base/browser/dom.js +9 -0
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/fastDomNode.js.map +1 -1
- package/esm/vs/base/browser/mouseEvent.js +3 -0
- package/esm/vs/base/browser/mouseEvent.js.map +1 -1
- package/esm/vs/base/browser/trustedTypes.js +2 -0
- package/esm/vs/base/browser/trustedTypes.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js +5 -5
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/sash/sash.css +1 -1
- package/esm/vs/base/browser/ui/sash/sash.js +4 -0
- package/esm/vs/base/browser/ui/sash/sash.js.map +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
- package/esm/vs/base/browser/ui/table/table.css +2 -2
- package/esm/vs/base/browser/ui/tree/abstractTree.js +7 -3
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +4 -0
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js +1 -0
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/media/tree.css +2 -2
- package/esm/vs/base/browser/webWorkerFactory.js +3 -0
- package/esm/vs/base/browser/webWorkerFactory.js.map +1 -1
- package/esm/vs/base/common/buffer.js.map +1 -1
- package/esm/vs/base/common/decorators.js +1 -0
- package/esm/vs/base/common/decorators.js.map +1 -1
- package/esm/vs/base/common/errors.js +1 -0
- package/esm/vs/base/common/errors.js.map +1 -1
- package/esm/vs/base/common/glob.js +1 -1
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/hash.js.map +1 -1
- package/esm/vs/base/common/hotReload.js +2 -0
- package/esm/vs/base/common/hotReload.js.map +1 -1
- package/esm/vs/base/common/hotReloadHelpers.js +1 -0
- package/esm/vs/base/common/hotReloadHelpers.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +19 -0
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/map.js.map +1 -1
- package/esm/vs/base/common/marshalling.js +4 -0
- package/esm/vs/base/common/marshalling.js.map +1 -1
- package/esm/vs/base/common/network.js +1 -0
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/objects.js +1 -0
- package/esm/vs/base/common/objects.js.map +1 -1
- package/esm/vs/base/common/observableInternal/changeTracker.js +4 -0
- package/esm/vs/base/common/observableInternal/changeTracker.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugLocation.js +1 -0
- package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugName.js +1 -0
- package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js +7 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +2 -0
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -0
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +1 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/process.js +1 -0
- package/esm/vs/base/common/process.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/types.js +2 -0
- package/esm/vs/base/common/types.js.map +1 -1
- package/esm/vs/base/common/worker/webWorker.js +26 -14
- package/esm/vs/base/common/worker/webWorker.js.map +1 -1
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js +2 -0
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js.map +1 -0
- package/esm/vs/editor/browser/config/editorConfiguration.js +3 -2
- package/esm/vs/editor/browser/config/editorConfiguration.js.map +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/editContextFactory.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js +2 -0
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +2 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseTarget.js +7 -0
- package/esm/vs/editor/browser/controller/mouseTarget.js.map +1 -1
- package/esm/vs/editor/browser/controller/pointerHandler.js.map +1 -1
- package/esm/vs/editor/browser/coreCommands.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorDom.js.map +1 -1
- package/esm/vs/editor/browser/editorExtensions.js.map +1 -1
- package/esm/vs/editor/browser/gpu/gpuUtils.js +1 -0
- package/esm/vs/editor/browser/gpu/gpuUtils.js.map +1 -1
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -0
- package/esm/vs/editor/browser/gpu/viewGpuContext.js.map +1 -1
- package/esm/vs/editor/browser/services/abstractCodeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/bulkEditService.js.map +1 -1
- package/esm/vs/editor/browser/services/codeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hover.css +2 -0
- package/esm/vs/editor/browser/services/hoverService/hoverService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/services/inlineCompletionsService.js +8 -8
- package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js.map +1 -1
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +1 -0
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +1 -0
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorContributions.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +4 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/delegatingEditorImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/utils.js +2 -0
- package/esm/vs/editor/browser/widget/diffEditor/utils.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +122 -68
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfo.js +32 -16
- package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfoFromSettings.js +16 -0
- package/esm/vs/editor/common/config/fontInfoFromSettings.js.map +1 -0
- package/esm/vs/editor/common/core/edits/edit.js +1 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +2 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/position.js +1 -1
- package/esm/vs/editor/common/core/position.js.map +1 -1
- package/esm/vs/editor/common/core/range.js +1 -1
- package/esm/vs/editor/common/core/range.js.map +1 -1
- package/esm/vs/editor/common/core/selection.js +1 -1
- package/esm/vs/editor/common/core/selection.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/editorCommon.js.map +1 -1
- package/esm/vs/editor/common/languages.js +1 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js +14 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js +2 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js.map +1 -1
- package/esm/vs/editor/common/model/textModel.js +1 -1
- package/esm/vs/editor/common/model/textModel.js.map +1 -1
- package/esm/vs/editor/common/model.js +1 -1
- package/esm/vs/editor/common/model.js.map +1 -1
- package/esm/vs/editor/common/services/editorBaseApi.js.map +1 -1
- package/esm/vs/editor/common/services/editorWebWorker.js +1 -0
- package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
- package/esm/vs/editor/common/services/editorWorkerHost.js.map +1 -1
- package/esm/vs/editor/common/services/modelService.js +14 -21
- package/esm/vs/editor/common/services/modelService.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +2 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +40 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +2 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js.map +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +1 -0
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +1 -0
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findModel.js +1 -0
- package/esm/vs/editor/contrib/find/browser/findModel.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.css +5 -5
- package/esm/vs/editor/contrib/folding/browser/folding.css +4 -4
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +30 -14
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +4 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +56 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +2 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +8 -8
- package/esm/vs/editor/editor.api.js +4 -0
- package/esm/vs/editor/editor.api.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneEditor.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js +3 -0
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js.map +1 -1
- package/esm/vs/platform/accessibility/browser/accessibilityService.js +2 -2
- package/esm/vs/platform/accessibility/browser/accessibilityService.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/commands/common/commands.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +5 -0
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js +1 -0
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js.map +1 -1
- package/esm/vs/platform/dnd/browser/dnd.js +2 -0
- package/esm/vs/platform/dnd/browser/dnd.js.map +1 -1
- package/esm/vs/platform/instantiation/common/descriptors.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -0
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/list/browser/listService.js +5 -0
- package/esm/vs/platform/list/browser/listService.js.map +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/log/common/logService.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInHotClass.js +2 -0
- package/esm/vs/platform/observable/common/wrapInHotClass.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js +3 -0
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js.map +1 -1
- package/esm/vs/platform/product/common/product.js +69 -0
- package/esm/vs/platform/product/common/product.js.map +1 -0
- package/esm/vs/platform/quickinput/browser/quickInput.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/monaco.d.ts +8 -8
- package/package.json +2 -2
|
@@ -78,7 +78,7 @@ let CodeActionController = class CodeActionController extends Disposable {
|
|
|
78
78
|
const actionItem = actions.validActions[0];
|
|
79
79
|
const command = actionItem.action.command;
|
|
80
80
|
if (command && command.id === 'inlineChat.start') {
|
|
81
|
-
if (command.arguments && command.arguments.length >= 1) {
|
|
81
|
+
if (command.arguments && command.arguments.length >= 1 && command.arguments[0]) {
|
|
82
82
|
command.arguments[0] = { ...command.arguments[0], autoSend: false };
|
|
83
83
|
}
|
|
84
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/codeAction/browser/codeActionController.ts"],"names":[],"mappings":"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","file":"codeActionController.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 { getDomNodePagePosition } from '../../../../base/browser/dom.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { IAnchor } from '../../../../base/browser/ui/contextview/contextview.js';\nimport { IAction } from '../../../../base/common/actions.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { localize } from '../../../../nls.js';\nimport { IActionListDelegate } from '../../../../platform/actionWidget/browser/actionList.js';\nimport { IActionWidgetService } from '../../../../platform/actionWidget/browser/actionWidget.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IMarkerService } from '../../../../platform/markers/common/markers.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { editorFindMatchHighlight, editorFindMatchHighlightBorder } from '../../../../platform/theme/common/colorRegistry.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { CodeActionTriggerType } from '../../../common/languages.js';\nimport { IModelDeltaDecoration } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { CodeActionAutoApply, CodeActionFilter, CodeActionItem, CodeActionKind, CodeActionSet, CodeActionTrigger, CodeActionTriggerSource } from '../common/types.js';\nimport { ApplyCodeActionReason, applyCodeAction } from './codeAction.js';\nimport { CodeActionKeybindingResolver } from './codeActionKeybindingResolver.js';\nimport { toMenuItems } from './codeActionMenu.js';\nimport { CodeActionModel, CodeActionsState } from './codeActionModel.js';\nimport { LightBulbWidget } from './lightBulbWidget.js';\n\ninterface IActionShowOptions {\n\treadonly includeDisabledActions?: boolean;\n\treadonly fromLightbulb?: boolean;\n}\n\n\nconst DECORATION_CLASS_NAME = 'quickfix-edit-highlight';\n\nexport class CodeActionController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.codeActionController';\n\n\tpublic static get(editor: ICodeEditor): CodeActionController | null {\n\t\treturn editor.getContribution<CodeActionController>(CodeActionController.ID);\n\t}\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _model: CodeActionModel;\n\n\tprivate readonly _lightBulbWidget: Lazy<LightBulbWidget | null>;\n\tprivate readonly _activeCodeActions = this._register(new MutableDisposable<CodeActionSet>());\n\tprivate _showDisabled = false;\n\n\tprivate readonly _resolver: CodeActionKeybindingResolver;\n\n\tprivate _disposed = false;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkerService markerService: IMarkerService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t\t@IEditorProgressService progressService: IEditorProgressService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@IActionWidgetService private readonly _actionWidgetService: IActionWidgetService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IEditorProgressService private readonly _progressService: IEditorProgressService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\t\tthis._model = this._register(new CodeActionModel(this._editor, languageFeaturesService.codeActionProvider, markerService, contextKeyService, progressService, _configurationService));\n\t\tthis._register(this._model.onDidChangeState(newState => this.update(newState)));\n\n\t\tthis._lightBulbWidget = new Lazy(() => {\n\t\t\tconst widget = this._editor.getContribution<LightBulbWidget>(LightBulbWidget.ID);\n\t\t\tif (widget) {\n\t\t\t\tthis._register(widget.onClick(e => this.showCodeActionsFromLightbulb(e.actions, e)));\n\t\t\t}\n\t\t\treturn widget;\n\t\t});\n\n\t\tthis._resolver = instantiationService.createInstance(CodeActionKeybindingResolver);\n\n\t\tthis._register(this._editor.onDidLayoutChange(() => this._actionWidgetService.hide()));\n\t}\n\n\toverride dispose() {\n\t\tthis._disposed = true;\n\t\tsuper.dispose();\n\t}\n\n\tprivate async showCodeActionsFromLightbulb(actions: CodeActionSet, at: IAnchor | IPosition): Promise<void> {\n\t\tif (actions.allAIFixes && actions.validActions.length === 1) {\n\t\t\tconst actionItem = actions.validActions[0];\n\t\t\tconst command = actionItem.action.command;\n\t\t\tif (command && command.id === 'inlineChat.start') {\n\t\t\t\tif (command.arguments && command.arguments.length >= 1) {\n\t\t\t\t\tcommand.arguments[0] = { ...command.arguments[0], autoSend: false };\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait this.applyCodeAction(actionItem, false, false, ApplyCodeActionReason.FromAILightbulb);\n\t\t\treturn;\n\t\t}\n\t\tawait this.showCodeActionList(actions, at, { includeDisabledActions: false, fromLightbulb: true });\n\t}\n\n\tpublic showCodeActions(_trigger: CodeActionTrigger, actions: CodeActionSet, at: IAnchor | IPosition) {\n\t\treturn this.showCodeActionList(actions, at, { includeDisabledActions: false, fromLightbulb: false });\n\t}\n\n\tpublic manualTriggerAtCurrentPosition(\n\t\tnotAvailableMessage: string,\n\t\ttriggerAction: CodeActionTriggerSource,\n\t\tfilter?: CodeActionFilter,\n\t\tautoApply?: CodeActionAutoApply,\n\t): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tMessageController.get(this._editor)?.closeMessage();\n\t\tconst triggerPosition = this._editor.getPosition();\n\t\tthis._trigger({ type: CodeActionTriggerType.Invoke, triggerAction, filter, autoApply, context: { notAvailableMessage, position: triggerPosition } });\n\t}\n\n\tprivate _trigger(trigger: CodeActionTrigger) {\n\t\treturn this._model.trigger(trigger);\n\t}\n\n\tasync applyCodeAction(action: CodeActionItem, retrigger: boolean, preview: boolean, actionReason: ApplyCodeActionReason): Promise<void> {\n\t\tconst progress = this._progressService.show(true, 500);\n\t\ttry {\n\t\t\tawait this._instantiationService.invokeFunction(applyCodeAction, action, actionReason, { preview, editor: this._editor });\n\t\t} finally {\n\t\t\tif (retrigger) {\n\t\t\t\tthis._trigger({ type: CodeActionTriggerType.Auto, triggerAction: CodeActionTriggerSource.QuickFix, filter: {} });\n\t\t\t}\n\t\t\tprogress.done();\n\t\t}\n\t}\n\n\tpublic hideLightBulbWidget(): void {\n\t\tthis._lightBulbWidget.rawValue?.hide();\n\t\tthis._lightBulbWidget.rawValue?.gutterHide();\n\t}\n\n\tprivate async update(newState: CodeActionsState.State): Promise<void> {\n\t\tif (newState.type !== CodeActionsState.Type.Triggered) {\n\t\t\tthis.hideLightBulbWidget();\n\t\t\treturn;\n\t\t}\n\n\t\tlet actions: CodeActionSet;\n\t\ttry {\n\t\t\tactions = await newState.actions;\n\t\t} catch (e) {\n\t\t\tonUnexpectedError(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._disposed) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tconst selection = this._editor.getSelection();\n\t\tif (selection?.startLineNumber !== newState.position.lineNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._lightBulbWidget.value?.update(actions, newState.trigger, newState.position);\n\n\t\tif (newState.trigger.type === CodeActionTriggerType.Invoke) {\n\t\t\tif (newState.trigger.filter?.include) { // Triggered for specific scope\n\t\t\t\t// Check to see if we want to auto apply.\n\n\t\t\t\tconst validActionToApply = this.tryGetValidActionToApply(newState.trigger, actions);\n\t\t\t\tif (validActionToApply) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.hideLightBulbWidget();\n\t\t\t\t\t\tawait this.applyCodeAction(validActionToApply, false, false, ApplyCodeActionReason.FromCodeActions);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tactions.dispose();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Check to see if there is an action that we would have applied were it not invalid\n\t\t\t\tif (newState.trigger.context) {\n\t\t\t\t\tconst invalidAction = this.getInvalidActionThatWouldHaveBeenApplied(newState.trigger, actions);\n\t\t\t\t\tif (invalidAction && invalidAction.action.disabled) {\n\t\t\t\t\t\tMessageController.get(this._editor)?.showMessage(invalidAction.action.disabled, newState.trigger.context.position);\n\t\t\t\t\t\tactions.dispose();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst includeDisabledActions = !!newState.trigger.filter?.include;\n\t\t\tif (newState.trigger.context) {\n\t\t\t\tif (!actions.allActions.length || !includeDisabledActions && !actions.validActions.length) {\n\t\t\t\t\tMessageController.get(this._editor)?.showMessage(newState.trigger.context.notAvailableMessage, newState.trigger.context.position);\n\t\t\t\t\tthis._activeCodeActions.value = actions;\n\t\t\t\t\tactions.dispose();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._activeCodeActions.value = actions;\n\t\t\tthis.showCodeActionList(actions, this.toCoords(newState.position), { includeDisabledActions, fromLightbulb: false });\n\t\t} else {\n\t\t\t// auto magically triggered\n\t\t\tif (this._actionWidgetService.isVisible) {\n\t\t\t\t// TODO: Figure out if we should update the showing menu?\n\t\t\t\tactions.dispose();\n\t\t\t} else {\n\t\t\t\tthis._activeCodeActions.value = actions;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getInvalidActionThatWouldHaveBeenApplied(trigger: CodeActionTrigger, actions: CodeActionSet): CodeActionItem | undefined {\n\t\tif (!actions.allActions.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ((trigger.autoApply === CodeActionAutoApply.First && actions.validActions.length === 0)\n\t\t\t|| (trigger.autoApply === CodeActionAutoApply.IfSingle && actions.allActions.length === 1)\n\t\t) {\n\t\t\treturn actions.allActions.find(({ action }) => action.disabled);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate tryGetValidActionToApply(trigger: CodeActionTrigger, actions: CodeActionSet): CodeActionItem | undefined {\n\t\tif (!actions.validActions.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ((trigger.autoApply === CodeActionAutoApply.First && actions.validActions.length > 0)\n\t\t\t|| (trigger.autoApply === CodeActionAutoApply.IfSingle && actions.validActions.length === 1)\n\t\t) {\n\t\t\treturn actions.validActions[0];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate static readonly DECORATION = ModelDecorationOptions.register({\n\t\tdescription: 'quickfix-highlight',\n\t\tclassName: DECORATION_CLASS_NAME\n\t});\n\n\tpublic async showCodeActionList(actions: CodeActionSet, at: IAnchor | IPosition, options: IActionShowOptions): Promise<void> {\n\n\t\tconst currentDecorations = this._editor.createDecorationsCollection();\n\n\t\tconst editorDom = this._editor.getDomNode();\n\t\tif (!editorDom) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst actionsToShow = options.includeDisabledActions && (this._showDisabled || actions.validActions.length === 0) ? actions.allActions : actions.validActions;\n\t\tif (!actionsToShow.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = Position.isIPosition(at) ? this.toCoords(at) : at;\n\n\t\tconst delegate: IActionListDelegate<CodeActionItem> = {\n\t\t\tonSelect: async (action: CodeActionItem, preview?: boolean) => {\n\t\t\t\tthis.applyCodeAction(action, /* retrigger */ true, !!preview, options.fromLightbulb ? ApplyCodeActionReason.FromAILightbulb : ApplyCodeActionReason.FromCodeActions);\n\t\t\t\tthis._actionWidgetService.hide(false);\n\t\t\t\tcurrentDecorations.clear();\n\t\t\t},\n\t\t\tonHide: (didCancel?) => {\n\t\t\t\tthis._editor?.focus();\n\t\t\t\tcurrentDecorations.clear();\n\t\t\t},\n\t\t\tonHover: async (action: CodeActionItem, token: CancellationToken) => {\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet canPreview = false;\n\t\t\t\tconst actionKind = action.action.kind;\n\n\t\t\t\tif (actionKind) {\n\t\t\t\t\tconst hierarchicalKind = new HierarchicalKind(actionKind);\n\t\t\t\t\tconst refactorKinds = [\n\t\t\t\t\t\tCodeActionKind.RefactorExtract,\n\t\t\t\t\t\tCodeActionKind.RefactorInline,\n\t\t\t\t\t\tCodeActionKind.RefactorRewrite,\n\t\t\t\t\t\tCodeActionKind.RefactorMove,\n\t\t\t\t\t\tCodeActionKind.Source\n\t\t\t\t\t];\n\n\t\t\t\t\tcanPreview = refactorKinds.some(refactorKind => refactorKind.contains(hierarchicalKind));\n\t\t\t\t}\n\n\t\t\t\treturn { canPreview: canPreview || !!action.action.edit?.edits.length };\n\t\t\t},\n\t\t\tonFocus: (action: CodeActionItem | undefined) => {\n\t\t\t\tif (action && action.action) {\n\t\t\t\t\tconst ranges = action.action.ranges;\n\t\t\t\t\tconst diagnostics = action.action.diagnostics;\n\t\t\t\t\tcurrentDecorations.clear();\n\t\t\t\t\tif (ranges && ranges.length > 0) {\n\t\t\t\t\t\t// Handles case for `fix all` where there are multiple diagnostics.\n\t\t\t\t\t\tconst decorations: IModelDeltaDecoration[] = (diagnostics && diagnostics?.length > 1)\n\t\t\t\t\t\t\t? diagnostics.map(diagnostic => ({ range: diagnostic, options: CodeActionController.DECORATION }))\n\t\t\t\t\t\t\t: ranges.map(range => ({ range, options: CodeActionController.DECORATION }));\n\t\t\t\t\t\tcurrentDecorations.set(decorations);\n\t\t\t\t\t} else if (diagnostics && diagnostics.length > 0) {\n\t\t\t\t\t\tconst decorations: IModelDeltaDecoration[] = diagnostics.map(diagnostic => ({ range: diagnostic, options: CodeActionController.DECORATION }));\n\t\t\t\t\t\tcurrentDecorations.set(decorations);\n\t\t\t\t\t\tconst diagnostic = diagnostics[0];\n\t\t\t\t\t\tif (diagnostic.startLineNumber && diagnostic.startColumn) {\n\t\t\t\t\t\t\tconst selectionText = this._editor.getModel()?.getWordAtPosition({ lineNumber: diagnostic.startLineNumber, column: diagnostic.startColumn })?.word;\n\t\t\t\t\t\t\taria.status(localize('editingNewSelection', \"Context: {0} at line {1} and column {2}.\", selectionText, diagnostic.startLineNumber, diagnostic.startColumn));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcurrentDecorations.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis._actionWidgetService.show(\n\t\t\t'codeActionWidget',\n\t\t\ttrue,\n\t\t\ttoMenuItems(actionsToShow, this._shouldShowHeaders(), this._resolver.getResolver()),\n\t\t\tdelegate,\n\t\t\tanchor,\n\t\t\teditorDom,\n\t\t\tthis._getActionBarActions(actions, at, options));\n\t}\n\n\tprivate toCoords(position: IPosition): IAnchor {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn { x: 0, y: 0 };\n\t\t}\n\n\t\tthis._editor.revealPosition(position, ScrollType.Immediate);\n\t\tthis._editor.render();\n\n\t\t// Translate to absolute editor position\n\t\tconst cursorCoords = this._editor.getScrolledVisiblePosition(position);\n\t\tconst editorCoords = getDomNodePagePosition(this._editor.getDomNode());\n\t\tconst x = editorCoords.left + cursorCoords.left;\n\t\tconst y = editorCoords.top + cursorCoords.top + cursorCoords.height;\n\n\t\treturn { x, y };\n\t}\n\n\tprivate _shouldShowHeaders(): boolean {\n\t\tconst model = this._editor?.getModel();\n\t\treturn this._configurationService.getValue('editor.codeActionWidget.showHeaders', { resource: model?.uri });\n\t}\n\n\tprivate _getActionBarActions(actions: CodeActionSet, at: IAnchor | IPosition, options: IActionShowOptions): IAction[] {\n\t\tif (options.fromLightbulb) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst resultActions = actions.documentation.map((command): IAction => ({\n\t\t\tid: command.id,\n\t\t\tlabel: command.title,\n\t\t\ttooltip: command.tooltip ?? '',\n\t\t\tclass: undefined,\n\t\t\tenabled: true,\n\t\t\trun: () => this._commandService.executeCommand(command.id, ...(command.arguments ?? [])),\n\t\t}));\n\n\t\tif (options.includeDisabledActions && actions.validActions.length > 0 && actions.allActions.length !== actions.validActions.length) {\n\t\t\tresultActions.push(this._showDisabled ? {\n\t\t\t\tid: 'hideMoreActions',\n\t\t\t\tlabel: localize('hideMoreActions', 'Hide Disabled'),\n\t\t\t\tenabled: true,\n\t\t\t\ttooltip: '',\n\t\t\t\tclass: undefined,\n\t\t\t\trun: () => {\n\t\t\t\t\tthis._showDisabled = false;\n\t\t\t\t\treturn this.showCodeActionList(actions, at, options);\n\t\t\t\t}\n\t\t\t} : {\n\t\t\t\tid: 'showMoreActions',\n\t\t\t\tlabel: localize('showMoreActions', 'Show Disabled'),\n\t\t\t\tenabled: true,\n\t\t\t\ttooltip: '',\n\t\t\t\tclass: undefined,\n\t\t\t\trun: () => {\n\t\t\t\t\tthis._showDisabled = true;\n\t\t\t\t\treturn this.showCodeActionList(actions, at, options);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn resultActions;\n\t}\n}\n\nregisterThemingParticipant((theme, collector) => {\n\tconst addBackgroundColorRule = (selector: string, color: Color | undefined): void => {\n\t\tif (color) {\n\t\t\tcollector.addRule(`.monaco-editor ${selector} { background-color: ${color}; }`);\n\t\t}\n\t};\n\n\taddBackgroundColorRule('.quickfix-edit-highlight', theme.getColor(editorFindMatchHighlight));\n\tconst findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\n\n\tif (findMatchHighlightBorder) {\n\t\tcollector.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\n\t}\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/codeAction/browser/codeActionController.ts"],"names":[],"mappings":"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","file":"codeActionController.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 { getDomNodePagePosition } from '../../../../base/browser/dom.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { IAnchor } from '../../../../base/browser/ui/contextview/contextview.js';\nimport { IAction } from '../../../../base/common/actions.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { localize } from '../../../../nls.js';\nimport { IActionListDelegate } from '../../../../platform/actionWidget/browser/actionList.js';\nimport { IActionWidgetService } from '../../../../platform/actionWidget/browser/actionWidget.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IMarkerService } from '../../../../platform/markers/common/markers.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { editorFindMatchHighlight, editorFindMatchHighlightBorder } from '../../../../platform/theme/common/colorRegistry.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { CodeActionTriggerType } from '../../../common/languages.js';\nimport { IModelDeltaDecoration } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { CodeActionAutoApply, CodeActionFilter, CodeActionItem, CodeActionKind, CodeActionSet, CodeActionTrigger, CodeActionTriggerSource } from '../common/types.js';\nimport { ApplyCodeActionReason, applyCodeAction } from './codeAction.js';\nimport { CodeActionKeybindingResolver } from './codeActionKeybindingResolver.js';\nimport { toMenuItems } from './codeActionMenu.js';\nimport { CodeActionModel, CodeActionsState } from './codeActionModel.js';\nimport { LightBulbWidget } from './lightBulbWidget.js';\n\ninterface IActionShowOptions {\n\treadonly includeDisabledActions?: boolean;\n\treadonly fromLightbulb?: boolean;\n}\n\n\nconst DECORATION_CLASS_NAME = 'quickfix-edit-highlight';\n\nexport class CodeActionController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.codeActionController';\n\n\tpublic static get(editor: ICodeEditor): CodeActionController | null {\n\t\treturn editor.getContribution<CodeActionController>(CodeActionController.ID);\n\t}\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _model: CodeActionModel;\n\n\tprivate readonly _lightBulbWidget: Lazy<LightBulbWidget | null>;\n\tprivate readonly _activeCodeActions = this._register(new MutableDisposable<CodeActionSet>());\n\tprivate _showDisabled = false;\n\n\tprivate readonly _resolver: CodeActionKeybindingResolver;\n\n\tprivate _disposed = false;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkerService markerService: IMarkerService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t\t@IEditorProgressService progressService: IEditorProgressService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@IActionWidgetService private readonly _actionWidgetService: IActionWidgetService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IEditorProgressService private readonly _progressService: IEditorProgressService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\t\tthis._model = this._register(new CodeActionModel(this._editor, languageFeaturesService.codeActionProvider, markerService, contextKeyService, progressService, _configurationService));\n\t\tthis._register(this._model.onDidChangeState(newState => this.update(newState)));\n\n\t\tthis._lightBulbWidget = new Lazy(() => {\n\t\t\tconst widget = this._editor.getContribution<LightBulbWidget>(LightBulbWidget.ID);\n\t\t\tif (widget) {\n\t\t\t\tthis._register(widget.onClick(e => this.showCodeActionsFromLightbulb(e.actions, e)));\n\t\t\t}\n\t\t\treturn widget;\n\t\t});\n\n\t\tthis._resolver = instantiationService.createInstance(CodeActionKeybindingResolver);\n\n\t\tthis._register(this._editor.onDidLayoutChange(() => this._actionWidgetService.hide()));\n\t}\n\n\toverride dispose() {\n\t\tthis._disposed = true;\n\t\tsuper.dispose();\n\t}\n\n\tprivate async showCodeActionsFromLightbulb(actions: CodeActionSet, at: IAnchor | IPosition): Promise<void> {\n\t\tif (actions.allAIFixes && actions.validActions.length === 1) {\n\t\t\tconst actionItem = actions.validActions[0];\n\t\t\tconst command = actionItem.action.command;\n\t\t\tif (command && command.id === 'inlineChat.start') {\n\t\t\t\tif (command.arguments && command.arguments.length >= 1 && command.arguments[0]) {\n\t\t\t\t\tcommand.arguments[0] = { ...command.arguments[0], autoSend: false };\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait this.applyCodeAction(actionItem, false, false, ApplyCodeActionReason.FromAILightbulb);\n\t\t\treturn;\n\t\t}\n\t\tawait this.showCodeActionList(actions, at, { includeDisabledActions: false, fromLightbulb: true });\n\t}\n\n\tpublic showCodeActions(_trigger: CodeActionTrigger, actions: CodeActionSet, at: IAnchor | IPosition) {\n\t\treturn this.showCodeActionList(actions, at, { includeDisabledActions: false, fromLightbulb: false });\n\t}\n\n\tpublic manualTriggerAtCurrentPosition(\n\t\tnotAvailableMessage: string,\n\t\ttriggerAction: CodeActionTriggerSource,\n\t\tfilter?: CodeActionFilter,\n\t\tautoApply?: CodeActionAutoApply,\n\t): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tMessageController.get(this._editor)?.closeMessage();\n\t\tconst triggerPosition = this._editor.getPosition();\n\t\tthis._trigger({ type: CodeActionTriggerType.Invoke, triggerAction, filter, autoApply, context: { notAvailableMessage, position: triggerPosition } });\n\t}\n\n\tprivate _trigger(trigger: CodeActionTrigger) {\n\t\treturn this._model.trigger(trigger);\n\t}\n\n\tasync applyCodeAction(action: CodeActionItem, retrigger: boolean, preview: boolean, actionReason: ApplyCodeActionReason): Promise<void> {\n\t\tconst progress = this._progressService.show(true, 500);\n\t\ttry {\n\t\t\tawait this._instantiationService.invokeFunction(applyCodeAction, action, actionReason, { preview, editor: this._editor });\n\t\t} finally {\n\t\t\tif (retrigger) {\n\t\t\t\tthis._trigger({ type: CodeActionTriggerType.Auto, triggerAction: CodeActionTriggerSource.QuickFix, filter: {} });\n\t\t\t}\n\t\t\tprogress.done();\n\t\t}\n\t}\n\n\tpublic hideLightBulbWidget(): void {\n\t\tthis._lightBulbWidget.rawValue?.hide();\n\t\tthis._lightBulbWidget.rawValue?.gutterHide();\n\t}\n\n\tprivate async update(newState: CodeActionsState.State): Promise<void> {\n\t\tif (newState.type !== CodeActionsState.Type.Triggered) {\n\t\t\tthis.hideLightBulbWidget();\n\t\t\treturn;\n\t\t}\n\n\t\tlet actions: CodeActionSet;\n\t\ttry {\n\t\t\tactions = await newState.actions;\n\t\t} catch (e) {\n\t\t\tonUnexpectedError(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._disposed) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tconst selection = this._editor.getSelection();\n\t\tif (selection?.startLineNumber !== newState.position.lineNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._lightBulbWidget.value?.update(actions, newState.trigger, newState.position);\n\n\t\tif (newState.trigger.type === CodeActionTriggerType.Invoke) {\n\t\t\tif (newState.trigger.filter?.include) { // Triggered for specific scope\n\t\t\t\t// Check to see if we want to auto apply.\n\n\t\t\t\tconst validActionToApply = this.tryGetValidActionToApply(newState.trigger, actions);\n\t\t\t\tif (validActionToApply) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.hideLightBulbWidget();\n\t\t\t\t\t\tawait this.applyCodeAction(validActionToApply, false, false, ApplyCodeActionReason.FromCodeActions);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tactions.dispose();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Check to see if there is an action that we would have applied were it not invalid\n\t\t\t\tif (newState.trigger.context) {\n\t\t\t\t\tconst invalidAction = this.getInvalidActionThatWouldHaveBeenApplied(newState.trigger, actions);\n\t\t\t\t\tif (invalidAction && invalidAction.action.disabled) {\n\t\t\t\t\t\tMessageController.get(this._editor)?.showMessage(invalidAction.action.disabled, newState.trigger.context.position);\n\t\t\t\t\t\tactions.dispose();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst includeDisabledActions = !!newState.trigger.filter?.include;\n\t\t\tif (newState.trigger.context) {\n\t\t\t\tif (!actions.allActions.length || !includeDisabledActions && !actions.validActions.length) {\n\t\t\t\t\tMessageController.get(this._editor)?.showMessage(newState.trigger.context.notAvailableMessage, newState.trigger.context.position);\n\t\t\t\t\tthis._activeCodeActions.value = actions;\n\t\t\t\t\tactions.dispose();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._activeCodeActions.value = actions;\n\t\t\tthis.showCodeActionList(actions, this.toCoords(newState.position), { includeDisabledActions, fromLightbulb: false });\n\t\t} else {\n\t\t\t// auto magically triggered\n\t\t\tif (this._actionWidgetService.isVisible) {\n\t\t\t\t// TODO: Figure out if we should update the showing menu?\n\t\t\t\tactions.dispose();\n\t\t\t} else {\n\t\t\t\tthis._activeCodeActions.value = actions;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getInvalidActionThatWouldHaveBeenApplied(trigger: CodeActionTrigger, actions: CodeActionSet): CodeActionItem | undefined {\n\t\tif (!actions.allActions.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ((trigger.autoApply === CodeActionAutoApply.First && actions.validActions.length === 0)\n\t\t\t|| (trigger.autoApply === CodeActionAutoApply.IfSingle && actions.allActions.length === 1)\n\t\t) {\n\t\t\treturn actions.allActions.find(({ action }) => action.disabled);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate tryGetValidActionToApply(trigger: CodeActionTrigger, actions: CodeActionSet): CodeActionItem | undefined {\n\t\tif (!actions.validActions.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ((trigger.autoApply === CodeActionAutoApply.First && actions.validActions.length > 0)\n\t\t\t|| (trigger.autoApply === CodeActionAutoApply.IfSingle && actions.validActions.length === 1)\n\t\t) {\n\t\t\treturn actions.validActions[0];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate static readonly DECORATION = ModelDecorationOptions.register({\n\t\tdescription: 'quickfix-highlight',\n\t\tclassName: DECORATION_CLASS_NAME\n\t});\n\n\tpublic async showCodeActionList(actions: CodeActionSet, at: IAnchor | IPosition, options: IActionShowOptions): Promise<void> {\n\n\t\tconst currentDecorations = this._editor.createDecorationsCollection();\n\n\t\tconst editorDom = this._editor.getDomNode();\n\t\tif (!editorDom) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst actionsToShow = options.includeDisabledActions && (this._showDisabled || actions.validActions.length === 0) ? actions.allActions : actions.validActions;\n\t\tif (!actionsToShow.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = Position.isIPosition(at) ? this.toCoords(at) : at;\n\n\t\tconst delegate: IActionListDelegate<CodeActionItem> = {\n\t\t\tonSelect: async (action: CodeActionItem, preview?: boolean) => {\n\t\t\t\tthis.applyCodeAction(action, /* retrigger */ true, !!preview, options.fromLightbulb ? ApplyCodeActionReason.FromAILightbulb : ApplyCodeActionReason.FromCodeActions);\n\t\t\t\tthis._actionWidgetService.hide(false);\n\t\t\t\tcurrentDecorations.clear();\n\t\t\t},\n\t\t\tonHide: (didCancel?) => {\n\t\t\t\tthis._editor?.focus();\n\t\t\t\tcurrentDecorations.clear();\n\t\t\t},\n\t\t\tonHover: async (action: CodeActionItem, token: CancellationToken) => {\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet canPreview = false;\n\t\t\t\tconst actionKind = action.action.kind;\n\n\t\t\t\tif (actionKind) {\n\t\t\t\t\tconst hierarchicalKind = new HierarchicalKind(actionKind);\n\t\t\t\t\tconst refactorKinds = [\n\t\t\t\t\t\tCodeActionKind.RefactorExtract,\n\t\t\t\t\t\tCodeActionKind.RefactorInline,\n\t\t\t\t\t\tCodeActionKind.RefactorRewrite,\n\t\t\t\t\t\tCodeActionKind.RefactorMove,\n\t\t\t\t\t\tCodeActionKind.Source\n\t\t\t\t\t];\n\n\t\t\t\t\tcanPreview = refactorKinds.some(refactorKind => refactorKind.contains(hierarchicalKind));\n\t\t\t\t}\n\n\t\t\t\treturn { canPreview: canPreview || !!action.action.edit?.edits.length };\n\t\t\t},\n\t\t\tonFocus: (action: CodeActionItem | undefined) => {\n\t\t\t\tif (action && action.action) {\n\t\t\t\t\tconst ranges = action.action.ranges;\n\t\t\t\t\tconst diagnostics = action.action.diagnostics;\n\t\t\t\t\tcurrentDecorations.clear();\n\t\t\t\t\tif (ranges && ranges.length > 0) {\n\t\t\t\t\t\t// Handles case for `fix all` where there are multiple diagnostics.\n\t\t\t\t\t\tconst decorations: IModelDeltaDecoration[] = (diagnostics && diagnostics?.length > 1)\n\t\t\t\t\t\t\t? diagnostics.map(diagnostic => ({ range: diagnostic, options: CodeActionController.DECORATION }))\n\t\t\t\t\t\t\t: ranges.map(range => ({ range, options: CodeActionController.DECORATION }));\n\t\t\t\t\t\tcurrentDecorations.set(decorations);\n\t\t\t\t\t} else if (diagnostics && diagnostics.length > 0) {\n\t\t\t\t\t\tconst decorations: IModelDeltaDecoration[] = diagnostics.map(diagnostic => ({ range: diagnostic, options: CodeActionController.DECORATION }));\n\t\t\t\t\t\tcurrentDecorations.set(decorations);\n\t\t\t\t\t\tconst diagnostic = diagnostics[0];\n\t\t\t\t\t\tif (diagnostic.startLineNumber && diagnostic.startColumn) {\n\t\t\t\t\t\t\tconst selectionText = this._editor.getModel()?.getWordAtPosition({ lineNumber: diagnostic.startLineNumber, column: diagnostic.startColumn })?.word;\n\t\t\t\t\t\t\taria.status(localize('editingNewSelection', \"Context: {0} at line {1} and column {2}.\", selectionText, diagnostic.startLineNumber, diagnostic.startColumn));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcurrentDecorations.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis._actionWidgetService.show(\n\t\t\t'codeActionWidget',\n\t\t\ttrue,\n\t\t\ttoMenuItems(actionsToShow, this._shouldShowHeaders(), this._resolver.getResolver()),\n\t\t\tdelegate,\n\t\t\tanchor,\n\t\t\teditorDom,\n\t\t\tthis._getActionBarActions(actions, at, options));\n\t}\n\n\tprivate toCoords(position: IPosition): IAnchor {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn { x: 0, y: 0 };\n\t\t}\n\n\t\tthis._editor.revealPosition(position, ScrollType.Immediate);\n\t\tthis._editor.render();\n\n\t\t// Translate to absolute editor position\n\t\tconst cursorCoords = this._editor.getScrolledVisiblePosition(position);\n\t\tconst editorCoords = getDomNodePagePosition(this._editor.getDomNode());\n\t\tconst x = editorCoords.left + cursorCoords.left;\n\t\tconst y = editorCoords.top + cursorCoords.top + cursorCoords.height;\n\n\t\treturn { x, y };\n\t}\n\n\tprivate _shouldShowHeaders(): boolean {\n\t\tconst model = this._editor?.getModel();\n\t\treturn this._configurationService.getValue('editor.codeActionWidget.showHeaders', { resource: model?.uri });\n\t}\n\n\tprivate _getActionBarActions(actions: CodeActionSet, at: IAnchor | IPosition, options: IActionShowOptions): IAction[] {\n\t\tif (options.fromLightbulb) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst resultActions = actions.documentation.map((command): IAction => ({\n\t\t\tid: command.id,\n\t\t\tlabel: command.title,\n\t\t\ttooltip: command.tooltip ?? '',\n\t\t\tclass: undefined,\n\t\t\tenabled: true,\n\t\t\trun: () => this._commandService.executeCommand(command.id, ...(command.arguments ?? [])),\n\t\t}));\n\n\t\tif (options.includeDisabledActions && actions.validActions.length > 0 && actions.allActions.length !== actions.validActions.length) {\n\t\t\tresultActions.push(this._showDisabled ? {\n\t\t\t\tid: 'hideMoreActions',\n\t\t\t\tlabel: localize('hideMoreActions', 'Hide Disabled'),\n\t\t\t\tenabled: true,\n\t\t\t\ttooltip: '',\n\t\t\t\tclass: undefined,\n\t\t\t\trun: () => {\n\t\t\t\t\tthis._showDisabled = false;\n\t\t\t\t\treturn this.showCodeActionList(actions, at, options);\n\t\t\t\t}\n\t\t\t} : {\n\t\t\t\tid: 'showMoreActions',\n\t\t\t\tlabel: localize('showMoreActions', 'Show Disabled'),\n\t\t\t\tenabled: true,\n\t\t\t\ttooltip: '',\n\t\t\t\tclass: undefined,\n\t\t\t\trun: () => {\n\t\t\t\t\tthis._showDisabled = true;\n\t\t\t\t\treturn this.showCodeActionList(actions, at, options);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn resultActions;\n\t}\n}\n\nregisterThemingParticipant((theme, collector) => {\n\tconst addBackgroundColorRule = (selector: string, color: Color | undefined): void => {\n\t\tif (color) {\n\t\t\tcollector.addRule(`.monaco-editor ${selector} { background-color: ${color}; }`);\n\t\t}\n\t};\n\n\taddBackgroundColorRule('.quickfix-edit-highlight', theme.getColor(editorFindMatchHighlight));\n\tconst findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\n\n\tif (findMatchHighlightBorder) {\n\t\tcollector.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\n\t}\n});\n"]}
|
|
@@ -16,7 +16,7 @@ import { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/c
|
|
|
16
16
|
import { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';
|
|
17
17
|
import { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';
|
|
18
18
|
import { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';
|
|
19
|
-
import { EDITOR_FONT_DEFAULTS } from '../../../common/config/
|
|
19
|
+
import { EDITOR_FONT_DEFAULTS } from '../../../common/config/fontInfo.js';
|
|
20
20
|
import { EditorContextKeys } from '../../../common/editorContextKeys.js';
|
|
21
21
|
import { getCodeLensModel } from './codelens.js';
|
|
22
22
|
import { ICodeLensCache } from './codeLensCache.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/codelens/browser/codelensController.ts"],"names":[],"mappings":"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","file":"codelensController.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\nimport { CancelablePromise, createCancelablePromise, disposableTimeout, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { IActiveCodeEditor, ICodeEditor, IViewZoneChangeAccessor, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption, EDITOR_FONT_DEFAULTS } from '../../../common/config/editorOptions.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IModelDecorationsChangeAccessor } from '../../../common/model.js';\nimport { CodeLens, Command } from '../../../common/languages.js';\nimport { CodeLensItem, CodeLensModel, getCodeLensModel } from './codelens.js';\nimport { ICodeLensCache } from './codeLensCache.js';\nimport { CodeLensHelper, CodeLensWidget } from './codelensWidget.js';\nimport { localize, localize2 } from '../../../../nls.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\n\nexport class CodeLensContribution implements IEditorContribution {\n\n\tstatic readonly ID: string = 'css.editor.codeLens';\n\n\tprivate readonly _disposables = new DisposableStore();\n\tprivate readonly _localToDispose = new DisposableStore();\n\n\tprivate readonly _lenses: CodeLensWidget[] = [];\n\n\tprivate readonly _provideCodeLensDebounce: IFeatureDebounceInformation;\n\tprivate readonly _resolveCodeLensesDebounce: IFeatureDebounceInformation;\n\tprivate readonly _resolveCodeLensesScheduler: RunOnceScheduler;\n\n\tprivate _getCodeLensModelPromise: CancelablePromise<CodeLensModel> | undefined;\n\tprivate readonly _oldCodeLensModels = new DisposableStore();\n\tprivate _currentCodeLensModel: CodeLensModel | undefined;\n\tprivate _resolveCodeLensesPromise: CancelablePromise<any> | undefined;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageFeatureDebounceService debounceService: ILanguageFeatureDebounceService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@INotificationService private readonly _notificationService: INotificationService,\n\t\t@ICodeLensCache private readonly _codeLensCache: ICodeLensCache\n\t) {\n\t\tthis._provideCodeLensDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensProvide', { min: 250 });\n\t\tthis._resolveCodeLensesDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensResolve', { min: 250, salt: 'resolve' });\n\t\tthis._resolveCodeLensesScheduler = new RunOnceScheduler(() => this._resolveCodeLensesInViewport(), this._resolveCodeLensesDebounce.default());\n\n\t\tthis._disposables.add(this._editor.onDidChangeModel(() => this._onModelChange()));\n\t\tthis._disposables.add(this._editor.onDidChangeModelLanguage(() => this._onModelChange()));\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration((e) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo) || e.hasChanged(EditorOption.codeLensFontSize) || e.hasChanged(EditorOption.codeLensFontFamily)) {\n\t\t\t\tthis._updateLensStyle();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.codeLens)) {\n\t\t\t\tthis._onModelChange();\n\t\t\t}\n\t\t}));\n\t\tthis._disposables.add(_languageFeaturesService.codeLensProvider.onDidChange(this._onModelChange, this));\n\t\tthis._onModelChange();\n\n\t\tthis._updateLensStyle();\n\t}\n\n\tdispose(): void {\n\t\tthis._localDispose();\n\t\tthis._localToDispose.dispose();\n\t\tthis._disposables.dispose();\n\t\tthis._oldCodeLensModels.dispose();\n\t\tthis._currentCodeLensModel?.dispose();\n\t}\n\n\tprivate _getLayoutInfo() {\n\t\tconst lineHeightFactor = Math.max(1.3, this._editor.getOption(EditorOption.lineHeight) / this._editor.getOption(EditorOption.fontSize));\n\t\tlet fontSize = this._editor.getOption(EditorOption.codeLensFontSize);\n\t\tif (!fontSize || fontSize < 5) {\n\t\t\tfontSize = (this._editor.getOption(EditorOption.fontSize) * .9) | 0;\n\t\t}\n\t\treturn {\n\t\t\tfontSize,\n\t\t\tcodeLensHeight: (fontSize * lineHeightFactor) | 0,\n\t\t};\n\t}\n\n\tprivate _updateLensStyle(): void {\n\n\t\tconst { codeLensHeight, fontSize } = this._getLayoutInfo();\n\t\tconst fontFamily = this._editor.getOption(EditorOption.codeLensFontFamily);\n\t\tconst editorFontInfo = this._editor.getOption(EditorOption.fontInfo);\n\n\t\tconst { style } = this._editor.getContainerDomNode();\n\n\t\tstyle.setProperty('--vscode-editorCodeLens-lineHeight', `${codeLensHeight}px`);\n\t\tstyle.setProperty('--vscode-editorCodeLens-fontSize', `${fontSize}px`);\n\t\tstyle.setProperty('--vscode-editorCodeLens-fontFeatureSettings', editorFontInfo.fontFeatureSettings);\n\n\t\tif (fontFamily) {\n\t\t\tstyle.setProperty('--vscode-editorCodeLens-fontFamily', fontFamily);\n\t\t\tstyle.setProperty('--vscode-editorCodeLens-fontFamilyDefault', EDITOR_FONT_DEFAULTS.fontFamily);\n\t\t}\n\n\t\t//\n\t\tthis._editor.changeViewZones(accessor => {\n\t\t\tfor (const lens of this._lenses) {\n\t\t\t\tlens.updateHeight(codeLensHeight, accessor);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _localDispose(): void {\n\t\tthis._getCodeLensModelPromise?.cancel();\n\t\tthis._getCodeLensModelPromise = undefined;\n\t\tthis._resolveCodeLensesPromise?.cancel();\n\t\tthis._resolveCodeLensesPromise = undefined;\n\t\tthis._localToDispose.clear();\n\t\tthis._oldCodeLensModels.clear();\n\t\tthis._currentCodeLensModel?.dispose();\n\t}\n\n\tprivate _onModelChange(): void {\n\n\t\tthis._localDispose();\n\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._editor.getOption(EditorOption.codeLens) || model.isTooLargeForTokenization()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cachedLenses = this._codeLensCache.get(model);\n\t\tif (cachedLenses) {\n\t\t\tthis._renderCodeLensSymbols(cachedLenses);\n\t\t}\n\n\t\tif (!this._languageFeaturesService.codeLensProvider.has(model)) {\n\t\t\t// no provider -> return but check with\n\t\t\t// cached lenses. they expire after 30 seconds\n\t\t\tif (cachedLenses) {\n\t\t\t\tdisposableTimeout(() => {\n\t\t\t\t\tconst cachedLensesNow = this._codeLensCache.get(model);\n\t\t\t\t\tif (cachedLenses === cachedLensesNow) {\n\t\t\t\t\t\tthis._codeLensCache.delete(model);\n\t\t\t\t\t\tthis._onModelChange();\n\t\t\t\t\t}\n\t\t\t\t}, 30 * 1000, this._localToDispose);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const provider of this._languageFeaturesService.codeLensProvider.all(model)) {\n\t\t\tif (typeof provider.onDidChange === 'function') {\n\t\t\t\tconst registration = provider.onDidChange(() => scheduler.schedule());\n\t\t\t\tthis._localToDispose.add(registration);\n\t\t\t}\n\t\t}\n\n\t\tconst scheduler = new RunOnceScheduler(() => {\n\t\t\tconst t1 = Date.now();\n\n\t\t\tthis._getCodeLensModelPromise?.cancel();\n\t\t\tthis._getCodeLensModelPromise = createCancelablePromise(token => getCodeLensModel(this._languageFeaturesService.codeLensProvider, model, token));\n\n\t\t\tthis._getCodeLensModelPromise.then(result => {\n\t\t\t\tif (this._currentCodeLensModel) {\n\t\t\t\t\tthis._oldCodeLensModels.add(this._currentCodeLensModel);\n\t\t\t\t}\n\t\t\t\tthis._currentCodeLensModel = result;\n\n\t\t\t\t// cache model to reduce flicker\n\t\t\t\tthis._codeLensCache.put(model, result);\n\n\t\t\t\t// update moving average\n\t\t\t\tconst newDelay = this._provideCodeLensDebounce.update(model, Date.now() - t1);\n\t\t\t\tscheduler.delay = newDelay;\n\n\t\t\t\t// render lenses\n\t\t\t\tthis._renderCodeLensSymbols(result);\n\t\t\t\t// dom.scheduleAtNextAnimationFrame(() => this._resolveCodeLensesInViewport());\n\t\t\t\tthis._resolveCodeLensesInViewportSoon();\n\t\t\t}, onUnexpectedError);\n\n\t\t}, this._provideCodeLensDebounce.get(model));\n\n\t\tthis._localToDispose.add(scheduler);\n\t\tthis._localToDispose.add(toDisposable(() => this._resolveCodeLensesScheduler.cancel()));\n\t\tthis._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n\t\t\tthis._editor.changeDecorations(decorationsAccessor => {\n\t\t\t\tthis._editor.changeViewZones(viewZonesAccessor => {\n\t\t\t\t\tconst toDispose: CodeLensWidget[] = [];\n\t\t\t\t\tlet lastLensLineNumber: number = -1;\n\n\t\t\t\t\tthis._lenses.forEach((lens) => {\n\t\t\t\t\t\tif (!lens.isValid() || lastLensLineNumber === lens.getLineNumber()) {\n\t\t\t\t\t\t\t// invalid -> lens collapsed, attach range doesn't exist anymore\n\t\t\t\t\t\t\t// line_number -> lenses should never be on the same line\n\t\t\t\t\t\t\ttoDispose.push(lens);\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlens.update(viewZonesAccessor);\n\t\t\t\t\t\t\tlastLensLineNumber = lens.getLineNumber();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst helper = new CodeLensHelper();\n\t\t\t\t\ttoDispose.forEach((l) => {\n\t\t\t\t\t\tl.dispose(helper, viewZonesAccessor);\n\t\t\t\t\t\tthis._lenses.splice(this._lenses.indexOf(l), 1);\n\t\t\t\t\t});\n\t\t\t\t\thelper.commit(decorationsAccessor);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Ask for all references again\n\t\t\tscheduler.schedule();\n\n\t\t\t// Cancel pending and active resolve requests\n\t\t\tthis._resolveCodeLensesScheduler.cancel();\n\t\t\tthis._resolveCodeLensesPromise?.cancel();\n\t\t\tthis._resolveCodeLensesPromise = undefined;\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidFocusEditorText(() => {\n\t\t\tscheduler.schedule();\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidBlurEditorText(() => {\n\t\t\tscheduler.cancel();\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidScrollChange(e => {\n\t\t\tif (e.scrollTopChanged && this._lenses.length > 0) {\n\t\t\t\tthis._resolveCodeLensesInViewportSoon();\n\t\t\t}\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidLayoutChange(() => {\n\t\t\tthis._resolveCodeLensesInViewportSoon();\n\t\t}));\n\t\tthis._localToDispose.add(toDisposable(() => {\n\t\t\tif (this._editor.getModel()) {\n\t\t\t\tconst scrollState = StableEditorScrollState.capture(this._editor);\n\t\t\t\tthis._editor.changeDecorations(decorationsAccessor => {\n\t\t\t\t\tthis._editor.changeViewZones(viewZonesAccessor => {\n\t\t\t\t\t\tthis._disposeAllLenses(decorationsAccessor, viewZonesAccessor);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tscrollState.restore(this._editor);\n\t\t\t} else {\n\t\t\t\t// No accessors available\n\t\t\t\tthis._disposeAllLenses(undefined, undefined);\n\t\t\t}\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onMouseDown(e => {\n\t\t\tif (e.target.type !== MouseTargetType.CONTENT_WIDGET) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet target = e.target.element;\n\t\t\tif (target?.tagName === 'SPAN') {\n\t\t\t\ttarget = target.parentElement;\n\t\t\t}\n\t\t\tif (target?.tagName === 'A') {\n\t\t\t\tfor (const lens of this._lenses) {\n\t\t\t\t\tconst command = lens.getCommand(target as HTMLLinkElement);\n\t\t\t\t\tif (command) {\n\t\t\t\t\t\tthis._commandService.executeCommand(command.id, ...(command.arguments || [])).catch(err => this._notificationService.error(err));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t\tscheduler.schedule();\n\t}\n\n\tprivate _disposeAllLenses(decChangeAccessor: IModelDecorationsChangeAccessor | undefined, viewZoneChangeAccessor: IViewZoneChangeAccessor | undefined): void {\n\t\tconst helper = new CodeLensHelper();\n\t\tfor (const lens of this._lenses) {\n\t\t\tlens.dispose(helper, viewZoneChangeAccessor);\n\t\t}\n\t\tif (decChangeAccessor) {\n\t\t\thelper.commit(decChangeAccessor);\n\t\t}\n\t\tthis._lenses.length = 0;\n\t}\n\n\tprivate _renderCodeLensSymbols(symbols: CodeLensModel): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxLineNumber = this._editor.getModel().getLineCount();\n\t\tconst groups: CodeLensItem[][] = [];\n\t\tlet lastGroup: CodeLensItem[] | undefined;\n\n\t\tfor (const symbol of symbols.lenses) {\n\t\t\tconst line = symbol.symbol.range.startLineNumber;\n\t\t\tif (line < 1 || line > maxLineNumber) {\n\t\t\t\t// invalid code lens\n\t\t\t\tcontinue;\n\t\t\t} else if (lastGroup && lastGroup[lastGroup.length - 1].symbol.range.startLineNumber === line) {\n\t\t\t\t// on same line as previous\n\t\t\t\tlastGroup.push(symbol);\n\t\t\t} else {\n\t\t\t\t// on later line as previous\n\t\t\t\tlastGroup = [symbol];\n\t\t\t\tgroups.push(lastGroup);\n\t\t\t}\n\t\t}\n\n\t\tif (!groups.length && !this._lenses.length) {\n\t\t\t// Nothing to change\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollState = StableEditorScrollState.capture(this._editor);\n\t\tconst layoutInfo = this._getLayoutInfo();\n\n\t\tthis._editor.changeDecorations(decorationsAccessor => {\n\t\t\tthis._editor.changeViewZones(viewZoneAccessor => {\n\n\t\t\t\tconst helper = new CodeLensHelper();\n\t\t\t\tlet codeLensIndex = 0;\n\t\t\t\tlet groupsIndex = 0;\n\n\t\t\t\twhile (groupsIndex < groups.length && codeLensIndex < this._lenses.length) {\n\n\t\t\t\t\tconst symbolsLineNumber = groups[groupsIndex][0].symbol.range.startLineNumber;\n\t\t\t\t\tconst codeLensLineNumber = this._lenses[codeLensIndex].getLineNumber();\n\n\t\t\t\t\tif (codeLensLineNumber < symbolsLineNumber) {\n\t\t\t\t\t\tthis._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n\t\t\t\t\t\tthis._lenses.splice(codeLensIndex, 1);\n\t\t\t\t\t} else if (codeLensLineNumber === symbolsLineNumber) {\n\t\t\t\t\t\tthis._lenses[codeLensIndex].updateCodeLensSymbols(groups[groupsIndex], helper);\n\t\t\t\t\t\tgroupsIndex++;\n\t\t\t\t\t\tcodeLensIndex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._lenses.splice(codeLensIndex, 0, new CodeLensWidget(groups[groupsIndex], <IActiveCodeEditor>this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n\t\t\t\t\t\tcodeLensIndex++;\n\t\t\t\t\t\tgroupsIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Delete extra code lenses\n\t\t\t\twhile (codeLensIndex < this._lenses.length) {\n\t\t\t\t\tthis._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n\t\t\t\t\tthis._lenses.splice(codeLensIndex, 1);\n\t\t\t\t}\n\n\t\t\t\t// Create extra symbols\n\t\t\t\twhile (groupsIndex < groups.length) {\n\t\t\t\t\tthis._lenses.push(new CodeLensWidget(groups[groupsIndex], <IActiveCodeEditor>this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n\t\t\t\t\tgroupsIndex++;\n\t\t\t\t}\n\n\t\t\t\thelper.commit(decorationsAccessor);\n\t\t\t});\n\t\t});\n\n\t\tscrollState.restore(this._editor);\n\t}\n\n\tprivate _resolveCodeLensesInViewportSoon(): void {\n\t\tconst model = this._editor.getModel();\n\t\tif (model) {\n\t\t\tthis._resolveCodeLensesScheduler.schedule();\n\t\t}\n\t}\n\n\tprivate _resolveCodeLensesInViewport(): void {\n\n\t\tthis._resolveCodeLensesPromise?.cancel();\n\t\tthis._resolveCodeLensesPromise = undefined;\n\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst toResolve: Array<ReadonlyArray<CodeLensItem>> = [];\n\t\tconst lenses: CodeLensWidget[] = [];\n\t\tthis._lenses.forEach((lens) => {\n\t\t\tconst request = lens.computeIfNecessary(model);\n\t\t\tif (request) {\n\t\t\t\ttoResolve.push(request);\n\t\t\t\tlenses.push(lens);\n\t\t\t}\n\t\t});\n\n\t\tif (toResolve.length === 0) {\n\t\t\tthis._oldCodeLensModels.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tconst t1 = Date.now();\n\n\t\tconst resolvePromise = createCancelablePromise(token => {\n\n\t\t\tconst promises = toResolve.map((request, i) => {\n\n\t\t\t\tconst resolvedSymbols = new Array<CodeLens | undefined | null>(request.length);\n\t\t\t\tconst promises = request.map((request, i) => {\n\t\t\t\t\tif (!request.symbol.command && typeof request.provider.resolveCodeLens === 'function') {\n\t\t\t\t\t\treturn Promise.resolve(request.provider.resolveCodeLens(model, request.symbol, token)).then(symbol => {\n\t\t\t\t\t\t\tresolvedSymbols[i] = symbol;\n\t\t\t\t\t\t}, onUnexpectedExternalError);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolvedSymbols[i] = request.symbol;\n\t\t\t\t\t\treturn Promise.resolve(undefined);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Promise.all(promises).then(() => {\n\t\t\t\t\tif (!token.isCancellationRequested && !lenses[i].isDisposed()) {\n\t\t\t\t\t\tlenses[i].updateCommands(resolvedSymbols);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn Promise.all(promises);\n\t\t});\n\t\tthis._resolveCodeLensesPromise = resolvePromise;\n\n\t\tthis._resolveCodeLensesPromise.then(() => {\n\n\t\t\t// update moving average\n\t\t\tconst newDelay = this._resolveCodeLensesDebounce.update(model, Date.now() - t1);\n\t\t\tthis._resolveCodeLensesScheduler.delay = newDelay;\n\n\t\t\tif (this._currentCodeLensModel) { // update the cached state with new resolved items\n\t\t\t\tthis._codeLensCache.put(model, this._currentCodeLensModel);\n\t\t\t}\n\t\t\tthis._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model\n\t\t\tif (resolvePromise === this._resolveCodeLensesPromise) {\n\t\t\t\tthis._resolveCodeLensesPromise = undefined;\n\t\t\t}\n\t\t}, err => {\n\t\t\tonUnexpectedError(err); // can also be cancellation!\n\t\t\tif (resolvePromise === this._resolveCodeLensesPromise) {\n\t\t\t\tthis._resolveCodeLensesPromise = undefined;\n\t\t\t}\n\t\t});\n\t}\n\n\tasync getModel(): Promise<CodeLensModel | undefined> {\n\t\tawait this._getCodeLensModelPromise;\n\t\tawait this._resolveCodeLensesPromise;\n\t\treturn !this._currentCodeLensModel?.isDisposed\n\t\t\t? this._currentCodeLensModel\n\t\t\t: undefined;\n\t}\n}\n\nregisterEditorContribution(CodeLensContribution.ID, CodeLensContribution, EditorContributionInstantiation.AfterFirstRender);\n\nregisterEditorAction(class ShowLensesInCurrentLine extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'codelens.showLensesInCurrentLine',\n\t\t\tprecondition: EditorContextKeys.hasCodeLensProvider,\n\t\t\tlabel: localize2('showLensOnLine', \"Show CodeLens Commands for Current Line\"),\n\t\t});\n\t}\n\n\tasync run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {\n\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst commandService = accessor.get(ICommandService);\n\t\tconst notificationService = accessor.get(INotificationService);\n\n\t\tconst lineNumber = editor.getSelection().positionLineNumber;\n\t\tconst codelensController = editor.getContribution<CodeLensContribution>(CodeLensContribution.ID);\n\t\tif (!codelensController) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = await codelensController.getModel();\n\t\tif (!model) {\n\t\t\t// nothing\n\t\t\treturn;\n\t\t}\n\n\t\tconst items: { label: string; command: Command }[] = [];\n\t\tfor (const lens of model.lenses) {\n\t\t\tif (lens.symbol.command && lens.symbol.range.startLineNumber === lineNumber) {\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: lens.symbol.command.title,\n\t\t\t\t\tcommand: lens.symbol.command\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (items.length === 0) {\n\t\t\t// We dont want an empty picker\n\t\t\treturn;\n\t\t}\n\n\t\tconst item = await quickInputService.pick(items, {\n\t\t\tcanPickMany: false,\n\t\t\tplaceHolder: localize('placeHolder', \"Select a command\")\n\t\t});\n\t\tif (!item) {\n\t\t\t// Nothing picked\n\t\t\treturn;\n\t\t}\n\n\t\tlet command = item.command;\n\n\t\tif (model.isDisposed) {\n\t\t\t// try to find the same command again in-case the model has been re-created in the meantime\n\t\t\t// this is a best attempt approach which shouldn't be needed because eager model re-creates\n\t\t\t// shouldn't happen due to focus in/out anymore\n\t\t\tconst newModel = await codelensController.getModel();\n\t\t\tconst newLens = newModel?.lenses.find(lens => lens.symbol.range.startLineNumber === lineNumber && lens.symbol.command?.title === command.title);\n\t\t\tif (!newLens || !newLens.symbol.command) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcommand = newLens.symbol.command;\n\t\t}\n\n\t\ttry {\n\t\t\tawait commandService.executeCommand(command.id, ...(command.arguments || []));\n\t\t} catch (err) {\n\t\t\tnotificationService.error(err);\n\t\t}\n\t}\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/codelens/browser/codelensController.ts"],"names":[],"mappings":"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","file":"codelensController.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\nimport { CancelablePromise, createCancelablePromise, disposableTimeout, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { IActiveCodeEditor, ICodeEditor, IViewZoneChangeAccessor, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/fontInfo.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IModelDecorationsChangeAccessor } from '../../../common/model.js';\nimport { CodeLens, Command } from '../../../common/languages.js';\nimport { CodeLensItem, CodeLensModel, getCodeLensModel } from './codelens.js';\nimport { ICodeLensCache } from './codeLensCache.js';\nimport { CodeLensHelper, CodeLensWidget } from './codelensWidget.js';\nimport { localize, localize2 } from '../../../../nls.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\n\nexport class CodeLensContribution implements IEditorContribution {\n\n\tstatic readonly ID: string = 'css.editor.codeLens';\n\n\tprivate readonly _disposables = new DisposableStore();\n\tprivate readonly _localToDispose = new DisposableStore();\n\n\tprivate readonly _lenses: CodeLensWidget[] = [];\n\n\tprivate readonly _provideCodeLensDebounce: IFeatureDebounceInformation;\n\tprivate readonly _resolveCodeLensesDebounce: IFeatureDebounceInformation;\n\tprivate readonly _resolveCodeLensesScheduler: RunOnceScheduler;\n\n\tprivate _getCodeLensModelPromise: CancelablePromise<CodeLensModel> | undefined;\n\tprivate readonly _oldCodeLensModels = new DisposableStore();\n\tprivate _currentCodeLensModel: CodeLensModel | undefined;\n\tprivate _resolveCodeLensesPromise: CancelablePromise<any> | undefined;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageFeatureDebounceService debounceService: ILanguageFeatureDebounceService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@INotificationService private readonly _notificationService: INotificationService,\n\t\t@ICodeLensCache private readonly _codeLensCache: ICodeLensCache\n\t) {\n\t\tthis._provideCodeLensDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensProvide', { min: 250 });\n\t\tthis._resolveCodeLensesDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensResolve', { min: 250, salt: 'resolve' });\n\t\tthis._resolveCodeLensesScheduler = new RunOnceScheduler(() => this._resolveCodeLensesInViewport(), this._resolveCodeLensesDebounce.default());\n\n\t\tthis._disposables.add(this._editor.onDidChangeModel(() => this._onModelChange()));\n\t\tthis._disposables.add(this._editor.onDidChangeModelLanguage(() => this._onModelChange()));\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration((e) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo) || e.hasChanged(EditorOption.codeLensFontSize) || e.hasChanged(EditorOption.codeLensFontFamily)) {\n\t\t\t\tthis._updateLensStyle();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.codeLens)) {\n\t\t\t\tthis._onModelChange();\n\t\t\t}\n\t\t}));\n\t\tthis._disposables.add(_languageFeaturesService.codeLensProvider.onDidChange(this._onModelChange, this));\n\t\tthis._onModelChange();\n\n\t\tthis._updateLensStyle();\n\t}\n\n\tdispose(): void {\n\t\tthis._localDispose();\n\t\tthis._localToDispose.dispose();\n\t\tthis._disposables.dispose();\n\t\tthis._oldCodeLensModels.dispose();\n\t\tthis._currentCodeLensModel?.dispose();\n\t}\n\n\tprivate _getLayoutInfo() {\n\t\tconst lineHeightFactor = Math.max(1.3, this._editor.getOption(EditorOption.lineHeight) / this._editor.getOption(EditorOption.fontSize));\n\t\tlet fontSize = this._editor.getOption(EditorOption.codeLensFontSize);\n\t\tif (!fontSize || fontSize < 5) {\n\t\t\tfontSize = (this._editor.getOption(EditorOption.fontSize) * .9) | 0;\n\t\t}\n\t\treturn {\n\t\t\tfontSize,\n\t\t\tcodeLensHeight: (fontSize * lineHeightFactor) | 0,\n\t\t};\n\t}\n\n\tprivate _updateLensStyle(): void {\n\n\t\tconst { codeLensHeight, fontSize } = this._getLayoutInfo();\n\t\tconst fontFamily = this._editor.getOption(EditorOption.codeLensFontFamily);\n\t\tconst editorFontInfo = this._editor.getOption(EditorOption.fontInfo);\n\n\t\tconst { style } = this._editor.getContainerDomNode();\n\n\t\tstyle.setProperty('--vscode-editorCodeLens-lineHeight', `${codeLensHeight}px`);\n\t\tstyle.setProperty('--vscode-editorCodeLens-fontSize', `${fontSize}px`);\n\t\tstyle.setProperty('--vscode-editorCodeLens-fontFeatureSettings', editorFontInfo.fontFeatureSettings);\n\n\t\tif (fontFamily) {\n\t\t\tstyle.setProperty('--vscode-editorCodeLens-fontFamily', fontFamily);\n\t\t\tstyle.setProperty('--vscode-editorCodeLens-fontFamilyDefault', EDITOR_FONT_DEFAULTS.fontFamily);\n\t\t}\n\n\t\t//\n\t\tthis._editor.changeViewZones(accessor => {\n\t\t\tfor (const lens of this._lenses) {\n\t\t\t\tlens.updateHeight(codeLensHeight, accessor);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _localDispose(): void {\n\t\tthis._getCodeLensModelPromise?.cancel();\n\t\tthis._getCodeLensModelPromise = undefined;\n\t\tthis._resolveCodeLensesPromise?.cancel();\n\t\tthis._resolveCodeLensesPromise = undefined;\n\t\tthis._localToDispose.clear();\n\t\tthis._oldCodeLensModels.clear();\n\t\tthis._currentCodeLensModel?.dispose();\n\t}\n\n\tprivate _onModelChange(): void {\n\n\t\tthis._localDispose();\n\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._editor.getOption(EditorOption.codeLens) || model.isTooLargeForTokenization()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cachedLenses = this._codeLensCache.get(model);\n\t\tif (cachedLenses) {\n\t\t\tthis._renderCodeLensSymbols(cachedLenses);\n\t\t}\n\n\t\tif (!this._languageFeaturesService.codeLensProvider.has(model)) {\n\t\t\t// no provider -> return but check with\n\t\t\t// cached lenses. they expire after 30 seconds\n\t\t\tif (cachedLenses) {\n\t\t\t\tdisposableTimeout(() => {\n\t\t\t\t\tconst cachedLensesNow = this._codeLensCache.get(model);\n\t\t\t\t\tif (cachedLenses === cachedLensesNow) {\n\t\t\t\t\t\tthis._codeLensCache.delete(model);\n\t\t\t\t\t\tthis._onModelChange();\n\t\t\t\t\t}\n\t\t\t\t}, 30 * 1000, this._localToDispose);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const provider of this._languageFeaturesService.codeLensProvider.all(model)) {\n\t\t\tif (typeof provider.onDidChange === 'function') {\n\t\t\t\tconst registration = provider.onDidChange(() => scheduler.schedule());\n\t\t\t\tthis._localToDispose.add(registration);\n\t\t\t}\n\t\t}\n\n\t\tconst scheduler = new RunOnceScheduler(() => {\n\t\t\tconst t1 = Date.now();\n\n\t\t\tthis._getCodeLensModelPromise?.cancel();\n\t\t\tthis._getCodeLensModelPromise = createCancelablePromise(token => getCodeLensModel(this._languageFeaturesService.codeLensProvider, model, token));\n\n\t\t\tthis._getCodeLensModelPromise.then(result => {\n\t\t\t\tif (this._currentCodeLensModel) {\n\t\t\t\t\tthis._oldCodeLensModels.add(this._currentCodeLensModel);\n\t\t\t\t}\n\t\t\t\tthis._currentCodeLensModel = result;\n\n\t\t\t\t// cache model to reduce flicker\n\t\t\t\tthis._codeLensCache.put(model, result);\n\n\t\t\t\t// update moving average\n\t\t\t\tconst newDelay = this._provideCodeLensDebounce.update(model, Date.now() - t1);\n\t\t\t\tscheduler.delay = newDelay;\n\n\t\t\t\t// render lenses\n\t\t\t\tthis._renderCodeLensSymbols(result);\n\t\t\t\t// dom.scheduleAtNextAnimationFrame(() => this._resolveCodeLensesInViewport());\n\t\t\t\tthis._resolveCodeLensesInViewportSoon();\n\t\t\t}, onUnexpectedError);\n\n\t\t}, this._provideCodeLensDebounce.get(model));\n\n\t\tthis._localToDispose.add(scheduler);\n\t\tthis._localToDispose.add(toDisposable(() => this._resolveCodeLensesScheduler.cancel()));\n\t\tthis._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n\t\t\tthis._editor.changeDecorations(decorationsAccessor => {\n\t\t\t\tthis._editor.changeViewZones(viewZonesAccessor => {\n\t\t\t\t\tconst toDispose: CodeLensWidget[] = [];\n\t\t\t\t\tlet lastLensLineNumber: number = -1;\n\n\t\t\t\t\tthis._lenses.forEach((lens) => {\n\t\t\t\t\t\tif (!lens.isValid() || lastLensLineNumber === lens.getLineNumber()) {\n\t\t\t\t\t\t\t// invalid -> lens collapsed, attach range doesn't exist anymore\n\t\t\t\t\t\t\t// line_number -> lenses should never be on the same line\n\t\t\t\t\t\t\ttoDispose.push(lens);\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlens.update(viewZonesAccessor);\n\t\t\t\t\t\t\tlastLensLineNumber = lens.getLineNumber();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst helper = new CodeLensHelper();\n\t\t\t\t\ttoDispose.forEach((l) => {\n\t\t\t\t\t\tl.dispose(helper, viewZonesAccessor);\n\t\t\t\t\t\tthis._lenses.splice(this._lenses.indexOf(l), 1);\n\t\t\t\t\t});\n\t\t\t\t\thelper.commit(decorationsAccessor);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Ask for all references again\n\t\t\tscheduler.schedule();\n\n\t\t\t// Cancel pending and active resolve requests\n\t\t\tthis._resolveCodeLensesScheduler.cancel();\n\t\t\tthis._resolveCodeLensesPromise?.cancel();\n\t\t\tthis._resolveCodeLensesPromise = undefined;\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidFocusEditorText(() => {\n\t\t\tscheduler.schedule();\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidBlurEditorText(() => {\n\t\t\tscheduler.cancel();\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidScrollChange(e => {\n\t\t\tif (e.scrollTopChanged && this._lenses.length > 0) {\n\t\t\t\tthis._resolveCodeLensesInViewportSoon();\n\t\t\t}\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onDidLayoutChange(() => {\n\t\t\tthis._resolveCodeLensesInViewportSoon();\n\t\t}));\n\t\tthis._localToDispose.add(toDisposable(() => {\n\t\t\tif (this._editor.getModel()) {\n\t\t\t\tconst scrollState = StableEditorScrollState.capture(this._editor);\n\t\t\t\tthis._editor.changeDecorations(decorationsAccessor => {\n\t\t\t\t\tthis._editor.changeViewZones(viewZonesAccessor => {\n\t\t\t\t\t\tthis._disposeAllLenses(decorationsAccessor, viewZonesAccessor);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tscrollState.restore(this._editor);\n\t\t\t} else {\n\t\t\t\t// No accessors available\n\t\t\t\tthis._disposeAllLenses(undefined, undefined);\n\t\t\t}\n\t\t}));\n\t\tthis._localToDispose.add(this._editor.onMouseDown(e => {\n\t\t\tif (e.target.type !== MouseTargetType.CONTENT_WIDGET) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet target = e.target.element;\n\t\t\tif (target?.tagName === 'SPAN') {\n\t\t\t\ttarget = target.parentElement;\n\t\t\t}\n\t\t\tif (target?.tagName === 'A') {\n\t\t\t\tfor (const lens of this._lenses) {\n\t\t\t\t\tconst command = lens.getCommand(target as HTMLLinkElement);\n\t\t\t\t\tif (command) {\n\t\t\t\t\t\tthis._commandService.executeCommand(command.id, ...(command.arguments || [])).catch(err => this._notificationService.error(err));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\t\tscheduler.schedule();\n\t}\n\n\tprivate _disposeAllLenses(decChangeAccessor: IModelDecorationsChangeAccessor | undefined, viewZoneChangeAccessor: IViewZoneChangeAccessor | undefined): void {\n\t\tconst helper = new CodeLensHelper();\n\t\tfor (const lens of this._lenses) {\n\t\t\tlens.dispose(helper, viewZoneChangeAccessor);\n\t\t}\n\t\tif (decChangeAccessor) {\n\t\t\thelper.commit(decChangeAccessor);\n\t\t}\n\t\tthis._lenses.length = 0;\n\t}\n\n\tprivate _renderCodeLensSymbols(symbols: CodeLensModel): void {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxLineNumber = this._editor.getModel().getLineCount();\n\t\tconst groups: CodeLensItem[][] = [];\n\t\tlet lastGroup: CodeLensItem[] | undefined;\n\n\t\tfor (const symbol of symbols.lenses) {\n\t\t\tconst line = symbol.symbol.range.startLineNumber;\n\t\t\tif (line < 1 || line > maxLineNumber) {\n\t\t\t\t// invalid code lens\n\t\t\t\tcontinue;\n\t\t\t} else if (lastGroup && lastGroup[lastGroup.length - 1].symbol.range.startLineNumber === line) {\n\t\t\t\t// on same line as previous\n\t\t\t\tlastGroup.push(symbol);\n\t\t\t} else {\n\t\t\t\t// on later line as previous\n\t\t\t\tlastGroup = [symbol];\n\t\t\t\tgroups.push(lastGroup);\n\t\t\t}\n\t\t}\n\n\t\tif (!groups.length && !this._lenses.length) {\n\t\t\t// Nothing to change\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollState = StableEditorScrollState.capture(this._editor);\n\t\tconst layoutInfo = this._getLayoutInfo();\n\n\t\tthis._editor.changeDecorations(decorationsAccessor => {\n\t\t\tthis._editor.changeViewZones(viewZoneAccessor => {\n\n\t\t\t\tconst helper = new CodeLensHelper();\n\t\t\t\tlet codeLensIndex = 0;\n\t\t\t\tlet groupsIndex = 0;\n\n\t\t\t\twhile (groupsIndex < groups.length && codeLensIndex < this._lenses.length) {\n\n\t\t\t\t\tconst symbolsLineNumber = groups[groupsIndex][0].symbol.range.startLineNumber;\n\t\t\t\t\tconst codeLensLineNumber = this._lenses[codeLensIndex].getLineNumber();\n\n\t\t\t\t\tif (codeLensLineNumber < symbolsLineNumber) {\n\t\t\t\t\t\tthis._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n\t\t\t\t\t\tthis._lenses.splice(codeLensIndex, 1);\n\t\t\t\t\t} else if (codeLensLineNumber === symbolsLineNumber) {\n\t\t\t\t\t\tthis._lenses[codeLensIndex].updateCodeLensSymbols(groups[groupsIndex], helper);\n\t\t\t\t\t\tgroupsIndex++;\n\t\t\t\t\t\tcodeLensIndex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._lenses.splice(codeLensIndex, 0, new CodeLensWidget(groups[groupsIndex], <IActiveCodeEditor>this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n\t\t\t\t\t\tcodeLensIndex++;\n\t\t\t\t\t\tgroupsIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Delete extra code lenses\n\t\t\t\twhile (codeLensIndex < this._lenses.length) {\n\t\t\t\t\tthis._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n\t\t\t\t\tthis._lenses.splice(codeLensIndex, 1);\n\t\t\t\t}\n\n\t\t\t\t// Create extra symbols\n\t\t\t\twhile (groupsIndex < groups.length) {\n\t\t\t\t\tthis._lenses.push(new CodeLensWidget(groups[groupsIndex], <IActiveCodeEditor>this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n\t\t\t\t\tgroupsIndex++;\n\t\t\t\t}\n\n\t\t\t\thelper.commit(decorationsAccessor);\n\t\t\t});\n\t\t});\n\n\t\tscrollState.restore(this._editor);\n\t}\n\n\tprivate _resolveCodeLensesInViewportSoon(): void {\n\t\tconst model = this._editor.getModel();\n\t\tif (model) {\n\t\t\tthis._resolveCodeLensesScheduler.schedule();\n\t\t}\n\t}\n\n\tprivate _resolveCodeLensesInViewport(): void {\n\n\t\tthis._resolveCodeLensesPromise?.cancel();\n\t\tthis._resolveCodeLensesPromise = undefined;\n\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst toResolve: Array<ReadonlyArray<CodeLensItem>> = [];\n\t\tconst lenses: CodeLensWidget[] = [];\n\t\tthis._lenses.forEach((lens) => {\n\t\t\tconst request = lens.computeIfNecessary(model);\n\t\t\tif (request) {\n\t\t\t\ttoResolve.push(request);\n\t\t\t\tlenses.push(lens);\n\t\t\t}\n\t\t});\n\n\t\tif (toResolve.length === 0) {\n\t\t\tthis._oldCodeLensModels.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tconst t1 = Date.now();\n\n\t\tconst resolvePromise = createCancelablePromise(token => {\n\n\t\t\tconst promises = toResolve.map((request, i) => {\n\n\t\t\t\tconst resolvedSymbols = new Array<CodeLens | undefined | null>(request.length);\n\t\t\t\tconst promises = request.map((request, i) => {\n\t\t\t\t\tif (!request.symbol.command && typeof request.provider.resolveCodeLens === 'function') {\n\t\t\t\t\t\treturn Promise.resolve(request.provider.resolveCodeLens(model, request.symbol, token)).then(symbol => {\n\t\t\t\t\t\t\tresolvedSymbols[i] = symbol;\n\t\t\t\t\t\t}, onUnexpectedExternalError);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolvedSymbols[i] = request.symbol;\n\t\t\t\t\t\treturn Promise.resolve(undefined);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn Promise.all(promises).then(() => {\n\t\t\t\t\tif (!token.isCancellationRequested && !lenses[i].isDisposed()) {\n\t\t\t\t\t\tlenses[i].updateCommands(resolvedSymbols);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn Promise.all(promises);\n\t\t});\n\t\tthis._resolveCodeLensesPromise = resolvePromise;\n\n\t\tthis._resolveCodeLensesPromise.then(() => {\n\n\t\t\t// update moving average\n\t\t\tconst newDelay = this._resolveCodeLensesDebounce.update(model, Date.now() - t1);\n\t\t\tthis._resolveCodeLensesScheduler.delay = newDelay;\n\n\t\t\tif (this._currentCodeLensModel) { // update the cached state with new resolved items\n\t\t\t\tthis._codeLensCache.put(model, this._currentCodeLensModel);\n\t\t\t}\n\t\t\tthis._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model\n\t\t\tif (resolvePromise === this._resolveCodeLensesPromise) {\n\t\t\t\tthis._resolveCodeLensesPromise = undefined;\n\t\t\t}\n\t\t}, err => {\n\t\t\tonUnexpectedError(err); // can also be cancellation!\n\t\t\tif (resolvePromise === this._resolveCodeLensesPromise) {\n\t\t\t\tthis._resolveCodeLensesPromise = undefined;\n\t\t\t}\n\t\t});\n\t}\n\n\tasync getModel(): Promise<CodeLensModel | undefined> {\n\t\tawait this._getCodeLensModelPromise;\n\t\tawait this._resolveCodeLensesPromise;\n\t\treturn !this._currentCodeLensModel?.isDisposed\n\t\t\t? this._currentCodeLensModel\n\t\t\t: undefined;\n\t}\n}\n\nregisterEditorContribution(CodeLensContribution.ID, CodeLensContribution, EditorContributionInstantiation.AfterFirstRender);\n\nregisterEditorAction(class ShowLensesInCurrentLine extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'codelens.showLensesInCurrentLine',\n\t\t\tprecondition: EditorContextKeys.hasCodeLensProvider,\n\t\t\tlabel: localize2('showLensOnLine', \"Show CodeLens Commands for Current Line\"),\n\t\t});\n\t}\n\n\tasync run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {\n\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst commandService = accessor.get(ICommandService);\n\t\tconst notificationService = accessor.get(INotificationService);\n\n\t\tconst lineNumber = editor.getSelection().positionLineNumber;\n\t\tconst codelensController = editor.getContribution<CodeLensContribution>(CodeLensContribution.ID);\n\t\tif (!codelensController) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = await codelensController.getModel();\n\t\tif (!model) {\n\t\t\t// nothing\n\t\t\treturn;\n\t\t}\n\n\t\tconst items: { label: string; command: Command }[] = [];\n\t\tfor (const lens of model.lenses) {\n\t\t\tif (lens.symbol.command && lens.symbol.range.startLineNumber === lineNumber) {\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: lens.symbol.command.title,\n\t\t\t\t\tcommand: lens.symbol.command\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (items.length === 0) {\n\t\t\t// We dont want an empty picker\n\t\t\treturn;\n\t\t}\n\n\t\tconst item = await quickInputService.pick(items, {\n\t\t\tcanPickMany: false,\n\t\t\tplaceHolder: localize('placeHolder', \"Select a command\")\n\t\t});\n\t\tif (!item) {\n\t\t\t// Nothing picked\n\t\t\treturn;\n\t\t}\n\n\t\tlet command = item.command;\n\n\t\tif (model.isDisposed) {\n\t\t\t// try to find the same command again in-case the model has been re-created in the meantime\n\t\t\t// this is a best attempt approach which shouldn't be needed because eager model re-creates\n\t\t\t// shouldn't happen due to focus in/out anymore\n\t\t\tconst newModel = await codelensController.getModel();\n\t\t\tconst newLens = newModel?.lenses.find(lens => lens.symbol.range.startLineNumber === lineNumber && lens.symbol.command?.title === command.title);\n\t\t\tif (!newLens || !newLens.symbol.command) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcommand = newLens.symbol.command;\n\t\t}\n\n\t\ttry {\n\t\t\tawait commandService.executeCommand(command.id, ...(command.arguments || []));\n\t\t} catch (err) {\n\t\t\tnotificationService.error(err);\n\t\t}\n\t}\n});\n"]}
|
|
@@ -80,6 +80,7 @@ let ColorDetector = class ColorDetector extends Disposable {
|
|
|
80
80
|
// handle deprecated settings. [languageId].colorDecorators.enable
|
|
81
81
|
const deprecatedConfig = this._configurationService.getValue(languageId);
|
|
82
82
|
if (deprecatedConfig && typeof deprecatedConfig === 'object') {
|
|
83
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
83
84
|
const colorDecorators = deprecatedConfig['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');
|
|
84
85
|
if (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {
|
|
85
86
|
return colorDecorators['enable'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/colorPicker/browser/colorDetector.ts","vs/editor/contrib/colorPicker/browser/colorDetector.ts"],"names":[],"mappings":"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","file":"colorDetector.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 { CancelablePromise, createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { RGBA } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IEditorDecorationsCollection } from '../../../common/editorCommon.js';\nimport { IModelDecoration, IModelDeltaDecoration } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getColors, IColorData } from './color.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nexport const ColorDecorationInjectedTextMarker = Object.create({});\n\n\nexport class ColorDetector extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID: string = 'editor.contrib.colorDetector';\n\n\tstatic readonly RECOMPUTE_TIME = 1000; // ms\n\n\tprivate readonly _localToDispose = this._register(new DisposableStore());\n\tprivate _computePromise: CancelablePromise<IColorData[]> | null;\n\tprivate _timeoutTimer: TimeoutTimer | null;\n\tprivate _debounceInformation: IFeatureDebounceInformation;\n\n\tprivate _decorationsIds: string[] = [];\n\tprivate _colorDatas = new Map<string, IColorData>();\n\n\tprivate readonly _colorDecoratorIds: IEditorDecorationsCollection;\n\n\tprivate _isColorDecoratorsEnabled: boolean;\n\tprivate _defaultColorDecoratorsEnablement: 'auto' | 'always' | 'never';\n\n\tprivate readonly _ruleFactory: DynamicCssRules;\n\n\tprivate readonly _decoratorLimitReporter = this._register(new DecoratorLimitReporter());\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t) {\n\t\tsuper();\n\t\tthis._colorDecoratorIds = this._editor.createDecorationsCollection();\n\t\tthis._ruleFactory = this._register(new DynamicCssRules(this._editor));\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(_languageFeaturesService.colorProvider, 'Document Colors', { min: ColorDetector.RECOMPUTE_TIME });\n\t\tthis._register(_editor.onDidChangeModel(() => {\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis.updateColors();\n\t\t}));\n\t\tthis._register(_editor.onDidChangeModelLanguage(() => this.updateColors()));\n\t\tthis._register(_languageFeaturesService.colorProvider.onDidChange(() => this.updateColors()));\n\t\tthis._register(_editor.onDidChangeConfiguration((e) => {\n\t\t\tconst prevIsEnabled = this._isColorDecoratorsEnabled;\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\t\tconst updatedColorDecoratorsSetting = prevIsEnabled !== this._isColorDecoratorsEnabled || e.hasChanged(EditorOption.colorDecoratorsLimit);\n\t\t\tconst updatedDefaultColorDecoratorsSetting = e.hasChanged(EditorOption.defaultColorDecorators);\n\t\t\tif (updatedColorDecoratorsSetting || updatedDefaultColorDecoratorsSetting) {\n\t\t\t\tif (this._isColorDecoratorsEnabled) {\n\t\t\t\t\tthis.updateColors();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.removeAllDecorations();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._timeoutTimer = null;\n\t\tthis._computePromise = null;\n\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\tthis.updateColors();\n\t}\n\n\tisEnabled(): boolean {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn false;\n\t\t}\n\t\tconst languageId = model.getLanguageId();\n\t\t// handle deprecated settings. [languageId].colorDecorators.enable\n\t\tconst deprecatedConfig = this._configurationService.getValue(languageId);\n\t\tif (deprecatedConfig && typeof deprecatedConfig === 'object') {\n\t\t\tconst colorDecorators = (deprecatedConfig as any)['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\n\t\t\tif (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\n\t\t\t\treturn colorDecorators['enable'];\n\t\t\t}\n\t\t}\n\n\t\treturn this._editor.getOption(EditorOption.colorDecorators);\n\t}\n\n\tstatic get(editor: ICodeEditor): ColorDetector | null {\n\t\treturn editor.getContribution<ColorDetector>(this.ID);\n\t}\n\n\toverride dispose(): void {\n\t\tthis.stop();\n\t\tthis.removeAllDecorations();\n\t\tsuper.dispose();\n\t}\n\n\tprivate updateColors(): void {\n\t\tthis.stop();\n\n\t\tif (!this._isColorDecoratorsEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\n\t\tif (!model || !this._languageFeaturesService.colorProvider.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n\t\t\tif (!this._timeoutTimer) {\n\t\t\t\tthis._timeoutTimer = new TimeoutTimer();\n\t\t\t\tthis._timeoutTimer.cancelAndSet(() => {\n\t\t\t\t\tthis._timeoutTimer = null;\n\t\t\t\t\tthis.beginCompute();\n\t\t\t\t}, this._debounceInformation.get(model));\n\t\t\t}\n\t\t}));\n\t\tthis.beginCompute();\n\t}\n\n\tprivate async beginCompute(): Promise<void> {\n\t\tthis._computePromise = createCancelablePromise(async token => {\n\t\t\tconst model = this._editor.getModel();\n\t\t\tif (!model) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst sw = new StopWatch(false);\n\t\t\tconst colors = await getColors(this._languageFeaturesService.colorProvider, model, token, this._defaultColorDecoratorsEnablement);\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\treturn colors;\n\t\t});\n\t\ttry {\n\t\t\tconst colors = await this._computePromise;\n\t\t\tthis.updateDecorations(colors);\n\t\t\tthis.updateColorDecorators(colors);\n\t\t\tthis._computePromise = null;\n\t\t} catch (e) {\n\t\t\tonUnexpectedError(e);\n\t\t}\n\t}\n\n\tprivate stop(): void {\n\t\tif (this._timeoutTimer) {\n\t\t\tthis._timeoutTimer.cancel();\n\t\t\tthis._timeoutTimer = null;\n\t\t}\n\t\tif (this._computePromise) {\n\t\t\tthis._computePromise.cancel();\n\t\t\tthis._computePromise = null;\n\t\t}\n\t\tthis._localToDispose.clear();\n\t}\n\n\tprivate updateDecorations(colorDatas: IColorData[]): void {\n\t\tconst decorations = colorDatas.map(c => ({\n\t\t\trange: {\n\t\t\t\tstartLineNumber: c.colorInfo.range.startLineNumber,\n\t\t\t\tstartColumn: c.colorInfo.range.startColumn,\n\t\t\t\tendLineNumber: c.colorInfo.range.endLineNumber,\n\t\t\t\tendColumn: c.colorInfo.range.endColumn\n\t\t\t},\n\t\t\toptions: ModelDecorationOptions.EMPTY\n\t\t}));\n\n\t\tthis._editor.changeDecorations((changeAccessor) => {\n\t\t\tthis._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);\n\n\t\t\tthis._colorDatas = new Map<string, IColorData>();\n\t\t\tthis._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\n\t\t});\n\t}\n\n\tprivate readonly _colorDecorationClassRefs = this._register(new DisposableStore());\n\n\tprivate updateColorDecorators(colorData: IColorData[]): void {\n\t\tthis._colorDecorationClassRefs.clear();\n\n\t\tconst decorations: IModelDeltaDecoration[] = [];\n\n\t\tconst limit = this._editor.getOption(EditorOption.colorDecoratorsLimit);\n\n\t\tfor (let i = 0; i < colorData.length && decorations.length < limit; i++) {\n\t\t\tconst { red, green, blue, alpha } = colorData[i].colorInfo.color;\n\t\t\tconst rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n\t\t\tconst color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n\n\t\t\tconst ref = this._colorDecorationClassRefs.add(\n\t\t\t\tthis._ruleFactory.createClassNameRef({\n\t\t\t\t\tbackgroundColor: color\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tdecorations.push({\n\t\t\t\trange: {\n\t\t\t\t\tstartLineNumber: colorData[i].colorInfo.range.startLineNumber,\n\t\t\t\t\tstartColumn: colorData[i].colorInfo.range.startColumn,\n\t\t\t\t\tendLineNumber: colorData[i].colorInfo.range.endLineNumber,\n\t\t\t\t\tendColumn: colorData[i].colorInfo.range.endColumn\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tdescription: 'colorDetector',\n\t\t\t\t\tbefore: {\n\t\t\t\t\t\tcontent: noBreakWhitespace,\n\t\t\t\t\t\tinlineClassName: `${ref.className} colorpicker-color-decoration`,\n\t\t\t\t\t\tinlineClassNameAffectsLetterSpacing: true,\n\t\t\t\t\t\tattachedData: ColorDecorationInjectedTextMarker\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst limited = limit < colorData.length ? limit : false;\n\t\tthis._decoratorLimitReporter.update(colorData.length, limited);\n\n\t\tthis._colorDecoratorIds.set(decorations);\n\t}\n\n\tprivate removeAllDecorations(): void {\n\t\tthis._editor.removeDecorations(this._decorationsIds);\n\t\tthis._decorationsIds = [];\n\t\tthis._colorDecoratorIds.clear();\n\t\tthis._colorDecorationClassRefs.clear();\n\t}\n\n\tgetColorData(position: Position): IColorData | null {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst decorations = model\n\t\t\t.getDecorationsInRange(Range.fromPositions(position, position))\n\t\t\t.filter(d => this._colorDatas.has(d.id));\n\n\t\tif (decorations.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._colorDatas.get(decorations[0].id)!;\n\t}\n\n\tisColorDecoration(decoration: IModelDecoration): boolean {\n\t\treturn this._colorDecoratorIds.has(decoration);\n\t}\n}\n\nexport class DecoratorLimitReporter extends Disposable {\n\tprivate _onDidChange = this._register(new Emitter<void>());\n\n\tprivate _computed: number = 0;\n\tprivate _limited: number | false = false;\n\tpublic update(computed: number, limited: number | false) {\n\t\tif (computed !== this._computed || limited !== this._limited) {\n\t\t\tthis._computed = computed;\n\t\t\tthis._limited = limited;\n\t\t\tthis._onDidChange.fire();\n\t\t}\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { RGBA } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IEditorDecorationsCollection } from '../../../common/editorCommon.js';\nimport { IModelDecoration, IModelDeltaDecoration } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getColors, IColorData } from './color.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nexport const ColorDecorationInjectedTextMarker = Object.create({});\n\n\nexport class ColorDetector extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID: string = 'editor.contrib.colorDetector';\n\n\tstatic readonly RECOMPUTE_TIME = 1000; // ms\n\n\tprivate readonly _localToDispose = this._register(new DisposableStore());\n\tprivate _computePromise: CancelablePromise<IColorData[]> | null;\n\tprivate _timeoutTimer: TimeoutTimer | null;\n\tprivate _debounceInformation: IFeatureDebounceInformation;\n\n\tprivate _decorationsIds: string[] = [];\n\tprivate _colorDatas = new Map<string, IColorData>();\n\n\tprivate readonly _colorDecoratorIds: IEditorDecorationsCollection;\n\n\tprivate _isColorDecoratorsEnabled: boolean;\n\tprivate _defaultColorDecoratorsEnablement: 'auto' | 'always' | 'never';\n\n\tprivate readonly _ruleFactory: DynamicCssRules;\n\n\tprivate readonly _decoratorLimitReporter = this._register(new DecoratorLimitReporter());\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t) {\n\t\tsuper();\n\t\tthis._colorDecoratorIds = this._editor.createDecorationsCollection();\n\t\tthis._ruleFactory = this._register(new DynamicCssRules(this._editor));\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(_languageFeaturesService.colorProvider, 'Document Colors', { min: ColorDetector.RECOMPUTE_TIME });\n\t\tthis._register(_editor.onDidChangeModel(() => {\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis.updateColors();\n\t\t}));\n\t\tthis._register(_editor.onDidChangeModelLanguage(() => this.updateColors()));\n\t\tthis._register(_languageFeaturesService.colorProvider.onDidChange(() => this.updateColors()));\n\t\tthis._register(_editor.onDidChangeConfiguration((e) => {\n\t\t\tconst prevIsEnabled = this._isColorDecoratorsEnabled;\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\t\tconst updatedColorDecoratorsSetting = prevIsEnabled !== this._isColorDecoratorsEnabled || e.hasChanged(EditorOption.colorDecoratorsLimit);\n\t\t\tconst updatedDefaultColorDecoratorsSetting = e.hasChanged(EditorOption.defaultColorDecorators);\n\t\t\tif (updatedColorDecoratorsSetting || updatedDefaultColorDecoratorsSetting) {\n\t\t\t\tif (this._isColorDecoratorsEnabled) {\n\t\t\t\t\tthis.updateColors();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.removeAllDecorations();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._timeoutTimer = null;\n\t\tthis._computePromise = null;\n\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\tthis.updateColors();\n\t}\n\n\tisEnabled(): boolean {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn false;\n\t\t}\n\t\tconst languageId = model.getLanguageId();\n\t\t// handle deprecated settings. [languageId].colorDecorators.enable\n\t\tconst deprecatedConfig = this._configurationService.getValue(languageId);\n\t\tif (deprecatedConfig && typeof deprecatedConfig === 'object') {\n\t\t\tconst colorDecorators = (deprecatedConfig as any)['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\n\t\t\tif (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\n\t\t\t\treturn colorDecorators['enable'];\n\t\t\t}\n\t\t}\n\n\t\treturn this._editor.getOption(EditorOption.colorDecorators);\n\t}\n\n\tstatic get(editor: ICodeEditor): ColorDetector | null {\n\t\treturn editor.getContribution<ColorDetector>(this.ID);\n\t}\n\n\toverride dispose(): void {\n\t\tthis.stop();\n\t\tthis.removeAllDecorations();\n\t\tsuper.dispose();\n\t}\n\n\tprivate updateColors(): void {\n\t\tthis.stop();\n\n\t\tif (!this._isColorDecoratorsEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\n\t\tif (!model || !this._languageFeaturesService.colorProvider.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n\t\t\tif (!this._timeoutTimer) {\n\t\t\t\tthis._timeoutTimer = new TimeoutTimer();\n\t\t\t\tthis._timeoutTimer.cancelAndSet(() => {\n\t\t\t\t\tthis._timeoutTimer = null;\n\t\t\t\t\tthis.beginCompute();\n\t\t\t\t}, this._debounceInformation.get(model));\n\t\t\t}\n\t\t}));\n\t\tthis.beginCompute();\n\t}\n\n\tprivate async beginCompute(): Promise<void> {\n\t\tthis._computePromise = createCancelablePromise(async token => {\n\t\t\tconst model = this._editor.getModel();\n\t\t\tif (!model) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst sw = new StopWatch(false);\n\t\t\tconst colors = await getColors(this._languageFeaturesService.colorProvider, model, token, this._defaultColorDecoratorsEnablement);\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\treturn colors;\n\t\t});\n\t\ttry {\n\t\t\tconst colors = await this._computePromise;\n\t\t\tthis.updateDecorations(colors);\n\t\t\tthis.updateColorDecorators(colors);\n\t\t\tthis._computePromise = null;\n\t\t} catch (e) {\n\t\t\tonUnexpectedError(e);\n\t\t}\n\t}\n\n\tprivate stop(): void {\n\t\tif (this._timeoutTimer) {\n\t\t\tthis._timeoutTimer.cancel();\n\t\t\tthis._timeoutTimer = null;\n\t\t}\n\t\tif (this._computePromise) {\n\t\t\tthis._computePromise.cancel();\n\t\t\tthis._computePromise = null;\n\t\t}\n\t\tthis._localToDispose.clear();\n\t}\n\n\tprivate updateDecorations(colorDatas: IColorData[]): void {\n\t\tconst decorations = colorDatas.map(c => ({\n\t\t\trange: {\n\t\t\t\tstartLineNumber: c.colorInfo.range.startLineNumber,\n\t\t\t\tstartColumn: c.colorInfo.range.startColumn,\n\t\t\t\tendLineNumber: c.colorInfo.range.endLineNumber,\n\t\t\t\tendColumn: c.colorInfo.range.endColumn\n\t\t\t},\n\t\t\toptions: ModelDecorationOptions.EMPTY\n\t\t}));\n\n\t\tthis._editor.changeDecorations((changeAccessor) => {\n\t\t\tthis._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);\n\n\t\t\tthis._colorDatas = new Map<string, IColorData>();\n\t\t\tthis._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\n\t\t});\n\t}\n\n\tprivate readonly _colorDecorationClassRefs = this._register(new DisposableStore());\n\n\tprivate updateColorDecorators(colorData: IColorData[]): void {\n\t\tthis._colorDecorationClassRefs.clear();\n\n\t\tconst decorations: IModelDeltaDecoration[] = [];\n\n\t\tconst limit = this._editor.getOption(EditorOption.colorDecoratorsLimit);\n\n\t\tfor (let i = 0; i < colorData.length && decorations.length < limit; i++) {\n\t\t\tconst { red, green, blue, alpha } = colorData[i].colorInfo.color;\n\t\t\tconst rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n\t\t\tconst color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n\n\t\t\tconst ref = this._colorDecorationClassRefs.add(\n\t\t\t\tthis._ruleFactory.createClassNameRef({\n\t\t\t\t\tbackgroundColor: color\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tdecorations.push({\n\t\t\t\trange: {\n\t\t\t\t\tstartLineNumber: colorData[i].colorInfo.range.startLineNumber,\n\t\t\t\t\tstartColumn: colorData[i].colorInfo.range.startColumn,\n\t\t\t\t\tendLineNumber: colorData[i].colorInfo.range.endLineNumber,\n\t\t\t\t\tendColumn: colorData[i].colorInfo.range.endColumn\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tdescription: 'colorDetector',\n\t\t\t\t\tbefore: {\n\t\t\t\t\t\tcontent: noBreakWhitespace,\n\t\t\t\t\t\tinlineClassName: `${ref.className} colorpicker-color-decoration`,\n\t\t\t\t\t\tinlineClassNameAffectsLetterSpacing: true,\n\t\t\t\t\t\tattachedData: ColorDecorationInjectedTextMarker\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst limited = limit < colorData.length ? limit : false;\n\t\tthis._decoratorLimitReporter.update(colorData.length, limited);\n\n\t\tthis._colorDecoratorIds.set(decorations);\n\t}\n\n\tprivate removeAllDecorations(): void {\n\t\tthis._editor.removeDecorations(this._decorationsIds);\n\t\tthis._decorationsIds = [];\n\t\tthis._colorDecoratorIds.clear();\n\t\tthis._colorDecorationClassRefs.clear();\n\t}\n\n\tgetColorData(position: Position): IColorData | null {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst decorations = model\n\t\t\t.getDecorationsInRange(Range.fromPositions(position, position))\n\t\t\t.filter(d => this._colorDatas.has(d.id));\n\n\t\tif (decorations.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._colorDatas.get(decorations[0].id)!;\n\t}\n\n\tisColorDecoration(decoration: IModelDecoration): boolean {\n\t\treturn this._colorDecoratorIds.has(decoration);\n\t}\n}\n\nexport class DecoratorLimitReporter extends Disposable {\n\tprivate _onDidChange = this._register(new Emitter<void>());\n\n\tprivate _computed: number = 0;\n\tprivate _limited: number | false = false;\n\tpublic update(computed: number, limited: number | false) {\n\t\tif (computed !== this._computed || limited !== this._limited) {\n\t\t\tthis._computed = computed;\n\t\t\tthis._limited = limited;\n\t\t\tthis._onDidChange.fire();\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/colorPicker/browser/colorDetector.ts","vs/editor/contrib/colorPicker/browser/colorDetector.ts"],"names":[],"mappings":"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","file":"colorDetector.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 { CancelablePromise, createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { RGBA } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IEditorDecorationsCollection } from '../../../common/editorCommon.js';\nimport { IModelDecoration, IModelDeltaDecoration } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getColors, IColorData } from './color.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nexport const ColorDecorationInjectedTextMarker = Object.create({});\n\n\nexport class ColorDetector extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID: string = 'editor.contrib.colorDetector';\n\n\tstatic readonly RECOMPUTE_TIME = 1000; // ms\n\n\tprivate readonly _localToDispose = this._register(new DisposableStore());\n\tprivate _computePromise: CancelablePromise<IColorData[]> | null;\n\tprivate _timeoutTimer: TimeoutTimer | null;\n\tprivate _debounceInformation: IFeatureDebounceInformation;\n\n\tprivate _decorationsIds: string[] = [];\n\tprivate _colorDatas = new Map<string, IColorData>();\n\n\tprivate readonly _colorDecoratorIds: IEditorDecorationsCollection;\n\n\tprivate _isColorDecoratorsEnabled: boolean;\n\tprivate _defaultColorDecoratorsEnablement: 'auto' | 'always' | 'never';\n\n\tprivate readonly _ruleFactory: DynamicCssRules;\n\n\tprivate readonly _decoratorLimitReporter = this._register(new DecoratorLimitReporter());\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t) {\n\t\tsuper();\n\t\tthis._colorDecoratorIds = this._editor.createDecorationsCollection();\n\t\tthis._ruleFactory = this._register(new DynamicCssRules(this._editor));\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(_languageFeaturesService.colorProvider, 'Document Colors', { min: ColorDetector.RECOMPUTE_TIME });\n\t\tthis._register(_editor.onDidChangeModel(() => {\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis.updateColors();\n\t\t}));\n\t\tthis._register(_editor.onDidChangeModelLanguage(() => this.updateColors()));\n\t\tthis._register(_languageFeaturesService.colorProvider.onDidChange(() => this.updateColors()));\n\t\tthis._register(_editor.onDidChangeConfiguration((e) => {\n\t\t\tconst prevIsEnabled = this._isColorDecoratorsEnabled;\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\t\tconst updatedColorDecoratorsSetting = prevIsEnabled !== this._isColorDecoratorsEnabled || e.hasChanged(EditorOption.colorDecoratorsLimit);\n\t\t\tconst updatedDefaultColorDecoratorsSetting = e.hasChanged(EditorOption.defaultColorDecorators);\n\t\t\tif (updatedColorDecoratorsSetting || updatedDefaultColorDecoratorsSetting) {\n\t\t\t\tif (this._isColorDecoratorsEnabled) {\n\t\t\t\t\tthis.updateColors();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.removeAllDecorations();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._timeoutTimer = null;\n\t\tthis._computePromise = null;\n\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\tthis.updateColors();\n\t}\n\n\tisEnabled(): boolean {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn false;\n\t\t}\n\t\tconst languageId = model.getLanguageId();\n\t\t// handle deprecated settings. [languageId].colorDecorators.enable\n\t\tconst deprecatedConfig = this._configurationService.getValue(languageId);\n\t\tif (deprecatedConfig && typeof deprecatedConfig === 'object') {\n\t\t\t// eslint-disable-next-line local/code-no-any-casts\n\t\t\tconst colorDecorators = (deprecatedConfig as any)['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\n\t\t\tif (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\n\t\t\t\treturn colorDecorators['enable'];\n\t\t\t}\n\t\t}\n\n\t\treturn this._editor.getOption(EditorOption.colorDecorators);\n\t}\n\n\tstatic get(editor: ICodeEditor): ColorDetector | null {\n\t\treturn editor.getContribution<ColorDetector>(this.ID);\n\t}\n\n\toverride dispose(): void {\n\t\tthis.stop();\n\t\tthis.removeAllDecorations();\n\t\tsuper.dispose();\n\t}\n\n\tprivate updateColors(): void {\n\t\tthis.stop();\n\n\t\tif (!this._isColorDecoratorsEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\n\t\tif (!model || !this._languageFeaturesService.colorProvider.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n\t\t\tif (!this._timeoutTimer) {\n\t\t\t\tthis._timeoutTimer = new TimeoutTimer();\n\t\t\t\tthis._timeoutTimer.cancelAndSet(() => {\n\t\t\t\t\tthis._timeoutTimer = null;\n\t\t\t\t\tthis.beginCompute();\n\t\t\t\t}, this._debounceInformation.get(model));\n\t\t\t}\n\t\t}));\n\t\tthis.beginCompute();\n\t}\n\n\tprivate async beginCompute(): Promise<void> {\n\t\tthis._computePromise = createCancelablePromise(async token => {\n\t\t\tconst model = this._editor.getModel();\n\t\t\tif (!model) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst sw = new StopWatch(false);\n\t\t\tconst colors = await getColors(this._languageFeaturesService.colorProvider, model, token, this._defaultColorDecoratorsEnablement);\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\treturn colors;\n\t\t});\n\t\ttry {\n\t\t\tconst colors = await this._computePromise;\n\t\t\tthis.updateDecorations(colors);\n\t\t\tthis.updateColorDecorators(colors);\n\t\t\tthis._computePromise = null;\n\t\t} catch (e) {\n\t\t\tonUnexpectedError(e);\n\t\t}\n\t}\n\n\tprivate stop(): void {\n\t\tif (this._timeoutTimer) {\n\t\t\tthis._timeoutTimer.cancel();\n\t\t\tthis._timeoutTimer = null;\n\t\t}\n\t\tif (this._computePromise) {\n\t\t\tthis._computePromise.cancel();\n\t\t\tthis._computePromise = null;\n\t\t}\n\t\tthis._localToDispose.clear();\n\t}\n\n\tprivate updateDecorations(colorDatas: IColorData[]): void {\n\t\tconst decorations = colorDatas.map(c => ({\n\t\t\trange: {\n\t\t\t\tstartLineNumber: c.colorInfo.range.startLineNumber,\n\t\t\t\tstartColumn: c.colorInfo.range.startColumn,\n\t\t\t\tendLineNumber: c.colorInfo.range.endLineNumber,\n\t\t\t\tendColumn: c.colorInfo.range.endColumn\n\t\t\t},\n\t\t\toptions: ModelDecorationOptions.EMPTY\n\t\t}));\n\n\t\tthis._editor.changeDecorations((changeAccessor) => {\n\t\t\tthis._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);\n\n\t\t\tthis._colorDatas = new Map<string, IColorData>();\n\t\t\tthis._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\n\t\t});\n\t}\n\n\tprivate readonly _colorDecorationClassRefs = this._register(new DisposableStore());\n\n\tprivate updateColorDecorators(colorData: IColorData[]): void {\n\t\tthis._colorDecorationClassRefs.clear();\n\n\t\tconst decorations: IModelDeltaDecoration[] = [];\n\n\t\tconst limit = this._editor.getOption(EditorOption.colorDecoratorsLimit);\n\n\t\tfor (let i = 0; i < colorData.length && decorations.length < limit; i++) {\n\t\t\tconst { red, green, blue, alpha } = colorData[i].colorInfo.color;\n\t\t\tconst rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n\t\t\tconst color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n\n\t\t\tconst ref = this._colorDecorationClassRefs.add(\n\t\t\t\tthis._ruleFactory.createClassNameRef({\n\t\t\t\t\tbackgroundColor: color\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tdecorations.push({\n\t\t\t\trange: {\n\t\t\t\t\tstartLineNumber: colorData[i].colorInfo.range.startLineNumber,\n\t\t\t\t\tstartColumn: colorData[i].colorInfo.range.startColumn,\n\t\t\t\t\tendLineNumber: colorData[i].colorInfo.range.endLineNumber,\n\t\t\t\t\tendColumn: colorData[i].colorInfo.range.endColumn\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tdescription: 'colorDetector',\n\t\t\t\t\tbefore: {\n\t\t\t\t\t\tcontent: noBreakWhitespace,\n\t\t\t\t\t\tinlineClassName: `${ref.className} colorpicker-color-decoration`,\n\t\t\t\t\t\tinlineClassNameAffectsLetterSpacing: true,\n\t\t\t\t\t\tattachedData: ColorDecorationInjectedTextMarker\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst limited = limit < colorData.length ? limit : false;\n\t\tthis._decoratorLimitReporter.update(colorData.length, limited);\n\n\t\tthis._colorDecoratorIds.set(decorations);\n\t}\n\n\tprivate removeAllDecorations(): void {\n\t\tthis._editor.removeDecorations(this._decorationsIds);\n\t\tthis._decorationsIds = [];\n\t\tthis._colorDecoratorIds.clear();\n\t\tthis._colorDecorationClassRefs.clear();\n\t}\n\n\tgetColorData(position: Position): IColorData | null {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst decorations = model\n\t\t\t.getDecorationsInRange(Range.fromPositions(position, position))\n\t\t\t.filter(d => this._colorDatas.has(d.id));\n\n\t\tif (decorations.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._colorDatas.get(decorations[0].id)!;\n\t}\n\n\tisColorDecoration(decoration: IModelDecoration): boolean {\n\t\treturn this._colorDecoratorIds.has(decoration);\n\t}\n}\n\nexport class DecoratorLimitReporter extends Disposable {\n\tprivate _onDidChange = this._register(new Emitter<void>());\n\n\tprivate _computed: number = 0;\n\tprivate _limited: number | false = false;\n\tpublic update(computed: number, limited: number | false) {\n\t\tif (computed !== this._computed || limited !== this._limited) {\n\t\t\tthis._computed = computed;\n\t\t\tthis._limited = limited;\n\t\t\tthis._onDidChange.fire();\n\t\t}\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { CancelablePromise, createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { RGBA } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IEditorDecorationsCollection } from '../../../common/editorCommon.js';\nimport { IModelDecoration, IModelDeltaDecoration } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getColors, IColorData } from './color.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nexport const ColorDecorationInjectedTextMarker = Object.create({});\n\n\nexport class ColorDetector extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID: string = 'editor.contrib.colorDetector';\n\n\tstatic readonly RECOMPUTE_TIME = 1000; // ms\n\n\tprivate readonly _localToDispose = this._register(new DisposableStore());\n\tprivate _computePromise: CancelablePromise<IColorData[]> | null;\n\tprivate _timeoutTimer: TimeoutTimer | null;\n\tprivate _debounceInformation: IFeatureDebounceInformation;\n\n\tprivate _decorationsIds: string[] = [];\n\tprivate _colorDatas = new Map<string, IColorData>();\n\n\tprivate readonly _colorDecoratorIds: IEditorDecorationsCollection;\n\n\tprivate _isColorDecoratorsEnabled: boolean;\n\tprivate _defaultColorDecoratorsEnablement: 'auto' | 'always' | 'never';\n\n\tprivate readonly _ruleFactory: DynamicCssRules;\n\n\tprivate readonly _decoratorLimitReporter = this._register(new DecoratorLimitReporter());\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t) {\n\t\tsuper();\n\t\tthis._colorDecoratorIds = this._editor.createDecorationsCollection();\n\t\tthis._ruleFactory = this._register(new DynamicCssRules(this._editor));\n\t\tthis._debounceInformation = languageFeatureDebounceService.for(_languageFeaturesService.colorProvider, 'Document Colors', { min: ColorDetector.RECOMPUTE_TIME });\n\t\tthis._register(_editor.onDidChangeModel(() => {\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis.updateColors();\n\t\t}));\n\t\tthis._register(_editor.onDidChangeModelLanguage(() => this.updateColors()));\n\t\tthis._register(_languageFeaturesService.colorProvider.onDidChange(() => this.updateColors()));\n\t\tthis._register(_editor.onDidChangeConfiguration((e) => {\n\t\t\tconst prevIsEnabled = this._isColorDecoratorsEnabled;\n\t\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\t\tconst updatedColorDecoratorsSetting = prevIsEnabled !== this._isColorDecoratorsEnabled || e.hasChanged(EditorOption.colorDecoratorsLimit);\n\t\t\tconst updatedDefaultColorDecoratorsSetting = e.hasChanged(EditorOption.defaultColorDecorators);\n\t\t\tif (updatedColorDecoratorsSetting || updatedDefaultColorDecoratorsSetting) {\n\t\t\t\tif (this._isColorDecoratorsEnabled) {\n\t\t\t\t\tthis.updateColors();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.removeAllDecorations();\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._timeoutTimer = null;\n\t\tthis._computePromise = null;\n\t\tthis._isColorDecoratorsEnabled = this.isEnabled();\n\t\tthis._defaultColorDecoratorsEnablement = this._editor.getOption(EditorOption.defaultColorDecorators);\n\t\tthis.updateColors();\n\t}\n\n\tisEnabled(): boolean {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn false;\n\t\t}\n\t\tconst languageId = model.getLanguageId();\n\t\t// handle deprecated settings. [languageId].colorDecorators.enable\n\t\tconst deprecatedConfig = this._configurationService.getValue(languageId);\n\t\tif (deprecatedConfig && typeof deprecatedConfig === 'object') {\n\t\t\t// eslint-disable-next-line local/code-no-any-casts\n\t\t\tconst colorDecorators = (deprecatedConfig as any)['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\n\t\t\tif (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\n\t\t\t\treturn colorDecorators['enable'];\n\t\t\t}\n\t\t}\n\n\t\treturn this._editor.getOption(EditorOption.colorDecorators);\n\t}\n\n\tstatic get(editor: ICodeEditor): ColorDetector | null {\n\t\treturn editor.getContribution<ColorDetector>(this.ID);\n\t}\n\n\toverride dispose(): void {\n\t\tthis.stop();\n\t\tthis.removeAllDecorations();\n\t\tsuper.dispose();\n\t}\n\n\tprivate updateColors(): void {\n\t\tthis.stop();\n\n\t\tif (!this._isColorDecoratorsEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst model = this._editor.getModel();\n\n\t\tif (!model || !this._languageFeaturesService.colorProvider.has(model)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n\t\t\tif (!this._timeoutTimer) {\n\t\t\t\tthis._timeoutTimer = new TimeoutTimer();\n\t\t\t\tthis._timeoutTimer.cancelAndSet(() => {\n\t\t\t\t\tthis._timeoutTimer = null;\n\t\t\t\t\tthis.beginCompute();\n\t\t\t\t}, this._debounceInformation.get(model));\n\t\t\t}\n\t\t}));\n\t\tthis.beginCompute();\n\t}\n\n\tprivate async beginCompute(): Promise<void> {\n\t\tthis._computePromise = createCancelablePromise(async token => {\n\t\t\tconst model = this._editor.getModel();\n\t\t\tif (!model) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst sw = new StopWatch(false);\n\t\t\tconst colors = await getColors(this._languageFeaturesService.colorProvider, model, token, this._defaultColorDecoratorsEnablement);\n\t\t\tthis._debounceInformation.update(model, sw.elapsed());\n\t\t\treturn colors;\n\t\t});\n\t\ttry {\n\t\t\tconst colors = await this._computePromise;\n\t\t\tthis.updateDecorations(colors);\n\t\t\tthis.updateColorDecorators(colors);\n\t\t\tthis._computePromise = null;\n\t\t} catch (e) {\n\t\t\tonUnexpectedError(e);\n\t\t}\n\t}\n\n\tprivate stop(): void {\n\t\tif (this._timeoutTimer) {\n\t\t\tthis._timeoutTimer.cancel();\n\t\t\tthis._timeoutTimer = null;\n\t\t}\n\t\tif (this._computePromise) {\n\t\t\tthis._computePromise.cancel();\n\t\t\tthis._computePromise = null;\n\t\t}\n\t\tthis._localToDispose.clear();\n\t}\n\n\tprivate updateDecorations(colorDatas: IColorData[]): void {\n\t\tconst decorations = colorDatas.map(c => ({\n\t\t\trange: {\n\t\t\t\tstartLineNumber: c.colorInfo.range.startLineNumber,\n\t\t\t\tstartColumn: c.colorInfo.range.startColumn,\n\t\t\t\tendLineNumber: c.colorInfo.range.endLineNumber,\n\t\t\t\tendColumn: c.colorInfo.range.endColumn\n\t\t\t},\n\t\t\toptions: ModelDecorationOptions.EMPTY\n\t\t}));\n\n\t\tthis._editor.changeDecorations((changeAccessor) => {\n\t\t\tthis._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);\n\n\t\t\tthis._colorDatas = new Map<string, IColorData>();\n\t\t\tthis._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\n\t\t});\n\t}\n\n\tprivate readonly _colorDecorationClassRefs = this._register(new DisposableStore());\n\n\tprivate updateColorDecorators(colorData: IColorData[]): void {\n\t\tthis._colorDecorationClassRefs.clear();\n\n\t\tconst decorations: IModelDeltaDecoration[] = [];\n\n\t\tconst limit = this._editor.getOption(EditorOption.colorDecoratorsLimit);\n\n\t\tfor (let i = 0; i < colorData.length && decorations.length < limit; i++) {\n\t\t\tconst { red, green, blue, alpha } = colorData[i].colorInfo.color;\n\t\t\tconst rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n\t\t\tconst color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n\n\t\t\tconst ref = this._colorDecorationClassRefs.add(\n\t\t\t\tthis._ruleFactory.createClassNameRef({\n\t\t\t\t\tbackgroundColor: color\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tdecorations.push({\n\t\t\t\trange: {\n\t\t\t\t\tstartLineNumber: colorData[i].colorInfo.range.startLineNumber,\n\t\t\t\t\tstartColumn: colorData[i].colorInfo.range.startColumn,\n\t\t\t\t\tendLineNumber: colorData[i].colorInfo.range.endLineNumber,\n\t\t\t\t\tendColumn: colorData[i].colorInfo.range.endColumn\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tdescription: 'colorDetector',\n\t\t\t\t\tbefore: {\n\t\t\t\t\t\tcontent: noBreakWhitespace,\n\t\t\t\t\t\tinlineClassName: `${ref.className} colorpicker-color-decoration`,\n\t\t\t\t\t\tinlineClassNameAffectsLetterSpacing: true,\n\t\t\t\t\t\tattachedData: ColorDecorationInjectedTextMarker\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst limited = limit < colorData.length ? limit : false;\n\t\tthis._decoratorLimitReporter.update(colorData.length, limited);\n\n\t\tthis._colorDecoratorIds.set(decorations);\n\t}\n\n\tprivate removeAllDecorations(): void {\n\t\tthis._editor.removeDecorations(this._decorationsIds);\n\t\tthis._decorationsIds = [];\n\t\tthis._colorDecoratorIds.clear();\n\t\tthis._colorDecorationClassRefs.clear();\n\t}\n\n\tgetColorData(position: Position): IColorData | null {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst decorations = model\n\t\t\t.getDecorationsInRange(Range.fromPositions(position, position))\n\t\t\t.filter(d => this._colorDatas.has(d.id));\n\n\t\tif (decorations.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._colorDatas.get(decorations[0].id)!;\n\t}\n\n\tisColorDecoration(decoration: IModelDecoration): boolean {\n\t\treturn this._colorDecoratorIds.has(decoration);\n\t}\n}\n\nexport class DecoratorLimitReporter extends Disposable {\n\tprivate _onDidChange = this._register(new Emitter<void>());\n\n\tprivate _computed: number = 0;\n\tprivate _limited: number | false = false;\n\tpublic update(computed: number, limited: number | false) {\n\t\tif (computed !== this._computed || limited !== this._limited) {\n\t\t\tthis._computed = computed;\n\t\t\tthis._limited = limited;\n\t\t\tthis._onDidChange.fire();\n\t\t}\n\t}\n}\n"]}
|
|
@@ -188,6 +188,7 @@ let ContextMenuController = class ContextMenuController {
|
|
|
188
188
|
if (keybinding) {
|
|
189
189
|
return new ActionViewItem(action, action, { label: true, keybinding: keybinding.getLabel(), isMenu: true });
|
|
190
190
|
}
|
|
191
|
+
// eslint-disable-next-line local/code-no-any-casts
|
|
191
192
|
const customActionViewItem = action;
|
|
192
193
|
if (typeof customActionViewItem.getActionViewItem === 'function') {
|
|
193
194
|
return customActionViewItem.getActionViewItem();
|