@codingame/monaco-vscode-treesitter-service-override 17.2.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/index.js +6 -12
  2. package/package.json +4 -5
  3. package/vscode/src/vs/amdX.d.ts +3 -0
  4. package/vscode/src/vs/amdX.js +188 -0
  5. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterLibraryService.d.ts +28 -0
  6. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterLibraryService.js +136 -0
  7. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterThemeService.d.ts +11 -0
  8. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterThemeService.js +26 -0
  9. package/vscode/src/vs/editor/common/model/tokenStore.d.ts +0 -65
  10. package/vscode/src/vs/editor/common/model/tokenStore.js +0 -412
  11. package/vscode/src/vs/editor/common/model/treeSitterTokenStoreService.d.ts +0 -32
  12. package/vscode/src/vs/editor/common/model/treeSitterTokenStoreService.js +0 -135
  13. package/vscode/src/vs/editor/common/services/treeSitter/cursorUtils.d.ts +0 -6
  14. package/vscode/src/vs/editor/common/services/treeSitter/cursorUtils.js +0 -76
  15. package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.d.ts +0 -88
  16. package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.js +0 -684
  17. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.d.ts +0 -31
  18. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.js +0 -120
  19. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterParserService.d.ts +0 -48
  20. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterParserService.js +0 -179
  21. package/vscode/src/vs/editor/common/services/treeSitterParserService.d.ts +0 -61
  22. package/vscode/src/vs/editor/common/services/treeSitterParserService.js +0 -36
  23. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterCodeEditors.d.ts +0 -32
  24. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterCodeEditors.js +0 -119
  25. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.contribution.d.ts +0 -1
  26. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.contribution.js +0 -54
  27. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.d.ts +0 -96
  28. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.js +0 -719
