@codingame/monaco-vscode-treesitter-service-override 15.0.2 → 16.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 (22) hide show
  1. package/index.js +1 -1
  2. package/package.json +9 -6
  3. package/vscode/src/vs/editor/common/languages/highlights/typescript.scm +488 -0
  4. package/vscode/src/vs/editor/common/model/tokenStore.d.ts +0 -1
  5. package/vscode/src/vs/editor/common/model/tokenStore.js +14 -8
  6. package/vscode/src/vs/editor/common/model/treeSitterTokenStoreService.d.ts +3 -0
  7. package/vscode/src/vs/editor/common/model/treeSitterTokenStoreService.js +33 -27
  8. package/vscode/src/vs/editor/common/services/treeSitter/cursorUtils.d.ts +6 -0
  9. package/vscode/src/vs/editor/common/services/treeSitter/cursorUtils.js +76 -0
  10. package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.d.ts +88 -0
  11. package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.js +675 -0
  12. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.d.ts +30 -0
  13. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.js +102 -0
  14. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterParserService.d.ts +8 -80
  15. package/vscode/src/vs/editor/common/services/treeSitter/treeSitterParserService.js +20 -522
  16. package/vscode/src/vs/editor/common/services/treeSitterParserService.d.ts +16 -3
  17. package/vscode/src/vs/editor/common/services/treeSitterParserService.js +1 -1
  18. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterCodeEditors.d.ts +7 -2
  19. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterCodeEditors.js +43 -22
  20. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.d.ts +14 -14
  21. package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.js +256 -169
  22. package/assets/typescript.scm +0 -388
@@ -0,0 +1,30 @@
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
+ export declare const MODULE_LOCATION_SUBPATH = "@vscode/tree-sitter-wasm/wasm";
9
+ export declare function getModuleLocation(environmentService: IEnvironmentService): AppResourcePath;
10
+ export declare class TreeSitterLanguages extends Disposable {
11
+ private readonly _treeSitterImporter;
12
+ private readonly _fileService;
13
+ private readonly _environmentService;
14
+ private readonly _registeredLanguages;
15
+ private _languages;
16
+ readonly _onDidAddLanguage: Emitter<{
17
+ id: string;
18
+ language: Parser.Language;
19
+ }>;
20
+ readonly onDidAddLanguage: Event<{
21
+ id: string;
22
+ language: Parser.Language;
23
+ }>;
24
+ constructor(_treeSitterImporter: ITreeSitterImporter, _fileService: IFileService, _environmentService: IEnvironmentService, _registeredLanguages: Map<string, string>);
25
+ getOrInitLanguage(languageId: string): Parser.Language | undefined;
26
+ getLanguage(languageId: string): Promise<Parser.Language | undefined>;
27
+ private _addLanguage;
28
+ private _fetchLanguage;
29
+ private _getLanguageLocation;
30
+ }
@@ -0,0 +1,102 @@
1
+
2
+ import { nodeModulesPath, FileAccess } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
3
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
6
+ import { PromiseResult } from '@codingame/monaco-vscode-ae8a8ca1-f243-508b-9c37-c88ebbd295fa-common/vscode/vs/base/common/observableInternal/promise';
7
+
8
+ const MODULE_LOCATION_SUBPATH = `@vscode/tree-sitter-wasm/wasm`;
9
+ function getModuleLocation(environmentService) {
10
+ return `${nodeModulesPath}/${MODULE_LOCATION_SUBPATH}`;
11
+ }
12
+ class TreeSitterLanguages extends Disposable {
13
+ constructor(_treeSitterImporter, _fileService, _environmentService, _registeredLanguages) {
14
+ super();
15
+ this._treeSitterImporter = _treeSitterImporter;
16
+ this._fileService = _fileService;
17
+ this._environmentService = _environmentService;
18
+ this._registeredLanguages = _registeredLanguages;
19
+ this._languages = ( new AsyncCache());
20
+ this._onDidAddLanguage = this._register(( new Emitter()));
21
+ this.onDidAddLanguage = this._onDidAddLanguage.event;
22
+ }
23
+ getOrInitLanguage(languageId) {
24
+ if (this._languages.isCached(languageId)) {
25
+ return this._languages.getSyncIfCached(languageId);
26
+ }
27
+ else {
28
+ this._addLanguage(languageId);
29
+ return undefined;
30
+ }
31
+ }
32
+ async getLanguage(languageId) {
33
+ if (this._languages.isCached(languageId)) {
34
+ return this._languages.getSyncIfCached(languageId);
35
+ }
36
+ else {
37
+ await this._addLanguage(languageId);
38
+ return this._languages.get(languageId);
39
+ }
40
+ }
41
+ async _addLanguage(languageId) {
42
+ const languagePromise = this._languages.get(languageId);
43
+ if (!languagePromise) {
44
+ this._languages.set(languageId, this._fetchLanguage(languageId));
45
+ const language = await this._languages.get(languageId);
46
+ if (!language) {
47
+ return undefined;
48
+ }
49
+ this._onDidAddLanguage.fire({ id: languageId, language });
50
+ }
51
+ }
52
+ async _fetchLanguage(languageId) {
53
+ const grammarName = this._registeredLanguages.get(languageId);
54
+ const languageLocation = this._getLanguageLocation(languageId);
55
+ if (!grammarName || !languageLocation) {
56
+ return undefined;
57
+ }
58
+ const wasmPath = `${languageLocation}/${grammarName}.wasm`;
59
+ const languageFile = await (this._fileService.readFile(( FileAccess.asFileUri(wasmPath))));
60
+ const Language = await this._treeSitterImporter.getLanguageClass();
61
+ return Language.load(languageFile.value.buffer);
62
+ }
63
+ _getLanguageLocation(languageId) {
64
+ const grammarName = this._registeredLanguages.get(languageId);
65
+ if (!grammarName) {
66
+ return undefined;
67
+ }
68
+ return getModuleLocation();
69
+ }
70
+ }
71
+ class AsyncCache {
72
+ constructor() {
73
+ this._values = ( new Map());
74
+ }
75
+ set(key, promise) {
76
+ this._values.set(key, ( new PromiseWithSyncAccess(promise)));
77
+ }
78
+ get(key) {
79
+ return this._values.get(key)?.promise;
80
+ }
81
+ getSyncIfCached(key) {
82
+ return this._values.get(key)?.result?.data;
83
+ }
84
+ isCached(key) {
85
+ return this._values.get(key)?.result !== undefined;
86
+ }
87
+ }
88
+ class PromiseWithSyncAccess {
89
+ get result() {
90
+ return this._result;
91
+ }
92
+ constructor(promise) {
93
+ this.promise = promise;
94
+ promise.then(result => {
95
+ this._result = ( new PromiseResult(result, undefined));
96
+ }).catch(e => {
97
+ this._result = ( new PromiseResult(undefined, e));
98
+ });
99
+ }
100
+ }
101
+
102
+ export { MODULE_LOCATION_SUBPATH, TreeSitterLanguages, getModuleLocation };
@@ -1,94 +1,21 @@
1
1
  import type * as Parser from "@vscode/tree-sitter-wasm";
