@codingame/monaco-vscode-treesitter-service-override 16.1.1 → 17.1.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-treesitter-service-override",
3
- "version": "16.1.1",
3
+ "version": "17.1.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-7ba0af96-90c2-5e11-ad7f-befdbbf246c8-common": "16.1.1",
19
- "@codingame/monaco-vscode-9d0168a3-519b-57f3-9bcc-89efc41f951a-common": "16.1.1",
20
- "@codingame/monaco-vscode-ae8a8ca1-f243-508b-9c37-c88ebbd295fa-common": "16.1.1",
21
- "@codingame/monaco-vscode-api": "16.1.1",
18
+ "@codingame/monaco-vscode-7443a901-21f6-577a-9674-42893b997ee0-common": "17.1.0",
19
+ "@codingame/monaco-vscode-9d0168a3-519b-57f3-9bcc-89efc41f951a-common": "17.1.0",
20
+ "@codingame/monaco-vscode-api": "17.1.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 Map());
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-ae8a8ca1-f243-508b-9c37-c88ebbd295fa-common/vscode/vs/base/common/observableInternal/promise';
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;
@@ -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-7ba0af96-90c2-5e11-ad7f-befdbbf246c8-common/vscode/vs/workbench/services/themes/common/workbenchThemeService.service";
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>;
@@ -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-7ba0af96-90c2-5e11-ad7f-befdbbf246c8-common/vscode/vs/workbench/services/themes/common/workbenchThemeService.service';
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 && token.scopes.length === 0 && i !== 0) {
651
+ if (token.endOffset === 0 && i !== 0) {
652
652
  endOffsetsAndScopes.splice(i, endOffsetsAndScopes.length - i);
653
653
  break;
654
654
  }