about summary refs log tree commit diff
path: root/editors/code/src
diff options
context:
space:
mode:
authorDavid Barsky <me@davidbarsky.com>2023-04-08 11:22:22 -0400
committerDavid Barsky <me@davidbarsky.com>2023-04-10 09:36:38 -0400
commitb99c129b74a0ba1eb2307fa6151be81b544a3794 (patch)
treeccb1db7c7e57a0173e876a60479e650112246b40 /editors/code/src
parent51d5862caf428c9e160ccf28d684f0a33faccd7d (diff)
downloadrust-b99c129b74a0ba1eb2307fa6151be81b544a3794.tar.gz
rust-b99c129b74a0ba1eb2307fa6151be81b544a3794.zip
fix: when running the "discoverProjectCommand", use the Rust file's
parent directory instead of the workspace folder.
Diffstat (limited to 'editors/code/src')
-rw-r--r--editors/code/src/commands.ts13
-rw-r--r--editors/code/src/ctx.ts14
2 files changed, 15 insertions, 12 deletions
diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts
index 7a8490e4767..4438d475ad9 100644
--- a/editors/code/src/commands.ts
+++ b/editors/code/src/commands.ts
@@ -761,12 +761,13 @@ export function addProject(ctx: CtxInit): Cmd {
         }
 
         const workspaces: JsonProject[] = await Promise.all(
-            vscode.workspace.workspaceFolders!.map(async (folder): Promise<JsonProject> => {
-                const rustDocuments = vscode.workspace.textDocuments.filter(isRustDocument);
-                return discoverWorkspace(rustDocuments, discoverProjectCommand, {
-                    cwd: folder.uri.fsPath,
-                });
-            })
+            vscode.workspace.textDocuments
+                .filter(isRustDocument)
+                .map(async (file): Promise<JsonProject> => {
+                    return discoverWorkspace([file], discoverProjectCommand, {
+                        cwd: path.dirname(file.uri.fsPath),
+                    });
+                })
         );
 
         ctx.addToDiscoveredWorkspaces(workspaces);
diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts
index dd74b31cc71..0ffa42c2a5a 100644
--- a/editors/code/src/ctx.ts
+++ b/editors/code/src/ctx.ts
@@ -1,6 +1,7 @@
 import * as vscode from "vscode";
 import * as lc from "vscode-languageclient/node";
 import * as ra from "./lsp_ext";
+import * as path from "path";
 
 import { Config, prepareVSCodeConfig } from "./config";
 import { createClient } from "./client";
@@ -192,12 +193,13 @@ export class Ctx {
             const discoverProjectCommand = this.config.discoverProjectCommand;
             if (discoverProjectCommand) {
                 const workspaces: JsonProject[] = await Promise.all(
-                    vscode.workspace.workspaceFolders!.map(async (folder): Promise<JsonProject> => {
-                        const rustDocuments = vscode.workspace.textDocuments.filter(isRustDocument);
-                        return discoverWorkspace(rustDocuments, discoverProjectCommand, {
-                            cwd: folder.uri.fsPath,
-                        });
-                    })
+                    vscode.workspace.textDocuments
+                        .filter(isRustDocument)
+                        .map(async (file): Promise<JsonProject> => {
+                            return discoverWorkspace([file], discoverProjectCommand, {
+                                cwd: path.dirname(file.uri.fsPath),
+                            });
+                        })
                 );
 
                 this.addToDiscoveredWorkspaces(workspaces);