clone configuration when needed

This commit is contained in:
Sandeep Somavarapu 2017-11-13 13:28:10 +01:00
parent a91380c3d4
commit 3ac890f6ed
6 changed files with 10 additions and 7 deletions

View file

@ -7,6 +7,7 @@
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { clone } from 'vs/base/common/objects';
/* __GDPR__FRAGMENT__
"IExperiments" : {
@ -88,5 +89,5 @@ function splitRandom(random: number): [number, boolean] {
}
function getExperimentsOverrides(configurationService: IConfigurationService): IExperiments {
return configurationService.getValue<any>('experiments') || {};
return clone(configurationService.getValue<any>('experiments')) || {};
}

View file

@ -1601,7 +1601,7 @@ class TaskService extends EventEmitter implements ITaskService {
private getConfiguration(workspaceFolder: IWorkspaceFolder): { config: TaskConfig.ExternalTaskRunnerConfiguration; hasParseErrors: boolean } {
let result = this.contextService.getWorkbenchState() !== WorkbenchState.EMPTY
? this.configurationService.getValue<TaskConfig.ExternalTaskRunnerConfiguration>('tasks', { resource: workspaceFolder.uri })
? Objects.clone(this.configurationService.getValue<TaskConfig.ExternalTaskRunnerConfiguration>('tasks', { resource: workspaceFolder.uri }))
: undefined;
if (!result) {
return { config: undefined, hasParseErrors: false };

View file

@ -15,6 +15,7 @@ import { ITerminalConfiguration, ITerminalConfigHelper, ITerminalFont, IShellLau
import { TPromise } from 'vs/base/common/winjs.base';
import Severity from 'vs/base/common/severity';
import { isFedora } from 'vs/workbench/parts/terminal/electron-browser/terminal';
import { clone } from 'vs/base/common/objects';
interface IEditorConfiguration {
editor: IEditorOptions;
@ -49,7 +50,7 @@ export class TerminalConfigHelper implements ITerminalConfigHelper {
}
public get config(): ITerminalConfiguration {
return this._configurationService.getValue<IFullTerminalConfiguration>().terminal.integrated;
return clone(this._configurationService.getValue<IFullTerminalConfiguration>().terminal.integrated);
}
private _measureFont(fontFamily: string, fontSize: number, lineHeight: number): ITerminalFont {

View file

@ -39,6 +39,7 @@ import { registerColor, focusBorder, textLinkForeground, textLinkActiveForegroun
import { getExtraColor } from 'vs/workbench/parts/welcome/walkThrough/node/walkThroughUtils';
import { UILabelProvider } from 'vs/base/common/keybindingLabels';
import { OS, OperatingSystem } from 'vs/base/common/platform';
import { clone } from 'vs/base/common/objects';
export const WALK_THROUGH_FOCUS = new RawContextKey<boolean>('interactivePlaygroundFocus', false);
@ -461,7 +462,7 @@ export class WalkThroughPart extends BaseEditor {
}
private getEditorOptions(language: string): IEditorOptions {
const config = this.configurationService.getValue<IEditorOptions>('editor', { overrideIdentifier: language });
const config = clone(this.configurationService.getValue<IEditorOptions>('editor', { overrideIdentifier: language }));
return {
...isObject(config) ? config : Object.create(null),
scrollBeyondLastLine: false,

View file

@ -64,7 +64,7 @@ export class SearchService implements ISearchService {
// Configuration: File Excludes
if (!query.disregardExcludeSettings) {
const fileExcludes = configuration && configuration.files && configuration.files.exclude;
const fileExcludes = objects.clone(configuration && configuration.files && configuration.files.exclude);
if (fileExcludes) {
if (!query.excludePattern) {
query.excludePattern = fileExcludes;

View file

@ -375,10 +375,10 @@ export class WorkbenchThemeService implements IWorkbenchThemeService {
}
private updateColorCustomizations(notify = true): void {
let newColorCustomizations = this.configurationService.getValue<IColorCustomizations>(CUSTOM_WORKBENCH_COLORS_SETTING) || {};
let newColorCustomizations = objects.clone(this.configurationService.getValue<IColorCustomizations>(CUSTOM_WORKBENCH_COLORS_SETTING)) || {};
let newColorIds = Object.keys(newColorCustomizations);
let newTokenColorCustomizations = this.configurationService.getValue<ITokenColorCustomizations>(CUSTOM_EDITOR_COLORS_SETTING) || {};
let newTokenColorCustomizations = objects.clone(this.configurationService.getValue<ITokenColorCustomizations>(CUSTOM_EDITOR_COLORS_SETTING)) || {};
if (this.hasCustomizationChanged(newColorCustomizations, newColorIds, newTokenColorCustomizations)) {
this.colorCustomizations = newColorCustomizations;