File tree Expand file tree Collapse file tree 5 files changed +21
-20
lines changed Expand file tree Collapse file tree 5 files changed +21
-20
lines changed Original file line number Diff line number Diff line change 11import type { Range , TextDocument } from "@cursorless/common" ;
2- import type { Language , Node , Tree } from "web-tree-sitter" ;
2+ import type { Node , Query , Tree } from "web-tree-sitter" ;
33
44export interface TreeSitter {
55 /**
@@ -12,19 +12,20 @@ export interface TreeSitter {
1212 */
1313 getTree ( document : TextDocument ) : Tree ;
1414
15- /**
16- * Gets a language if it is loaded
17- *
18- * @param languageId The language id of the language to get
19- * @returns The language if it is already loaded
20- */
21- getLanguage ( languageId : string ) : Language | undefined ;
22-
2315 /**
2416 * Loads a language, returning true if it was successfully loaded
2517 *
2618 * @param languageId The language id of the language to load
2719 * @returns `true` if the language was successfully loaded
2820 */
2921 loadLanguage ( languageId : string ) : Promise < boolean > ;
22+
23+ /**
24+ * Create a query if the language is loaded.
25+ *
26+ * @param languageId The language id of the language to get
27+ * @param source The query source
28+ * @returns The query if that language is already loaded
29+ */
30+ createQuery ( languageId : string , source : string ) : Query | undefined ;
3031}
Original file line number Diff line number Diff line change 11import type { Range , TextDocument , TreeSitter } from "@cursorless/common" ;
2- import type { Language , Node , Tree } from "web-tree-sitter" ;
2+ import type { Node , Query , Tree } from "web-tree-sitter" ;
33
44export class DisabledTreeSitter implements TreeSitter {
55 getTree ( _document : TextDocument ) : Tree {
@@ -10,11 +10,11 @@ export class DisabledTreeSitter implements TreeSitter {
1010 return Promise . resolve ( false ) ;
1111 }
1212
13- getLanguage ( _languageId : string ) : Language | undefined {
13+ getNodeAtLocation ( _document : TextDocument , _range : Range ) : Node {
1414 throw new Error ( "Tree sitter not provided" ) ;
1515 }
1616
17- getNodeAtLocation ( _document : TextDocument , _range : Range ) : Node {
17+ createQuery ( _languageId : string , _source : string ) : Query | undefined {
1818 throw new Error ( "Tree sitter not provided" ) ;
1919 }
2020}
Original file line number Diff line number Diff line change @@ -60,14 +60,14 @@ export class LanguageDefinition {
6060 return undefined ;
6161 }
6262
63- const language = treeSitter . getLanguage ( languageId ) ;
63+ const rawQuery = treeSitter . createQuery ( languageId , rawLanguageQueryString ) ;
6464
65- if ( language == null ) {
66- throw Error ( `Could not get Tree sitter language for ${ languageId } ` ) ;
65+ if ( rawQuery == null ) {
66+ throw Error (
67+ `Could not create Tree sitter query for language ${ languageId } ` ,
68+ ) ;
6769 }
6870
69- const rawQuery = new Query ( language , rawLanguageQueryString ) ;
70-
7171 const query = TreeSitterQuery . create ( languageId , treeSitter , rawQuery ) ;
7272
7373 return new LanguageDefinition ( query ) ;
Original file line number Diff line number Diff line change @@ -265,7 +265,7 @@ function createTreeSitter(parseTreeApi: ParseTreeApi): TreeSitter {
265265 } ,
266266
267267 loadLanguage : parseTreeApi . loadLanguage ,
268- getLanguage : parseTreeApi . getLanguage ,
268+ createQuery : parseTreeApi . createQuery ,
269269 } ;
270270}
271271
Original file line number Diff line number Diff line change 11import type { CommandServerApi } from "@cursorless/common" ;
22import * as vscode from "vscode" ;
3- import type { Language , Node , Tree } from "web-tree-sitter" ;
3+ import type { Node , Query , Tree } from "web-tree-sitter" ;
44import type { VscodeTestHelpers } from "./TestHelpers" ;
55
66export interface CursorlessApi {
@@ -11,7 +11,7 @@ export interface ParseTreeApi {
1111 getNodeAtLocation ( location : vscode . Location ) : Node ;
1212 getTreeForUri ( uri : vscode . Uri ) : Tree ;
1313 loadLanguage : ( languageId : string ) => Promise < boolean > ;
14- getLanguage ( languageId : string ) : Language | undefined ;
14+ createQuery ( languageId : string , source : string ) : Query | undefined ;
1515}
1616
1717export async function getExtensionApi < T > ( extensionId : string ) {
You can’t perform that action at this time.
0 commit comments