Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/chatSessions/copilotcli/vscode-node/readonlyContentProvider.ts
13405 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Disposable, TextDocumentContentProvider, Uri, workspace } from 'vscode';
7
8
export const READONLY_SCHEME = 'copilot-cli-readonly';
9
10
export class ReadonlyContentProvider implements TextDocumentContentProvider {
11
private readonly _contentStore = new Map<string, string>();
12
13
provideTextDocumentContent(uri: Uri): string {
14
const content = this._contentStore.get(uri.toString());
15
return content ?? '';
16
}
17
18
setContent(uri: Uri, content: string): void {
19
this._contentStore.set(uri.toString(), content);
20
}
21
22
clearContent(uri: Uri): void {
23
this._contentStore.delete(uri.toString());
24
}
25
26
register(): Disposable {
27
return workspace.registerTextDocumentContentProvider(READONLY_SCHEME, this);
28
}
29
}
30
31
export function createReadonlyUri(originalPath: string, suffix: string): Uri {
32
const fileUri = Uri.file(originalPath);
33
return Uri.from({
34
scheme: READONLY_SCHEME,
35
path: fileUri.path,
36
query: suffix,
37
});
38
}
39
40