Skip to content

Commit f261569

Browse files
author
Benjamin Pasero
committed
address microsoft#84818 on master
1 parent bc71f8a commit f261569

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { URI } from 'vs/base/common/uri';
88
import * as nls from 'vs/nls';
99
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
1010
import { IJSONEditingService, JSONEditingError, JSONEditingErrorCode } from 'vs/workbench/services/configuration/common/jsonEditing';
11-
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData, IWorkspacesService, rewriteWorkspaceFileForNewLocation, WORKSPACE_FILTER, IEnterWorkspaceResult } from 'vs/platform/workspaces/common/workspaces';
11+
import { IWorkspaceIdentifier, IWorkspaceFolderCreationData, IWorkspacesService, rewriteWorkspaceFileForNewLocation, WORKSPACE_FILTER, IEnterWorkspaceResult, hasWorkspaceFileExtension, WORKSPACE_EXTENSION } from 'vs/platform/workspaces/common/workspaces';
1212
import { WorkspaceService } from 'vs/workbench/services/configuration/browser/configurationService';
1313
import { ConfigurationScope, IConfigurationRegistry, Extensions as ConfigurationExtensions, IConfigurationPropertySchema } from 'vs/platform/configuration/common/configurationRegistry';
1414
import { Registry } from 'vs/platform/registry/common/platform';
@@ -43,13 +43,25 @@ export abstract class AbstractWorkspaceEditingService implements IWorkspaceEditi
4343
@IHostService protected readonly hostService: IHostService
4444
) { }
4545

46-
pickNewWorkspacePath(): Promise<URI | undefined> {
47-
return this.fileDialogService.showSaveDialog({
46+
async pickNewWorkspacePath(): Promise<URI | undefined> {
47+
let workspacePath = await this.fileDialogService.showSaveDialog({
4848
saveLabel: mnemonicButtonLabel(nls.localize('save', "Save")),
4949
title: nls.localize('saveWorkspace', "Save Workspace"),
5050
filters: WORKSPACE_FILTER,
5151
defaultUri: this.fileDialogService.defaultWorkspacePath()
5252
});
53+
54+
if (!workspacePath) {
55+
return; // canceled
56+
}
57+
58+
if (!hasWorkspaceFileExtension(workspacePath)) {
59+
// Always ensure we have workspace file extension
60+
// (see https://github.com/microsoft/vscode/issues/84818)
61+
workspacePath = workspacePath.with({ path: `${workspacePath.path}.${WORKSPACE_EXTENSION}` });
62+
}
63+
64+
return workspacePath;
5365
}
5466

5567
updateFolders(index: number, deleteCount?: number, foldersToAdd?: IWorkspaceFolderCreationData[], donotNotifyError?: boolean): Promise<void> {

0 commit comments

Comments
 (0)