diff --git a/src/vs/workbench/browser/parts/menubar/menubarPart.ts b/src/vs/workbench/browser/parts/menubar/menubarPart.ts index 08e654839f54e220e4899aa4803c98bf8600b37e..b204fb7626ce8ca9346ce3aa42c2fcc3563e2b43 100644 --- a/src/vs/workbench/browser/parts/menubar/menubarPart.ts +++ b/src/vs/workbench/browser/parts/menubar/menubarPart.ts @@ -183,10 +183,6 @@ export class MenubarPart extends Part { return enableMenuBarMnemonics; } - private get currentMultiCursorSetting(): string { - return this.configurationService.getValue('editor.multiCursorModifier'); - } - private get currentAutoSaveSetting(): string { return this.configurationService.getValue('files.autoSave'); } @@ -463,16 +459,6 @@ export class MenubarPart extends Part { private calculateActionLabel(action: IAction | IMenubarMenuItemAction): string { let label = action.label; switch (action.id) { - case 'workbench.action.toggleMultiCursorModifier': - if (this.currentMultiCursorSetting === 'ctrlCmd') { - label = nls.localize('miMultiCursorAlt', "Switch to Alt+Click for Multi-Cursor"); - } else { - label = isMacintosh - ? nls.localize('miMultiCursorCmd', "Switch to Cmd+Click for Multi-Cursor") - : nls.localize('miMultiCursorCtrl', "Switch to Ctrl+Click for Multi-Cursor"); - } - break; - case 'workbench.action.toggleSidebarPosition': if (this.currentSidebarPosition !== 'right') { label = nls.localize({ key: 'miMoveSidebarRight', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Right"); diff --git a/src/vs/workbench/parts/codeEditor/codeEditor.contribution.ts b/src/vs/workbench/parts/codeEditor/codeEditor.contribution.ts index a4085223ade5fe813babcfbd1bc6a1afd4768c35..cc4c07f981a2a4bcaaec0bc6f71b0a600b792dc3 100644 --- a/src/vs/workbench/parts/codeEditor/codeEditor.contribution.ts +++ b/src/vs/workbench/parts/codeEditor/codeEditor.contribution.ts @@ -6,7 +6,6 @@ import './electron-browser/accessibility'; import './electron-browser/inspectKeybindings'; import './electron-browser/largeFileOptimizations'; -import './electron-browser/menubarRegistrations'; import './electron-browser/menuPreventer'; import './electron-browser/selectionClipboard'; import './electron-browser/textMate/inspectTMScopes'; diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/menubarRegistrations.ts b/src/vs/workbench/parts/codeEditor/electron-browser/menubarRegistrations.ts deleted file mode 100644 index 4a47f3ee6563eddf4368f6cda420011d8e4ff283..0000000000000000000000000000000000000000 --- a/src/vs/workbench/parts/codeEditor/electron-browser/menubarRegistrations.ts +++ /dev/null @@ -1,23 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * 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 * as nls from 'vs/nls'; -import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; - -selectionMenuRegistration(); - -function selectionMenuRegistration() { - - MenuRegistry.appendMenuItem(MenuId.MenubarSelectionMenu, { - group: '3_multi', - command: { - id: 'workbench.action.toggleMultiCursorModifier', - title: nls.localize('miMultiCursorAlt', "Switch to Alt+Click for Multi-Cursor") - }, - order: 1 - }); - -} diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts b/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts index e7b79739e014a749266eca803b1c5b68e7336bc5..608554450f8d0fe41a5e2338267a5f23da5b660e 100644 --- a/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts +++ b/src/vs/workbench/parts/codeEditor/electron-browser/toggleMultiCursorModifier.ts @@ -6,11 +6,15 @@ import { TPromise } from 'vs/base/common/winjs.base'; import * as nls from 'vs/nls'; +import * as platform from 'vs/base/common/platform'; import { Registry } from 'vs/platform/registry/common/platform'; import { Action } from 'vs/base/common/actions'; -import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; +import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions'; import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; +import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; +import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; +import { RawContextKey, IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey'; export class ToggleMultiCursorModifierAction extends Action { @@ -35,5 +39,55 @@ export class ToggleMultiCursorModifierAction extends Action { } } +const multiCursorModifier = new RawContextKey('multiCursorModifier', 'altKey'); + +class MultiCursorModifierContextKeyController implements IWorkbenchContribution { + + private readonly _multiCursorModifier: IContextKey; + + constructor( + @IConfigurationService private readonly configurationService: IConfigurationService, + @IContextKeyService contextKeyService: IContextKeyService + ) { + this._multiCursorModifier = multiCursorModifier.bindTo(contextKeyService); + configurationService.onDidChangeConfiguration((e) => { + if (e.affectsConfiguration('editor.multiCursorModifier')) { + this._update(); + } + }); + } + + private _update(): void { + const editorConf = this.configurationService.getValue<{ multiCursorModifier: 'ctrlCmd' | 'alt' }>('editor'); + const value = (editorConf.multiCursorModifier === 'ctrlCmd' ? 'ctrlCmd' : 'altKey'); + this._multiCursorModifier.set(value); + } +} + +Registry.as(WorkbenchExtensions.Workbench).registerWorkbenchContribution(MultiCursorModifierContextKeyController, LifecyclePhase.Running); + + const registry = Registry.as(Extensions.WorkbenchActions); registry.registerWorkbenchAction(new SyncActionDescriptor(ToggleMultiCursorModifierAction, ToggleMultiCursorModifierAction.ID, ToggleMultiCursorModifierAction.LABEL), 'Toggle Multi-Cursor Modifier'); +MenuRegistry.appendMenuItem(MenuId.MenubarSelectionMenu, { + group: '3_multi', + command: { + id: ToggleMultiCursorModifierAction.ID, + title: nls.localize('miMultiCursorAlt', "Switch to Alt+Click for Multi-Cursor") + }, + when: multiCursorModifier.isEqualTo('ctrlCmd'), + order: 1 +}); +MenuRegistry.appendMenuItem(MenuId.MenubarSelectionMenu, { + group: '3_multi', + command: { + id: ToggleMultiCursorModifierAction.ID, + title: ( + platform.isMacintosh + ? nls.localize('miMultiCursorCmd', "Switch to Cmd+Click for Multi-Cursor") + : nls.localize('miMultiCursorCtrl', "Switch to Ctrl+Click for Multi-Cursor") + ) + }, + when: multiCursorModifier.isEqualTo('altKey'), + order: 1 +}); \ No newline at end of file