Skip to content

Commit 01d2b3e

Browse files
committed
Add support for --ignore-last-opened arg.
1 parent 1bea5fc commit 01d2b3e

File tree

5 files changed

+44
-2
lines changed

5 files changed

+44
-2
lines changed

src/vs/server/serverEnvironmentService.ts

+19
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ import { FileAccess } from 'vs/base/common/network';
1313
import { AuthType } from 'vs/base/common/auth';
1414

1515
export const serverOptions: OptionDescriptions<ServerParsedArgs> = {
16+
//#region @coder
1617
'auth': { type: 'string' },
1718
'port': { type: 'string' },
19+
'ignore-last-opened': { type: 'boolean' },
20+
//#endregion
21+
1822
'pick-port': { type: 'string' },
1923
'connectionToken': { type: 'string' },
2024
'connection-secret': { type: 'string', description: nls.localize('connection-secret', "Path to file that contains the connection token. This will require that all incoming connections know the secret.") },
@@ -61,7 +65,11 @@ export const serverOptions: OptionDescriptions<ServerParsedArgs> = {
6165
};
6266

6367
export interface ServerParsedArgs {
68+
//#region
6469
auth?: AuthType;
70+
'ignore-last-opened'?: boolean;
71+
//#endregion
72+
6573
port?: string;
6674
'pick-port'?: string;
6775
connectionToken?: string;
@@ -124,15 +132,20 @@ export const IServerEnvironmentService = refineServiceDecorator<IEnvironmentServ
124132

125133
export interface IServerEnvironmentService extends INativeEnvironmentService {
126134
readonly args: ServerParsedArgs;
135+
136+
//#region @coder
127137
readonly serviceWorkerFileName: string;
128138
readonly serviceWorkerPath: string;
129139
readonly proxyUri: string;
130140
readonly auth: AuthType;
141+
readonly ignoreLastOpened: boolean;
142+
//#endregion
131143
}
132144

133145
export class ServerEnvironmentService extends NativeEnvironmentService implements IServerEnvironmentService {
134146
override get args(): ServerParsedArgs { return super.args as ServerParsedArgs; }
135147

148+
//#region @coder
136149
public get auth(): AuthType {
137150
return this.args['auth'] || AuthType.None;
138151
}
@@ -149,4 +162,10 @@ export class ServerEnvironmentService extends NativeEnvironmentService implement
149162
public get proxyUri(): string {
150163
return '/proxy/{port}';
151164
}
165+
166+
public get ignoreLastOpened(): boolean {
167+
return !!this.args['ignore-last-opened'];
168+
}
169+
170+
//#endregion
152171
}

src/vs/server/webClientServer.ts

+1
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ export class WebClientServer {
330330
enableSmokeTestDriver: this._environmentService.driverHandle === 'web' ? true : undefined,
331331
logLevel: this._logService.getLevel(),
332332
},
333+
ignoreLastOpened: this._environmentService.ignoreLastOpened,
333334
settingsSyncOptions: !this._environmentService.isBuilt && this._environmentService.args['enable-sync'] ? { enabled: true } : undefined,
334335
})))
335336
.replace(/{{CLIENT_BACKGROUND_COLOR}}/g, () => backgroundColor)

src/vs/workbench/browser/web.main.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ class BrowserMain extends Disposable {
222222

223223
/**
224224
* Added to persist recent workspaces in the browser.
225+
* These behaviors may disabled with the `--ignore-last-opened` argument.
226+
*
225227
* @author coder
226228
* @example User specified a directory at startup.
227229
* ```sh
@@ -245,9 +247,12 @@ class BrowserMain extends Disposable {
245247
serviceCollection.set(IWorkspacesService, browserWorkspacesService);
246248
const workspace = configurationService.getWorkspace();
247249

248-
logService.debug('Workspace Folders:', workspace.folders);
250+
logService.debug('Workspace configuration', {
251+
workspaceFolders: workspace.folders,
252+
ignoreLastOpened: environmentService.ignoreLastOpened,
253+
});
249254

250-
if (workspace.folders.length === 0) {
255+
if (workspace.folders.length === 0 && !environmentService.ignoreLastOpened) {
251256
logService.debug('Workspace is empty. Checking for recent folders...');
252257

253258
const recentlyOpened = await browserWorkspacesService.getRecentlyOpened();

src/vs/workbench/services/environment/browser/environmentService.ts

+7
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,13 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
249249
@memoize
250250
get disableWorkspaceTrust(): boolean { return true; }
251251

252+
//#region @coder
253+
get ignoreLastOpened(): boolean {
254+
return !!this.options.ignoreLastOpened;
255+
}
256+
257+
//#endregion
258+
252259
private payload: Map<string, string> | undefined;
253260

254261
constructor(

src/vs/workbench/workbench.web.api.ts

+10
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,16 @@ interface ISettingsSyncOptions {
337337
}
338338

339339
interface IWorkbenchConstructionOptions {
340+
//#region @coder
341+
342+
/**
343+
* Ignore the last opened folder in the browser.
344+
* @see `BrowserMain#initServices`
345+
*/
346+
readonly ignoreLastOpened?: boolean
347+
348+
//#endregion
349+
340350

341351
//#region Connection related configuration
342352

0 commit comments

Comments
 (0)