提交 efd5f7a5 编写于 作者: R Rob Lourens

Add stepBack button to DebugActionsWidget -

Without checking Capabilities
上级 9b767f94
......@@ -112,6 +112,7 @@ export class DebugActionsWidget implements wbext.IWorkbenchContribution {
instantiationService.createInstance(dbgactions.StepOverDebugAction, dbgactions.StepOverDebugAction.ID, dbgactions.StepOverDebugAction.LABEL),
instantiationService.createInstance(dbgactions.StepIntoDebugAction, dbgactions.StepIntoDebugAction.ID, dbgactions.StepIntoDebugAction.LABEL),
instantiationService.createInstance(dbgactions.StepOutDebugAction, dbgactions.StepOutDebugAction.ID, dbgactions.StepOutDebugAction.LABEL),
instantiationService.createInstance(dbgactions.StepBackDebugAction, dbgactions.StepBackDebugAction.ID, dbgactions.StepBackDebugAction.LABEL),
instantiationService.createInstance(dbgactions.RestartDebugAction, dbgactions.RestartDebugAction.ID, dbgactions.RestartDebugAction.LABEL),
instantiationService.createInstance(dbgactions.StopDebugAction, dbgactions.StopDebugAction.ID, dbgactions.StopDebugAction.LABEL)
];
......
......@@ -86,6 +86,11 @@
background: url('step-out.svg') center center no-repeat;
}
.monaco-workbench .debug-action.step-back {
background: url('step-over.svg') center center no-repeat;
transform: scaleX(-1);
}
.monaco-workbench .debug-action.continue {
background: url('continue.svg') center center no-repeat;
}
......@@ -280,6 +285,11 @@
background: url('step-out-inverse.svg') center center no-repeat;
}
.vs-dark .monaco-workbench .debug-action.step-back {
background: url('step-over-inverse.svg') center center no-repeat;
transform: scaleX(-1);
}
.vs-dark .monaco-workbench .debug-action.continue {
background: url('continue-inverse.svg') center center no-repeat;
}
......@@ -340,6 +350,11 @@
background: url('step-out-inverse.svg') center center no-repeat;
}
.hc-black .monaco-workbench .debug-action.step-back {
background: url('step-over-inverse.svg') center center no-repeat;
transform: scaleX(-1);
}
.hc-black .monaco-workbench .debug-action.continue {
background: url('continue-inverse.svg') center center no-repeat;
}
......
......@@ -411,6 +411,7 @@ export interface IDebugService {
next(threadId: number): TPromise<void>;
stepIn(threadId: number): TPromise<void>;
stepOut(threadId: number): TPromise<void>;
stepBack(threadId: number): TPromise<void>;
continue(threadId: number): TPromise<void>;
pause(threadId: number): TPromise<any>;
}
......
......@@ -105,6 +105,7 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(
registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.StepOverDebugAction, dbgactions.StepOverDebugAction.ID, dbgactions.StepOverDebugAction.LABEL, { primary: KeyCode.F10 }, KbExpr.has(debug.CONTEXT_IN_DEBUG_MODE)), 'Debug: Step Over', debugCategory);
registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.StepIntoDebugAction, dbgactions.StepIntoDebugAction.ID, dbgactions.StepIntoDebugAction.LABEL, { primary: KeyCode.F11 }, KbExpr.has(debug.CONTEXT_IN_DEBUG_MODE), KeybindingsRegistry.WEIGHT.workbenchContrib(1)), 'Debug: Step Into', debugCategory);
registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.StepOutDebugAction, dbgactions.StepOutDebugAction.ID, dbgactions.StepOutDebugAction.LABEL, { primary: KeyMod.Shift | KeyCode.F11 }, KbExpr.has(debug.CONTEXT_IN_DEBUG_MODE)), 'Debug: Step Out', debugCategory);
registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.StepBackDebugAction, dbgactions.StepBackDebugAction.ID, dbgactions.StepBackDebugAction.LABEL, { primary: KeyMod.Shift | KeyCode.F10 }, KbExpr.has(debug.CONTEXT_IN_DEBUG_MODE)), 'Debug: Step Back', debugCategory);
registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.RestartDebugAction, dbgactions.RestartDebugAction.ID, dbgactions.RestartDebugAction.LABEL, { primary: KeyMod.Shift | KeyMod.CtrlCmd | KeyCode.F5 }, KbExpr.has(debug.CONTEXT_IN_DEBUG_MODE)), 'Debug: Restart', debugCategory);
registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.StopDebugAction, dbgactions.StopDebugAction.ID, dbgactions.StopDebugAction.LABEL, { primary: KeyMod.Shift | KeyCode.F5 }, KbExpr.has(debug.CONTEXT_IN_DEBUG_MODE)), 'Debug: Stop', debugCategory);
registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.ContinueAction, dbgactions.ContinueAction.ID, dbgactions.ContinueAction.LABEL, { primary: KeyCode.F5 }, KbExpr.has(debug.CONTEXT_IN_DEBUG_MODE)), 'Debug: Continue', debugCategory);
......
......@@ -218,6 +218,26 @@ export class StepOutDebugAction extends AbstractDebugAction {
}
}
export class StepBackDebugAction extends AbstractDebugAction {
static ID = 'workbench.action.debug.stepBack';
static LABEL = nls.localize('stepBackDebug', "Step Back");
constructor(id: string, label: string, @IDebugService debugService: IDebugService, @IKeybindingService keybindingService: IKeybindingService) {
super(id, label, 'debug-action step-back', debugService, keybindingService);
}
public run(thread: debug.IThread): TPromise<any> {
const threadId = thread && thread instanceof model.Thread ? thread.threadId
: this.debugService.getViewModel().getFocusedThreadId();
return this.debugService.stepBack(threadId);
}
protected isEnabled(state: debug.State): boolean {
return super.isEnabled(state) && state === debug.State.Stopped;
}
}
export class StopDebugAction extends AbstractDebugAction {
static ID = 'workbench.action.debug.stop';
static LABEL = nls.localize('stopDebug', "Stop");
......
......@@ -872,6 +872,16 @@ export class DebugService implements debug.IDebugService {
});
}
public stepBack(threadId: number): TPromise<void> {
if (!this.session) {
return TPromise.as(null);
}
return this.session.stepBack({ threadId }).then(() => {
this.lazyTransitionToRunningState(threadId);
});
}
public continue(threadId: number): TPromise<void> {
if (!this.session) {
return TPromise.as(null);
......
......@@ -234,6 +234,10 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
return this.send('stepOut', args);
}
public stepBack(args: DebugProtocol.StepBackArguments): TPromise<DebugProtocol.StepBackResponse> {
return this.send('stepBack', args);
}
public continue(args: DebugProtocol.ContinueArguments): TPromise<DebugProtocol.ContinueResponse> {
return this.send('continue', args);
}
......
......@@ -115,6 +115,10 @@ export class MockDebugService implements debug.IDebugService {
return TPromise.as(null);
}
public stepBack(threadId: number): TPromise<void> {
return TPromise.as(null);
}
public continue(threadId: number): TPromise<void> {
return TPromise.as(null);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册