Path: blob/main/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Disposable, DisposableMap } from '../../../../../base/common/lifecycle.js';6import { ICodeEditor } from '../../../../../editor/browser/editorBrowser.js';7import { registerEditorContribution, EditorContributionInstantiation } from '../../../../../editor/browser/editorExtensions.js';8import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';9import { PROMPT_LANGUAGE_ID } from '../../common/promptSyntax/promptTypes.js';10import { PromptCodingAgentActionOverlayWidget } from './promptCodingAgentActionOverlay.js';1112export class PromptCodingAgentActionContribution extends Disposable {13static readonly ID = 'promptCodingAgentActionContribution';1415private readonly _overlayWidgets = this._register(new DisposableMap<ICodeEditor, PromptCodingAgentActionOverlayWidget>());1617constructor(18private readonly _editor: ICodeEditor,19@IInstantiationService private readonly _instantiationService: IInstantiationService20) {21super();2223this._register(this._editor.onDidChangeModel(() => {24this._updateOverlayWidget();25}));2627this._updateOverlayWidget();28}29private _updateOverlayWidget(): void {30const model = this._editor.getModel();3132// Remove existing overlay if present33this._overlayWidgets.deleteAndDispose(this._editor);3435// Add overlay if this is a prompt file36if (model && model.getLanguageId() === PROMPT_LANGUAGE_ID) {37const widget = this._instantiationService.createInstance(PromptCodingAgentActionOverlayWidget, this._editor);38this._overlayWidgets.set(this._editor, widget);39}40}41}4243registerEditorContribution(PromptCodingAgentActionContribution.ID, PromptCodingAgentActionContribution, EditorContributionInstantiation.AfterFirstRender);444546