Skip to content

Commit d27e0aa

Browse files
committed
Fix repo highlighting
1 parent 3c61e31 commit d27e0aa

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

src/Providers/DocumentHighlightProvider.ts

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import { getTrees, queryNode, toPoint, toRange, trueParent } from "../TreeSitter
44
export const DocumentHighlightProvider: vscode.DocumentHighlightProvider = {
55
provideDocumentHighlights(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): vscode.DocumentHighlight[] {
66
// vscode.window.showInformationMessage(JSON.stringify("DocumentHighlights"));
7+
// const start = performance.now();
78
const trees = getTrees(document);
89
const jsonTree = trees.jsonTree;
910
const point = toPoint(position);
1011

11-
const cursorQuery = `
12+
const cursorQuery = `;scm
1213
(key) @key
1314
(value !scopeName !ruleName !self !base) @value
1415
(capture . (key) @key)
@@ -32,24 +33,33 @@ export const DocumentHighlightProvider: vscode.DocumentHighlightProvider = {
3233
// const cursorRange = toRange(cursorNode);
3334

3435

35-
// const scopeName = cursorNode.parent.childForFieldName('scopeName')?.text;
36+
// const scopeName = cursorNode.parent.childForFieldName('scopeName')?.text;
3637
const rootScopeName = queryNode(jsonTree.rootNode, `(json (scopeName (value) @scopeName))`).pop()?.node?.text;
3738

3839

3940
let query = ``;
4041
switch (cursorName) {
4142
case 'key':
4243
const cursorType = trueParent(cursorNode).type;
43-
// const cursorType = cursorText ? cursorNode.parent.type : cursorNode.parent.parent.type;
44-
query = `(${cursorType} . (key) @key (#eq? @key "${cursorText}"))`;
44+
if (cursorType != 'repo') {
45+
query = `(${cursorType} . (key) @key (#eq? @key "${cursorText}"))`;
46+
break;
47+
}
48+
// FallThrough
49+
case 'repo':
50+
query = `;scm
51+
(repo (key) @repo (#eq? @repo "${cursorText}"))
52+
(include
53+
(value
54+
(scopeName)? @_scopeName (#eq? @_scopeName "${rootScopeName}")
55+
(ruleName) @_ruleName (#eq? @_ruleName "${cursorText}")
56+
) @include
57+
)
58+
`;
4559
break;
4660
case 'value':
4761
query = `(_ (value) @value (#eq? @value "${cursorText}"))`;
4862
break;
49-
case 'repo':
50-
query = `(repo (key) @repo (#eq? @repo "${cursorText}"))`;
51-
query += `(include (value (scopeName)? @_scopeName (#eq? @_scopeName "${rootScopeName}") (ruleName) @_ruleName (#eq? @_ruleName "${cursorText}")) @include)`;
52-
break;
5363
case 'self':
5464
case 'rootScopeName':
5565
query = `(json (scopeName (value) @scopeName))`;
@@ -99,6 +109,7 @@ export const DocumentHighlightProvider: vscode.DocumentHighlightProvider = {
99109
}
100110

101111
// vscode.window.showInformationMessage(JSON.stringify(documentHighlights));
112+
// vscode.window.showInformationMessage(`documentHighlights ${performance.now() - start}ms`);
102113
return documentHighlights;
103114
}
104115
};

0 commit comments

Comments
 (0)