Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/common/services/resolverService.ts
3294 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 { Event } from '../../../base/common/event.js';
7
import { IMarkdownString } from '../../../base/common/htmlContent.js';
8
import { IDisposable, IReference } from '../../../base/common/lifecycle.js';
9
import { URI } from '../../../base/common/uri.js';
10
import { ITextModel, ITextSnapshot } from '../model.js';
11
import { IResolvableEditorModel } from '../../../platform/editor/common/editor.js';
12
import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';
13
14
export const ITextModelService = createDecorator<ITextModelService>('textModelService');
15
16
export interface ITextModelService {
17
readonly _serviceBrand: undefined;
18
19
/**
20
* Provided a resource URI, it will return a model reference
21
* which should be disposed once not needed anymore.
22
*/
23
createModelReference(resource: URI): Promise<IReference<IResolvedTextEditorModel>>;
24
25
/**
26
* Registers a specific `scheme` content provider.
27
*/
28
registerTextModelContentProvider(scheme: string, provider: ITextModelContentProvider): IDisposable;
29
30
/**
31
* Check if the given resource can be resolved to a text model.
32
*/
33
canHandleResource(resource: URI): boolean;
34
}
35
36
export interface ITextModelContentProvider {
37
38
/**
39
* Given a resource, return the content of the resource as `ITextModel`.
40
*/
41
provideTextContent(resource: URI): Promise<ITextModel | null> | null;
42
}
43
44
export interface ITextEditorModel extends IResolvableEditorModel {
45
46
/**
47
* Emitted when the text model is about to be disposed.
48
*/
49
readonly onWillDispose: Event<void>;
50
51
/**
52
* Provides access to the underlying `ITextModel`.
53
*/
54
readonly textEditorModel: ITextModel | null;
55
56
/**
57
* Creates a snapshot of the model's contents.
58
*/
59
createSnapshot(this: IResolvedTextEditorModel): ITextSnapshot;
60
createSnapshot(this: ITextEditorModel): ITextSnapshot | null;
61
62
/**
63
* Signals if this model is readonly or not.
64
*/
65
isReadonly(): boolean | IMarkdownString;
66
67
/**
68
* The language id of the text model if known.
69
*/
70
getLanguageId(): string | undefined;
71
72
/**
73
* Find out if this text model has been disposed.
74
*/
75
isDisposed(): boolean;
76
}
77
78
export interface IResolvedTextEditorModel extends ITextEditorModel {
79
80
/**
81
* Same as ITextEditorModel#textEditorModel, but never null.
82
*/
83
readonly textEditorModel: ITextModel;
84
}
85
86
export function isResolvedTextEditorModel(model: ITextEditorModel): model is IResolvedTextEditorModel {
87
const candidate = model as IResolvedTextEditorModel;
88
89
return !!candidate.textEditorModel;
90
}
91
92