Skip to content

Commit 2569f63

Browse files
authored
Add code lens for "Open referenced file" (#2704)
1 parent a46209b commit 2569f63

File tree

3 files changed

+46
-2
lines changed

3 files changed

+46
-2
lines changed

extensions/ql-vscode/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## [UNRELEASED]
44

5+
- Add a code lens to make the `CodeQL: Open Referenced File` command more discoverable. Click the "Open referenced file" prompt in a `.qlref` file to jump to the referenced `.ql` file. [#2704](https://github.com/github/vscode-codeql/pull/2704)
6+
57
## 1.8.9 - 3 August 2023
68

79
- Remove "last updated" information and sorting from variant analysis results view. [#2637](https://github.com/github/vscode-codeql/pull/2637)

extensions/ql-vscode/src/extension.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ import { TestRunner } from "./query-testing/test-runner";
134134
import { TestManagerBase } from "./query-testing/test-manager-base";
135135
import { NewQueryRunner, QueryRunner, QueryServerClient } from "./query-server";
136136
import { QueriesModule } from "./queries-panel/queries-module";
137+
import { OpenReferencedFileCodeLensProvider } from "./local-queries/open-referenced-file-code-lens-provider";
137138

138139
/**
139140
* extension.ts
@@ -332,10 +333,17 @@ export async function activate(
332333

333334
const app = new ExtensionApp(ctx);
334335

335-
const codelensProvider = new QuickEvalCodeLensProvider();
336+
const quickEvalCodeLensProvider = new QuickEvalCodeLensProvider();
336337
languages.registerCodeLensProvider(
337338
{ scheme: "file", language: "ql" },
338-
codelensProvider,
339+
quickEvalCodeLensProvider,
340+
);
341+
342+
const openReferencedFileCodeLensProvider =
343+
new OpenReferencedFileCodeLensProvider();
344+
languages.registerCodeLensProvider(
345+
{ scheme: "file", pattern: "**/*.qlref" },
346+
openReferencedFileCodeLensProvider,
339347
);
340348

341349
ctx.subscriptions.push(distributionConfigListener);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import {
2+
CodeLensProvider,
3+
TextDocument,
4+
CodeLens,
5+
Command,
6+
Range,
7+
} from "vscode";
8+
9+
export class OpenReferencedFileCodeLensProvider implements CodeLensProvider {
10+
async provideCodeLenses(document: TextDocument): Promise<CodeLens[]> {
11+
const codeLenses: CodeLens[] = [];
12+
13+
// A .qlref file is a file that contains a single line with a path to a .ql file.
14+
if (document.fileName.endsWith(".qlref")) {
15+
const textLine = document.lineAt(0);
16+
const range: Range = new Range(
17+
textLine.range.start.line,
18+
textLine.range.start.character,
19+
textLine.range.start.line,
20+
textLine.range.end.character,
21+
);
22+
23+
const command: Command = {
24+
command: "codeQL.openReferencedFile",
25+
title: `Open referenced file`,
26+
arguments: [document.uri],
27+
};
28+
const codeLens = new CodeLens(range, command);
29+
codeLenses.push(codeLens);
30+
}
31+
32+
return codeLenses;
33+
}
34+
}

0 commit comments

Comments
 (0)