Path: blob/main/src/vs/editor/common/services/resolverService.ts
3294 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 { Event } from '../../../base/common/event.js';6import { IMarkdownString } from '../../../base/common/htmlContent.js';7import { IDisposable, IReference } from '../../../base/common/lifecycle.js';8import { URI } from '../../../base/common/uri.js';9import { ITextModel, ITextSnapshot } from '../model.js';10import { IResolvableEditorModel } from '../../../platform/editor/common/editor.js';11import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';1213export const ITextModelService = createDecorator<ITextModelService>('textModelService');1415export interface ITextModelService {16readonly _serviceBrand: undefined;1718/**19* Provided a resource URI, it will return a model reference20* which should be disposed once not needed anymore.21*/22createModelReference(resource: URI): Promise<IReference<IResolvedTextEditorModel>>;2324/**25* Registers a specific `scheme` content provider.26*/27registerTextModelContentProvider(scheme: string, provider: ITextModelContentProvider): IDisposable;2829/**30* Check if the given resource can be resolved to a text model.31*/32canHandleResource(resource: URI): boolean;33}3435export interface ITextModelContentProvider {3637/**38* Given a resource, return the content of the resource as `ITextModel`.39*/40provideTextContent(resource: URI): Promise<ITextModel | null> | null;41}4243export interface ITextEditorModel extends IResolvableEditorModel {4445/**46* Emitted when the text model is about to be disposed.47*/48readonly onWillDispose: Event<void>;4950/**51* Provides access to the underlying `ITextModel`.52*/53readonly textEditorModel: ITextModel | null;5455/**56* Creates a snapshot of the model's contents.57*/58createSnapshot(this: IResolvedTextEditorModel): ITextSnapshot;59createSnapshot(this: ITextEditorModel): ITextSnapshot | null;6061/**62* Signals if this model is readonly or not.63*/64isReadonly(): boolean | IMarkdownString;6566/**67* The language id of the text model if known.68*/69getLanguageId(): string | undefined;7071/**72* Find out if this text model has been disposed.73*/74isDisposed(): boolean;75}7677export interface IResolvedTextEditorModel extends ITextEditorModel {7879/**80* Same as ITextEditorModel#textEditorModel, but never null.81*/82readonly textEditorModel: ITextModel;83}8485export function isResolvedTextEditorModel(model: ITextEditorModel): model is IResolvedTextEditorModel {86const candidate = model as IResolvedTextEditorModel;8788return !!candidate.textEditorModel;89}909192