From 4ae39646f9b4db1d91e49ee27232b5c8d15633cc Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Thu, 23 Aug 2018 18:01:24 -0700 Subject: [PATCH 01/12] Add underline on hover for links --- .../parts/preferences/browser/media/settingsEditor2.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css b/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css index 368bec216c8..70a86e090fe 100644 --- a/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css +++ b/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css @@ -363,6 +363,11 @@ .settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-description-markdown a:focus { outline: 1px solid -webkit-focus-ring-color; outline-offset: -1px; + text-decoration: underline; +} + +.settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-description-markdown a:hover { + text-decoration: underline; } .settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-description-markdown code { From d9e6f53c1c1eba5ae305b1b6ce24e90a92ba5f9d Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 09:42:39 -0700 Subject: [PATCH 02/12] Notify of no need to save on first edit --- .../parts/preferences/browser/settingsEditor2.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index ca45a7487bf..ac39b66435c 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts @@ -45,6 +45,8 @@ import { SettingsEditor2Input } from 'vs/workbench/services/preferences/common/p import { DefaultSettingsEditorModel } from 'vs/workbench/services/preferences/common/preferencesModels'; import { ResourceEditorModel } from 'vs/workbench/common/editor/resourceEditorModel'; import { badgeBackground, contrastBorder, badgeForeground, editorForeground } from 'vs/platform/theme/common/colorRegistry'; +import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; +import { INotificationService } from 'vs/platform/notification/common/notification'; const $ = DOM.$; @@ -111,7 +113,9 @@ export class SettingsEditor2 extends BaseEditor { @ILogService private logService: ILogService, @IEnvironmentService private environmentService: IEnvironmentService, @IContextKeyService contextKeyService: IContextKeyService, - @IContextMenuService private contextMenuService: IContextMenuService + @IContextMenuService private contextMenuService: IContextMenuService, + @IStorageService private storageService: IStorageService, + @INotificationService private notificationService: INotificationService ) { super(SettingsEditor2.ID, telemetryService, themeService); this.delayedFilterLogging = new Delayer(1000); @@ -485,6 +489,11 @@ export class SettingsEditor2 extends BaseEditor { } private onDidChangeSetting(key: string, value: any): void { + if (!this.storageService.getBoolean('hasNotifiedOfSettingsAutosave', StorageScope.GLOBAL, false)) { + this.storageService.store('hasNotifiedOfSettingsAutosave', true, StorageScope.GLOBAL); + this.notificationService.info(localize('settingsNoSaveNeeded', "Your changes are automatically saved as you edit.")); + } + if (this.pendingSettingUpdate && this.pendingSettingUpdate.key !== key) { this.updateChangedSetting(key, value); } From cb366e2871ca0275590332f0b84b07cae01544b1 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 09:43:19 -0700 Subject: [PATCH 03/12] Organize imports --- .../parts/preferences/browser/settingsEditor2.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index 6badba1d9e9..e68f38cf190 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts @@ -26,11 +26,15 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment' import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { WorkbenchTree } from 'vs/platform/list/browser/listService'; import { ILogService } from 'vs/platform/log/common/log'; +import { INotificationService } from 'vs/platform/notification/common/notification'; +import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { badgeBackground, badgeForeground, contrastBorder, editorForeground } from 'vs/platform/theme/common/colorRegistry'; import { attachButtonStyler, attachStylerCallback } from 'vs/platform/theme/common/styler'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; import { EditorOptions, IEditor } from 'vs/workbench/common/editor'; +import { ResourceEditorModel } from 'vs/workbench/common/editor/resourceEditorModel'; import { SuggestEnabledInput } from 'vs/workbench/parts/codeEditor/browser/suggestEnabledInput'; import { PreferencesEditor } from 'vs/workbench/parts/preferences/browser/preferencesEditor'; import { SettingsTarget, SettingsTargetsWidget } from 'vs/workbench/parts/preferences/browser/preferencesWidgets'; @@ -43,10 +47,6 @@ import { IEditorGroup } from 'vs/workbench/services/group/common/editorGroupsSer import { IPreferencesService, ISearchResult, ISettingsEditorModel } from 'vs/workbench/services/preferences/common/preferences'; import { SettingsEditor2Input } from 'vs/workbench/services/preferences/common/preferencesEditorInput'; import { DefaultSettingsEditorModel } from 'vs/workbench/services/preferences/common/preferencesModels'; -import { ResourceEditorModel } from 'vs/workbench/common/editor/resourceEditorModel'; -import { badgeBackground, contrastBorder, badgeForeground, editorForeground } from 'vs/platform/theme/common/colorRegistry'; -import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -import { INotificationService } from 'vs/platform/notification/common/notification'; const $ = DOM.$; From fc739fedbd1b1a50efb7e7c08d6ce9a141878154 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 10:02:35 -0700 Subject: [PATCH 04/12] Notify no need to save on save --- .../parts/files/electron-browser/fileCommands.ts | 6 ++++++ .../parts/preferences/browser/settingsEditor2.ts | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts index 2e4edb6e547..5729f0571c8 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts @@ -42,6 +42,7 @@ import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { IEditorGroupsService } from 'vs/workbench/services/group/common/editorGroupsService'; import { ILabelService } from 'vs/platform/label/common/label'; +import { SettingsEditor2 } from 'vs/workbench/parts/preferences/browser/settingsEditor2'; // Commands @@ -161,6 +162,11 @@ function save( // Just save return textFileService.save(resource, { force: true /* force a change to the file to trigger external watchers if any */ }); + } else if (resource && resource.scheme === Schemas.vscode) { + const activeControl = editorService.activeControl; + if (activeControl instanceof SettingsEditor2) { + activeControl.notifyNoSaveNeeded(); + } } return TPromise.as(false); diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index e68f38cf190..2b9867a41b8 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts @@ -488,11 +488,15 @@ export class SettingsEditor2 extends BaseEditor { })); } - private onDidChangeSetting(key: string, value: any): void { - if (!this.storageService.getBoolean('hasNotifiedOfSettingsAutosave', StorageScope.GLOBAL, false)) { + public notifyNoSaveNeeded(force: boolean = true) { + if (force || !this.storageService.getBoolean('hasNotifiedOfSettingsAutosave', StorageScope.GLOBAL, false)) { this.storageService.store('hasNotifiedOfSettingsAutosave', true, StorageScope.GLOBAL); this.notificationService.info(localize('settingsNoSaveNeeded', "Your changes are automatically saved as you edit.")); } + } + + private onDidChangeSetting(key: string, value: any): void { + this.notifyNoSaveNeeded(false); if (this.pendingSettingUpdate && this.pendingSettingUpdate.key !== key) { this.updateChangedSetting(key, value); From 0c83ba6b80681b9aac54faf81fbb53461b0c2c94 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 10:13:39 -0700 Subject: [PATCH 05/12] Remove "Copy Setting Name", move "Reset Setting" to top --- .../parts/preferences/browser/settingsTree.ts | 31 +++---------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index 21d0bb57bee..caf1f7ff361 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -318,17 +318,16 @@ export class SettingsRenderer implements ITreeRenderer { this.descriptionMeasureContainer))); this.settingActions = [ - this.instantiationService.createInstance(CopySettingNameAction), - this.instantiationService.createInstance(CopySettingIdAction), - this.instantiationService.createInstance(CopySettingAsJSONAction), - new Separator(), new Action('settings.resetSetting', localize('resetSettingLabel', "Reset Setting"), undefined, undefined, (context: SettingsTreeSettingElement) => { if (context) { this._onDidChangeSetting.fire({ key: context.setting.key, value: undefined }); } return TPromise.wrap(null); - }) + }), + new Separator(), + this.instantiationService.createInstance(CopySettingIdAction), + this.instantiationService.createInstance(CopySettingAsJSONAction), ]; } @@ -1482,24 +1481,4 @@ class CopySettingAsJSONAction extends Action { return TPromise.as(null); } -} - -class CopySettingNameAction extends Action { - static readonly ID = 'settings.copySettingName'; - static readonly LABEL = localize('copySettingNameLabel', "Copy Setting Name"); - - constructor( - @IClipboardService private clipboardService: IClipboardService - ) { - super(CopySettingNameAction.ID, CopySettingNameAction.LABEL); - } - - run(context: SettingsTreeSettingElement): TPromise { - if (context) { - const name = `${context.displayCategory}: ${context.displayLabel}`; - this.clipboardService.writeText(name); - } - - return TPromise.as(null); - } -} +} \ No newline at end of file From 304284313ef4a1c7b815f03dfd8640e8e3458637 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 10:35:00 -0700 Subject: [PATCH 06/12] Add element with tooltip as modifided indicator --- .../preferences/browser/media/settingsEditor2.css | 13 ++++++++++--- .../parts/preferences/browser/settingsTree.ts | 5 +++++ .../parts/preferences/browser/settingsWidgets.ts | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css b/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css index 70a86e090fe..67c8790f01a 100644 --- a/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css +++ b/src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css @@ -281,17 +281,24 @@ text-overflow: ellipsis; } -.settings-editor > .settings-body > .settings-tree-container .setting-item.is-configured::after { + +.settings-editor > .settings-body > .settings-tree-container .setting-item > .setting-item-modified-indicator { + display: none; +} + +.settings-editor > .settings-body > .settings-tree-container .setting-item.is-configured > .setting-item-modified-indicator { display: block; content: ' '; position: absolute; - width: 2px; + width: 6px; + border-left-width: 2px; + border-left-style: solid; left: 0px; top: 15px; bottom: 16px; } -.settings-editor > .settings-body > .settings-tree-container .setting-item-bool.setting-item.is-configured::after { +.settings-editor > .settings-body > .settings-tree-container .setting-item-bool.is-configured > .setting-item-modified-indicator { bottom: 23px; } diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index caf1f7ff361..a750bd5987b 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -521,6 +521,8 @@ export class SettingsRenderer implements ITreeRenderer { const labelElement = DOM.append(labelCategoryContainer, $('span.setting-item-label')); const otherOverridesElement = DOM.append(titleElement, $('span.setting-item-overrides')); const descriptionElement = DOM.append(container, $('.setting-item-description')); + const modifiedIndicatorElement = DOM.append(container, $('.setting-item-modified-indicator')); + modifiedIndicatorElement.title = localize('modified', "Modified"); const valueElement = DOM.append(container, $('.setting-item-value')); const controlElement = DOM.append(valueElement, $('div.setting-item-control')); @@ -660,6 +662,9 @@ export class SettingsRenderer implements ITreeRenderer { const descriptionAndValueElement = DOM.append(container, $('.setting-item-value-description')); const controlElement = DOM.append(descriptionAndValueElement, $('.setting-item-bool-control')); const descriptionElement = DOM.append(descriptionAndValueElement, $('.setting-item-description')); + const modifiedIndicatorElement = DOM.append(container, $('.setting-item-modified-indicator')); + modifiedIndicatorElement.title = localize('modified', "Modified"); + const deprecationWarningElement = DOM.append(container, $('.setting-item-deprecation-message')); diff --git a/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts b/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts index 998e7f67552..84516598f85 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts @@ -118,7 +118,7 @@ registerThemingParticipant((theme: ITheme, collector: ICssStyleCollector) => { const modifiedItemIndicatorColor = theme.getColor(modifiedItemIndicator); if (modifiedItemIndicatorColor) { - collector.addRule(`.settings-editor > .settings-body > .settings-tree-container .setting-item.is-configured::after { background-color: ${modifiedItemIndicatorColor}; }`); + collector.addRule(`.settings-editor > .settings-body > .settings-tree-container .setting-item > .setting-item-modified-indicator { border-color: ${modifiedItemIndicatorColor}; }`); } }); From c2d594a4c2e270821a2110b2dc205c60c1066ba2 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 11:00:20 -0700 Subject: [PATCH 07/12] Fix bug causing exclude control add button to not actually add. Fixes #57167. --- src/vs/workbench/parts/preferences/browser/settingsWidgets.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts b/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts index 84516598f85..ae0ad8a2d15 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsWidgets.ts @@ -403,9 +403,8 @@ export class ExcludeSettingWidget extends Disposable { pattern, sibling: siblingInput && siblingInput.value.trim() }); - } else { - this.renderList(); } + this.renderList(); }; const onKeydown = (e: StandardKeyboardEvent) => { From 51fca9825b5de17004a2ef258c521e59e96b9988 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 14:50:03 -0700 Subject: [PATCH 08/12] Exclude control new items go to bottom of list rather than top, when conditions can be edited --- .../parts/preferences/browser/settingsTree.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index a750bd5987b..146448cfe11 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -48,7 +48,7 @@ const $ = DOM.$; function getExcludeDisplayValue(element: SettingsTreeSettingElement): IExcludeDataItem[] { const data = element.isConfigured ? - objects.mixin({ ...element.scopeValue }, element.defaultValue, false) : + { ...element.defaultValue, ...element.scopeValue } : element.defaultValue; return Object.keys(data) @@ -801,12 +801,20 @@ export class SettingsRenderer implements ITreeRenderer { if (e.pattern) { if (e.originalPattern in newValue) { // editing something present in the value - newValue[e.pattern] = newValue[e.originalPattern]; - delete newValue[e.originalPattern]; + if (e.pattern === e.originalPattern) { + // editing the when condition + newValue[e.pattern] = e.sibling ? { when: e.sibling } : true; + } else { + newValue[e.pattern] = newValue[e.originalPattern]; + delete newValue[e.originalPattern]; + } } else if (e.originalPattern) { // editing a default newValue[e.originalPattern] = false; newValue[e.pattern] = template.context.defaultValue[e.originalPattern]; + } else if (e.pattern in newValue) { + // Adding back an explicity overridden default pattern + delete newValue[e.pattern]; } else { // adding a new pattern newValue[e.pattern] = true; @@ -823,7 +831,7 @@ export class SettingsRenderer implements ITreeRenderer { this._onDidChangeSetting.fire({ key: template.context.setting.key, - value: newValue + value: Object.keys(newValue).length === 0 ? undefined : newValue }); } })); From 849322bcc4ef26c0886a63fe750508a12111cc58 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 15:53:24 -0700 Subject: [PATCH 09/12] Simplify exclude state change logic and fix bugs: unable to edit a when setting in some cases unable to edit a defualt setting to/from a nondefault one and probbaly some others. --- .../parts/preferences/browser/settingsTree.ts | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index 146448cfe11..ca990138fff 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -794,38 +794,25 @@ export class SettingsRenderer implements ITreeRenderer { common.toDispose.push(excludeWidget.onDidChangeExclude(e => { if (template.context) { - const newValue = { - ...template.context.scopeValue - }; + let newValue = { ...template.context.scopeValue }; - if (e.pattern) { - if (e.originalPattern in newValue) { - // editing something present in the value - if (e.pattern === e.originalPattern) { - // editing the when condition - newValue[e.pattern] = e.sibling ? { when: e.sibling } : true; - } else { - newValue[e.pattern] = newValue[e.originalPattern]; - delete newValue[e.originalPattern]; - } - } else if (e.originalPattern) { - // editing a default + // first delete the existing entry, if present + if (e.originalPattern) { + if (e.originalPattern in template.context.defaultValue) { + // delete a default by overriding it newValue[e.originalPattern] = false; - newValue[e.pattern] = template.context.defaultValue[e.originalPattern]; - } else if (e.pattern in newValue) { - // Adding back an explicity overridden default pattern + } else { + delete newValue[e.originalPattern]; + } + } + + // then add the new or updated entry, if present + if (e.pattern) { + if (e.pattern in template.context.defaultValue && !e.sibling) { + // add a default by deleting its override delete newValue[e.pattern]; } else { - // adding a new pattern - newValue[e.pattern] = true; - } - } else { - if (e.originalPattern in newValue) { - // deleting a configured pattern - delete newValue[e.originalPattern]; - } else if (e.originalPattern) { - // "deleting" a default by overriding it - newValue[e.originalPattern] = false; + newValue[e.pattern] = e.sibling ? { when: e.sibling } : true; } } From 30b1a27aaeb7077c4e44b8e87ade1c243ff014d4 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 16:18:06 -0700 Subject: [PATCH 10/12] Keep display of exclude rows sorted --- .../parts/preferences/browser/settingsTree.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index ca990138fff..34833b637e9 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -21,7 +21,6 @@ import { onUnexpectedError } from 'vs/base/common/errors'; import { Emitter, Event } from 'vs/base/common/event'; import { KeyCode } from 'vs/base/common/keyCodes'; import { dispose, IDisposable } from 'vs/base/common/lifecycle'; -import * as objects from 'vs/base/common/objects'; import { escapeRegExpCharacters, startsWith } from 'vs/base/common/strings'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -816,9 +815,21 @@ export class SettingsRenderer implements ITreeRenderer { } } + const sortKeys = (obj) => { + const keyArray = Object.keys(obj) + .map(key => ({ key, val: obj[key] })) + .sort((a, b) => a.key.localeCompare(b.key)); + + const retVal = {}; + keyArray.forEach(pair => { + retVal[pair.key] = pair.val; + }); + return retVal; + }; + this._onDidChangeSetting.fire({ key: template.context.setting.key, - value: Object.keys(newValue).length === 0 ? undefined : newValue + value: Object.keys(newValue).length === 0 ? undefined : sortKeys(newValue) }); } })); From 5106fb50b63bd3a0194d275a99ac8377f0942fe2 Mon Sep 17 00:00:00 2001 From: Jackson Kearl Date: Fri, 24 Aug 2018 16:29:46 -0700 Subject: [PATCH 11/12] Enable live update of exclude settings --- src/vs/workbench/parts/preferences/browser/settingsEditor2.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index 2b9867a41b8..37e6c8b6fb2 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts @@ -741,7 +741,9 @@ export class SettingsEditor2 extends BaseEditor { // If a single setting is being refreshed, it's ok to refresh now if that is not the focused setting if (key) { const focusedKey = focusedSetting.getAttribute(SettingsRenderer.SETTING_KEY_ATTR); - if (focusedKey === key) { + if (focusedKey === key && + !DOM.hasClass(focusedSetting, 'setting-item-exclude')) { // update `exclude`s live, as they have a separate "submit edit" step built in before this + this.updateModifiedLabelForKey(key); this.scheduleRefresh(focusedSetting, key); return TPromise.wrap(null); From 367d0adc51917178c93700c1b3500f6459f98d1a Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Sat, 25 Aug 2018 13:39:33 -0700 Subject: [PATCH 12/12] #57033 don't show notification on cmd+s --- .../workbench/parts/files/electron-browser/fileCommands.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts index 5729f0571c8..2e4edb6e547 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileCommands.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileCommands.ts @@ -42,7 +42,6 @@ import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { IEditorGroupsService } from 'vs/workbench/services/group/common/editorGroupsService'; import { ILabelService } from 'vs/platform/label/common/label'; -import { SettingsEditor2 } from 'vs/workbench/parts/preferences/browser/settingsEditor2'; // Commands @@ -162,11 +161,6 @@ function save( // Just save return textFileService.save(resource, { force: true /* force a change to the file to trigger external watchers if any */ }); - } else if (resource && resource.scheme === Schemas.vscode) { - const activeControl = editorService.activeControl; - if (activeControl instanceof SettingsEditor2) { - activeControl.notifyNoSaveNeeded(); - } } return TPromise.as(false);