Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Unherit server extra env for runnables extra env
  • Loading branch information
Veykril committed Jul 27, 2025
commit 2a577eb2f53c68d13eb06c89eb435020ed05db1f
21 changes: 13 additions & 8 deletions editors/code/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,12 @@ export class Config {
}

runnablesExtraEnv(label: string): Env {
let extraEnv = this.get<RunnableEnvCfgItem[] | { [key: string]: { toString(): string } | null } | null>("runnables.extraEnv") ?? {};
if (!extraEnv) return {};
const serverEnv = this.serverExtraEnv;
let extraEnv =
this.get<
RunnableEnvCfgItem[] | { [key: string]: { toString(): string } | null } | null
>("runnables.extraEnv") ?? {};
if (!extraEnv) return serverEnv;

const platform = process.platform;
const checkPlatform = (it: RunnableEnvCfgItem) => {
Expand All @@ -283,14 +287,15 @@ export class Config {
}
extraEnv = env;
}
return substituteVariablesInEnv(
const runnableExtraEnv = substituteVariablesInEnv(
Object.fromEntries(
Object.entries(extraEnv).map(([k, v]) => [
k,
typeof v === "string" ? v : v?.toString(),
]),
),
);
return { ...runnableExtraEnv, ...serverEnv };
}

get restartServerOnConfigChange() {
Expand Down Expand Up @@ -485,11 +490,11 @@ function computeVscodeVar(varName: string): string | null {
folder === undefined
? "" // no workspace opened
: // could use currently opened document to detect the correct
// workspace. However, that would be determined by the document
// user has opened on Editor startup. Could lead to
// unpredictable workspace selection in practice.
// It's better to pick the first one
normalizeDriveLetter(folder.uri.fsPath);
// workspace. However, that would be determined by the document
// user has opened on Editor startup. Could lead to
// unpredictable workspace selection in practice.
// It's better to pick the first one
normalizeDriveLetter(folder.uri.fsPath);
return fsPath;
};
// https://code.visualstudio.com/docs/editor/variables-reference
Expand Down
27 changes: 14 additions & 13 deletions editors/code/src/debug.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,14 @@ import type * as ra from "./lsp_ext";
import { Cargo } from "./toolchain";
import type { Ctx } from "./ctx";
import { createTaskFromRunnable, prepareEnv } from "./run";
import { execute, isCargoRunnableArgs, unwrapUndefinable, log, normalizeDriveLetter, Env } from "./util";
import {
execute,
isCargoRunnableArgs,
unwrapUndefinable,
log,
normalizeDriveLetter,
Env,
} from "./util";
import type { Config } from "./config";

// Here we want to keep track on everything that's currently running
Expand Down Expand Up @@ -108,9 +115,9 @@ async function getDebugConfiguration(

await vscode.window.showErrorMessage(
`Install [CodeLLDB](command:${commandCodeLLDB} "Open CodeLLDB")` +
`, [lldb-dap](command:${commandLLDBDap} "Open lldb-dap")` +
`, [C/C++](command:${commandCCpp} "Open C/C++") ` +
`or [Native Debug](command:${commandNativeDebug} "Open Native Debug") for debugging.`,
`, [lldb-dap](command:${commandLLDBDap} "Open lldb-dap")` +
`, [C/C++](command:${commandCCpp} "Open C/C++") ` +
`or [Native Debug](command:${commandNativeDebug} "Open Native Debug") for debugging.`,
);
return;
}
Expand All @@ -124,7 +131,7 @@ async function getDebugConfiguration(
!isMultiFolderWorkspace || !runnableArgs.workspaceRoot
? firstWorkspace
: workspaceFolders.find((w) => runnableArgs.workspaceRoot?.includes(w.uri.fsPath)) ||
firstWorkspace;
firstWorkspace;

const workspace = unwrapUndefinable(maybeWorkspace);
const wsFolder = normalizeDriveLetter(path.normalize(workspace.uri.fsPath));
Expand Down Expand Up @@ -206,10 +213,7 @@ type SourceFileMap = {
destination: string;
};

async function discoverSourceFileMap(
env: Env,
cwd: string,
): Promise<SourceFileMap | undefined> {
async function discoverSourceFileMap(env: Env, cwd: string): Promise<SourceFileMap | undefined> {
const sysroot = env["RUSTC_TOOLCHAIN"];
if (sysroot) {
// let's try to use the default toolchain
Expand Down Expand Up @@ -304,10 +308,7 @@ const knownEngines: {
},
};

async function getDebugExecutable(
runnableArgs: ra.CargoRunnableArgs,
env: Env,
): Promise<string> {
async function getDebugExecutable(runnableArgs: ra.CargoRunnableArgs, env: Env): Promise<string> {
const cargo = new Cargo(runnableArgs.workspaceRoot || ".", env);
const executable = await cargo.executableFromArgs(runnableArgs);

Expand Down
11 changes: 2 additions & 9 deletions editors/code/src/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,7 @@ export class RunnableQuickPick implements vscode.QuickPickItem {
}
}

export function prepareBaseEnv(
inheritEnv: boolean,
base?: Env,
): Env {
export function prepareBaseEnv(inheritEnv: boolean, base?: Env): Env {
const env: Env = { RUST_BACKTRACE: "short" };
if (inheritEnv) {
Object.assign(env, process.env);
Expand All @@ -136,11 +133,7 @@ export function prepareBaseEnv(
return env;
}

export function prepareEnv(
inheritEnv: boolean,
runnableEnv?: Env,
runnableEnvCfg?: Env,
): Env {
export function prepareEnv(inheritEnv: boolean, runnableEnv?: Env, runnableEnvCfg?: Env): Env {
const env = prepareBaseEnv(inheritEnv, runnableEnv);

if (runnableEnvCfg) {
Expand Down
8 changes: 3 additions & 5 deletions editors/code/src/tasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,9 @@ export async function targetToExecution(
}
return new vscode.ProcessExecution(command, args, {
cwd: options?.cwd,
env:
Object.fromEntries(
Object.entries(options?.env ?? {}).map(([key, value]) => [key, value ?? ""])
)
,
env: Object.fromEntries(
Object.entries(options?.env ?? {}).map(([key, value]) => [key, value ?? ""]),
),
});
}

Expand Down
2 changes: 1 addition & 1 deletion editors/code/src/toolchain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export class Cargo {
constructor(
readonly rootFolder: string,
readonly env: Env,
) { }
) {}

// Made public for testing purposes
static artifactSpec(cargoArgs: string[], executableArgs?: string[]): ArtifactSpec {
Expand Down
Loading