Compare commits
3 commits
main
...
rzhao271/p
Author | SHA1 | Date | |
---|---|---|---|
ef9e7408e6 | |||
a557a12ca9 | |||
4ab1e77fa7 |
|
@ -118,7 +118,7 @@ export interface IConfigurationService {
|
|||
updateValue(key: string, value: any): Promise<void>;
|
||||
updateValue(key: string, value: any, overrides: IConfigurationOverrides | IConfigurationUpdateOverrides): Promise<void>;
|
||||
updateValue(key: string, value: any, target: ConfigurationTarget): Promise<void>;
|
||||
updateValue(key: string, value: any, overrides: IConfigurationOverrides | IConfigurationUpdateOverrides, target: ConfigurationTarget, donotNotifyError?: boolean): Promise<void>;
|
||||
updateValue(key: string, value: any, overrides: IConfigurationOverrides | IConfigurationUpdateOverrides, target: ConfigurationTarget, donotNotifyError?: boolean, ignoreDirtyFile?: boolean): Promise<void>;
|
||||
|
||||
inspect<T>(key: string, overrides?: IConfigurationOverrides): IConfigurationValue<Readonly<T>>;
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ export class UserSettingsRenderer extends Disposable implements IPreferencesRend
|
|||
updatePreference(key: string, value: any, source: IIndexedSetting): void {
|
||||
const overrideIdentifiers = source.overrideOf ? overrideIdentifiersFromKey(source.overrideOf.key) : null;
|
||||
const resource = this.preferencesModel.uri;
|
||||
this.configurationService.updateValue(key, value, { overrideIdentifiers, resource }, this.preferencesModel.configurationTarget)
|
||||
this.configurationService.updateValue(key, value, { overrideIdentifiers, resource }, this.preferencesModel.configurationTarget, undefined, true)
|
||||
.then(() => this.onSettingUpdated(source));
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
|
|||
import { IConfigurationRegistry, Extensions, allSettings, windowSettings, resourceSettings, applicationSettings, machineSettings, machineOverridableSettings, ConfigurationScope, IConfigurationPropertySchema, keyFromOverrideIdentifiers } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { IWorkspaceIdentifier, isWorkspaceIdentifier, IStoredWorkspaceFolder, isStoredWorkspaceFolder, IWorkspaceFolderCreationData, IWorkspaceInitializationPayload, IEmptyWorkspaceIdentifier, useSlashForPath, getStoredWorkspaceFolder, isSingleFolderWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, toWorkspaceFolders } from 'vs/platform/workspaces/common/workspaces';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ConfigurationEditingService, EditableConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditingService';
|
||||
import { ConfigurationEditingOptions, ConfigurationEditingService, EditableConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditingService';
|
||||
import { WorkspaceConfiguration, FolderConfiguration, RemoteUserConfiguration, UserConfiguration } from 'vs/workbench/services/configuration/browser/configuration';
|
||||
import { JSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditingService';
|
||||
import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
|
||||
|
@ -307,8 +307,8 @@ export class WorkspaceService extends Disposable implements IWorkbenchConfigurat
|
|||
updateValue(key: string, value: any): Promise<void>;
|
||||
updateValue(key: string, value: any, overrides: IConfigurationOverrides | IConfigurationUpdateOverrides): Promise<void>;
|
||||
updateValue(key: string, value: any, target: ConfigurationTarget): Promise<void>;
|
||||
updateValue(key: string, value: any, overrides: IConfigurationOverrides | IConfigurationUpdateOverrides, target: ConfigurationTarget, donotNotifyError?: boolean): Promise<void>;
|
||||
async updateValue(key: string, value: any, arg3?: any, arg4?: any, donotNotifyError?: any): Promise<void> {
|
||||
updateValue(key: string, value: any, overrides: IConfigurationOverrides | IConfigurationUpdateOverrides, target: ConfigurationTarget, donotNotifyError?: boolean, ignoreDirtyFile?: boolean): Promise<void>;
|
||||
async updateValue(key: string, value: any, arg3?: any, arg4?: any, donotNotifyError?: any, ignoreDirtyFile?: any): Promise<void> {
|
||||
await this.cyclicDependency;
|
||||
const overrides: IConfigurationUpdateOverrides | undefined = isConfigurationUpdateOverrides(arg3) ? arg3
|
||||
: isConfigurationOverrides(arg3) ? { resource: arg3.resource, overrideIdentifiers: arg3.overrideIdentifier ? [arg3.overrideIdentifier] : undefined } : undefined;
|
||||
|
@ -333,7 +333,7 @@ export class WorkspaceService extends Disposable implements IWorkbenchConfigurat
|
|||
}
|
||||
}
|
||||
|
||||
await Promises.settled(targets.map(target => this.writeConfigurationValue(key, value, target, overrides, donotNotifyError)));
|
||||
await Promises.settled(targets.map(target => this.writeConfigurationValue(key, value, target, overrides, donotNotifyError, ignoreDirtyFile)));
|
||||
}
|
||||
|
||||
async reloadConfiguration(target?: ConfigurationTarget | IWorkspaceFolder): Promise<void> {
|
||||
|
@ -864,7 +864,7 @@ export class WorkspaceService extends Disposable implements IWorkbenchConfigurat
|
|||
return validWorkspaceFolders;
|
||||
}
|
||||
|
||||
private async writeConfigurationValue(key: string, value: any, target: ConfigurationTarget, overrides: IConfigurationUpdateOverrides | undefined, donotNotifyError: boolean): Promise<void> {
|
||||
private async writeConfigurationValue(key: string, value: any, target: ConfigurationTarget, overrides: IConfigurationUpdateOverrides | undefined, donotNotifyError: boolean | undefined, ignoreDirtyFile: boolean | undefined): Promise<void> {
|
||||
if (target === ConfigurationTarget.DEFAULT) {
|
||||
throw new Error('Invalid configuration target');
|
||||
}
|
||||
|
@ -885,7 +885,12 @@ export class WorkspaceService extends Disposable implements IWorkbenchConfigurat
|
|||
throw new Error('Invalid configuration target');
|
||||
}
|
||||
|
||||
await this.configurationEditingService.writeConfiguration(editableConfigurationTarget, { key, value }, { scopes: overrides, donotNotifyError });
|
||||
const writeOptions: ConfigurationEditingOptions = {
|
||||
scopes: overrides,
|
||||
donotNotifyError,
|
||||
ignoreDirtyFile
|
||||
};
|
||||
await this.configurationEditingService.writeConfiguration(editableConfigurationTarget, { key, value }, writeOptions);
|
||||
switch (editableConfigurationTarget) {
|
||||
case EditableConfigurationTarget.USER_LOCAL:
|
||||
return this.reloadLocalUserConfiguration().then(() => undefined);
|
||||
|
|
|
@ -130,7 +130,7 @@ interface IConfigurationEditOperation extends IConfigurationValue {
|
|||
workspaceStandAloneConfigurationKey?: string;
|
||||
}
|
||||
|
||||
interface ConfigurationEditingOptions extends IConfigurationEditingOptions {
|
||||
export interface ConfigurationEditingOptions extends IConfigurationEditingOptions {
|
||||
ignoreDirtyFile?: boolean;
|
||||
}
|
||||
|
||||
|
@ -181,7 +181,8 @@ export class ConfigurationEditingService {
|
|||
const reference = await this.resolveModelReference(resource);
|
||||
try {
|
||||
const formattingOptions = this.getFormattingOptions(reference.object.textEditorModel);
|
||||
if (this.uriIdentityService.extUri.isEqual(resource, this.environmentService.settingsResource)) {
|
||||
const isDirty = this.textFileService.isDirty(resource);
|
||||
if (!isDirty && this.uriIdentityService.extUri.isEqual(resource, this.environmentService.settingsResource)) {
|
||||
await this.userConfigurationFileService.updateSettings({ path: operation.jsonPath, value: operation.value }, formattingOptions);
|
||||
} else {
|
||||
await this.updateConfiguration(operation, reference.object.textEditorModel, formattingOptions);
|
||||
|
@ -204,9 +205,12 @@ export class ConfigurationEditingService {
|
|||
throw this.toConfigurationEditingError(ConfigurationEditingErrorCode.ERROR_INVALID_CONFIGURATION, operation.target, operation);
|
||||
}
|
||||
|
||||
const isDirty = this.textFileService.isDirty(model.uri);
|
||||
const edit = this.getEdits(operation, model.getValue(), formattingOptions)[0];
|
||||
if (edit && this.applyEditsToBuffer(edit, model)) {
|
||||
await this.textFileService.save(model.uri);
|
||||
if (!isDirty) {
|
||||
await this.textFileService.save(model.uri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue