Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Pasero <benjpas@microsoft.com>2020-05-29 07:40:25 +0300
committerBenjamin Pasero <benjpas@microsoft.com>2020-05-29 09:05:50 +0300
commitff5915e25b7a9825e3b792b0a295626439a654b5 (patch)
tree80f13a778b9b740dda26b6d8806c245e4869719c
parent203508d5ead067dd8a4060856f7bff2bd32ddb35 (diff)
web - allow --add to add folder to workspace
-rw-r--r--src/vs/platform/windows/common/windows.ts4
-rw-r--r--src/vs/platform/windows/electron-main/windowsMainService.ts4
-rw-r--r--src/vs/platform/windows/node/window.ts4
-rw-r--r--src/vs/workbench/electron-browser/window.ts4
-rw-r--r--src/vs/workbench/services/host/browser/browserHostService.ts21
5 files changed, 27 insertions, 10 deletions
diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts
index eeee8aa2af5..dc42bfc3743 100644
--- a/src/vs/platform/windows/common/windows.ts
+++ b/src/vs/platform/windows/common/windows.ts
@@ -28,6 +28,10 @@ export interface IOpenWindowOptions extends IBaseOpenWindowsOptions {
waitMarkerFileURI?: URI;
}
+export interface IAddFoldersRequest {
+ foldersToAdd: UriComponents[];
+}
+
export interface IOpenedWindow {
id: number;
workspace?: IWorkspaceIdentifier;
diff --git a/src/vs/platform/windows/electron-main/windowsMainService.ts b/src/vs/platform/windows/electron-main/windowsMainService.ts
index 58ba2a8ae86..abe0631e996 100644
--- a/src/vs/platform/windows/electron-main/windowsMainService.ts
+++ b/src/vs/platform/windows/electron-main/windowsMainService.ts
@@ -19,8 +19,8 @@ import { ipcMain as ipc, screen, BrowserWindow, MessageBoxOptions, Display, app,
import { ILifecycleMainService, UnloadReason, LifecycleMainService, LifecycleMainPhase } from 'vs/platform/lifecycle/electron-main/lifecycleMainService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ILogService } from 'vs/platform/log/common/log';
-import { IWindowSettings, IPath, isFileToOpen, isWorkspaceToOpen, isFolderToOpen, IWindowOpenable, IOpenEmptyWindowOptions } from 'vs/platform/windows/common/windows';
-import { getLastActiveWindow, findBestWindowOrFolderForFile, findWindowOnWorkspace, findWindowOnExtensionDevelopmentPath, findWindowOnWorkspaceOrFolderUri, INativeWindowConfiguration, OpenContext, IAddFoldersRequest, IPathsToWaitFor } from 'vs/platform/windows/node/window';
+import { IWindowSettings, IPath, isFileToOpen, isWorkspaceToOpen, isFolderToOpen, IWindowOpenable, IOpenEmptyWindowOptions, IAddFoldersRequest } from 'vs/platform/windows/common/windows';
+import { getLastActiveWindow, findBestWindowOrFolderForFile, findWindowOnWorkspace, findWindowOnExtensionDevelopmentPath, findWindowOnWorkspaceOrFolderUri, INativeWindowConfiguration, OpenContext, IPathsToWaitFor } from 'vs/platform/windows/node/window';
import { Emitter } from 'vs/base/common/event';
import product from 'vs/platform/product/common/product';
import { IWindowsMainService, IOpenConfiguration, IWindowsCountChangedEvent, ICodeWindow, IWindowState as ISingleWindowState, WindowMode, IOpenEmptyConfiguration } from 'vs/platform/windows/electron-main/windows';
diff --git a/src/vs/platform/windows/node/window.ts b/src/vs/platform/windows/node/window.ts
index 13d68b48a84..2e84b32f042 100644
--- a/src/vs/platform/windows/node/window.ts
+++ b/src/vs/platform/windows/node/window.ts
@@ -44,10 +44,6 @@ export interface IRunKeybindingInWindowRequest {
userSettingsLabel: string;
}
-export interface IAddFoldersRequest {
- foldersToAdd: UriComponents[];
-}
-
export interface INativeWindowConfiguration extends IWindowConfiguration, ParsedArgs {
mainPid: number;
diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts
index 734d652d3a7..ed016c8ef70 100644
--- a/src/vs/workbench/electron-browser/window.ts
+++ b/src/vs/workbench/electron-browser/window.ts
@@ -14,8 +14,8 @@ import { IFileService } from 'vs/platform/files/common/files';
import { toResource, IUntitledTextResourceEditorInput, SideBySideEditor, pathsToEditors } from 'vs/workbench/common/editor';
import { IEditorService, IResourceEditorInputType } from 'vs/workbench/services/editor/common/editorService';
import { ITelemetryService, crashReporterIdStorageKey } from 'vs/platform/telemetry/common/telemetry';
-import { IWindowSettings, IOpenFileRequest, IWindowsConfiguration, getTitleBarStyle } from 'vs/platform/windows/common/windows';
-import { IRunActionInWindowRequest, IRunKeybindingInWindowRequest, IAddFoldersRequest, INativeOpenFileRequest } from 'vs/platform/windows/node/window';
+import { IWindowSettings, IOpenFileRequest, IWindowsConfiguration, getTitleBarStyle, IAddFoldersRequest } from 'vs/platform/windows/common/windows';
+import { IRunActionInWindowRequest, IRunKeybindingInWindowRequest, INativeOpenFileRequest } from 'vs/platform/windows/node/window';
import { ITitleService } from 'vs/workbench/services/title/common/titleService';
import { IWorkbenchThemeService, VS_HC_THEME } from 'vs/workbench/services/themes/common/workbenchThemeService';
import * as browser from 'vs/base/browser/browser';
diff --git a/src/vs/workbench/services/host/browser/browserHostService.ts b/src/vs/workbench/services/host/browser/browserHostService.ts
index 54775ca1bb9..8631fa24bc9 100644
--- a/src/vs/workbench/services/host/browser/browserHostService.ts
+++ b/src/vs/workbench/services/host/browser/browserHostService.ts
@@ -20,6 +20,9 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/
import { domEvent } from 'vs/base/browser/event';
import { memoize } from 'vs/base/common/decorators';
import { parseLineAndColumnAware } from 'vs/base/common/extpath';
+import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/workspaces';
+import { IWorkspaceEditingService } from 'vs/workbench/services/workspaces/common/workspaceEditing';
+import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
/**
* A workspace to open in the workbench can either be:
@@ -66,7 +69,8 @@ export class BrowserHostService extends Disposable implements IHostService {
@IConfigurationService private readonly configurationService: IConfigurationService,
@IFileService private readonly fileService: IFileService,
@ILabelService private readonly labelService: ILabelService,
- @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService
+ @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
+ @IInstantiationService private readonly instantiationService: IInstantiationService
) {
super();
@@ -116,13 +120,18 @@ export class BrowserHostService extends Disposable implements IHostService {
private async doOpenWindow(toOpen: IWindowOpenable[], options?: IOpenWindowOptions): Promise<void> {
const payload = this.preservePayload();
const fileOpenables: IFileToOpen[] = [];
+ const foldersToAdd: IWorkspaceFolderCreationData[] = [];
for (const openable of toOpen) {
openable.label = openable.label || this.getRecentLabel(openable);
// Folder
if (isFolderToOpen(openable)) {
- this.workspaceProvider.open({ folderUri: openable.folderUri }, { reuse: this.shouldReuse(options, false /* no file */), payload });
+ if (options?.addMode) {
+ foldersToAdd.push(({ uri: openable.folderUri }));
+ } else {
+ this.workspaceProvider.open({ folderUri: openable.folderUri }, { reuse: this.shouldReuse(options, false /* no file */), payload });
+ }
}
// Workspace
@@ -136,6 +145,14 @@ export class BrowserHostService extends Disposable implements IHostService {
}
}
+ // Handle Folders to Add
+ if (foldersToAdd.length > 0) {
+ this.instantiationService.invokeFunction(accessor => {
+ const workspaceEditingService: IWorkspaceEditingService = accessor.get(IWorkspaceEditingService);
+ workspaceEditingService.addFolders(foldersToAdd);
+ });
+ }
+
// Handle Files
if (fileOpenables.length > 0) {