summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-view/src/handlers/dap.rs31
1 files changed, 26 insertions, 5 deletions
diff --git a/helix-view/src/handlers/dap.rs b/helix-view/src/handlers/dap.rs
index c69d290d..c7d3758d 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(