Path: blob/main/extensions/copilot/src/extension/intents/vscode-node/newWorkspaceTextDocumentProvider.ts
13399 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*--------------------------------------------------------------------------------------------*/4import { CancellationToken, EventEmitter, TextDocumentContentProvider, Uri, workspace } from 'vscode';5import { Disposable } from '../../../util/vs/base/common/lifecycle';6import { CopilotFileScheme, INewWorkspacePreviewContentManager } from '../node/newIntent';789export class NewWorkspaceTextDocumentProvider extends Disposable implements TextDocumentContentProvider {10onDidChangeEmitter = this._register(new EventEmitter<Uri>());11public onDidChange = this.onDidChangeEmitter.event;1213constructor(private readonly contentManager: INewWorkspacePreviewContentManager) {14super();15this._register(workspace.onDidChangeTextDocument(e => {16if (e.document.uri.scheme === CopilotFileScheme) {17this.onDidChangeEmitter.fire(e.document.uri);18}19}));20}2122async provideTextDocumentContent(uri: Uri, token: CancellationToken) {23const node = this.contentManager.get(uri);24if (!node) {25return '';26}27let contentArray: Uint8Array | undefined;28try {29contentArray = await node.content;30} catch { }31return new TextDecoder().decode(contentArray) ?? '';32}33}343536