1
>
/*---------------------------------------------------------------------------------------------
modelService.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 { Emitter, Event } from '../../../base/common/event.js';
7
>
import { StringSHA1 } from '../../../base/common/hash.js';
8
>
import { Disposable, DisposableStore, IDisposable } from '../../../base/common/lifecycle.js';
9
>
import { Schemas } from '../../../base/common/network.js';
10
>
import { equals } from '../../../base/common/objects.js';
11
>
import * as platform from '../../../base/common/platform.js';
12
>
import { URI } from '../../../base/common/uri.js';
13
>
import { IConfigurationChangeEvent, IConfigurationService } from '../../../platform/configuration/common/configuration.js';
14
>
import { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';
15
>
import { IUndoRedoService, ResourceEditStackSnapshot } from '../../../platform/undoRedo/common/undoRedo.js';
16
>
import { clampedInt } from '../config/editorOptions.js';
17
>
import { EditOperation, ISingleEditOperation } from '../core/editOperation.js';
18
>
import { EDITOR_MODEL_DEFAULTS } from '../core/misc/textModelDefaults.js';
19
>
import { Range } from '../core/range.js';
20
>
import { ILanguageSelection } from '../languages/language.js';
21
>
import { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';
22
>
import { DefaultEndOfLine, EndOfLinePreference, EndOfLineSequence, ITextBuffer, ITextBufferFactory, ITextModel, ITextModelCreationOptions } from '../model.js';
23
>
import { isEditStackElement } from '../model/editStack.js';
24
>
import { TextModel, createTextBuffer } from '../model/textModel.js';
25
>
import { EditSources, TextModelEditSource } from '../textModelEditSource.js';
26
>
import { IModelLanguageChangedEvent } from '../textModelEvents.js';
27
>
import { IModelService } from './model.js';
28
>
import { ITextResourcePropertiesService } from './textResourceConfiguration.js';
29
>
30
function MODEL_ID(resource: URI): string {
31
return resource.toString();
32
}
34
>
class ModelData implements IDisposable {
35
>
36
>
private readonly _modelEventListeners = new DisposableStore();
37
>
38
>
constructor(
39
public readonly model: TextModel,
40
onWillDispose: (model: ITextModel) => void,