Skip to content

Commit 01d9297

Browse files
gvolIvan Andrus
andauthored
Add dap-up-stack-frame and dap-down-stack-frame (#485)
Co-authored-by: Ivan Andrus <[email protected]>
1 parent cc395e0 commit 01d9297

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

dap-hydra.el

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,11 @@
3838
_n_: Next _ss_: Session _bb_: Toggle _dd_: Debug _ee_: Eval
3939
_i_: Step in _st_: Thread _bd_: Delete _dr_: Debug recent _er_: Eval region
4040
_o_: Step out _sf_: Stack frame _ba_: Add _dl_: Debug last _es_: Eval thing at point
41-
_c_: Continue _sl_: List locals _bc_: Set condition _de_: Edit debug template _ea_: Add expression.
42-
_r_: Restart frame _sb_: List breakpoints _bh_: Set hit count
43-
_Q_: Disconnect _sS_: List sessions _bl_: Set log message
41+
_c_: Continue _su_: Up stack frame _bc_: Set condition _de_: Edit debug template _ea_: Add expression.
42+
_r_: Restart frame _sd_: Down stack frame _bh_: Set hit count
43+
_Q_: Disconnect _sl_: List locals _bl_: Set log message
44+
_sb_: List breakpoints
45+
_sS_: List sessions
4446
"
4547
("n" dap-next)
4648
("i" dap-step-in)
@@ -50,6 +52,8 @@ _Q_: Disconnect _sS_: List sessions _bl_: Set log message
5052
("ss" dap-switch-session)
5153
("st" dap-switch-thread)
5254
("sf" dap-switch-stack-frame)
55+
("su" dap-up-stack-frame)
56+
("sd" dap-down-stack-frame)
5357
("sl" dap-ui-locals)
5458
("sb" dap-ui-breakpoints)
5559
("sS" dap-ui-sessions)

dap-mode.el

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,6 +1335,29 @@ RESULT to use for the callback."
13351335
error))
13361336
(error "No thread is currently active %s" (dap--debug-session-name (dap--cur-session)))))
13371337

1338+
(defun dap-up-stack-frame (frames)
1339+
"Switch stackframe up FRAMES frames on the current thread.
1340+
A negative value will move down frames."
1341+
(interactive "p")
1342+
(-if-let* ((session (dap--cur-session-or-die))
1343+
(thread-id (dap--debug-session-thread-id session))
1344+
(stack-frames (gethash thread-id
1345+
(dap--debug-session-thread-stack-frames session)))
1346+
(cur-frame (dap--debug-session-active-frame session))
1347+
(pos (cl-position cur-frame stack-frames))
1348+
(len (length stack-frames))
1349+
(new-pos (min (1- len) (max 0 (+ pos frames)))))
1350+
(if (eq pos new-pos)
1351+
(error "Already at the %s of the stack" (if (<= pos 0) "bottom" "top"))
1352+
(dap--go-to-stack-frame session (nth new-pos stack-frames)))
1353+
(error "Unable to find active session, thread, or frame.")))
1354+
1355+
(defun dap-down-stack-frame (frames)
1356+
"Switch stackframe down FRAMES frames on the current thread.
1357+
A negative value will move up frames."
1358+
(interactive "p")
1359+
(dap-up-stack-frame (- frames)))
1360+
13381361
(defun dap--calculate-unique-name (debug-session-name debug-sessions)
13391362
"Calculate unique name with prefix DEBUG-SESSION-NAME.
13401363
DEBUG-SESSIONS - list of the currently active sessions."

0 commit comments

Comments
 (0)