debugger: Use current worktree directory when spawning an adapter (#31054)

Remco Smits created

/cc @osiewicz 

I think bringing this back should fix **bloveless** his issue with go
debugger.
This is also nice, so people are not forced to give us a working
directory, because most adapters will use their **cwd** as the project
root directory. For JavaScript, you don't need to specify the **cwd**
anymore because it can already infer it

Release Notes:

- debugger beta: Fixed some adapters fail to determine the right root level of the
debug program.

Change summary

crates/dap_adapters/src/codelldb.rs   | 2 +-
crates/dap_adapters/src/gdb.rs        | 2 +-
crates/dap_adapters/src/go.rs         | 2 +-
crates/dap_adapters/src/javascript.rs | 2 +-
crates/dap_adapters/src/php.rs        | 2 +-
crates/dap_adapters/src/python.rs     | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)

Detailed changes

crates/dap_adapters/src/codelldb.rs 🔗

@@ -436,7 +436,7 @@ impl DebugAdapter for CodeLldbDebugAdapter {
 
         Ok(DebugAdapterBinary {
             command: command.unwrap(),
-            cwd: None,
+            cwd: Some(delegate.worktree_root_path().to_path_buf()),
             arguments: vec![
                 "--settings".into(),
                 json!({"sourceLanguages": ["cpp", "rust"]}).to_string(),

crates/dap_adapters/src/gdb.rs 🔗

@@ -184,7 +184,7 @@ impl DebugAdapter for GdbDebugAdapter {
             command: gdb_path,
             arguments: vec!["-i=dap".into()],
             envs: HashMap::default(),
-            cwd: None,
+            cwd: Some(delegate.worktree_root_path().to_path_buf()),
             connection: None,
             request_args,
         })

crates/dap_adapters/src/go.rs 🔗

@@ -347,7 +347,7 @@ impl DebugAdapter for GoDebugAdapter {
         Ok(DebugAdapterBinary {
             command: delve_path,
             arguments: vec!["dap".into(), "--listen".into(), format!("{host}:{port}")],
-            cwd: None,
+            cwd: Some(delegate.worktree_root_path().to_path_buf()),
             envs: HashMap::default(),
             connection: Some(adapters::TcpArguments {
                 host,

crates/dap_adapters/src/javascript.rs 🔗

@@ -86,7 +86,7 @@ impl JsDebugAdapter {
                 port.to_string(),
                 host.to_string(),
             ],
-            cwd: None,
+            cwd: Some(delegate.worktree_root_path().to_path_buf()),
             envs: HashMap::default(),
             connection: Some(adapters::TcpArguments {
                 host,

crates/dap_adapters/src/php.rs 🔗

@@ -89,7 +89,7 @@ impl PhpDebugAdapter {
                 host,
                 timeout,
             }),
-            cwd: None,
+            cwd: Some(delegate.worktree_root_path().to_path_buf()),
             envs: HashMap::default(),
             request_args: StartDebuggingRequestArguments {
                 configuration: task_definition.config.clone(),

crates/dap_adapters/src/python.rs 🔗

@@ -138,7 +138,7 @@ impl PythonDebugAdapter {
                 port,
                 timeout,
             }),
-            cwd: None,
+            cwd: Some(delegate.worktree_root_path().to_path_buf()),
             envs: HashMap::default(),
             request_args: self.request_args(config)?,
         })