Skip to content

Commit cacdcca

Browse files
committed
Stop using this.sessionSettings.cwd directly
So we can remove weirdly placed `validateCwdSetting` calls and instead use it exactly when required.
1 parent 2d7fb0b commit cacdcca

File tree

4 files changed

+8
-11
lines changed

4 files changed

+8
-11
lines changed

src/main.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { ShowHelpFeature } from "./features/ShowHelp";
2626
import { SpecifyScriptArgsFeature } from "./features/DebugSession";
2727
import { Logger } from "./logging";
2828
import { SessionManager } from "./session";
29-
import { LogLevel, getSettings, validateCwdSetting } from "./settings";
29+
import { LogLevel, getSettings } from "./settings";
3030
import { PowerShellLanguageId } from "./utils";
3131
import { LanguageClientConsumer } from "./languageClientConsumer";
3232

@@ -57,8 +57,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<IPower
5757

5858
telemetryReporter = new TelemetryReporter(TELEMETRY_KEY);
5959

60-
// Load and validate settings (will prompt for 'cwd' if necessary).
61-
await validateCwdSetting(logger);
6260
const settings = getSettings();
6361
logger.writeVerbose(`Loaded settings:\n${JSON.stringify(settings, undefined, 2)}`);
6462

src/process.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import cp = require("child_process");
55
import path = require("path");
66
import vscode = require("vscode");
77
import { ILogger } from "./logging";
8-
import Settings = require("./settings");
8+
import { Settings, validateCwdSetting } from "./settings";
99
import utils = require("./utils");
1010
import { IEditorServicesSessionDetails } from "./session";
1111
import { promisify } from "util";
@@ -29,7 +29,7 @@ export class PowerShellProcess {
2929
private logger: ILogger,
3030
private startPsesArgs: string,
3131
private sessionFilePath: vscode.Uri,
32-
private sessionSettings: Settings.Settings) {
32+
private sessionSettings: Settings) {
3333

3434
this.onExited = this.onExitedEmitter.event;
3535
}
@@ -103,7 +103,7 @@ export class PowerShellProcess {
103103
name: this.title,
104104
shellPath: this.exePath,
105105
shellArgs: powerShellArgs,
106-
cwd: this.sessionSettings.cwd,
106+
cwd: await validateCwdSetting(this.logger),
107107
iconPath: new vscode.ThemeIcon("terminal-powershell"),
108108
isTransient: true,
109109
hideFromUser: this.sessionSettings.integratedConsole.startInBackground,

src/session.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,7 @@ export class SessionManager implements Middleware {
283283
this.logger.write("Restarting session...");
284284
await this.stop();
285285

286-
// Re-load and validate the settings.
287-
await validateCwdSetting(this.logger);
286+
// Re-load the settings.
288287
this.sessionSettings = getSettings();
289288

290289
await this.start(exeNameOverride);
@@ -475,7 +474,7 @@ export class SessionManager implements Middleware {
475474
|| settings.powerShellDefaultVersion.toLowerCase() !== this.sessionSettings.powerShellDefaultVersion.toLowerCase()
476475
|| settings.developer.editorServicesLogLevel.toLowerCase() !== this.sessionSettings.developer.editorServicesLogLevel.toLowerCase()
477476
|| settings.developer.bundledModulesPath.toLowerCase() !== this.sessionSettings.developer.bundledModulesPath.toLowerCase()
478-
|| settings.developer.editorServicesWaitForDebugger !== this.sessionSettings.developer.editorServicesWaitForDebugger
477+
|| settings.developer.editorServicesWaitForDebugger !== this.sessionSettings.developer.editorServicesWaitForDebugger
479478
|| settings.integratedConsole.useLegacyReadLine !== this.sessionSettings.integratedConsole.useLegacyReadLine
480479
|| settings.integratedConsole.startInBackground !== this.sessionSettings.integratedConsole.startInBackground
481480
|| settings.integratedConsole.startLocation !== this.sessionSettings.integratedConsole.startLocation)) {
@@ -644,7 +643,7 @@ export class SessionManager implements Middleware {
644643
// NOTE: Some settings are only applicable on startup, so we send them during initialization.
645644
initializationOptions: {
646645
enableProfileLoading: this.sessionSettings.enableProfileLoading,
647-
initialWorkingDirectory: this.sessionSettings.cwd,
646+
initialWorkingDirectory: await validateCwdSetting(this.logger),
648647
shellIntegrationEnabled: vscode.workspace.getConfiguration("terminal.integrated.shellIntegration").get<boolean>("enabled"),
649648
},
650649
errorHandler: {

src/settings.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export class Settings extends PartialSettings {
3737
sideBar = new SideBarSettings();
3838
pester = new PesterSettings();
3939
buttons = new ButtonSettings();
40-
cwd = "";
40+
cwd = ""; // NOTE: use validateCwdSetting() instead of this directly!
4141
enableReferencesCodeLens = true;
4242
analyzeOpenDocumentsOnly = false;
4343
// TODO: Add (deprecated) useX86Host (for testing)

0 commit comments

Comments
 (0)