@codingame/monaco-vscode-treesitter-service-override 16.1.1 → 17.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/package.json +4 -5
- package/vscode/src/vs/editor/common/languages/highlights/typescript.scm +6 -0
- package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.d.ts +1 -1
- package/vscode/src/vs/editor/common/services/treeSitter/textModelTreeSitter.js +11 -2
- package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.d.ts +2 -1
- package/vscode/src/vs/editor/common/services/treeSitter/treeSitterLanguages.js +20 -2
- package/vscode/src/vs/editor/common/services/treeSitter/treeSitterParserService.js +1 -0
- package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.d.ts +1 -1
- package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-treesitter-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "17.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - treesitter service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,10 +15,9 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-
|
|
19
|
-
"@codingame/monaco-vscode-9d0168a3-519b-57f3-9bcc-89efc41f951a-common": "
|
|
20
|
-
"@codingame/monaco-vscode-
|
|
21
|
-
"@codingame/monaco-vscode-api": "16.1.1",
|
|
18
|
+
"@codingame/monaco-vscode-7443a901-21f6-577a-9674-42893b997ee0-common": "17.0.0",
|
|
19
|
+
"@codingame/monaco-vscode-9d0168a3-519b-57f3-9bcc-89efc41f951a-common": "17.0.0",
|
|
20
|
+
"@codingame/monaco-vscode-api": "17.0.0",
|
|
22
21
|
"@vscode/tree-sitter-wasm": "0.1.4"
|
|
23
22
|
},
|
|
24
23
|
"main": "index.js",
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
(template_literal_type)
|
|
29
29
|
] @string.template.ts)
|
|
30
30
|
|
|
31
|
+
(template_substitution) @meta.template.expression.ts
|
|
32
|
+
|
|
31
33
|
(string .
|
|
32
34
|
([
|
|
33
35
|
"\""
|
|
@@ -130,6 +132,9 @@
|
|
|
130
132
|
(arrow_function
|
|
131
133
|
parameter: (identifier) @variable.parameter.ts)
|
|
132
134
|
|
|
135
|
+
(type_predicate
|
|
136
|
+
name: (identifier) @variable.parameter.ts)
|
|
137
|
+
|
|
133
138
|
; Function and method calls
|
|
134
139
|
|
|
135
140
|
(call_expression
|
|
@@ -238,6 +243,7 @@
|
|
|
238
243
|
|
|
239
244
|
(unary_expression ([
|
|
240
245
|
"-"
|
|
246
|
+
"+"
|
|
241
247
|
]) @keyword.operator.arithmetic.ts)
|
|
242
248
|
|
|
243
249
|
[
|
|
@@ -25,7 +25,7 @@ export declare class TextModelTreeSitter extends Disposable implements ITextMode
|
|
|
25
25
|
readonly onDidChangeParseResult: Event<ModelTreeUpdateEvent>;
|
|
26
26
|
private _rootTreeSitterTree;
|
|
27
27
|
private _query;
|
|
28
|
-
private _injectionTreeSitterTrees;
|
|
28
|
+
private readonly _injectionTreeSitterTrees;
|
|
29
29
|
private _versionId;
|
|
30
30
|
get parseResult(): ITreeSitterParseResult | undefined;
|
|
31
31
|
constructor(textModel: ITextModel, _treeSitterLanguages: TreeSitterLanguages, parseImmediately: boolean | undefined, _treeSitterImporter: ITreeSitterImporter, _logService: ILogService, _telemetryService: ITelemetryService, _fileService: IFileService);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { ITreeSitterImporter } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service';
|
|
4
|
-
import { Disposable, DisposableStore, dispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
|
+
import { Disposable, DisposableMap, DisposableStore, dispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
5
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
6
6
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
7
7
|
import { setTimeout0 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
@@ -32,7 +32,7 @@ let TextModelTreeSitter = class TextModelTreeSitter extends Disposable {
|
|
|
32
32
|
this._fileService = _fileService;
|
|
33
33
|
this._onDidChangeParseResult = this._register(( new Emitter()));
|
|
34
34
|
this.onDidChangeParseResult = this._onDidChangeParseResult.event;
|
|
35
|
-
this._injectionTreeSitterTrees = ( new
|
|
35
|
+
this._injectionTreeSitterTrees = this._register(( new DisposableMap()));
|
|
36
36
|
this._versionId = 0;
|
|
37
37
|
this._parseSessionDisposables = this._register(( new DisposableStore()));
|
|
38
38
|
if (parseImmediately) {
|
|
@@ -220,6 +220,11 @@ let TextModelTreeSitter = class TextModelTreeSitter extends Disposable {
|
|
|
220
220
|
};
|
|
221
221
|
}
|
|
222
222
|
async _processInjections(injections, parentTree, parentLanguage, modelChanges) {
|
|
223
|
+
if (injections.size === 0) {
|
|
224
|
+
this._injectionTreeSitterTrees.clearAndDisposeAll();
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
const unseenInjections = ( new Set(( this._injectionTreeSitterTrees.keys())));
|
|
223
228
|
for (const [languageId, ranges] of injections) {
|
|
224
229
|
const language = await this._treeSitterLanguages.getLanguage(languageId);
|
|
225
230
|
if (!language) {
|
|
@@ -227,9 +232,13 @@ let TextModelTreeSitter = class TextModelTreeSitter extends Disposable {
|
|
|
227
232
|
}
|
|
228
233
|
const treeSitterTree = await this._getOrCreateInjectedTree(languageId, language, parentTree, parentLanguage);
|
|
229
234
|
if (treeSitterTree) {
|
|
235
|
+
unseenInjections.delete(languageId);
|
|
230
236
|
this._onDidChangeContent(treeSitterTree, modelChanges, ranges);
|
|
231
237
|
}
|
|
232
238
|
}
|
|
239
|
+
for (const unseenInjection of unseenInjections) {
|
|
240
|
+
this._injectionTreeSitterTrees.deleteAndDispose(unseenInjection);
|
|
241
|
+
}
|
|
233
242
|
}
|
|
234
243
|
async _getOrCreateInjectedTree(languageId, language, parentTree, parentLanguage) {
|
|
235
244
|
let treeSitterTree = this._injectionTreeSitterTrees.get(languageId);
|
|
@@ -5,6 +5,7 @@ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/l
|
|
|
5
5
|
import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
|
|
6
6
|
import { Emitter, Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
7
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";
|
|
8
9
|
export declare const MODULE_LOCATION_SUBPATH = "@vscode/tree-sitter-wasm/wasm";
|
|
9
10
|
export declare function getModuleLocation(environmentService: IEnvironmentService): AppResourcePath;
|
|
10
11
|
export declare class TreeSitterLanguages extends Disposable {
|
|
@@ -21,7 +22,7 @@ export declare class TreeSitterLanguages extends Disposable {
|
|
|
21
22
|
id: string;
|
|
22
23
|
language: Parser.Language;
|
|
23
24
|
}>;
|
|
24
|
-
constructor(_treeSitterImporter: ITreeSitterImporter, _fileService: IFileService, _environmentService: IEnvironmentService, _registeredLanguages: Map<string, string>);
|
|
25
|
+
constructor(_treeSitterImporter: ITreeSitterImporter, _fileService: IFileService, _environmentService: IEnvironmentService, configurationService: IConfigurationService, _registeredLanguages: Map<string, string>);
|
|
25
26
|
getOrInitLanguage(languageId: string): Parser.Language | undefined;
|
|
26
27
|
getLanguage(languageId: string): Promise<Parser.Language | undefined>;
|
|
27
28
|
private _addLanguage;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
|
|
2
2
|
import { nodeModulesPath, FileAccess } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
3
|
+
import { EDITOR_EXPERIMENTAL_PREFER_TREESITTER } from '../treeSitterParserService.js';
|
|
3
4
|
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
5
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
5
6
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
6
|
-
import { PromiseResult } from '@codingame/monaco-vscode-
|
|
7
|
+
import { PromiseResult } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/promise';
|
|
7
8
|
|
|
8
9
|
const MODULE_LOCATION_SUBPATH = `@vscode/tree-sitter-wasm/wasm`;
|
|
9
10
|
function getModuleLocation(environmentService) {
|
|
10
11
|
return `${nodeModulesPath}/${MODULE_LOCATION_SUBPATH}`;
|
|
11
12
|
}
|
|
12
13
|
class TreeSitterLanguages extends Disposable {
|
|
13
|
-
constructor(_treeSitterImporter, _fileService, _environmentService, _registeredLanguages) {
|
|
14
|
+
constructor(_treeSitterImporter, _fileService, _environmentService, configurationService, _registeredLanguages) {
|
|
14
15
|
super();
|
|
15
16
|
this._treeSitterImporter = _treeSitterImporter;
|
|
16
17
|
this._fileService = _fileService;
|
|
@@ -19,6 +20,17 @@ class TreeSitterLanguages extends Disposable {
|
|
|
19
20
|
this._languages = ( new AsyncCache());
|
|
20
21
|
this._onDidAddLanguage = this._register(( new Emitter()));
|
|
21
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
|
+
}));
|
|
22
34
|
}
|
|
23
35
|
getOrInitLanguage(languageId) {
|
|
24
36
|
if (this._languages.isCached(languageId)) {
|
|
@@ -84,6 +96,12 @@ class AsyncCache {
|
|
|
84
96
|
isCached(key) {
|
|
85
97
|
return this._values.get(key)?.result !== undefined;
|
|
86
98
|
}
|
|
99
|
+
delete(key) {
|
|
100
|
+
return this._values.delete(key);
|
|
101
|
+
}
|
|
102
|
+
keys() {
|
|
103
|
+
return ( this._values.keys());
|
|
104
|
+
}
|
|
87
105
|
}
|
|
88
106
|
class PromiseWithSyncAccess {
|
|
89
107
|
get result() {
|
|
@@ -33,6 +33,7 @@ let TreeSitterTextModelService = class TreeSitterTextModelService extends Dispos
|
|
|
33
33
|
this._treeSitterImporter,
|
|
34
34
|
fileService,
|
|
35
35
|
this._environmentService,
|
|
36
|
+
this._configurationService,
|
|
36
37
|
this._registeredLanguages
|
|
37
38
|
)));
|
|
38
39
|
this.onDidAddLanguage = this._treeSitterLanguages.onDidAddLanguage;
|
package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { ILanguageService } from "@codingame/monaco-vscode-api/vscode/vs/editor/
|
|
|
14
14
|
import { ITreeSitterTokenizationStoreService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model/treeSitterTokenStoreService.service";
|
|
15
15
|
import { TokenUpdate } from "../../../../editor/common/model/tokenStore.js";
|
|
16
16
|
import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
|
|
17
|
-
import { IWorkbenchThemeService } from "@codingame/monaco-vscode-
|
|
17
|
+
import { IWorkbenchThemeService } from "@codingame/monaco-vscode-7443a901-21f6-577a-9674-42893b997ee0-common/vscode/vs/workbench/services/themes/common/workbenchThemeService.service";
|
|
18
18
|
import { ITreeSitterTokenizationFeature } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.service";
|
|
19
19
|
type TreeSitterQueries = string;
|
|
20
20
|
export declare const TREESITTER_BASE_SCOPES: Record<string, string>;
|
package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.js
CHANGED
|
@@ -19,7 +19,7 @@ import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core
|
|
|
19
19
|
import { setTimeout0 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
20
20
|
import { findLikelyRelevantLines } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModelTokens';
|
|
21
21
|
import { TreeSitterCodeEditors } from './treeSitterCodeEditors.js';
|
|
22
|
-
import { IWorkbenchThemeService } from '@codingame/monaco-vscode-
|
|
22
|
+
import { IWorkbenchThemeService } from '@codingame/monaco-vscode-7443a901-21f6-577a-9674-42893b997ee0-common/vscode/vs/workbench/services/themes/common/workbenchThemeService.service';
|
|
23
23
|
import { Position } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position';
|
|
24
24
|
|
|
25
25
|
const TREESITTER_BASE_SCOPES = {
|
|
@@ -648,7 +648,7 @@ let TreeSitterTokenizationSupport = class TreeSitterTokenizationSupport extends
|
|
|
648
648
|
}
|
|
649
649
|
for (let i = 0; i < endOffsetsAndScopes.length; i++) {
|
|
650
650
|
const token = endOffsetsAndScopes[i];
|
|
651
|
-
if (token.endOffset === 0 &&
|
|
651
|
+
if (token.endOffset === 0 && i !== 0) {
|
|
652
652
|
endOffsetsAndScopes.splice(i, endOffsetsAndScopes.length - i);
|
|
653
653
|
break;
|
|
654
654
|
}
|