diff --git a/helix-view/src/handlers/dap.rs b/helix-view/src/handlers/dap.rs index c69d290d1..c7d3758d6 100644 --- a/helix-view/src/handlers/dap.rs +++ b/helix-view/src/handlers/dap.rs @@ -4,6 +4,7 @@ use helix_core::Selection; use helix_dap::{self as dap, Client, Payload, Request, ThreadId}; use helix_lsp::block_on; use log::warn; +use std::io::ErrorKind; use std::path::PathBuf; #[macro_export] @@ -285,11 +286,31 @@ impl Editor { serde_json::from_value(request.arguments.unwrap_or_default()).unwrap(); // TODO: no unwrap - let process = std::process::Command::new("tmux") - .arg("split-window") - .arg(arguments.args.join(" ")) - .spawn() - .unwrap(); + let process = if cfg!(windows) { + std::process::Command::new("wt") + .arg("new-tab") + .arg("--title") + .arg("DEBUG") + .arg("cmd") + .arg("/C") + .arg(arguments.args.join(" ")) + .spawn() + .unwrap_or_else(|error| match error.kind() { + ErrorKind::NotFound => std::process::Command::new("conhost") + .arg("cmd") + .arg("/C") + .arg(arguments.args.join(" ")) + .spawn() + .unwrap(), + e => panic!("Error to start debug console: {}", e), + }) + } else { + std::process::Command::new("tmux") + .arg("split-window") + .arg(arguments.args.join(" ")) + .spawn() + .unwrap() + }; let _ = debugger .reply(