aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Sharshakov2021-08-22 09:49:18 +0000
committerDmitry Sharshakov2021-08-22 09:49:18 +0000
commit838f69929db3d9d1e30fa52913a730f2e64b0681 (patch)
treeb7e436581312916d7a0f4872fe52f1ecbca5e0e2
parent060a422c7efea0892e56845ef326b59983051631 (diff)
Simplify variables display
-rw-r--r--helix-term/src/commands.rs74
-rw-r--r--helix-term/src/keymap.rs2
2 files changed, 16 insertions, 60 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 7c6e0e60..3449d94b 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -311,7 +311,7 @@ impl Command {
dap_in, "Step in",
dap_out, "Step out",
dap_next, "Step to next",
- dap_variable_scopes, "List variable scopes",
+ dap_variables, "List variables",
dap_terminate, "End debug session",
suspend, "Suspend"
);
@@ -1910,53 +1910,6 @@ mod cmd {
Ok(())
}
- fn variables(
- cx: &mut compositor::Context,
- args: &[&str],
- _event: PromptEvent,
- ) -> anyhow::Result<()> {
- use helix_lsp::block_on;
-
- let scope = args.get(0).and_then(|arg| arg.parse::<usize>().ok());
- if scope.is_none() {
- cx.editor.set_status("Please provide scope ID".to_owned());
- return Ok(());
- }
-
- if let Some(debugger) = &mut cx.editor.debugger {
- if debugger.is_running {
- cx.editor
- .set_status("Cannot access variables while target is running".to_owned());
- return Ok(());
- }
- if debugger.stack_pointer.is_none() {
- cx.editor
- .set_status("Cannot find current stack pointer to access variables".to_owned());
- return Ok(());
- }
-
- let response = block_on(debugger.variables(scope.unwrap()));
-
- let status = match response {
- Ok(vars) => {
- let mut s = String::new();
- for var in vars {
- let prefix = match var.data_type {
- Some(data_type) => format!("{} ", data_type),
- None => "".to_owned(),
- };
- s.push_str(&format!("{}{} = {}; ", prefix, var.name, var.value));
- }
- s
- }
- Err(_) => "Failed to get variables".to_owned(),
- };
-
- cx.editor.set_status(status);
- }
- Ok(())
- }
-
pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
TypableCommand {
name: "quit",
@@ -2195,13 +2148,6 @@ mod cmd {
doc: "Display tree sitter scopes, primarily for theming and development.",
fun: tree_sitter_scopes,
completer: None,
- },
- TypableCommand {
- name: "variables",
- alias: None,
- doc: "Display variables of scope. Get scope names using a command in debug menu",
- fun: variables,
- completer: None,
}
];
@@ -4466,7 +4412,7 @@ fn dap_next(cx: &mut Context) {
}
}
-fn dap_variable_scopes(cx: &mut Context) {
+fn dap_variables(cx: &mut Context) {
use helix_lsp::block_on;
if let Some(debugger) = &mut cx.editor.debugger {
@@ -4483,12 +4429,22 @@ fn dap_variable_scopes(cx: &mut Context) {
let frame_id = debugger.stack_pointer.clone().unwrap().id;
let scopes = block_on(debugger.scopes(frame_id)).unwrap();
+ let mut s = String::new();
- let mut status = String::new();
for scope in scopes.iter() {
- status.push_str(&format!("{}: {}; ", scope.variables_reference, scope.name))
+ let response = block_on(debugger.variables(scope.variables_reference));
+
+ if let Ok(vars) = response {
+ for var in vars {
+ let prefix = match var.data_type {
+ Some(data_type) => format!("{} ", data_type),
+ None => "".to_owned(),
+ };
+ s.push_str(&format!("{}{} = {}; ", prefix, var.name, var.value));
+ }
+ }
}
- cx.editor.set_status(status);
+ cx.editor.set_status(s);
}
}
diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs
index 541ac233..776f02ca 100644
--- a/helix-term/src/keymap.rs
+++ b/helix-term/src/keymap.rs
@@ -494,7 +494,7 @@ impl Default for Keymaps {
"j" => dap_in,
"k" => dap_out,
"l" => dap_next,
- "z" => dap_variable_scopes,
+ "v" => dap_variables,
"t" => dap_terminate,
},
"w" => { "Window"