Skip to content

Commit

Permalink
debug debt: cleanup column breakpoint actions -> commands
Browse files Browse the repository at this point in the history
  • Loading branch information
isidorn committed Feb 7, 2018
1 parent ee9f1e7 commit 370e10e
Showing 1 changed file with 40 additions and 53 deletions.
93 changes: 40 additions & 53 deletions src/vs/workbench/parts/debug/browser/debugEditorActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';

class ToggleBreakpointAction extends EditorAction {
constructor() {
Expand Down Expand Up @@ -49,62 +52,48 @@ class ToggleBreakpointAction extends EditorAction {
}
}

function addColumnBreakpoint(accessor: ServicesAccessor, editor: ICodeEditor, remove: boolean): TPromise<any> {
const debugService = accessor.get(IDebugService);

const position = editor.getPosition();
const modelUri = editor.getModel().uri;
const bp = debugService.getModel().getBreakpoints()
.filter(bp => bp.lineNumber === position.lineNumber && bp.column === position.column && bp.uri.toString() === modelUri.toString()).pop();

if (bp) {
return remove ? debugService.removeBreakpoints(bp.getId()) : TPromise.as(null);
}
if (debugService.getConfigurationManager().canSetBreakpointsIn(editor.getModel())) {
return debugService.addBreakpoints(modelUri, [{ lineNumber: position.lineNumber, column: position.column }]);
}

return TPromise.as(null);
}

class ToggleColumnBreakpointAction extends EditorAction {
constructor() {
super({
id: 'editor.debug.action.toggleColumnBreakpoint',
label: nls.localize('columnBreakpointAction', "Debug: Column Breakpoint"),
alias: 'Debug: Column Breakpoint',
precondition: null,
kbOpts: {
kbExpr: EditorContextKeys.textFocus,
primary: KeyMod.Shift | KeyCode.F9
const COLUMN_BREAKPOINT_COMMAND_ID = 'editor.debug.action.toggleColumnBreakpoint';
CommandsRegistry.registerCommand({
id: COLUMN_BREAKPOINT_COMMAND_ID,
handler: (accessor) => {
const debugService = accessor.get(IDebugService);
const editorService = accessor.get(IWorkbenchEditorService);
const editor = editorService.getActiveEditor();
const control = editor && <ICodeEditor>editor.getControl();
if (control) {
const position = control.getPosition();
const modelUri = control.getModel().uri;
const bp = debugService.getModel().getBreakpoints()
.filter(bp => bp.lineNumber === position.lineNumber && bp.column === position.column && bp.uri.toString() === modelUri.toString()).pop();

if (bp) {
return TPromise.as(null);
}
});
}

public run(accessor: ServicesAccessor, editor: ICodeEditor): TPromise<any> {
return addColumnBreakpoint(accessor, editor, true);
}
}

// TODO@Isidor merge two column breakpoints actions together
class ToggleColumnBreakpointContextMenuAction extends EditorAction {
constructor() {
super({
id: 'editor.debug.action.toggleColumnBreakpointContextMenu',
label: nls.localize('columnBreakpoint', "Add Column Breakpoint"),
alias: 'Toggle Column Breakpoint',
precondition: ContextKeyExpr.and(CONTEXT_IN_DEBUG_MODE, CONTEXT_NOT_IN_DEBUG_REPL, EditorContextKeys.writable),
menuOpts: {
group: 'debug',
order: 1
if (debugService.getConfigurationManager().canSetBreakpointsIn(control.getModel())) {
return debugService.addBreakpoints(modelUri, [{ lineNumber: position.lineNumber, column: position.column }]);
}
});
}

return TPromise.as(null);
}
});

public run(accessor: ServicesAccessor, editor: ICodeEditor): TPromise<any> {
return addColumnBreakpoint(accessor, editor, false);
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
command: {
id: COLUMN_BREAKPOINT_COMMAND_ID,
title: nls.localize('columnBreakpoint', "Column Breakpoint"),
category: nls.localize('debug', "Debug")
}
}
});
MenuRegistry.appendMenuItem(MenuId.EditorContext, {
command: {
id: COLUMN_BREAKPOINT_COMMAND_ID,
title: nls.localize('addColumnBreakpoint', "Add Column Breakpoint")
},
when: ContextKeyExpr.and(CONTEXT_IN_DEBUG_MODE, CONTEXT_NOT_IN_DEBUG_REPL, EditorContextKeys.writable),
group: 'debug',
order: 1
});

class ConditionalBreakpointAction extends EditorAction {

Expand Down Expand Up @@ -268,8 +257,6 @@ class CloseBreakpointWidgetCommand extends EditorCommand {
}

registerEditorAction(ToggleBreakpointAction);
registerEditorAction(ToggleColumnBreakpointAction);
registerEditorAction(ToggleColumnBreakpointContextMenuAction);
registerEditorAction(ConditionalBreakpointAction);
registerEditorAction(RunToCursorAction);
registerEditorAction(SelectionToReplAction);
Expand Down

0 comments on commit 370e10e

Please sign in to comment.