diff options
Diffstat (limited to 'src/vs/workbench/services/keybinding/browser/keybindingService.ts')
-rw-r--r-- | src/vs/workbench/services/keybinding/browser/keybindingService.ts | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/vs/workbench/services/keybinding/browser/keybindingService.ts b/src/vs/workbench/services/keybinding/browser/keybindingService.ts index ccd362686a0..fe4650f771f 100644 --- a/src/vs/workbench/services/keybinding/browser/keybindingService.ts +++ b/src/vs/workbench/services/keybinding/browser/keybindingService.ts @@ -50,7 +50,7 @@ import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { dirname } from 'vs/base/common/resources'; import { getAllUnboundCommands } from 'vs/workbench/services/keybinding/browser/unboundCommands'; import { UserSettingsLabelProvider } from 'vs/base/common/keybindingLabels'; -import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile'; +import { DidChangeUserDataProfileEvent, IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile'; interface ContributedKeyBinding { command: string; @@ -738,10 +738,15 @@ class UserKeybindings extends Disposable { } })); - this._register(userDataProfileService.onDidChangeCurrentProfile(e => { - this.watch(); - this.reloadConfigurationScheduler.schedule(); - })); + this._register(userDataProfileService.onDidChangeCurrentProfile(e => e.join(this.whenCurrentProfieChanged(e)))); + } + + private async whenCurrentProfieChanged(e: DidChangeUserDataProfileEvent): Promise<void> { + if (e.preserveData) { + await this.fileService.copy(e.previous.keybindingsResource, e.profile.keybindingsResource); + } + this.watch(); + this.reloadConfigurationScheduler.schedule(); } private watch(): void { |