1
>
/*---------------------------------------------------------------------------------------------
testTextModel.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 { DisposableStore, IDisposable } from '../../../base/common/lifecycle.js';
7
>
import { URI } from '../../../base/common/uri.js';
8
>
import { BracketPairColorizationOptions, DefaultEndOfLine, ITextBufferFactory, ITextModelCreationOptions } from '../../common/model.js';
9
>
import { TextModel } from '../../common/model/textModel.js';
10
>
import { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';
11
>
import { ILanguageService } from '../../common/languages/language.js';
12
>
import { LanguageService } from '../../common/services/languageService.js';
13
>
import { ITextResourcePropertiesService } from '../../common/services/textResourceConfiguration.js';
14
>
import { TestLanguageConfigurationService } from './modes/testLanguageConfigurationService.js';
15
>
import { IConfigurationService } from '../../../platform/configuration/common/configuration.js';
16
>
import { TestConfigurationService } from '../../../platform/configuration/test/common/testConfigurationService.js';
17
>
import { IDialogService } from '../../../platform/dialogs/common/dialogs.js';
18
>
import { TestDialogService } from '../../../platform/dialogs/test/common/testDialogService.js';
19
>
import { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';
20
>
import { ILogService, NullLogService } from '../../../platform/log/common/log.js';
21
>
import { INotificationService } from '../../../platform/notification/common/notification.js';
22
>
import { TestNotificationService } from '../../../platform/notification/test/common/testNotificationService.js';
23
>
import { IThemeService } from '../../../platform/theme/common/themeService.js';
24
>
import { TestThemeService } from '../../../platform/theme/test/common/testThemeService.js';
25
>
import { IUndoRedoService } from '../../../platform/undoRedo/common/undoRedo.js';
26
>
import { UndoRedoService } from '../../../platform/undoRedo/common/undoRedoService.js';
27
>
import { TestTextResourcePropertiesService } from './services/testTextResourcePropertiesService.js';
28
>
import { IModelService } from '../../common/services/model.js';
29
>
import { ModelService } from '../../common/services/modelService.js';
30
>
import { createServices, ServiceIdCtorPair, TestInstantiationService } from '../../../platform/instantiation/test/common/instantiationServiceMock.js';
31
>
import { PLAINTEXT_LANGUAGE_ID } from '../../common/languages/modesRegistry.js';
32
>
import { ILanguageFeatureDebounceService, LanguageFeatureDebounceService } from '../../common/services/languageFeatureDebounce.js';
33
>
import { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';
34
>
import { LanguageFeaturesService } from '../../common/services/languageFeaturesService.js';
35
>
import { IEnvironmentService } from '../../../platform/environment/common/environment.js';
36
>
import { mock } from '../../../base/test/common/mock.js';
37
>
import { ITreeSitterLibraryService } from '../../common/services/treeSitter/treeSitterLibraryService.js';
38
>
import { TestTreeSitterLibraryService } from './services/testTreeSitterLibraryService.js';
39
>
40
>
class TestTextModel extends TextModel {
41
>
public registerDisposable(disposable: IDisposable): void {
42
this._register(disposable);
43
}
45
>
46
>
export function withEditorModel(text: string[], callback: (model: TextModel) => void): void {
47
const model = createTextModel(text.join('\n'));
48
callback(model);
49
model.dispose();
50
}
52
>
export interface IRelaxedTextModelCreationOptions {
53
>
tabSize?: number;
54
>
indentSize?: number | 'tabSize';
55
>
insertSpaces?: boolean;
56
>
detectIndentation?: boolean;
57
>
trimAutoWhitespace?: boolean;
58
>
defaultEOL?: DefaultEndOfLine;
59
>
isForSimpleWidget?: boolean;
60
>
largeFileOptimizations?: boolean;
61
>
bracketColorizationOptions?: BracketPairColorizationOptions;
62
>
}
63
>
64
function resolveOptions(_options: IRelaxedTextModelCreationOptions): ITextModelCreationOptions {
65
const defaultOptions = TextModel.DEFAULT_CREATION_OPTIONS;