Skip to content

Commit 0ad1cb4

Browse files
committed
filled out YaraReferenceProvider
1 parent 184a197 commit 0ad1cb4

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

yara/src/extension.ts

+25-4
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,31 @@ class YaraDefinitionProvider implements vscode.DefinitionProvider {
4040

4141
class YaraReferenceProvider implements vscode.ReferenceProvider {
4242
public provideReferences(doc: vscode.TextDocument, pos: vscode.Position, options: { includeDeclaration: boolean }, token: vscode.CancellationToken): Thenable<vscode.Location[]> {
43-
const range: vscode.Range = doc.getWordRangeAtPosition(pos);
44-
const symbol: string = doc.getText(range);
45-
console.log(`Providing references for symbol '${symbol}'`);
46-
return null;
43+
return new Promise((resolve, reject) => {
44+
let references: vscode.Location[] = new Array<vscode.Location>();
45+
const fileUri: vscode.Uri = vscode.Uri.file(doc.fileName);
46+
const range: vscode.Range = doc.getWordRangeAtPosition(pos);
47+
const symbol: string = doc.getText(range);
48+
console.log(`Providing references for symbol '${symbol}'`);
49+
let lines: string[] = doc.getText().split("\n");
50+
let lineNo = 0;
51+
lines.forEach(line => {
52+
let character: number = line.indexOf(symbol);
53+
if (character != -1) {
54+
console.log(`Found ${symbol} on line ${lineNo} at character ${character}`);
55+
console.log(line);
56+
let refPosition: vscode.Position = new vscode.Position(lineNo, character);
57+
references.push(new vscode.Location(fileUri, refPosition));
58+
}
59+
lineNo++;
60+
});
61+
if (references != null) {
62+
resolve(references);
63+
}
64+
else {
65+
reject();
66+
}
67+
});
4768
}
4869
}
4970

0 commit comments

Comments
 (0)