@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
|
@@ -3,7 +3,6 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
|
|
|
3
3
|
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
4
4
|
import { Disposable, DisposableMap, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
5
|
import { ICodeEditorService } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/codeEditorService.service';
|
|
6
|
-
import { PLAINTEXT_LANGUAGE_ID } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/modesRegistry';
|
|
7
6
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
8
7
|
import { ITreeSitterParserService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service';
|
|
9
8
|
|
|
@@ -13,15 +12,20 @@ let TreeSitterCodeEditors = class TreeSitterCodeEditors extends Disposable {
|
|
|
13
12
|
this._languageId = _languageId;
|
|
14
13
|
this._codeEditorService = _codeEditorService;
|
|
15
14
|
this._treeSitterParserService = _treeSitterParserService;
|
|
16
|
-
this.
|
|
15
|
+
this._textModels = ( new Set());
|
|
16
|
+
this._languageEditors = this._register(( new DisposableMap()));
|
|
17
|
+
this._allEditors = this._register(( new DisposableMap()));
|
|
17
18
|
this._onDidChangeViewport = this._register(( new Emitter()));
|
|
18
19
|
this.onDidChangeViewport = this._onDidChangeViewport.event;
|
|
19
20
|
this._register(this._codeEditorService.onCodeEditorAdd(this._onCodeEditorAdd, this));
|
|
20
21
|
this._register(this._codeEditorService.onCodeEditorRemove(this._onCodeEditorRemove, this));
|
|
21
22
|
this._codeEditorService.listCodeEditors().forEach(this._onCodeEditorAdd, this);
|
|
22
23
|
}
|
|
23
|
-
get
|
|
24
|
-
return Array.from(( this.
|
|
24
|
+
get textModels() {
|
|
25
|
+
return Array.from(( this._textModels.keys()));
|
|
26
|
+
}
|
|
27
|
+
getEditorForModel(model) {
|
|
28
|
+
return this._codeEditorService.listCodeEditors().find(editor => editor.getModel() === model);
|
|
25
29
|
}
|
|
26
30
|
async getInitialViewPorts() {
|
|
27
31
|
await this._treeSitterParserService.getLanguage(this._languageId);
|
|
@@ -29,7 +33,7 @@ let TreeSitterCodeEditors = class TreeSitterCodeEditors extends Disposable {
|
|
|
29
33
|
const viewports = [];
|
|
30
34
|
for (const editor of editors) {
|
|
31
35
|
const model = await this.getEditorModel(editor);
|
|
32
|
-
if (model) {
|
|
36
|
+
if (model && model.getLanguageId() === this._languageId) {
|
|
33
37
|
viewports.push({
|
|
34
38
|
model,
|
|
35
39
|
ranges: this._nonIntersectingViewPortRanges(editor)
|
|
@@ -39,7 +43,7 @@ let TreeSitterCodeEditors = class TreeSitterCodeEditors extends Disposable {
|
|
|
39
43
|
return viewports;
|
|
40
44
|
}
|
|
41
45
|
_onCodeEditorRemove(editor) {
|
|
42
|
-
this.
|
|
46
|
+
this._allEditors.deleteAndDispose(editor);
|
|
43
47
|
}
|
|
44
48
|
async getEditorModel(editor) {
|
|
45
49
|
let model = editor.getModel() ?? undefined;
|
|
@@ -48,30 +52,47 @@ let TreeSitterCodeEditors = class TreeSitterCodeEditors extends Disposable {
|
|
|
48
52
|
await Event.toPromise(Event.once(editor.onDidChangeModel), disposableStore);
|
|
49
53
|
model = editor.getModel() ?? undefined;
|
|
50
54
|
}
|
|
51
|
-
if (!model) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
let language = model.getLanguageId();
|
|
55
|
-
if (language === PLAINTEXT_LANGUAGE_ID) {
|
|
56
|
-
const disposableStore = this._register(( new DisposableStore()));
|
|
57
|
-
await Event.toPromise(Event.once(model.onDidChangeLanguage), disposableStore);
|
|
58
|
-
language = model.getLanguageId();
|
|
59
|
-
}
|
|
60
|
-
if (language !== this._languageId) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
55
|
return model;
|
|
64
56
|
}
|
|
65
57
|
async _onCodeEditorAdd(editor) {
|
|
66
|
-
const
|
|
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();
|
|
67
62
|
if (model) {
|
|
68
|
-
this.
|
|
69
|
-
|
|
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);
|
|
70
86
|
}
|
|
71
87
|
}
|
|
72
88
|
async _onViewportChange(editor) {
|
|
73
89
|
const ranges = this._nonIntersectingViewPortRanges(editor);
|
|
74
|
-
|
|
90
|
+
const model = editor.getModel();
|
|
91
|
+
if (!model) {
|
|
92
|
+
this._languageEditors.deleteAndDispose(editor);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this._onDidChangeViewport.fire({ model: model, ranges });
|
|
75
96
|
}
|
|
76
97
|
_nonIntersectingViewPortRanges(editor) {
|
|
77
98
|
const viewportRanges = editor.getVisibleRangesPlusViewportAboveBelow();
|
package/vscode/src/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event"
|
|
|
3
3
|
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
4
4
|
import { ILanguageIdCodec, ITreeSitterTokenizationSupport, QueryCapture } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
|
|
5
5
|
import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
|
|
6
|
-
import {
|
|
6
|
+
import { ITextModelTreeSitter } from "../../../../editor/common/services/treeSitterParserService.js";
|
|
7
7
|
import { ITreeSitterImporter } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
|
|
8
8
|
import { ITreeSitterParserService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/treeSitterParserService.service";
|
|
9
9
|
import { IModelTokensChangedEvent } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEvents";
|
|
@@ -14,10 +14,10 @@ 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 { ICodeEditorService } from "@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/codeEditorService.service";
|
|
18
17
|
import { IWorkbenchThemeService } from "@codingame/monaco-vscode-7ba0af96-90c2-5e11-ad7f-befdbbf246c8-common/vscode/vs/workbench/services/themes/common/workbenchThemeService.service";
|
|
19
18
|
import { ITreeSitterTokenizationFeature } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/treeSitter/browser/treeSitterTokenizationFeature.service";
|
|
20
19
|
type TreeSitterQueries = string;
|
|
20
|
+
export declare const TREESITTER_BASE_SCOPES: Record<string, string>;
|
|
21
21
|
export declare class TreeSitterTokenizationFeature extends Disposable implements ITreeSitterTokenizationFeature {
|
|
22
22
|
private readonly _treeSitterImporter;
|
|
23
23
|
private readonly _languageService;
|
|
@@ -40,7 +40,6 @@ export declare class TreeSitterTokenizationSupport extends Disposable implements
|
|
|
40
40
|
private readonly _treeSitterService;
|
|
41
41
|
private readonly _themeService;
|
|
42
42
|
private readonly _tokenizationStoreService;
|
|
43
|
-
private readonly _codeEditorService;
|
|
44
43
|
private readonly _instantiationService;
|
|
45
44
|
private _query;
|
|
46
45
|
private readonly _onDidChangeTokens;
|
|
@@ -48,45 +47,46 @@ export declare class TreeSitterTokenizationSupport extends Disposable implements
|
|
|
48
47
|
textModel: ITextModel;
|
|
49
48
|
changes: IModelTokensChangedEvent;
|
|
50
49
|
}>;
|
|
51
|
-
private readonly
|
|
52
|
-
readonly
|
|
50
|
+
private readonly _onDidCompleteBackgroundTokenization;
|
|
51
|
+
readonly onDidChangeBackgroundTokenization: Event<{
|
|
53
52
|
textModel: ITextModel;
|
|
54
53
|
}>;
|
|
55
54
|
private _colorThemeData;
|
|
56
55
|
private _languageAddedListener;
|
|
57
56
|
private _codeEditors;
|
|
58
|
-
|
|
57
|
+
private _encodedLanguage;
|
|
58
|
+
constructor(_queries: TreeSitterQueries, Query: typeof Parser.Query, _languageId: string, _languageIdCodec: ILanguageIdCodec, _treeSitterService: ITreeSitterParserService, _themeService: IWorkbenchThemeService, _tokenizationStoreService: ITreeSitterTokenizationStoreService, _instantiationService: IInstantiationService);
|
|
59
|
+
private get _encodedLanguageId();
|
|
59
60
|
private _setInitialTokens;
|
|
60
|
-
private
|
|
61
|
+
private _forceParseAndTokenizeContent;
|
|
61
62
|
private _parseAndTokenizeViewPort;
|
|
63
|
+
guessTokensForLinesContent(lineNumber: number, textModel: ITextModel, lines: string[]): Uint32Array[] | undefined;
|
|
62
64
|
private _emptyTokensForOffsetAndLength;
|
|
63
65
|
private _createEmptyTokens;
|
|
64
66
|
private _firstTreeUpdate;
|
|
65
|
-
private _codeEditorForModel;
|
|
66
67
|
private _setViewPortTokens;
|
|
67
68
|
private _handleTreeUpdate;
|
|
68
69
|
private _updateTreeForRanges;
|
|
69
70
|
private _refreshNeedsRefresh;
|
|
70
71
|
private _rangeTokensAsUpdates;
|
|
71
|
-
getTokensInRange(textModel: ITextModel, range: Range, rangeStartOffset: number, rangeEndOffset: number, captures?:
|
|
72
|
-
tree: ITreeSitterParseResult | undefined;
|
|
73
|
-
captures: QueryCapture[];
|
|
74
|
-
}): TokenUpdate[] | undefined;
|
|
72
|
+
getTokensInRange(textModel: ITextModel, range: Range, rangeStartOffset: number, rangeEndOffset: number, tree?: Parser.Tree, captures?: QueryCapture[]): TokenUpdate[] | undefined;
|
|
75
73
|
private _getTree;
|
|
76
74
|
private _ensureQuery;
|
|
77
75
|
private _updateTheme;
|
|
78
76
|
captureAtPosition(lineNumber: number, column: number, textModel: ITextModel): QueryCapture[];
|
|
79
|
-
|
|
77
|
+
captureAtRangeTree(range: Range, tree: Parser.Tree, textModelTreeSitter: ITextModelTreeSitter | undefined): QueryCapture[];
|
|
80
78
|
private _captureAtRange;
|
|
79
|
+
private _captureAtRangeWithInjections;
|
|
81
80
|
tokenizeEncoded(lineNumber: number, textModel: ITextModel): undefined;
|
|
82
81
|
tokenizeEncodedInstrumented(lineNumber: number, textModel: ITextModel): {
|
|
83
82
|
result: Uint32Array;
|
|
84
83
|
captureTime: number;
|
|
85
84
|
metadataTime: number;
|
|
86
85
|
} | undefined;
|
|
87
|
-
private
|
|
86
|
+
private _getCaptures;
|
|
88
87
|
private _tokenize;
|
|
89
88
|
private _createTokensFromCaptures;
|
|
89
|
+
private _getInjectionCaptures;
|
|
90
90
|
private _tokenizeCapturesWithMetadata;
|
|
91
91
|
private _emptyToken;
|
|
92
92
|
private _tokenizeEncoded;
|