mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 17:19:48 +01:00
fix #110982
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
import * as fs from 'fs';
|
||||
import * as gracefulFs from 'graceful-fs';
|
||||
import { createHash } from 'crypto';
|
||||
import { stat } from 'vs/base/node/pfs';
|
||||
import { exists, stat } from 'vs/base/node/pfs';
|
||||
import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform';
|
||||
import { zoomLevelToZoomFactor } from 'vs/platform/windows/common/windows';
|
||||
import { mark } from 'vs/base/common/performance';
|
||||
@@ -21,7 +21,7 @@ import { NativeWorkbenchEnvironmentService } from 'vs/workbench/services/environ
|
||||
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
|
||||
import { INativeWorkbenchConfiguration, INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-sandbox/environmentService';
|
||||
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
|
||||
import { ISingleFolderWorkspaceIdentifier, IWorkspaceInitializationPayload, ISingleFolderWorkspaceInitializationPayload, reviveWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
|
||||
import { ISingleFolderWorkspaceIdentifier, IWorkspaceInitializationPayload, ISingleFolderWorkspaceInitializationPayload, reviveWorkspaceIdentifier, IWorkspaceIdentifier, IMultiFolderWorkspaceInitializationPayload } from 'vs/platform/workspaces/common/workspaces';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { NativeStorageService } from 'vs/platform/storage/node/storageService';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
@@ -280,7 +280,7 @@ class DesktopMain extends Disposable {
|
||||
return service;
|
||||
}),
|
||||
|
||||
this.createKeyboardLayoutService(logService, mainProcessService).then(service => {
|
||||
this.createKeyboardLayoutService(mainProcessService).then(service => {
|
||||
|
||||
// KeyboardLayout
|
||||
serviceCollection.set(IKeyboardLayoutService, service);
|
||||
@@ -307,15 +307,15 @@ class DesktopMain extends Disposable {
|
||||
}
|
||||
|
||||
private async resolveWorkspaceInitializationPayload(): Promise<IWorkspaceInitializationPayload> {
|
||||
let workspaceInitializationPayload: IWorkspaceInitializationPayload | undefined;
|
||||
|
||||
// Multi-root workspace
|
||||
if (this.configuration.workspace) {
|
||||
return this.configuration.workspace;
|
||||
workspaceInitializationPayload = await this.resolveMultiFolderWorkspaceInitializationPayload(this.configuration.workspace);
|
||||
}
|
||||
|
||||
// Single-folder workspace
|
||||
let workspaceInitializationPayload: IWorkspaceInitializationPayload | undefined;
|
||||
if (this.configuration.folderUri) {
|
||||
else if (this.configuration.folderUri) {
|
||||
workspaceInitializationPayload = await this.resolveSingleFolderWorkspaceInitializationPayload(this.configuration.folderUri);
|
||||
}
|
||||
|
||||
@@ -336,6 +336,18 @@ class DesktopMain extends Disposable {
|
||||
return workspaceInitializationPayload;
|
||||
}
|
||||
|
||||
private async resolveMultiFolderWorkspaceInitializationPayload(workspace: IWorkspaceIdentifier): Promise<IMultiFolderWorkspaceInitializationPayload | undefined> {
|
||||
|
||||
// It is possible that the workspace file does not exist
|
||||
// on disk anymore, so we return `undefined` in that case
|
||||
// (https://github.com/microsoft/vscode/issues/110982)
|
||||
if (workspace.configPath.scheme === Schemas.file && !await exists(workspace.configPath.fsPath)) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return workspace;
|
||||
}
|
||||
|
||||
private async resolveSingleFolderWorkspaceInitializationPayload(folderUri: ISingleFolderWorkspaceIdentifier): Promise<ISingleFolderWorkspaceInitializationPayload | undefined> {
|
||||
try {
|
||||
const folder = folderUri.scheme === Schemas.file
|
||||
@@ -388,7 +400,6 @@ class DesktopMain extends Disposable {
|
||||
return workspaceService;
|
||||
} catch (error) {
|
||||
onUnexpectedError(error);
|
||||
logService.error(error);
|
||||
|
||||
return workspaceService;
|
||||
}
|
||||
@@ -404,13 +415,12 @@ class DesktopMain extends Disposable {
|
||||
return storageService;
|
||||
} catch (error) {
|
||||
onUnexpectedError(error);
|
||||
logService.error(error);
|
||||
|
||||
return storageService;
|
||||
}
|
||||
}
|
||||
|
||||
private async createKeyboardLayoutService(logService: ILogService, mainProcessService: IMainProcessService): Promise<KeyboardLayoutService> {
|
||||
private async createKeyboardLayoutService(mainProcessService: IMainProcessService): Promise<KeyboardLayoutService> {
|
||||
const keyboardLayoutService = new KeyboardLayoutService(mainProcessService);
|
||||
|
||||
try {
|
||||
@@ -419,7 +429,6 @@ class DesktopMain extends Disposable {
|
||||
return keyboardLayoutService;
|
||||
} catch (error) {
|
||||
onUnexpectedError(error);
|
||||
logService.error(error);
|
||||
|
||||
return keyboardLayoutService;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user