@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.
- package/index.js +1 -1
- package/package.json +9 -6
- package/vscode/src/vs/editor/common/languages/highlights/typescript.scm +488 -0
- package/vscode/src/vs/editor/common/model/tokenStore.d.ts +0 -1
- package/vscode/src/vs/editor/common/model/tokenStore.js +14 -8
- package/vscode/src/vs/editor/common/model/treeSitterTokenStoreService.d.ts +3 -0
- package/vscode/src/vs/editor/common/model/treeSitterTokenStoreService.js +33 -27
- package/vscode/src/vs/editor/common/services/treeSitter/cursorUtils.d.ts +6 -0
- package/vscode/src/vs/editor/common/services/treeSitter/cursorUtils.js +76 -0
- package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.d.ts +88 -0
- package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.js +675 -0
- package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.d.ts +30 -0
- package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.js +102 -0
- package/vscode/src/vs/editor/common/services/treeSitter/treeSitterParserService.d.ts +8 -80
- package/vscode/src/vs/editor/common/services/treeSitter/treeSitterParserService.js +20 -522
- package/vscode/src/vs/editor/common/services/treeSitterParserService.d.ts +16 -3
- package/vscode/src/vs/editor/common/services/treeSitterParserService.js +1 -1
- package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterCodeEditors.d.ts +7 -2
- package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterCodeEditors.js +43 -22
- package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.d.ts +14 -14
- package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.js +256 -169
- 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 {
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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,
|
|
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):
|
|
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
|
}
|