Change summary
crates/languages/src/python.rs | 14 +++++++++-----
crates/project/src/debugger/locators/python.rs | 11 +++++++++--
2 files changed, 18 insertions(+), 7 deletions(-)
Detailed changes
@@ -357,6 +357,9 @@ const PYTHON_TEST_TARGET_TASK_VARIABLE: VariableName =
const PYTHON_ACTIVE_TOOLCHAIN_PATH: VariableName =
VariableName::Custom(Cow::Borrowed("PYTHON_ACTIVE_ZED_TOOLCHAIN"));
+const PYTHON_ACTIVE_TOOLCHAIN_PATH_RAW: VariableName =
+ VariableName::Custom(Cow::Borrowed("PYTHON_ACTIVE_ZED_TOOLCHAIN_RAW"));
+
const PYTHON_MODULE_NAME_TASK_VARIABLE: VariableName =
VariableName::Custom(Cow::Borrowed("PYTHON_MODULE_NAME"));
@@ -378,24 +381,25 @@ impl ContextProvider for PythonContextProvider {
let worktree_id = location.buffer.read(cx).file().map(|f| f.worktree_id(cx));
cx.spawn(async move |cx| {
- let active_toolchain = if let Some(worktree_id) = worktree_id {
+ let raw_toolchain = if let Some(worktree_id) = worktree_id {
toolchains
.active_toolchain(worktree_id, Arc::from("".as_ref()), "Python".into(), cx)
.await
.map_or_else(
- || "python3".to_owned(),
- |toolchain| format!("\"{}\"", toolchain.path),
+ || String::from("python3"),
+ |toolchain| toolchain.path.to_string(),
)
} else {
String::from("python3")
};
+ let active_toolchain = format!("\"{raw_toolchain}\"");
let toolchain = (PYTHON_ACTIVE_TOOLCHAIN_PATH, active_toolchain);
-
+ let raw_toolchain = (PYTHON_ACTIVE_TOOLCHAIN_PATH_RAW, raw_toolchain);
Ok(task::TaskVariables::from_iter(
test_target
.into_iter()
.chain(module_target.into_iter())
- .chain([toolchain]),
+ .chain([toolchain, raw_toolchain]),
))
})
}
@@ -5,7 +5,7 @@ use async_trait::async_trait;
use dap::{DapLocator, DebugRequest, adapters::DebugAdapterName};
use gpui::SharedString;
-use task::{DebugScenario, SpawnInTerminal, TaskTemplate};
+use task::{DebugScenario, SpawnInTerminal, TaskTemplate, VariableName};
pub(crate) struct PythonLocator;
@@ -35,6 +35,13 @@ impl DapLocator for PythonLocator {
// We cannot debug selections.
return None;
}
+ let command = if build_config.command
+ == VariableName::Custom("PYTHON_ACTIVE_ZED_TOOLCHAIN".into()).template_value()
+ {
+ VariableName::Custom("PYTHON_ACTIVE_ZED_TOOLCHAIN_RAW".into()).template_value()
+ } else {
+ build_config.command.clone()
+ };
let module_specifier_position = build_config
.args
.iter()
@@ -68,7 +75,7 @@ impl DapLocator for PythonLocator {
}
let mut config = serde_json::json!({
"request": "launch",
- "python": build_config.command,
+ "python": command,
"args": args,
"cwd": build_config.cwd.clone()
});