From b5485273fc2d7f32eae808d19d9dd526f3dbb155 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 9 Feb 2017 15:21:14 +0100 Subject: [PATCH] array destructure ftw --- .../accessibility/browser/accessibility.ts | 6 ++--- .../contextmenu/browser/contextmenu.ts | 7 ++---- .../browser/defineKeybinding.ts | 6 ++--- .../contrib/find/browser/findOptionsWidget.ts | 6 ++--- .../editor/contrib/find/browser/findWidget.ts | 6 ++--- .../contrib/suggest/browser/suggestWidget.ts | 4 ++-- .../actions/browser/menuItemActionItem.ts | 2 +- .../parts/activitybar/activitybarActions.ts | 13 +++++------ .../workbench/browser/parts/compositePart.ts | 13 +++-------- .../browser/parts/editor/titleControl.ts | 7 ++---- .../browser/parts/panel/panelActions.ts | 7 ++---- src/vs/workbench/browser/viewlet.ts | 14 ++++-------- src/vs/workbench/electron-browser/window.ts | 7 ++---- .../parts/debug/browser/debugActions.ts | 2 +- .../parts/files/browser/fileActions.ts | 22 +++---------------- .../markers/browser/markersTreeController.ts | 7 ++---- .../preferences/browser/preferencesWidgets.ts | 4 ++-- .../parts/search/browser/searchWidget.ts | 4 ++-- .../electron-browser/terminalPanel.ts | 6 ++--- .../parts/update/electron-browser/update.ts | 2 +- .../electron-browser/walkThroughPart.ts | 4 ++-- 21 files changed, 51 insertions(+), 98 deletions(-) diff --git a/src/vs/editor/contrib/accessibility/browser/accessibility.ts b/src/vs/editor/contrib/accessibility/browser/accessibility.ts index ba190f6192a..8e5d71982e3 100644 --- a/src/vs/editor/contrib/accessibility/browser/accessibility.ts +++ b/src/vs/editor/contrib/accessibility/browser/accessibility.ts @@ -139,9 +139,9 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { } private _descriptionForCommand(commandId: string, msg: string, noKbMsg: string): string { - let keybindings = this._keybindingService.lookupKeybindings(commandId); - if (keybindings.length > 0) { - return strings.format(msg, this._keybindingService.getAriaLabelFor(keybindings[0])); + let [kb] = this._keybindingService.lookupKeybindings(commandId); + if (kb) { + return strings.format(msg, this._keybindingService.getAriaLabelFor(kb)); } return strings.format(noKbMsg, commandId); } diff --git a/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts b/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts index 326b615d401..680ef40e950 100644 --- a/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts +++ b/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts @@ -200,11 +200,8 @@ export class ContextMenuController implements IEditorContribution { } private _keybindingFor(action: IAction): Keybinding { - var opts = this._keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } - return null; + var [kb] = this._keybindingService.lookupKeybindings(action.id); + return kb; } public getId(): string { diff --git a/src/vs/editor/contrib/defineKeybinding/browser/defineKeybinding.ts b/src/vs/editor/contrib/defineKeybinding/browser/defineKeybinding.ts index 2078b0a0418..2985f6dad70 100644 --- a/src/vs/editor/contrib/defineKeybinding/browser/defineKeybinding.ts +++ b/src/vs/editor/contrib/defineKeybinding/browser/defineKeybinding.ts @@ -242,10 +242,10 @@ class DefineKeybindingLauncherWidget implements IOverlayWidget { this._domNode.className = 'defineKeybindingLauncher'; this._domNode.style.display = 'none'; this._isVisible = false; - let keybinding = keybindingService.lookupKeybindings(DefineKeybindingAction.ID); + let [keybinding] = keybindingService.lookupKeybindings(DefineKeybindingAction.ID); let extra = ''; - if (keybinding.length > 0) { - extra += ' (' + keybindingService.getLabelFor(keybinding[0]) + ')'; + if (keybinding) { + extra += ' (' + keybindingService.getLabelFor(keybinding) + ')'; } this._domNode.appendChild(document.createTextNode(NLS_LAUNCH_MESSAGE + extra)); diff --git a/src/vs/editor/contrib/find/browser/findOptionsWidget.ts b/src/vs/editor/contrib/find/browser/findOptionsWidget.ts index c151995f05a..6fa0415ccc2 100644 --- a/src/vs/editor/contrib/find/browser/findOptionsWidget.ts +++ b/src/vs/editor/contrib/find/browser/findOptionsWidget.ts @@ -89,11 +89,11 @@ export class FindOptionsWidget extends Widget implements IOverlayWidget { } private _keybindingLabelFor(actionId: string): string { - let keybindings = this._keybindingService.lookupKeybindings(actionId); - if (keybindings.length === 0) { + let [kb] = this._keybindingService.lookupKeybindings(actionId); + if (!kb) { return ''; } - return ' (' + this._keybindingService.getLabelFor(keybindings[0]) + ')'; + return ` (${this._keybindingService.getLabelFor(kb)})`; } public dispose(): void { diff --git a/src/vs/editor/contrib/find/browser/findWidget.ts b/src/vs/editor/contrib/find/browser/findWidget.ts index 09e816e3075..662d40405a8 100644 --- a/src/vs/editor/contrib/find/browser/findWidget.ts +++ b/src/vs/editor/contrib/find/browser/findWidget.ts @@ -420,11 +420,11 @@ export class FindWidget extends Widget implements IOverlayWidget { // ----- initialization private _keybindingLabelFor(actionId: string): string { - let keybindings = this._keybindingService.lookupKeybindings(actionId); - if (keybindings.length === 0) { + let [kb] = this._keybindingService.lookupKeybindings(actionId); + if (!kb) { return ''; } - return ' (' + this._keybindingService.getLabelFor(keybindings[0]) + ')'; + return ` (${this._keybindingService.getLabelFor(kb)})`; } private _buildFindPart(): HTMLElement { diff --git a/src/vs/editor/contrib/suggest/browser/suggestWidget.ts b/src/vs/editor/contrib/suggest/browser/suggestWidget.ts index 6f73e0f187f..4e1bee69956 100644 --- a/src/vs/editor/contrib/suggest/browser/suggestWidget.ts +++ b/src/vs/editor/contrib/suggest/browser/suggestWidget.ts @@ -62,8 +62,8 @@ class Renderer implements IRenderer { private editor: ICodeEditor, @IKeybindingService keybindingService: IKeybindingService ) { - const keybindings = keybindingService.lookupKeybindings('editor.action.triggerSuggest'); - this.triggerKeybindingLabel = keybindings.length === 0 ? '' : ` (${keybindingService.getLabelFor(keybindings[0])})`; + const [kb] = keybindingService.lookupKeybindings('editor.action.triggerSuggest'); + this.triggerKeybindingLabel = !kb ? '' : ` (${keybindingService.getLabelFor(kb)})`; } get templateId(): string { diff --git a/src/vs/platform/actions/browser/menuItemActionItem.ts b/src/vs/platform/actions/browser/menuItemActionItem.ts index 86d1128e165..ab3ab2e41a6 100644 --- a/src/vs/platform/actions/browser/menuItemActionItem.ts +++ b/src/vs/platform/actions/browser/menuItemActionItem.ts @@ -153,7 +153,7 @@ class MenuItemActionItem extends ActionItem { _updateTooltip(): void { const element = this.$e.getHTMLElement(); - const keybinding = this._keybindingService.lookupKeybindings(this._command.id)[0]; + const [keybinding] = this._keybindingService.lookupKeybindings(this._command.id); const keybindingLabel = keybinding && this._keybindingService.getLabelFor(keybinding); element.title = keybindingLabel diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts index ba253f8beee..69885cd105e 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts @@ -140,9 +140,9 @@ export class ActivityActionItem extends BaseActionItem { } private getKeybindingLabel(id: string): string { - const keys = this.keybindingService.lookupKeybindings(id).map(k => this.keybindingService.getLabelFor(k)); - if (keys && keys.length) { - return keys[0]; + const [kb] = this.keybindingService.lookupKeybindings(id); + if (kb) { + return this.keybindingService.getLabelFor(kb); } return null; @@ -455,12 +455,9 @@ export class ViewletOverflowActivityActionItem extends BaseActionItem { } private getKeybinding(action: IAction): Keybinding { - const opts = this.keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } + const [kb] = this.keybindingService.lookupKeybindings(action.id); - return null; + return kb; } private getActions(): OpenViewletAction[] { diff --git a/src/vs/workbench/browser/parts/compositePart.ts b/src/vs/workbench/browser/parts/compositePart.ts index 7858610818c..3e08c71eac0 100644 --- a/src/vs/workbench/browser/parts/compositePart.ts +++ b/src/vs/workbench/browser/parts/compositePart.ts @@ -340,11 +340,7 @@ export abstract class CompositePart extends Part { compositeTitle = compositeDescriptor.name; } - let keybinding: string = null; - let keys = this.keybindingService.lookupKeybindings(compositeId).map(k => this.keybindingService.getLabelFor(k)); - if (keys && keys.length) { - keybinding = keys[0]; - } + let [keybinding] = this.keybindingService.lookupKeybindings(compositeId).map(k => this.keybindingService.getLabelFor(k)); this.titleLabel.updateTitle(compositeId, compositeTitle, keybinding); @@ -426,12 +422,9 @@ export abstract class CompositePart extends Part { actionItemProvider: (action: Action) => this.actionItemProvider(action), orientation: ActionsOrientation.HORIZONTAL, getKeyBinding: (action) => { - const opts = this.keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } + const [kb] = this.keybindingService.lookupKeybindings(action.id); - return null; + return kb; }, getKeyBindingLabel: (key) => this.keybindingService.getLabelFor(key) }); diff --git a/src/vs/workbench/browser/parts/editor/titleControl.ts b/src/vs/workbench/browser/parts/editor/titleControl.ts index bd997951c32..871cbb1d9df 100644 --- a/src/vs/workbench/browser/parts/editor/titleControl.ts +++ b/src/vs/workbench/browser/parts/editor/titleControl.ts @@ -435,12 +435,9 @@ export abstract class TitleControl implements ITitleAreaControl { } protected getKeybinding(action: IAction): Keybinding { - const opts = this.keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } + const [kb] = this.keybindingService.lookupKeybindings(action.id); - return null; + return kb; } protected getKeybindingLabel(action: IAction): string { diff --git a/src/vs/workbench/browser/parts/panel/panelActions.ts b/src/vs/workbench/browser/parts/panel/panelActions.ts index a625a737d8e..dc934ddd9f9 100644 --- a/src/vs/workbench/browser/parts/panel/panelActions.ts +++ b/src/vs/workbench/browser/parts/panel/panelActions.ts @@ -44,12 +44,9 @@ export class PanelAction extends Action { } private getKeybindingLabel(id: string): string { - const keys = this.keybindingService.lookupKeybindings(id).map(k => this.keybindingService.getLabelFor(k)); - if (keys && keys.length) { - return keys[0]; - } + const [keys] = this.keybindingService.lookupKeybindings(id).map(k => this.keybindingService.getLabelFor(k)); - return null; + return keys; } } diff --git a/src/vs/workbench/browser/viewlet.ts b/src/vs/workbench/browser/viewlet.ts index eab5164b635..5f19a15bd1c 100644 --- a/src/vs/workbench/browser/viewlet.ts +++ b/src/vs/workbench/browser/viewlet.ts @@ -344,12 +344,9 @@ export abstract class AdaptiveCollapsibleViewletView extends FixedCollapsibleVie actionItemProvider: (action) => { return this.getActionItem(action); }, ariaLabel: nls.localize('viewToolbarAriaLabel', "{0} actions", this.viewName), getKeyBinding: (action) => { - const opts = this.keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } + const [kb] = this.keybindingService.lookupKeybindings(action.id); - return null; + return kb; }, getKeyBindingLabel: (key) => this.keybindingService.getLabelFor(key) }); @@ -481,12 +478,9 @@ export abstract class CollapsibleViewletView extends CollapsibleView implements actionItemProvider: (action) => { return this.getActionItem(action); }, ariaLabel: nls.localize('viewToolbarAriaLabel', "{0} actions", this.viewName), getKeyBinding: (action) => { - const opts = this.keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } + const [kb] = this.keybindingService.lookupKeybindings(action.id); - return null; + return kb; }, getKeyBindingLabel: (key) => this.keybindingService.getLabelFor(key) }); diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index d919682aa06..880cad3a2bf 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -319,12 +319,9 @@ export class ElectronWindow { getAnchor: () => target, getActions: () => TPromise.as(TextInputActions), getKeyBinding: action => { - const opts = this.keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } + const [kb] = this.keybindingService.lookupKeybindings(action.id); - return null; + return kb; } }); } diff --git a/src/vs/workbench/parts/debug/browser/debugActions.ts b/src/vs/workbench/parts/debug/browser/debugActions.ts index d47b5d24d47..f27e3472ec8 100644 --- a/src/vs/workbench/parts/debug/browser/debugActions.ts +++ b/src/vs/workbench/parts/debug/browser/debugActions.ts @@ -42,7 +42,7 @@ export abstract class AbstractDebugAction extends Action { } public get tooltip(): string { - const keybinding = this.keybindingService.lookupKeybindings(this.id)[0]; + const [keybinding] = this.keybindingService.lookupKeybindings(this.id); const keybindingLabel = keybinding && this.keybindingService.getLabelFor(keybinding); return keybindingLabel ? `${this.label} (${keybindingLabel})` : this.label; diff --git a/src/vs/workbench/parts/files/browser/fileActions.ts b/src/vs/workbench/parts/files/browser/fileActions.ts index 443bf5072ec..b3c5f2e0fd0 100644 --- a/src/vs/workbench/parts/files/browser/fileActions.ts +++ b/src/vs/workbench/parts/files/browser/fileActions.ts @@ -43,7 +43,7 @@ import { Position, IResourceInput, IEditorInput } from 'vs/platform/editor/commo import { IInstantiationService, IConstructorSignature2, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IMessageService, IMessageWithAction, IConfirmation, Severity, CancelAction } from 'vs/platform/message/common/message'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { Keybinding, KeyMod, KeyCode } from 'vs/base/common/keyCodes'; +import { Keybinding } from 'vs/base/common/keyCodes'; import { getCodeEditor } from 'vs/editor/common/services/codeEditorService'; import { IEditorViewState } from 'vs/editor/common/editorCommon'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; @@ -1925,25 +1925,9 @@ export class GlobalCopyPathAction extends Action { } export function keybindingForAction(id: string, keybindingService: IKeybindingService): Keybinding { - switch (id) { - case GlobalNewUntitledFileAction.ID: - return new Keybinding(KeyMod.CtrlCmd | KeyCode.KEY_N); - case SaveFileAction.ID: - return new Keybinding(KeyMod.CtrlCmd | KeyCode.KEY_S); - case CopyFileAction.ID: - return new Keybinding(KeyMod.CtrlCmd | KeyCode.KEY_C); - case PasteFileAction.ID: - return new Keybinding(KeyMod.CtrlCmd | KeyCode.KEY_V); - } + const [kb] = keybindingService.lookupKeybindings(id); - if (keybindingService) { - const keys = keybindingService.lookupKeybindings(id); - if (keys.length > 0) { - return keys[0]; // only take the first one - } - } - - return null; + return kb; } export function validateFileName(parent: IFileStat, name: string, allowOverwriting: boolean = false): string { diff --git a/src/vs/workbench/parts/markers/browser/markersTreeController.ts b/src/vs/workbench/parts/markers/browser/markersTreeController.ts index 14f008999e9..a2189a44fa2 100644 --- a/src/vs/workbench/parts/markers/browser/markersTreeController.ts +++ b/src/vs/workbench/parts/markers/browser/markersTreeController.ts @@ -151,10 +151,7 @@ export class Controller extends treedefaults.DefaultController { } private _keybindingFor(action: IAction): Keybinding { - var opts = this._keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one - } - return null; + var [kb] = this._keybindingService.lookupKeybindings(action.id); + return kb; } } diff --git a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts index cff48149d43..b6851490767 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts @@ -325,8 +325,8 @@ export class FloatingClickWidget extends Widget implements IOverlayWidget { ) { super(); if (keyBindingAction) { - let keybinding = keybindingService.lookupKeybindings(keyBindingAction); - if (keybinding.length > 0) { + let [keybinding] = keybindingService.lookupKeybindings(keyBindingAction); + if (keybinding) { this.label += ' (' + keybindingService.getLabelFor(keybinding[0]) + ')'; } } diff --git a/src/vs/workbench/parts/search/browser/searchWidget.ts b/src/vs/workbench/parts/search/browser/searchWidget.ts index c2bdb2895a7..ebc7e20e31e 100644 --- a/src/vs/workbench/parts/search/browser/searchWidget.ts +++ b/src/vs/workbench/parts/search/browser/searchWidget.ts @@ -69,8 +69,8 @@ export class SearchWidget extends Widget { private static REPLACE_ALL_DISABLED_LABEL = nls.localize('search.action.replaceAll.disabled.label', "Replace All (Submit Search to Enable)"); private static REPLACE_ALL_ENABLED_LABEL = (keyBindingService2: IKeybindingService): string => { - let keybindings = keyBindingService2.lookupKeybindings(ReplaceAllAction.ID); - return appendKeyBindingLabel(nls.localize('search.action.replaceAll.enabled.label', "Replace All"), keybindings[0], keyBindingService2); + let [kb] = keyBindingService2.lookupKeybindings(ReplaceAllAction.ID); + return appendKeyBindingLabel(nls.localize('search.action.replaceAll.enabled.label', "Replace All"), kb, keyBindingService2); } public domNode: HTMLElement; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts index 22563a2ea94..e6f78e622e2 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts @@ -167,9 +167,9 @@ export class TerminalPanel extends Panel { getActions: () => TPromise.as(this._getContextMenuActions()), getActionsContext: () => this._parentDomElement, getKeyBinding: (action) => { - const opts = this._keybindingService.lookupKeybindings(action.id); - if (opts.length > 0) { - return opts[0]; // only take the first one + const [kb] = this._keybindingService.lookupKeybindings(action.id); + if (kb) { + return kb; } return null; } diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 9cb8477be20..99793016a4e 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -63,7 +63,7 @@ export function loadReleaseNotes(accessor: ServicesAccessor, version: string): T const patchKeybindings = (text: string): string => { const kb = (match: string, kb: string) => { - const keybinding = keybindingService.lookupKeybindings(kb)[0]; + const [keybinding] = keybindingService.lookupKeybindings(kb); if (!keybinding) { return unassigned; diff --git a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts index 86e55d20ca0..4ff47689a62 100644 --- a/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts +++ b/src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts @@ -412,7 +412,7 @@ export class WalkThroughPart extends BaseEditor { private expandMacros(input: string) { return input.replace(/kb\(([a-z.\d\-]+)\)/gi, (match: string, kb: string) => { - const keybinding = this.keybindingService.lookupKeybindings(kb)[0]; + const [keybinding] = this.keybindingService.lookupKeybindings(kb); const shortcut = keybinding ? this.keybindingService.getLabelFor(keybinding) : UNBOUND_COMMAND; return `${shortcut}`; }); @@ -422,7 +422,7 @@ export class WalkThroughPart extends BaseEditor { const keys = this.content.querySelectorAll('.shortcut[data-command]'); Array.prototype.forEach.call(keys, (key: Element) => { const command = key.getAttribute('data-command'); - const keybinding = command && this.keybindingService.lookupKeybindings(command)[0]; + const [keybinding] = command && this.keybindingService.lookupKeybindings(command); const label = keybinding ? this.keybindingService.getLabelFor(keybinding) : UNBOUND_COMMAND; key.appendChild(document.createTextNode(label)); });