aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaž Hrastnik2022-02-17 03:22:48 +0000
committerBlaž Hrastnik2022-02-18 05:37:59 +0000
commit7b1d682fe55cfa72c1ecf5a1763940cf105902e4 (patch)
tree3b32b7c97f362ab6ed87dac0ddf990042e791801
parent4e1b3b12f3f5626f1ab371d99fecd23e2f5b8603 (diff)
dap: fix runInTerminal with lldb-vscode
-rw-r--r--helix-term/src/application.rs20
-rw-r--r--helix-term/src/commands/dap.rs4
2 files changed, 21 insertions, 3 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index 49eb08d0..db289f57 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -479,10 +479,28 @@ impl Application {
Payload::Response(_) => unreachable!(),
Payload::Request(request) => match request.command.as_str() {
RunInTerminal::COMMAND => {
- let arguments: dap::requests::RunInTerminalArguments =
+ let mut arguments: dap::requests::RunInTerminalArguments =
serde_json::from_value(request.arguments.unwrap_or_default()).unwrap();
// TODO: no unwrap
+ log::error!("run_in_terminal {:?}", arguments);
+
+ // HAXX: lldb-vscode uses $CWD/lldb-vscode which is wrong
+ let program = arguments.args[0]
+ .strip_prefix(
+ std::env::current_dir()
+ .expect("Couldn't get current working directory")
+ .as_path()
+ .to_str()
+ .unwrap(),
+ )
+ .and_then(|arg| arg.strip_prefix('/'))
+ .map(|arg| arg.to_owned())
+ .unwrap_or_else(|| arguments.args[0].clone());
+ arguments.args[0] = program;
+
+ log::error!("{}", arguments.args.join(" "));
+
// TODO: handle cwd
let process = std::process::Command::new("tmux")
.arg("split-window")
diff --git a/helix-term/src/commands/dap.rs b/helix-term/src/commands/dap.rs
index 4de3134b..ae76a26a 100644
--- a/helix-term/src/commands/dap.rs
+++ b/helix-term/src/commands/dap.rs
@@ -392,13 +392,13 @@ fn debug_parameter_prompt(
Ok(call)
});
cx.jobs.callback(callback);
- } else if let Err(e) = dap_start_impl(
+ } else if let Err(err) = dap_start_impl(
cx,
Some(&config_name),
None,
Some(params.iter().map(|x| x.into()).collect()),
) {
- cx.editor.set_error(e.to_string());
+ cx.editor.set_error(err.to_string());
}
},
)