Skip to content

Commit 11808e1

Browse files
committed
Discourage use of "Quick query" in single-folder workspaces
1 parent 0523d2a commit 11808e1

2 files changed

Lines changed: 19 additions & 7 deletions

File tree

extensions/ql-vscode/src/local-queries/local-queries.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ import { WebviewReveal } from "./webview";
4242
import { asError, getErrorMessage } from "../common/helpers-pure";
4343
import { CliVersionConstraint, CodeQLCliServer } from "../codeql-cli/cli";
4444
import { LocalQueryCommands } from "../common/commands";
45-
import { App } from "../common/app";
4645
import { DisposableObject } from "../common/disposable-object";
4746
import { SkeletonQueryWizard } from "./skeleton-query-wizard";
4847
import { LocalQueryRun } from "./local-query-run";
@@ -51,6 +50,7 @@ import { findLanguage } from "../codeql-cli/query-language";
5150
import type { QueryTreeViewItem } from "../queries-panel/query-tree-view-item";
5251
import { tryGetQueryLanguage } from "../common/query-language";
5352
import { LanguageContextStore } from "../language-context-store";
53+
import { ExtensionApp } from "../common/vscode/vscode-app";
5454

5555
interface DatabaseQuickPickItem extends QuickPickItem {
5656
databaseItem: DatabaseItem;
@@ -66,7 +66,7 @@ export class LocalQueries extends DisposableObject {
6666
private selectedQueryTreeViewItems: readonly QueryTreeViewItem[] = [];
6767

6868
public constructor(
69-
private readonly app: App,
69+
private readonly app: ExtensionApp,
7070
private readonly queryRunner: QueryRunner,
7171
private readonly queryHistoryManager: QueryHistoryManager,
7272
private readonly databaseManager: DatabaseManager,

extensions/ql-vscode/src/local-queries/quick-query.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { CancellationToken, window as Window, workspace, Uri } from "vscode";
55
import { LSPErrorCodes, ResponseError } from "vscode-languageclient";
66
import { CodeQLCliServer } from "../codeql-cli/cli";
77
import { DatabaseUI } from "../databases/local-databases-ui";
8-
import { showBinaryChoiceDialog } from "../common/vscode/dialog";
98
import { getInitialQueryContents } from "./query-contents";
109
import { getPrimaryDbscheme, getQlPackForDbscheme } from "../databases/qlpack";
1110
import {
@@ -15,6 +14,7 @@ import {
1514
import { getErrorMessage } from "../common/helpers-pure";
1615
import { FALLBACK_QLPACK_FILENAME, getQlPackPath } from "../common/ql";
1716
import { App } from "../common/app";
17+
import { ExtensionApp } from "../common/vscode/vscode-app";
1818

1919
const QUICK_QUERIES_DIR_NAME = "quick-queries";
2020
const QUICK_QUERY_QUERY_NAME = "quick-query.ql";
@@ -52,7 +52,7 @@ function findExistingQuickQueryEditor() {
5252
* Show a buffer the user can enter a simple query into.
5353
*/
5454
export async function displayQuickQuery(
55-
app: App,
55+
app: ExtensionApp,
5656
cliServer: CodeQLCliServer,
5757
databaseUI: DatabaseUI,
5858
progress: ProgressCallback,
@@ -80,12 +80,24 @@ export async function displayQuickQuery(
8080
// being undefined) just let the user know that they're in for a
8181
// restart.
8282
if (workspace.workspaceFile === undefined) {
83-
const makeMultiRoot = await showBinaryChoiceDialog(
84-
"Quick query requires multiple folders in the workspace. Reload workspace as multi-folder workspace?",
83+
const createQueryOption = 'Run "Create query"';
84+
const quickQueryOption = 'Run "Quick query" anyway';
85+
const quickQueryPrompt = await Window.showWarningMessage(
86+
'"Quick query" requires reloading your workspace as a multi-root workspace, which may cause query history and databases to be lost.',
87+
{
88+
modal: true,
89+
detail:
90+
'The "Create query" command does not require reloading the workspace.',
91+
},
92+
createQueryOption,
93+
quickQueryOption,
8594
);
86-
if (makeMultiRoot) {
95+
if (quickQueryPrompt === quickQueryOption) {
8796
updateQuickQueryDir(queriesDir, workspaceFolders.length, 0);
8897
}
98+
if (quickQueryPrompt === createQueryOption) {
99+
await app.queryServerCommands.execute("codeQL.createQuery");
100+
}
89101
return;
90102
}
91103

0 commit comments

Comments
 (0)