2
- import { ITreeSitterParseResult, ITextModelTreeSitter, TreeUpdateEvent, TreeParseUpdateEvent } from "../treeSitterParserService.js";
2
+ import { ITextModelTreeSitter, TreeUpdateEvent } from "../treeSitterParserService.js";
3
3
  import { ITreeSitterImporter } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
4
4
  import { ITreeSitterParserService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
5
5
  import { IModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service";
6
- import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
6
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
7
7
  import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
8
8
  import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
9
- import { IModelContentChangedEvent } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEvents";
10
- import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
11
- import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
12
9
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
13
- import { Emitter, Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
10
+ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
14
11
  import { IEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service";
15
- export declare class TextModelTreeSitter extends Disposable implements ITextModelTreeSitter {
16
- readonly model: ITextModel;
17
- private readonly _treeSitterLanguages;
18
- private readonly _treeSitterImporter;
19
- private readonly _logService;
20
- private readonly _telemetryService;
21
- private _onDidChangeParseResult;
22
- readonly onDidChangeParseResult: Event<TreeParseUpdateEvent>;
23
- private _parseResult;
24
- private _versionId;
25
- get parseResult(): ITreeSitterParseResult | undefined;
26
- constructor(model: ITextModel, _treeSitterLanguages: TreeSitterLanguages, _treeSitterImporter: ITreeSitterImporter, _logService: ILogService, _telemetryService: ITelemetryService, parseImmediately?: boolean);
27
- private readonly _parseSessionDisposables;
28
- private _onDidChangeLanguage;
29
- parse(languageId?: string): Promise<ITreeSitterParseResult | undefined>;
30
- private _getLanguage;
31
- private _onDidChangeContent;
32
- }
33
- export declare class TreeSitterParseResult implements IDisposable, ITreeSitterParseResult {
34
- readonly parser: Parser.Parser;
35
- readonly language: Parser.Language;
36
- private readonly _logService;
37
- private readonly _telemetryService;
38
- private _tree;
39
- private _lastFullyParsed;
40
- private _lastFullyParsedWithEdits;
41
- private readonly _onDidUpdate;
42
- readonly onDidUpdate: Event<TreeParseUpdateEvent>;
43
- private _versionId;
44
- private _editVersion;
45
- get versionId(): number;
46
- private _isDisposed;
47
- constructor(parser: Parser.Parser, language: Parser.Language, _logService: ILogService, _telemetryService: ITelemetryService);
48
- dispose(): void;
49
- get tree(): Parser.Tree | undefined;
50
- get isDisposed(): boolean;
51
- private findChangedNodes;
52
- private calculateRangeChange;
53
- private _onDidChangeContentQueue;
54
- onDidChangeContent(model: ITextModel, changes: IModelContentChangedEvent | undefined): void;
55
- private _applyEdits;
56
- private _parseAndUpdateTree;
57
- private _parse;
58
- private _parseAndYield;
59
- private _lastYieldTime;
60
- private _parseProgressCallback;
61
- private _parseCallback;
62
- private sendParseTimeTelemetry;
63
- }
64
- export declare class TreeSitterLanguages extends Disposable {
65
- private readonly _treeSitterImporter;
66
- private readonly _fileService;
67
- private readonly _environmentService;
68
- private readonly _registeredLanguages;
69
- private _languages;
70
- readonly _onDidAddLanguage: Emitter<{
71
- id: string;
72
- language: Parser.Language;
73
- }>;
74
- readonly onDidAddLanguage: Event<{
75
- id: string;
76
- language: Parser.Language;
77
- }>;
78
- constructor(_treeSitterImporter: ITreeSitterImporter, _fileService: IFileService, _environmentService: IEnvironmentService, _registeredLanguages: Map<string, string>);
79
- getOrInitLanguage(languageId: string): Parser.Language | undefined;
80
- getLanguage(languageId: string): Promise<Parser.Language | undefined>;
81
- private _addLanguage;
82
- private _fetchLanguage;
83
- private _getLanguageLocation;
84
- }
12
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
85
13
  export declare class TreeSitterTextModelService extends Disposable implements ITreeSitterParserService {
86
14
  private readonly _modelService;
87
- private readonly _telemetryService;
88
- private readonly _logService;
89
15
  private readonly _configurationService;
90
16
  private readonly _environmentService;
91
17
  private readonly _treeSitterImporter;
18
+ private readonly _instantiationService;
92
19
  readonly _serviceBrand: undefined;
93
20
  private _init;
94
21
  private _textModelTreeSitters;
@@ -101,9 +28,9 @@ export declare class TreeSitterTextModelService extends Disposable implements IT
101
28
  private _onDidUpdateTree;
102
29
  readonly onDidUpdateTree: Event<TreeUpdateEvent>;
103
30
  isTest: boolean;
104
- constructor(_modelService: IModelService, fileService: IFileService, _telemetryService: ITelemetryService, _logService: ILogService, _configurationService: IConfigurationService, _environmentService: IEnvironmentService, _treeSitterImporter: ITreeSitterImporter);
31
+ constructor(_modelService: IModelService, fileService: IFileService, _configurationService: IConfigurationService, _environmentService: IEnvironmentService, _treeSitterImporter: ITreeSitterImporter, _instantiationService: IInstantiationService);
105
32
  getOrInitLanguage(languageId: string): Parser.Language | undefined;
106
- getParseResult(textModel: ITextModel): ITreeSitterParseResult | undefined;
33
+ getParseResult(textModel: ITextModel): ITextModelTreeSitter | undefined;
107
34
  getTree(content: string, languageId: string): Promise<Parser.Tree | undefined>;
108
35
  getTreeSync(content: string, languageId: string): Parser.Tree | undefined;
109
36
  getLanguage(languageId: string): Promise<Parser.Language | undefined>;
@@ -115,6 +42,7 @@ export declare class TreeSitterTextModelService extends Disposable implements IT
115
42
  private _registerModelServiceListeners;
116
43
  getTextModelTreeSitter(model: ITextModel, parseImmediately?: boolean): Promise<ITextModelTreeSitter>;
117
44
  private _createTextModelTreeSitter;
45
+ private _handleOnDidChangeParseResult;
118
46
  private _addGrammar;
119
47
  private _removeGrammar;
120
48
  }