MCPcopy Index your code
hub / github.com/LeetCode-OpenSource/vscode-leetcode / selectWorkspaceFolder

Function selectWorkspaceFolder

src/utils/workspaceUtils.ts:13–60  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

11import * as wsl from "./wslUtils";
12
13export async function selectWorkspaceFolder(): Promise<string> {
14 let workspaceFolderSetting: string = getWorkspaceFolder();
15 if (workspaceFolderSetting.trim() === "") {
16 workspaceFolderSetting = await determineLeetCodeFolder();
17 if (workspaceFolderSetting === "") {
18 // User cancelled
19 return workspaceFolderSetting;
20 }
21 }
22 let needAsk: boolean = true;
23 await fse.ensureDir(workspaceFolderSetting);
24 for (const folder of vscode.workspace.workspaceFolders || []) {
25 if (isSubFolder(folder.uri.fsPath, workspaceFolderSetting)) {
26 needAsk = false;
27 }
28 }
29
30 if (needAsk) {
31 const choice: string | undefined = await vscode.window.showQuickPick(
32 [
33 OpenOption.justOpenFile,
34 OpenOption.openInCurrentWindow,
35 OpenOption.openInNewWindow,
36 OpenOption.addToWorkspace,
37 ],
38 { placeHolder: "The LeetCode workspace folder is not opened in VS Code, would you like to open it?" },
39 );
40
41 // Todo: generate file first
42 switch (choice) {
43 case OpenOption.justOpenFile:
44 return workspaceFolderSetting;
45 case OpenOption.openInCurrentWindow:
46 await vscode.commands.executeCommand("vscode.openFolder", vscode.Uri.file(workspaceFolderSetting), false);
47 return "";
48 case OpenOption.openInNewWindow:
49 await vscode.commands.executeCommand("vscode.openFolder", vscode.Uri.file(workspaceFolderSetting), true);
50 return "";
51 case OpenOption.addToWorkspace:
52 vscode.workspace.updateWorkspaceFolders(vscode.workspace.workspaceFolders?.length ?? 0, 0, { uri: vscode.Uri.file(workspaceFolderSetting) });
53 break;
54 default:
55 return "";
56 }
57 }
58
59 return wsl.useWsl() ? wsl.toWslPath(workspaceFolderSetting) : workspaceFolderSetting;
60}
61
62export async function getActiveFilePath(uri?: vscode.Uri): Promise<string | undefined> {
63 let textEditor: vscode.TextEditor | undefined;

Callers 1

showProblemInternalFunction · 0.90

Calls 3

getWorkspaceFolderFunction · 0.90
determineLeetCodeFolderFunction · 0.85
isSubFolderFunction · 0.85

Tested by

no test coverage detected