diff --git a/extensions/ql-vscode/src/databases/db-module.ts b/extensions/ql-vscode/src/databases/db-module.ts index 95348525a..ed7bef0d2 100644 --- a/extensions/ql-vscode/src/databases/db-module.ts +++ b/extensions/ql-vscode/src/databases/db-module.ts @@ -1,3 +1,4 @@ +import { window } from "vscode"; import { App, AppMode } from "../common/app"; import { isCanary, isNewQueryRunExperienceEnabled } from "../config"; import { extLogger } from "../common"; @@ -5,6 +6,7 @@ import { DisposableObject } from "../pure/disposable-object"; import { DbConfigStore } from "./config/db-config-store"; import { DbManager } from "./db-manager"; import { DbPanel } from "./ui/db-panel"; +import { DbSelectionDecorationProvider } from "./ui/db-selection-decoration-provider"; export class DbModule extends DisposableObject { public async initialize(app: App): Promise { @@ -30,6 +32,10 @@ export class DbModule extends DisposableObject { this.push(dbPanel); this.push(dbConfigStore); + + const dbSelectionDecorationProvider = new DbSelectionDecorationProvider(); + + window.registerFileDecorationProvider(dbSelectionDecorationProvider); } } diff --git a/extensions/ql-vscode/src/databases/ui/db-selection-decoration-provider.ts b/extensions/ql-vscode/src/databases/ui/db-selection-decoration-provider.ts new file mode 100644 index 000000000..1a8d45d75 --- /dev/null +++ b/extensions/ql-vscode/src/databases/ui/db-selection-decoration-provider.ts @@ -0,0 +1,22 @@ +import { + CancellationToken, + FileDecoration, + FileDecorationProvider, + ProviderResult, + Uri, +} from "vscode"; + +export class DbSelectionDecorationProvider implements FileDecorationProvider { + provideFileDecoration( + uri: Uri, + _token: CancellationToken, + ): ProviderResult { + if (uri?.query === "selected=true") { + return { + badge: "✔", + }; + } + + return undefined; + } +}