diff --git a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.test.ts b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.test.ts index f1edaf2230..535c330d40 100644 --- a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.test.ts +++ b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.test.ts @@ -51,6 +51,11 @@ const testCases: { name: string; isOk: boolean; content: string }[] = [ isOk: true, content: ";; (if_statement) @unknown", }, + { + name: "@ ending string", + isOk: true, + content: '"return@"', + }, { name: "Unknown capture", isOk: false, diff --git a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts index 19ccefe4f2..c32737f8f5 100644 --- a/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts +++ b/packages/cursorless-engine/src/languages/TreeSitterQuery/validateQueryCaptures.ts @@ -59,8 +59,9 @@ for (const captureName of captureNames) { } // Not a comment. ie line is not starting with `;;` +// Not a string. // Capture starts with `@` and is followed by words and/or dots -const capturePattern = new RegExp(`^(?!;;).*@([\\w.]*)`, "gm"); +const capturePattern = /^(?!;;).*(?