From 4198b4ec514f7c19c193de916b8499cec12ed3b3 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 7 Feb 2018 12:10:16 +0100 Subject: [PATCH] debug debt: introduce debug.openBreakpointToSide --- .../debug/electron-browser/breakpointsView.ts | 31 ++++++------------- .../debug/electron-browser/debugCommands.ts | 21 +++++++++++++ 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/vs/workbench/parts/debug/electron-browser/breakpointsView.ts b/src/vs/workbench/parts/debug/electron-browser/breakpointsView.ts index 724fcc49297..abfc715311e 100644 --- a/src/vs/workbench/parts/debug/electron-browser/breakpointsView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/breakpointsView.ts @@ -26,7 +26,7 @@ import { Separator } from 'vs/base/browser/ui/actionbar/actionbar'; import { IDelegate, IListContextMenuEvent, IRenderer } from 'vs/base/browser/ui/list/list'; import { IEditorService, IEditor } from 'vs/platform/editor/common/editor'; import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; -import { IKeyboardEvent, StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; +import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; import { WorkbenchList } from 'vs/platform/list/browser/listService'; import { ViewsViewletPanel, IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet'; @@ -78,17 +78,6 @@ export class BreakpointsView extends ViewsViewletPanel { this.list.onContextMenu(this.onListContextMenu, this, this.disposables); - const handleBreakpointFocus = (preserveFocus: boolean, sideBySide: boolean, selectFunctionBreakpoint: boolean) => { - const focused = this.list.getFocusedElements(); - const element = focused.length ? focused[0] : undefined; - if (element instanceof Breakpoint) { - openBreakpointSource(element, sideBySide, preserveFocus, this.debugService, this.editorService).done(undefined, onUnexpectedError); - } - if (selectFunctionBreakpoint && element instanceof FunctionBreakpoint && element !== this.debugService.getViewModel().getSelectedFunctionBreakpoint()) { - this.debugService.getViewModel().setSelectedFunctionBreakpoint(element); - this.onBreakpointsChange(); - } - }; this.disposables.push(this.list.onOpen(e => { let isSingleClick = false; let isDoubleClick = false; @@ -101,14 +90,14 @@ export class BreakpointsView extends ViewsViewletPanel { openToSide = (browserEvent.ctrlKey || browserEvent.metaKey || browserEvent.altKey); } - handleBreakpointFocus(isSingleClick, openToSide, isDoubleClick); - })); - - // TODO@Isidor this should be a command (breakpoints.openToSide) - this.disposables.push(this.list.onKeyUp(e => { - const event = new StandardKeyboardEvent(e); - if (event.equals(KeyCode.Enter) && (event.ctrlKey || event.metaKey || event.altKey)) { - handleBreakpointFocus(false, true, false); + const focused = this.list.getFocusedElements(); + const element = focused.length ? focused[0] : undefined; + if (element instanceof Breakpoint) { + openBreakpointSource(element, openToSide, isSingleClick, this.debugService, this.editorService).done(undefined, onUnexpectedError); + } + if (isDoubleClick && element instanceof FunctionBreakpoint && element !== this.debugService.getViewModel().getSelectedFunctionBreakpoint()) { + this.debugService.getViewModel().setSelectedFunctionBreakpoint(element); + this.onBreakpointsChange(); } })); @@ -495,7 +484,7 @@ class FunctionBreakpointInputRenderer implements IRenderer { +export function openBreakpointSource(breakpoint: Breakpoint, sideBySide: boolean, preserveFocus: boolean, debugService: IDebugService, editorService: IEditorService): TPromise { if (breakpoint.uri.scheme === DEBUG_SCHEME && debugService.state === State.Inactive) { return TPromise.as(null); } diff --git a/src/vs/workbench/parts/debug/electron-browser/debugCommands.ts b/src/vs/workbench/parts/debug/electron-browser/debugCommands.ts index f42948dd513..212d0a23ad4 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugCommands.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugCommands.ts @@ -23,6 +23,7 @@ import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { openBreakpointSource } from 'vs/workbench/parts/debug/electron-browser/breakpointsView'; export function registerCommands(): void { @@ -215,4 +216,24 @@ export function registerCommands(): void { group: 'debug', order: 1 }); + + KeybindingsRegistry.registerCommandAndKeybindingRule({ + id: 'debug.openBreakpointToSide', + weight: KeybindingsRegistry.WEIGHT.workbenchContrib(), + when: CONTEXT_BREAKPOINTS_FOCUSED, + primary: KeyMod.CtrlCmd | KeyCode.Enter, + secondary: [KeyMod.Alt | KeyCode.Enter], + handler: (accessor) => { + const listService = accessor.get(IListService); + const list = listService.lastFocusedList; + if (list instanceof List) { + const focus = list.getFocusedElements(); + if (focus.length && focus[0] instanceof Breakpoint) { + return openBreakpointSource(focus[0], true, false, accessor.get(IDebugService), accessor.get(IWorkbenchEditorService)); + } + } + + return TPromise.as(undefined); + } + }); } -- GitLab