1
>
/*---------------------------------------------------------------------------------------------
model.ts
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 { URI } from '../../../base/common/uri.js';
8
>
import { ITextBufferFactory, ITextModel, ITextModelCreationOptions } from '../model.js';
9
>
import { ILanguageSelection } from '../languages/language.js';
10
>
import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';
11
>
import { DocumentSemanticTokensProvider, DocumentRangeSemanticTokensProvider } from '../languages.js';
12
>
import { TextModelEditSource } from '../textModelEditSource.js';
13
>
14
>
export const IModelService = createDecorator<IModelService>('modelService');
15
>
16
>
export type DocumentTokensProvider = DocumentSemanticTokensProvider | DocumentRangeSemanticTokensProvider;
17
>
18
>
export interface IModelService {
19
>
readonly _serviceBrand: undefined;
20
>
21
>
createModel(value: string | ITextBufferFactory, languageSelection: ILanguageSelection | null, resource?: URI, isForSimpleWidget?: boolean): ITextModel;
22
>
23
>
updateModel(model: ITextModel, value: string | ITextBufferFactory, reason?: TextModelEditSource): void;
24
>
25
>
destroyModel(resource: URI): void;
26
>
27
>
getModels(): ITextModel[];
28
>
29
>
getCreationOptions(language: string, resource: URI, isForSimpleWidget: boolean): ITextModelCreationOptions;
30
>
31
>
getModel(resource: URI): ITextModel | null;
32
>
33
>
readonly onModelAdded: Event<ITextModel>;
34
>
35
>
readonly onModelRemoved: Event<ITextModel>;
36
>
37
>
readonly onModelLanguageChanged: Event<{ readonly model: ITextModel; readonly oldLanguageId: string }>;
38
>
}