@@ -1,31 +0,0 @@
1
- import type * as Parser from "@vscode/tree-sitter-wasm";
2
- import { AppResourcePath } from "@codingame/monaco-vscode-api/vscode/vs/base/common/network";
3
- import { ITreeSitterImporter } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
4
- import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
5
- import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
6
- import { Emitter, Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
7
- import { IEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service";
8
- import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
9
- export declare const MODULE_LOCATION_SUBPATH = "@vscode/tree-sitter-wasm/wasm";
10
- export declare function getModuleLocation(environmentService: IEnvironmentService): AppResourcePath;
11
- export declare class TreeSitterLanguages extends Disposable {
12
- private readonly _treeSitterImporter;
13
- private readonly _fileService;
14
- private readonly _environmentService;
15
- private readonly _registeredLanguages;
16
- private _languages;
17
- readonly _onDidAddLanguage: Emitter<{
18
- id: string;
19
- language: Parser.Language;
20
- }>;
21
- readonly onDidAddLanguage: Event<{
22
- id: string;
23
- language: Parser.Language;
24
- }>;
25
- constructor(_treeSitterImporter: ITreeSitterImporter, _fileService: IFileService, _environmentService: IEnvironmentService, configurationService: IConfigurationService, _registeredLanguages: Map<string, string>);
26
- getOrInitLanguage(languageId: string): Parser.Language | undefined;
27
- getLanguage(languageId: string): Promise<Parser.Language | undefined>;
28
- private _addLanguage;
29
- private _fetchLanguage;
30
- private _getLanguageLocation;
31
- }
@@ -1,120 +0,0 @@
1
-
2
- import { nodeModulesPath, FileAccess } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
3
- import { EDITOR_EXPERIMENTAL_PREFER_TREESITTER } from '../treeSitterParserService.js';
4
- import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
- import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
6
- import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
7
- import { PromiseResult } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/promise';
8
-
9
- const MODULE_LOCATION_SUBPATH = `@vscode/tree-sitter-wasm/wasm`;
10
- function getModuleLocation(environmentService) {
11
- return `${nodeModulesPath}/${MODULE_LOCATION_SUBPATH}`;
12
- }
13
- class TreeSitterLanguages extends Disposable {
14
- constructor(_treeSitterImporter, _fileService, _environmentService, configurationService, _registeredLanguages) {
15
- super();
16
- this._treeSitterImporter = _treeSitterImporter;
17
- this._fileService = _fileService;
18
- this._environmentService = _environmentService;
19
- this._registeredLanguages = _registeredLanguages;
20
- this._languages = ( new AsyncCache());
21
- this._onDidAddLanguage = this._register(( new Emitter()));
22
- this.onDidAddLanguage = this._onDidAddLanguage.event;
23
- this._register(configurationService.onDidChangeConfiguration(e => {
24
- if (e.affectsConfiguration(EDITOR_EXPERIMENTAL_PREFER_TREESITTER)) {
25
- for (const language of ( this._languages.keys())) {
26
- if (e.affectsConfiguration(`${EDITOR_EXPERIMENTAL_PREFER_TREESITTER}.${language}`)) {
27
- if (this._languages.getSyncIfCached(language) === undefined) {
28
- this._languages.delete(language);
29
- }
30
- }
31
- }
32
- }
33
- }));
34
- }
35
- getOrInitLanguage(languageId) {
36
- if (this._languages.isCached(languageId)) {
37
- return this._languages.getSyncIfCached(languageId);
38
- }
39
- else {
40
- this._addLanguage(languageId);
41
- return undefined;
42
- }
43
- }
44
- async getLanguage(languageId) {
45
- if (this._languages.isCached(languageId)) {
46
- return this._languages.getSyncIfCached(languageId);
47
- }
48
- else {
49
- await this._addLanguage(languageId);
50
- return this._languages.get(languageId);
51
- }
52
- }
53
- async _addLanguage(languageId) {
54
- const languagePromise = this._languages.get(languageId);
55
- if (!languagePromise) {
56
- this._languages.set(languageId, this._fetchLanguage(languageId));
57
- const language = await this._languages.get(languageId);
58
- if (!language) {
59
- return undefined;
60
- }
61
- this._onDidAddLanguage.fire({ id: languageId, language });
62
- }
63
- }
64
- async _fetchLanguage(languageId) {
65
- const grammarName = this._registeredLanguages.get(languageId);
66
- const languageLocation = this._getLanguageLocation(languageId);
67
- if (!grammarName || !languageLocation) {
68
- return undefined;
69
- }
70
- const wasmPath = `${languageLocation}/${grammarName}.wasm`;
71
- const languageFile = await (this._fileService.readFile(( FileAccess.asFileUri(wasmPath))));
72
- const Language = await this._treeSitterImporter.getLanguageClass();
73
- return Language.load(languageFile.value.buffer);
74
- }
75
- _getLanguageLocation(languageId) {
76
- const grammarName = this._registeredLanguages.get(languageId);
77
- if (!grammarName) {
78
- return undefined;
79
- }
80
- return getModuleLocation();
81
- }
82
- }
83
- class AsyncCache {
84
- constructor() {
85
- this._values = ( new Map());
86
- }
87
- set(key, promise) {
88
- this._values.set(key, ( new PromiseWithSyncAccess(promise)));
89
- }
90
- get(key) {
91
- return this._values.get(key)?.promise;
92
- }
93
- getSyncIfCached(key) {
94
- return this._values.get(key)?.result?.data;
95
- }
96
- isCached(key) {
97
- return this._values.get(key)?.result !== undefined;
98
- }
99
- delete(key) {
100
- return this._values.delete(key);
101
- }
102
- keys() {
103
- return ( this._values.keys());
104
- }
105
- }
106
- class PromiseWithSyncAccess {
107
- get result() {
108
- return this._result;
109
- }
110
- constructor(promise) {
111
- this.promise = promise;
112
- promise.then(result => {
113
- this._result = ( new PromiseResult(result, undefined));
114
- }).catch(e => {
115
- this._result = ( new PromiseResult(undefined, e));
116
- });
117
- }
118
- }
119
-
120
- export { MODULE_LOCATION_SUBPATH, TreeSitterLanguages, getModuleLocation };
@@ -1,48 +0,0 @@
1
- import type * as Parser from "@vscode/tree-sitter-wasm";
2
- import { ITextModelTreeSitter, TreeUpdateEvent } from "../treeSitterParserService.js";
3
- import { ITreeSitterImporter } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
4
- import { ITreeSitterParserService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
5
- import { IModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service";
6
- import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
7
- import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
8
- import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
9
- import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
10
- import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
11
- import { IEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service";
12
- import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
13
- export declare class TreeSitterTextModelService extends Disposable implements ITreeSitterParserService {
14
- private readonly _modelService;
15
- private readonly _configurationService;
16
- private readonly _environmentService;
17
- private readonly _treeSitterImporter;
18
- private readonly _instantiationService;
19
- readonly _serviceBrand: undefined;
20
- private _init;
21
- private _textModelTreeSitters;
22
- private readonly _registeredLanguages;
23
- private readonly _treeSitterLanguages;
24
- readonly onDidAddLanguage: Event<{
25
- id: string;
26
- language: Parser.Language;
27
- }>;
28
- private _onDidUpdateTree;
29
- readonly onDidUpdateTree: Event<TreeUpdateEvent>;
30
- isTest: boolean;
31
- constructor(_modelService: IModelService, fileService: IFileService, _configurationService: IConfigurationService, _environmentService: IEnvironmentService, _treeSitterImporter: ITreeSitterImporter, _instantiationService: IInstantiationService);
32
- getOrInitLanguage(languageId: string): Parser.Language | undefined;
33
- getParseResult(textModel: ITextModel): ITextModelTreeSitter | undefined;
34
- getTree(content: string, languageId: string): Promise<Parser.Tree | undefined>;
35
- getTreeSync(content: string, languageId: string): Parser.Tree | undefined;
36
- getLanguage(languageId: string): Promise<Parser.Language | undefined>;
37
- private _doInitParser;
38
- private _hasInit;
39
- private _initParser;
40
- private _supportedLanguagesChanged;
41
- private _getSetting;
42
- private _registerModelServiceListeners;
43
- getTextModelTreeSitter(model: ITextModel, parseImmediately?: boolean): Promise<ITextModelTreeSitter>;
44
- private _createTextModelTreeSitter;
45
- private _handleOnDidChangeParseResult;
46
- private _addGrammar;
47
- private _removeGrammar;
48
- }
@@ -1,179 +0,0 @@
1
-
2
- import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { FileAccess } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
4
- import { EDITOR_EXPERIMENTAL_PREFER_TREESITTER, TREESITTER_ALLOWED_SUPPORT } from '../treeSitterParserService.js';
5
- import { ITreeSitterImporter } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service';
6
- import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
7
- import { Disposable, DisposableMap, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
8
- import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
9
- import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
10
- import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
11
- import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
12
- import { TextModelTreeSitter } from './textModelTreeSitter.js';
13
- import { TreeSitterLanguages, getModuleLocation } from './treeSitterLanguages.js';
14
- import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
15
-
16
- const EDITOR_TREESITTER_TELEMETRY = 'editor.experimental.treeSitterTelemetry';
17
- const FILENAME_TREESITTER_WASM = `tree-sitter.wasm`;
18
- let TreeSitterTextModelService = class TreeSitterTextModelService extends Disposable {
19
- constructor(_modelService, fileService, _configurationService, _environmentService, _treeSitterImporter, _instantiationService) {
20
- super();
21
- this._modelService = _modelService;
22
- this._configurationService = _configurationService;
23
- this._environmentService = _environmentService;
24
- this._treeSitterImporter = _treeSitterImporter;
25
- this._instantiationService = _instantiationService;
26
- this._textModelTreeSitters = this._register(( new DisposableMap()));
27
- this._registeredLanguages = ( new Map());
28
- this._onDidUpdateTree = this._register(( new Emitter()));
29
- this.onDidUpdateTree = this._onDidUpdateTree.event;
30
- this.isTest = false;
31
- this._hasInit = false;
32
- this._treeSitterLanguages = this._register(( new TreeSitterLanguages(
33
- this._treeSitterImporter,
34
- fileService,
35
- this._environmentService,
36
- this._configurationService,
37
- this._registeredLanguages
38
- )));
39
- this.onDidAddLanguage = this._treeSitterLanguages.onDidAddLanguage;
40
- this._register(this._configurationService.onDidChangeConfiguration(e => {
41
- if (e.affectsConfiguration(EDITOR_EXPERIMENTAL_PREFER_TREESITTER)) {
42
- this._supportedLanguagesChanged();
43
- }
44
- }));
45
- this._supportedLanguagesChanged();
46
- }
47
- getOrInitLanguage(languageId) {
48
- return this._treeSitterLanguages.getOrInitLanguage(languageId);
49
- }
50
- getParseResult(textModel) {
51
- const textModelTreeSitter = this._textModelTreeSitters.get(textModel);
52
- return textModelTreeSitter?.textModelTreeSitter;
53
- }
54
- async getTree(content, languageId) {
55
- const language = await this.getLanguage(languageId);
56
- const Parser = await this._treeSitterImporter.getParserClass();
57
- if (language) {
58
- const parser = ( new Parser());
59
- parser.setLanguage(language);
60
- return parser.parse(content) ?? undefined;
61
- }
62
- return undefined;
63
- }
64
- getTreeSync(content, languageId) {
65
- const language = this.getOrInitLanguage(languageId);
66
- const Parser = this._treeSitterImporter.parserClass;
67
- if (language && Parser) {
68
- const parser = ( new Parser());
69
- parser.setLanguage(language);
70
- return parser.parse(content) ?? undefined;
71
- }
72
- return undefined;
73
- }
74
- async getLanguage(languageId) {
75
- await this._init;
76
- return this._treeSitterLanguages.getLanguage(languageId);
77
- }
78
- async _doInitParser() {
79
- const Parser = await this._treeSitterImporter.getParserClass();
80
- const isTest = this.isTest;
81
- await Parser.init({
82
- locateFile(_file, _folder) {
83
- const location = `${getModuleLocation()}/${FILENAME_TREESITTER_WASM}`;
84
- if (isTest) {
85
- return ( ( FileAccess.asFileUri(location)).toString(true));
86
- }
87
- else {
88
- return ( ( FileAccess.asBrowserUri(location)).toString(true));
89
- }
90
- }
91
- });
92
- return true;
93
- }
94
- async _initParser(hasLanguages) {
95
- if (this._hasInit) {
96
- return this._init;
97
- }
98
- if (hasLanguages) {
99
- this._hasInit = true;
100
- this._init = this._doInitParser();
101
- this._init.then(() => this._registerModelServiceListeners());
102
- }
103
- else {
104
- this._init = Promise.resolve(false);
105
- }
106
- return this._init;
107
- }
108
- async _supportedLanguagesChanged() {
109
- let hasLanguages = false;
110
- const handleLanguage = (languageId) => {
111
- if (this._getSetting(languageId)) {
112
- hasLanguages = true;
113
- this._addGrammar(languageId, `tree-sitter-${languageId}`);
114
- }
115
- else {
116
- this._removeGrammar(languageId);
117
- }
118
- };
119
- for (const languageId of TREESITTER_ALLOWED_SUPPORT) {
120
- handleLanguage(languageId);
121
- }
122
- return this._initParser(hasLanguages);
123
- }
124
- _getSetting(languageId) {
125
- const setting = this._configurationService.getValue(`${EDITOR_EXPERIMENTAL_PREFER_TREESITTER}.${languageId}`);
126
- if (!setting && TREESITTER_ALLOWED_SUPPORT.includes(languageId)) {
127
- return this._configurationService.getValue(EDITOR_TREESITTER_TELEMETRY);
128
- }
129
- return setting;
130
- }
131
- async _registerModelServiceListeners() {
132
- this._register(this._modelService.onModelAdded(model => {
133
- this._createTextModelTreeSitter(model);
134
- }));
135
- this._register(this._modelService.onModelRemoved(model => {
136
- this._textModelTreeSitters.deleteAndDispose(model);
137
- }));
138
- this._modelService.getModels().forEach(model => this._createTextModelTreeSitter(model));
139
- }
140
- async getTextModelTreeSitter(model, parseImmediately = false) {
141
- await this.getLanguage(model.getLanguageId());
142
- return this._createTextModelTreeSitter(model, parseImmediately);
143
- }
144
- _createTextModelTreeSitter(model, parseImmediately = true) {
145
- const textModelTreeSitter = this._instantiationService.createInstance(TextModelTreeSitter, model, this._treeSitterLanguages, parseImmediately);
146
- const disposables = ( new DisposableStore());
147
- disposables.add(textModelTreeSitter);
148
- disposables.add(textModelTreeSitter.onDidChangeParseResult((e) => this._handleOnDidChangeParseResult(e, model)));
149
- this._textModelTreeSitters.set(model, {
150
- textModelTreeSitter,
151
- disposables,
152
- dispose: disposables.dispose.bind(disposables)
153
- });
154
- return textModelTreeSitter;
155
- }
156
- _handleOnDidChangeParseResult(change, model) {
157
- this._onDidUpdateTree.fire({ textModel: model, ranges: change.ranges, versionId: change.versionId, tree: change.tree, languageId: change.languageId, hasInjections: change.hasInjections });
158
- }
159
- _addGrammar(languageId, grammarName) {
160
- if (!( this._registeredLanguages.has(languageId))) {
161
- this._registeredLanguages.set(languageId, grammarName);
162
- }
163
- }
164
- _removeGrammar(languageId) {
165
- if (( this._registeredLanguages.has(languageId))) {
166
- this._registeredLanguages.delete(languageId);
167
- }
168
- }
169
- };
170
- TreeSitterTextModelService = ( __decorate([
171
- ( __param(0, IModelService)),
172
- ( __param(1, IFileService)),
173
- ( __param(2, IConfigurationService)),
174
- ( __param(3, IEnvironmentService)),
175
- ( __param(4, ITreeSitterImporter)),
176
- ( __param(5, IInstantiationService))
177
- ], TreeSitterTextModelService));
178
-
179
- export { TreeSitterTextModelService };
@@ -1,61 +0,0 @@
1
- import type * as Parser from "@vscode/tree-sitter-wasm";
2
- import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
3
- import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
4
- import { IModelContentChangedEvent } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEvents";
5
- import { ITreeSitterImporter } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
6
- export declare const EDITOR_EXPERIMENTAL_PREFER_TREESITTER = "editor.experimental.preferTreeSitter";
7
- export declare const TREESITTER_ALLOWED_SUPPORT: string[];
8
- export interface RangeWithOffsets {
9
- range: Range;
10
- startOffset: number;
11
- endOffset: number;
12
- }
13
- export interface RangeChange {
14
- newRange: Range;
15
- newRangeStartOffset: number;
16
- newRangeEndOffset: number;
17
- }
18
- export interface TreeParseUpdateEvent {
19
- ranges: RangeChange[] | undefined;
20
- language: string;
21
- versionId: number;
22
- tree: Parser.Tree;
23
- includedModelChanges: IModelContentChangedEvent[];
24
- }
25
- export interface ModelTreeUpdateEvent {
26
- ranges: RangeChange[];
27
- versionId: number;
28
- tree: ITextModelTreeSitter;
29
- languageId: string;
30
- hasInjections: boolean;
31
- }
32
- export interface TreeUpdateEvent extends ModelTreeUpdateEvent {
33
- textModel: ITextModel;
34
- }
35
- export interface ITreeSitterParseResult {
36
- readonly tree: Parser.Tree | undefined;
37
- readonly language: Parser.Language;
38
- readonly languageId: string;
39
- readonly ranges: Parser.Range[] | undefined;
40
- versionId: number;
41
- }
42
- export interface ITextModelTreeSitter {
43
- parse(languageId?: string): Promise<ITreeSitterParseResult | undefined>;
44
- textModel: ITextModel;
45
- parseResult: ITreeSitterParseResult | undefined;
46
- getInjection(offset: number, parentLanguage: string): ITreeSitterParseResult | undefined;
47
- dispose(): void;
48
- }
49
- export declare class TreeSitterImporter implements ITreeSitterImporter {
50
- readonly _serviceBrand: undefined;
51
- private _treeSitterImport;
52
- constructor();
53
- private _getTreeSitterImport;
54
- get parserClass(): typeof Parser.Parser | undefined;
55
- private _parserClass;
56
- getParserClass(): Promise<typeof Parser.Parser>;
57
- private _languageClass;
58
- getLanguageClass(): Promise<typeof Parser.Language>;
59
- private _queryClass;
60
- getQueryClass(): Promise<typeof Parser.Query>;
61
- }
@@ -1,36 +0,0 @@
1
-
2
-
3
- const EDITOR_EXPERIMENTAL_PREFER_TREESITTER = 'editor.experimental.preferTreeSitter';
4
- const TREESITTER_ALLOWED_SUPPORT = ['css', 'typescript', 'ini', 'regex'];
5
- class TreeSitterImporter {
6
- constructor() { }
7
- async _getTreeSitterImport() {
8
- if (!this._treeSitterImport) {
9
- this._treeSitterImport = await import('@vscode/tree-sitter-wasm').then(module => ({ Parser: module.default ?? module }));
10
- }
11
- return this._treeSitterImport;
12
- }
13
- get parserClass() {
14
- return this._parserClass;
15
- }
16
- async getParserClass() {
17
- if (!this._parserClass) {
18
- this._parserClass = (await this._getTreeSitterImport()).Parser;
19
- }
20
- return this._parserClass;
21
- }
22
- async getLanguageClass() {
23
- if (!this._languageClass) {
24
- this._languageClass = (await this._getTreeSitterImport()).Language;
25
- }
26
- return this._languageClass;
27
- }
28
- async getQueryClass() {
29
- if (!this._queryClass) {
30
- this._queryClass = (await this._getTreeSitterImport()).Query;
31
- }
32
- return this._queryClass;
33
- }
34
- }
35
-
36
- export { EDITOR_EXPERIMENTAL_PREFER_TREESITTER, TREESITTER_ALLOWED_SUPPORT, TreeSitterImporter };
@@ -1,32 +0,0 @@
1
- import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
- import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
- import { ICodeEditor } from "@codingame/monaco-vscode-api/vscode/vs/editor/browser/editorBrowser";
4
- import { ICodeEditorService } from "@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/codeEditorService.service";
5
- import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
6
- import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
7
- import { ITreeSitterParserService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
8
- export interface IViewPortChangeEvent {
9
- model: ITextModel;
10
- ranges: Range[];
11
- }
12
- export declare class TreeSitterCodeEditors extends Disposable {
13
- private readonly _languageId;
14
- private readonly _codeEditorService;
15
- private readonly _treeSitterParserService;
16
- private readonly _textModels;
17
- private readonly _languageEditors;
18
- private readonly _allEditors;
19
- private readonly _onDidChangeViewport;
20
- readonly onDidChangeViewport: Event<IViewPortChangeEvent>;
21
- constructor(_languageId: string, _codeEditorService: ICodeEditorService, _treeSitterParserService: ITreeSitterParserService);
22
- get textModels(): ITextModel[];
23
- getEditorForModel(model: ITextModel): ICodeEditor | undefined;
24
- getInitialViewPorts(): Promise<IViewPortChangeEvent[]>;
25
- private _onCodeEditorRemove;
26
- private getEditorModel;
27
- private _onCodeEditorAdd;
28
- private _tryAddEditor;
29
- private _onDidChangeModel;
30
- private _onViewportChange;
31
- private _nonIntersectingViewPortRanges;
32
- }
@@ -1,119 +0,0 @@
1
-
2
- import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
4
- import { Disposable, DisposableMap, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
- import { ICodeEditorService } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/codeEditorService.service';
6
- import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
7
- import { ITreeSitterParserService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service';
8
-
9
- let TreeSitterCodeEditors = class TreeSitterCodeEditors extends Disposable {
10
- constructor(_languageId, _codeEditorService, _treeSitterParserService) {
11
- super();
12
- this._languageId = _languageId;
13
- this._codeEditorService = _codeEditorService;
14
- this._treeSitterParserService = _treeSitterParserService;
15
- this._textModels = ( new Set());
16
- this._languageEditors = this._register(( new DisposableMap()));
17
- this._allEditors = this._register(( new DisposableMap()));
18
- this._onDidChangeViewport = this._register(( new Emitter()));
19
- this.onDidChangeViewport = this._onDidChangeViewport.event;
20
- this._register(this._codeEditorService.onCodeEditorAdd(this._onCodeEditorAdd, this));
21
- this._register(this._codeEditorService.onCodeEditorRemove(this._onCodeEditorRemove, this));
22
- this._codeEditorService.listCodeEditors().forEach(this._onCodeEditorAdd, this);
23
- }
24
- get textModels() {
25
- return Array.from(( this._textModels.keys()));
26
- }
27
- getEditorForModel(model) {
28
- return this._codeEditorService.listCodeEditors().find(editor => editor.getModel() === model);
29
- }
30
- async getInitialViewPorts() {
31
- await this._treeSitterParserService.getLanguage(this._languageId);
32
- const editors = this._codeEditorService.listCodeEditors();
33
- const viewports = [];
34
- for (const editor of editors) {
35
- const model = await this.getEditorModel(editor);
36
- if (model && model.getLanguageId() === this._languageId) {
37
- viewports.push({
38
- model,
39
- ranges: this._nonIntersectingViewPortRanges(editor)
40
- });
41
- }
42
- }
43
- return viewports;
44
- }
45
- _onCodeEditorRemove(editor) {
46
- this._allEditors.deleteAndDispose(editor);
47
- }
48
- async getEditorModel(editor) {
49
- let model = editor.getModel() ?? undefined;
50
- if (!model) {
51
- const disposableStore = this._register(( new DisposableStore()));
52
- await Event.toPromise(Event.once(editor.onDidChangeModel), disposableStore);
53
- model = editor.getModel() ?? undefined;
54
- }
55
- return model;
56
- }
57
- async _onCodeEditorAdd(editor) {
58
- const otherEditorDisposables = ( new DisposableStore());
59
- otherEditorDisposables.add(editor.onDidChangeModel(() => this._onDidChangeModel(editor, editor.getModel()), this));
60
- this._allEditors.set(editor, otherEditorDisposables);
61
- const model = editor.getModel();
62
- if (model) {
63
- this._tryAddEditor(editor, model);
64
- }
65
- }
66
- _tryAddEditor(editor, model) {
67
- const language = model.getLanguageId();
68
- if ((language === this._languageId)) {
69
- if (!( this._textModels.has(model))) {
70
- this._textModels.add(model);
71
- }
72
- if (!( this._languageEditors.has(editor))) {
73
- const langaugeEditorDisposables = ( new DisposableStore());
74
- langaugeEditorDisposables.add(editor.onDidScrollChange(() => this._onViewportChange(editor), this));
75
- this._languageEditors.set(editor, langaugeEditorDisposables);
76
- this._onViewportChange(editor);
77
- }
78
- }
79
- }
80
- async _onDidChangeModel(editor, model) {
81
- if (model) {
82
- this._tryAddEditor(editor, model);
83
- }
84
- else {
85
- this._languageEditors.deleteAndDispose(editor);
86
- }
87
- }
88
- async _onViewportChange(editor) {
89
- const ranges = this._nonIntersectingViewPortRanges(editor);
90
- const model = editor.getModel();
91
- if (!model) {
92
- this._languageEditors.deleteAndDispose(editor);
93
- return;
94
- }
95
- this._onDidChangeViewport.fire({ model: model, ranges });
96
- }
97
- _nonIntersectingViewPortRanges(editor) {
98
- const viewportRanges = editor.getVisibleRangesPlusViewportAboveBelow();
99
- const nonIntersectingRanges = [];
100
- for (const range of viewportRanges) {
101
- if (nonIntersectingRanges.length !== 0) {
102
- const prev = nonIntersectingRanges[nonIntersectingRanges.length - 1];
103
- if (Range.areOnlyIntersecting(prev, range)) {
104
- const newRange = prev.plusRange(range);
105
- nonIntersectingRanges[nonIntersectingRanges.length - 1] = newRange;
106
- continue;
107
- }
108
- }
109
- nonIntersectingRanges.push(range);
110
- }
111
- return nonIntersectingRanges;
112
- }
113
- };
114
- TreeSitterCodeEditors = ( __decorate([
115
- ( __param(1, ICodeEditorService)),
116
- ( __param(2, ITreeSitterParserService))
117
- ], TreeSitterCodeEditors));
118
-
119
- export { TreeSitterCodeEditors };