@@ -479,10 +479,28 @@ impl Application {
479 Payload::Response(_) => unreachable!(),
479 Payload::Response(_) => unreachable!(),
480 Payload::Request(request) => match request.command.as_str() {
480 Payload::Request(request) => match request.command.as_str() {
481 RunInTerminal::COMMAND => {
481 RunInTerminal::COMMAND => {
482− let arguments: dap::requests::RunInTerminalArguments =
482+ let mut arguments: dap::requests::RunInTerminalArguments =
483 serde_json::from_value(request.arguments.unwrap_or_default()).unwrap();
483 serde_json::from_value(request.arguments.unwrap_or_default()).unwrap();
484 // TODO: no unwrap
484 // TODO: no unwrap
486+ log::error!("run_in_terminal {:?}", arguments);
488+ // HAXX: lldb-vscode uses $CWD/lldb-vscode which is wrong
489+ let program = arguments.args[0]
491+ std::env::current_dir()
492+ .expect("Couldn't get current working directory")
497+ .and_then(|arg| arg.strip_prefix('/'))
498+ .map(|arg| arg.to_owned())
499+ .unwrap_or_else(|| arguments.args[0].clone());
500+ arguments.args[0] = program;
502+ log::error!("{}", arguments.args.join(" "));
486 // TODO: handle cwd
504 // TODO: handle cwd
487 let process = std::process::Command::new("tmux")
505 let process = std::process::Command::new("tmux")
488 .arg("split-window")
506 .arg("split-window")