aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-term/src/commands/dap.rs23
1 files changed, 20 insertions, 3 deletions
diff --git a/helix-term/src/commands/dap.rs b/helix-term/src/commands/dap.rs
index b30dc8c0..023ed377 100644
--- a/helix-term/src/commands/dap.rs
+++ b/helix-term/src/commands/dap.rs
@@ -475,19 +475,36 @@ pub fn dap_variables(cx: &mut Context) {
if debugger.thread_id.is_none() {
cx.editor
- .set_status("Cannot access variables while target is running");
+ .set_status("Cannot access variables while target is running.");
return;
}
let (frame, thread_id) = match (debugger.active_frame, debugger.thread_id) {
(Some(frame), Some(thread_id)) => (frame, thread_id),
_ => {
cx.editor
- .set_status("Cannot find current stack frame to access variables");
+ .set_status("Cannot find current stack frame to access variables.");
return;
}
};
- let frame_id = debugger.stack_frames[&thread_id][frame].id;
+ let thread_frame = match debugger.stack_frames.get(&thread_id) {
+ Some(thread_frame) => thread_frame,
+ None => {
+ cx.editor
+ .set_error("Failed to get stack frame for thread: {thread_id}");
+ return;
+ }
+ };
+ let stack_frame = match thread_frame.get(frame) {
+ Some(stack_frame) => stack_frame,
+ None => {
+ cx.editor
+ .set_error("Failed to get stack frame for thread {thread_id} and frame {frame}.");
+ return;
+ }
+ };
+
+ let frame_id = stack_frame.id;
let scopes = match block_on(debugger.scopes(frame_id)) {
Ok(s) => s,
Err(e) => {