提交 fe37067d 编写于 作者: S Sandeep Somavarapu

Clean up

- Remove configuration target in configuration editing service
- Remove configuration editing service
上级 b5774640
...@@ -46,8 +46,6 @@ import { ContextMenuService } from 'vs/workbench/services/contextview/electron-b ...@@ -46,8 +46,6 @@ import { ContextMenuService } from 'vs/workbench/services/contextview/electron-b
import { WorkbenchKeybindingService } from 'vs/workbench/services/keybinding/electron-browser/keybindingService'; import { WorkbenchKeybindingService } from 'vs/workbench/services/keybinding/electron-browser/keybindingService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { WorkspaceService, DefaultConfigurationExportHelper } from 'vs/workbench/services/configuration/node/configurationService'; import { WorkspaceService, DefaultConfigurationExportHelper } from 'vs/workbench/services/configuration/node/configurationService';
import { IConfigurationEditingService } from 'vs/workbench/services/configuration/common/configurationEditing';
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService';
import { IJSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditing'; import { IJSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditing';
import { JSONEditingService } from 'vs/workbench/services/configuration/node/jsonEditingService'; import { JSONEditingService } from 'vs/workbench/services/configuration/node/jsonEditingService';
import { ContextKeyService } from 'vs/platform/contextkey/browser/contextKeyService'; import { ContextKeyService } from 'vs/platform/contextkey/browser/contextKeyService';
...@@ -177,7 +175,6 @@ export class Workbench implements IPartService { ...@@ -177,7 +175,6 @@ export class Workbench implements IPartService {
private contextKeyService: IContextKeyService; private contextKeyService: IContextKeyService;
private keybindingService: IKeybindingService; private keybindingService: IKeybindingService;
private backupFileService: IBackupFileService; private backupFileService: IBackupFileService;
private configurationEditingService: IConfigurationEditingService;
private fileService: IFileService; private fileService: IFileService;
private titlebarPart: TitlebarPart; private titlebarPart: TitlebarPart;
private activitybarPart: ActivitybarPart; private activitybarPart: ActivitybarPart;
...@@ -597,10 +594,6 @@ export class Workbench implements IPartService { ...@@ -597,10 +594,6 @@ export class Workbench implements IPartService {
const jsonEditingService = this.instantiationService.createInstance(JSONEditingService); const jsonEditingService = this.instantiationService.createInstance(JSONEditingService);
serviceCollection.set(IJSONEditingService, jsonEditingService); serviceCollection.set(IJSONEditingService, jsonEditingService);
// Configuration Editing
this.configurationEditingService = this.instantiationService.createInstance(ConfigurationEditingService);
serviceCollection.set(IConfigurationEditingService, this.configurationEditingService);
// Workspace Editing // Workspace Editing
serviceCollection.set(IWorkspaceEditingService, new SyncDescriptor(WorkspaceEditingService)); serviceCollection.set(IWorkspaceEditingService, new SyncDescriptor(WorkspaceEditingService));
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { TPromise } from 'vs/base/common/winjs.base';
import { createDecorator, ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation';
import { IConfigurationOverrides } from 'vs/platform/configuration/common/configuration';
export const IConfigurationEditingService = createDecorator<IConfigurationEditingService>('configurationEditingService');
export enum ConfigurationEditingErrorCode {
/**
* Error when trying to write a configuration key that is not registered.
*/
ERROR_UNKNOWN_KEY,
/**
* Error when trying to write an invalid folder configuration key to folder settings.
*/
ERROR_INVALID_FOLDER_CONFIGURATION,
/**
* Error when trying to write to user target but not supported for provided key.
*/
ERROR_INVALID_USER_TARGET,
/**
* Error when trying to write a configuration key to folder target
*/
ERROR_INVALID_FOLDER_TARGET,
/**
* Error when trying to write to the workspace configuration without having a workspace opened.
*/
ERROR_NO_WORKSPACE_OPENED,
/**
* Error when trying to write and save to the configuration file while it is dirty in the editor.
*/
ERROR_CONFIGURATION_FILE_DIRTY,
/**
* Error when trying to write to a configuration file that contains JSON errors.
*/
ERROR_INVALID_CONFIGURATION
}
export class ConfigurationEditingError extends Error {
constructor(message: string, public code: ConfigurationEditingErrorCode) {
super(message);
}
}
export enum ConfigurationTarget {
/**
* Targets the user configuration file for writing.
*/
USER,
/**
* Targets the workspace configuration file for writing. This only works if a workspace is opened.
*/
WORKSPACE,
/**
* Targets the folder configuration file for writing. This only works if a workspace is opened.
*/
FOLDER
}
export interface IConfigurationValue {
key: string;
value: any;
}
export interface IConfigurationEditingOptions {
/**
* If `true`, do not saves the configuration. Default is `false`.
*/
donotSave?: boolean;
/**
* If `true`, do not notifies the error to user by showing the message box. Default is `false`.
*/
donotNotifyError?: boolean;
/**
* Scope of configuration to be written into.
*/
scopes?: IConfigurationOverrides;
}
export interface IConfigurationEditingService {
_serviceBrand: ServiceIdentifier<any>;
/**
* Allows to write the configuration value to either the user or workspace configuration file and save it if asked to save.
* The returned promise will be in error state in any of the error cases from [ConfigurationEditingErrorCode](#ConfigurationEditingErrorCode)
*/
writeConfiguration(target: ConfigurationTarget, value: IConfigurationValue, options?: IConfigurationEditingOptions): TPromise<void>;
}
\ No newline at end of file
...@@ -23,16 +23,79 @@ import { Selection } from 'vs/editor/common/core/selection'; ...@@ -23,16 +23,79 @@ import { Selection } from 'vs/editor/common/core/selection';
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { IConfigurationService, IConfigurationOverrides, keyFromOverrideIdentifier } from 'vs/platform/configuration/common/configuration'; import { IConfigurationService, IConfigurationOverrides, keyFromOverrideIdentifier, ConfigurationTarget } from 'vs/platform/configuration/common/configuration';
import { WORKSPACE_CONFIG_DEFAULT_PATH, WORKSPACE_STANDALONE_CONFIGURATIONS, TASKS_CONFIGURATION_KEY, LAUNCH_CONFIGURATION_KEY } from 'vs/workbench/services/configuration/common/configuration'; import { WORKSPACE_CONFIG_DEFAULT_PATH, WORKSPACE_STANDALONE_CONFIGURATIONS, TASKS_CONFIGURATION_KEY, LAUNCH_CONFIGURATION_KEY } from 'vs/workbench/services/configuration/common/configuration';
import { IFileService } from 'vs/platform/files/common/files'; import { IFileService } from 'vs/platform/files/common/files';
import { ConfigurationTarget, ConfigurationEditingErrorCode, ConfigurationEditingError, IConfigurationValue, IConfigurationEditingOptions, IConfigurationEditingService } from 'vs/workbench/services/configuration/common/configurationEditing';
import { ITextModelService, ITextEditorModel } from 'vs/editor/common/services/resolverService'; import { ITextModelService, ITextEditorModel } from 'vs/editor/common/services/resolverService';
import { OVERRIDE_PROPERTY_PATTERN, IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { OVERRIDE_PROPERTY_PATTERN, IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
import { IChoiceService, IMessageService, Severity } from 'vs/platform/message/common/message'; import { IChoiceService, IMessageService, Severity } from 'vs/platform/message/common/message';
import { ICommandService } from 'vs/platform/commands/common/commands'; import { ICommandService } from 'vs/platform/commands/common/commands';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
export enum ConfigurationEditingErrorCode {
/**
* Error when trying to write a configuration key that is not registered.
*/
ERROR_UNKNOWN_KEY,
/**
* Error when trying to write an invalid folder configuration key to folder settings.
*/
ERROR_INVALID_FOLDER_CONFIGURATION,
/**
* Error when trying to write to user target but not supported for provided key.
*/
ERROR_INVALID_USER_TARGET,
/**
* Error when trying to write a configuration key to folder target
*/
ERROR_INVALID_FOLDER_TARGET,
/**
* Error when trying to write to the workspace configuration without having a workspace opened.
*/
ERROR_NO_WORKSPACE_OPENED,
/**
* Error when trying to write and save to the configuration file while it is dirty in the editor.
*/
ERROR_CONFIGURATION_FILE_DIRTY,
/**
* Error when trying to write to a configuration file that contains JSON errors.
*/
ERROR_INVALID_CONFIGURATION
}
export class ConfigurationEditingError extends Error {
constructor(message: string, public code: ConfigurationEditingErrorCode) {
super(message);
}
}
export interface IConfigurationValue {
key: string;
value: any;
}
export interface IConfigurationEditingOptions {
/**
* If `true`, do not saves the configuration. Default is `false`.
*/
donotSave?: boolean;
/**
* If `true`, do not notifies the error to user by showing the message box. Default is `false`.
*/
donotNotifyError?: boolean;
/**
* Scope of configuration to be written into.
*/
scopes?: IConfigurationOverrides;
}
interface IConfigurationEditOperation extends IConfigurationValue { interface IConfigurationEditOperation extends IConfigurationValue {
target: ConfigurationTarget; target: ConfigurationTarget;
jsonPath: json.JSONPath; jsonPath: json.JSONPath;
...@@ -50,7 +113,7 @@ interface ConfigurationEditingOptions extends IConfigurationEditingOptions { ...@@ -50,7 +113,7 @@ interface ConfigurationEditingOptions extends IConfigurationEditingOptions {
force?: boolean; force?: boolean;
} }
export class ConfigurationEditingService implements IConfigurationEditingService { export class ConfigurationEditingService {
public _serviceBrand: any; public _serviceBrand: any;
...@@ -190,7 +253,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService ...@@ -190,7 +253,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService
case ConfigurationTarget.WORKSPACE: case ConfigurationTarget.WORKSPACE:
this.commandService.executeCommand('workbench.action.openWorkspaceSettings'); this.commandService.executeCommand('workbench.action.openWorkspaceSettings');
break; break;
case ConfigurationTarget.FOLDER: case ConfigurationTarget.WORKSPACE_FOLDER:
if (operation.resource) { if (operation.resource) {
const workspaceFolder = this.contextService.getWorkspaceFolder(operation.resource); const workspaceFolder = this.contextService.getWorkspaceFolder(operation.resource);
if (workspaceFolder) { if (workspaceFolder) {
...@@ -234,7 +297,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService ...@@ -234,7 +297,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService
return nls.localize('errorInvalidConfiguration', "Unable to write into user settings. Please open **User Settings** file to correct errors/warnings in it and try again."); return nls.localize('errorInvalidConfiguration', "Unable to write into user settings. Please open **User Settings** file to correct errors/warnings in it and try again.");
case ConfigurationTarget.WORKSPACE: case ConfigurationTarget.WORKSPACE:
return nls.localize('errorInvalidConfigurationWorkspace', "Unable to write into workspace settings. Please open **Workspace Settings** file to correct errors/warnings in the file and try again."); return nls.localize('errorInvalidConfigurationWorkspace', "Unable to write into workspace settings. Please open **Workspace Settings** file to correct errors/warnings in the file and try again.");
case ConfigurationTarget.FOLDER: case ConfigurationTarget.WORKSPACE_FOLDER:
const workspaceFolderName = this.contextService.getWorkspaceFolder(operation.resource).name; const workspaceFolderName = this.contextService.getWorkspaceFolder(operation.resource).name;
return nls.localize('errorInvalidConfigurationFolder', "Unable to write into folder settings. Please open **Folder Settings** file under **{0}** folder to correct errors/warnings in it and try again.", workspaceFolderName); return nls.localize('errorInvalidConfigurationFolder', "Unable to write into folder settings. Please open **Folder Settings** file under **{0}** folder to correct errors/warnings in it and try again.", workspaceFolderName);
} }
...@@ -252,7 +315,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService ...@@ -252,7 +315,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService
return nls.localize('errorConfigurationFileDirty', "Unable to write into user settings because the file is dirty. Please save the **User Settings** file and try again."); return nls.localize('errorConfigurationFileDirty', "Unable to write into user settings because the file is dirty. Please save the **User Settings** file and try again.");
case ConfigurationTarget.WORKSPACE: case ConfigurationTarget.WORKSPACE:
return nls.localize('errorConfigurationFileDirtyWorkspace', "Unable to write into workspace settings because the file is dirty. Please save the **Workspace Settings** file and try again."); return nls.localize('errorConfigurationFileDirtyWorkspace', "Unable to write into workspace settings because the file is dirty. Please save the **Workspace Settings** file and try again.");
case ConfigurationTarget.FOLDER: case ConfigurationTarget.WORKSPACE_FOLDER:
const workspaceFolderName = this.contextService.getWorkspaceFolder(operation.resource).name; const workspaceFolderName = this.contextService.getWorkspaceFolder(operation.resource).name;
return nls.localize('errorConfigurationFileDirtyFolder', "Unable to write into folder settings because the file is dirty. Please save the **Folder Settings** file under **{0}** folder and try again.", workspaceFolderName); return nls.localize('errorConfigurationFileDirtyFolder', "Unable to write into folder settings because the file is dirty. Please save the **Folder Settings** file under **{0}** folder and try again.", workspaceFolderName);
} }
...@@ -267,9 +330,10 @@ export class ConfigurationEditingService implements IConfigurationEditingService ...@@ -267,9 +330,10 @@ export class ConfigurationEditingService implements IConfigurationEditingService
return nls.localize('userTarget', "User Settings"); return nls.localize('userTarget', "User Settings");
case ConfigurationTarget.WORKSPACE: case ConfigurationTarget.WORKSPACE:
return nls.localize('workspaceTarget', "Workspace Settings"); return nls.localize('workspaceTarget', "Workspace Settings");
case ConfigurationTarget.FOLDER: case ConfigurationTarget.WORKSPACE_FOLDER:
return nls.localize('folderTarget', "Folder Settings"); return nls.localize('folderTarget', "Folder Settings");
} }
return '';
} }
private getEdits(model: editorCommon.IModel, edit: IConfigurationEditOperation): Edit[] { private getEdits(model: editorCommon.IModel, edit: IConfigurationEditOperation): Edit[] {
...@@ -325,11 +389,11 @@ export class ConfigurationEditingService implements IConfigurationEditingService ...@@ -325,11 +389,11 @@ export class ConfigurationEditingService implements IConfigurationEditingService
} }
// Target cannot be workspace or folder if no workspace opened // Target cannot be workspace or folder if no workspace opened
if ((target === ConfigurationTarget.WORKSPACE || target === ConfigurationTarget.FOLDER) && this.contextService.getWorkbenchState() === WorkbenchState.EMPTY) { if ((target === ConfigurationTarget.WORKSPACE || target === ConfigurationTarget.WORKSPACE_FOLDER) && this.contextService.getWorkbenchState() === WorkbenchState.EMPTY) {
return this.wrapError(ConfigurationEditingErrorCode.ERROR_NO_WORKSPACE_OPENED, target, operation); return this.wrapError(ConfigurationEditingErrorCode.ERROR_NO_WORKSPACE_OPENED, target, operation);
} }
if (target === ConfigurationTarget.FOLDER) { if (target === ConfigurationTarget.WORKSPACE_FOLDER) {
if (!operation.resource) { if (!operation.resource) {
return this.wrapError(ConfigurationEditingErrorCode.ERROR_INVALID_FOLDER_TARGET, target, operation); return this.wrapError(ConfigurationEditingErrorCode.ERROR_INVALID_FOLDER_TARGET, target, operation);
} }
...@@ -416,7 +480,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService ...@@ -416,7 +480,7 @@ export class ConfigurationEditingService implements IConfigurationEditingService
} }
} }
if (target === ConfigurationTarget.FOLDER) { if (target === ConfigurationTarget.WORKSPACE_FOLDER) {
if (resource) { if (resource) {
const folder = this.contextService.getWorkspaceFolder(resource); const folder = this.contextService.getWorkspaceFolder(resource);
if (folder) { if (folder) {
......
...@@ -37,7 +37,6 @@ import { IExtensionService } from 'vs/platform/extensions/common/extensions'; ...@@ -37,7 +37,6 @@ import { IExtensionService } from 'vs/platform/extensions/common/extensions';
import { ICommandService } from 'vs/platform/commands/common/commands'; import { ICommandService } from 'vs/platform/commands/common/commands';
import product from 'vs/platform/node/product'; import product from 'vs/platform/node/product';
import pkg from 'vs/platform/node/package'; import pkg from 'vs/platform/node/package';
import { IConfigurationEditingService, ConfigurationTarget as EditableConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService'; import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService';
...@@ -74,7 +73,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat ...@@ -74,7 +73,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
protected readonly _onDidChangeWorkbenchState: Emitter<WorkbenchState> = this._register(new Emitter<WorkbenchState>()); protected readonly _onDidChangeWorkbenchState: Emitter<WorkbenchState> = this._register(new Emitter<WorkbenchState>());
public readonly onDidChangeWorkbenchState: Event<WorkbenchState> = this._onDidChangeWorkbenchState.event; public readonly onDidChangeWorkbenchState: Event<WorkbenchState> = this._onDidChangeWorkbenchState.event;
private configurationEditingService: IConfigurationEditingService; private configurationEditingService: ConfigurationEditingService;
constructor(private environmentService: IEnvironmentService, private workspacesService: IWorkspacesService, private workspaceSettingsRootFolder: string = WORKSPACE_CONFIG_FOLDER_DEFAULT_NAME) { constructor(private environmentService: IEnvironmentService, private workspacesService: IWorkspacesService, private workspaceSettingsRootFolder: string = WORKSPACE_CONFIG_FOLDER_DEFAULT_NAME) {
super(); super();
...@@ -474,7 +473,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat ...@@ -474,7 +473,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
return TPromise.as(null); return TPromise.as(null);
} }
return this.configurationEditingService.writeConfiguration(this.toEditableConfigurationTarget(target), { key, value }, { scopes: overrides, donotNotifyError }) return this.configurationEditingService.writeConfiguration(target, { key, value }, { scopes: overrides, donotNotifyError })
.then(() => { .then(() => {
switch (target) { switch (target) {
case ConfigurationTarget.USER: case ConfigurationTarget.USER:
...@@ -518,19 +517,6 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat ...@@ -518,19 +517,6 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
return ConfigurationTarget.USER; return ConfigurationTarget.USER;
} }
private toEditableConfigurationTarget(target: ConfigurationTarget): EditableConfigurationTarget {
switch (target) {
case ConfigurationTarget.USER:
return EditableConfigurationTarget.USER;
case ConfigurationTarget.WORKSPACE:
return EditableConfigurationTarget.WORKSPACE;
case ConfigurationTarget.WORKSPACE_FOLDER:
return EditableConfigurationTarget.FOLDER;
default:
return EditableConfigurationTarget.WORKSPACE;
}
}
private triggerConfigurationChange(configurationEvent: ConfigurationChangeEvent, target: ConfigurationTarget): void { private triggerConfigurationChange(configurationEvent: ConfigurationChangeEvent, target: ConfigurationTarget): void {
if (configurationEvent.affectedKeys.length) { if (configurationEvent.affectedKeys.length) {
configurationEvent.telemetryData(target, this.getTargetConfiguration(target)); configurationEvent.telemetryData(target, this.getTargetConfiguration(target));
......
...@@ -23,11 +23,10 @@ import uuid = require('vs/base/common/uuid'); ...@@ -23,11 +23,10 @@ import uuid = require('vs/base/common/uuid');
import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry'; import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry';
import { WorkspaceService } from 'vs/workbench/services/configuration/node/configurationService'; import { WorkspaceService } from 'vs/workbench/services/configuration/node/configurationService';
import { FileService } from 'vs/workbench/services/files/node/fileService'; import { FileService } from 'vs/workbench/services/files/node/fileService';
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService'; import { ConfigurationEditingService, ConfigurationEditingError, ConfigurationEditingErrorCode } from 'vs/workbench/services/configuration/node/configurationEditingService';
import { ConfigurationTarget, ConfigurationEditingError, ConfigurationEditingErrorCode } from 'vs/workbench/services/configuration/common/configurationEditing';
import { IFileService } from 'vs/platform/files/common/files'; import { IFileService } from 'vs/platform/files/common/files';
import { WORKSPACE_STANDALONE_CONFIGURATIONS } from 'vs/workbench/services/configuration/common/configuration'; import { WORKSPACE_STANDALONE_CONFIGURATIONS } from 'vs/workbench/services/configuration/common/configuration';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration';
import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册