History

Introduce $ZED_CUSTOM_PYTHON_ACTIVE_ZED_TOOLCHAIN_RAW to work around (#31685)

Follow up to #31674 Release Notes: - N/A

Piotr Osiewicz committed 1 year ago

Commit 83135e91 parent 703ee292 files · +18 −7Browse files

Unified · Split

2 files
  1. crates/languages/src/python.rs +9 −5
  2. crates/project/src/debugger/locators/python.rs +9 −2
crates/languages/src/python.rs+9−5
@@ -357,6 +357,9 @@ const PYTHON_TEST_TARGET_TASK_VARIABLE: VariableName = · 356 unmodified lines
357357 const PYTHON_ACTIVE_TOOLCHAIN_PATH: VariableName =
358358 VariableName::Custom(Cow::Borrowed("PYTHON_ACTIVE_ZED_TOOLCHAIN"));
359359
360+const PYTHON_ACTIVE_TOOLCHAIN_PATH_RAW: VariableName =
361+ VariableName::Custom(Cow::Borrowed("PYTHON_ACTIVE_ZED_TOOLCHAIN_RAW"));
362+
360363 const PYTHON_MODULE_NAME_TASK_VARIABLE: VariableName =
361364 VariableName::Custom(Cow::Borrowed("PYTHON_MODULE_NAME"));
362365
@@ -378,24 +381,25 @@ impl ContextProvider for PythonContextProvider { · 15 unmodified lines
378381 let worktree_id = location.buffer.read(cx).file().map(|f| f.worktree_id(cx));
379382
380383 cx.spawn(async move |cx| {
381− let active_toolchain = if let Some(worktree_id) = worktree_id {
384+ let raw_toolchain = if let Some(worktree_id) = worktree_id {
382385 toolchains
383386 .active_toolchain(worktree_id, Arc::from("".as_ref()), "Python".into(), cx)
384387 .await
385388 .map_or_else(
386− || "python3".to_owned(),
387− |toolchain| format!("\"{}\"", toolchain.path),
389+ || String::from("python3"),
390+ |toolchain| toolchain.path.to_string(),
388391 )
389392 } else {
390393 String::from("python3")
391394 };
395+ let active_toolchain = format!("\"{raw_toolchain}\"");
392396 let toolchain = (PYTHON_ACTIVE_TOOLCHAIN_PATH, active_toolchain);
393−
397+ let raw_toolchain = (PYTHON_ACTIVE_TOOLCHAIN_PATH_RAW, raw_toolchain);
394398 Ok(task::TaskVariables::from_iter(
395399 test_target
396400 .into_iter()
397401 .chain(module_target.into_iter())
398− .chain([toolchain]),
402+ .chain([toolchain, raw_toolchain]),
399403 ))
400404 })
401405 }
crates/project/src/debugger/locators/python.rs+9−2
@@ -5,7 +5,7 @@ use async_trait::async_trait; · 4 unmodified lines
55 use dap::{DapLocator, DebugRequest, adapters::DebugAdapterName};
66 use gpui::SharedString;
77
8−use task::{DebugScenario, SpawnInTerminal, TaskTemplate};
8+use task::{DebugScenario, SpawnInTerminal, TaskTemplate, VariableName};
99
1010 pub(crate) struct PythonLocator;
1111
@@ -35,6 +35,13 @@ impl DapLocator for PythonLocator { · 23 unmodified lines
3535 // We cannot debug selections.
3636 return None;
3737 }
38+ let command = if build_config.command
39+ == VariableName::Custom("PYTHON_ACTIVE_ZED_TOOLCHAIN".into()).template_value()
40+ {
41+ VariableName::Custom("PYTHON_ACTIVE_ZED_TOOLCHAIN_RAW".into()).template_value()
42+ } else {
43+ build_config.command.clone()
44+ };
3845 let module_specifier_position = build_config
3946 .args
4047 .iter()
@@ -68,7 +75,7 @@ impl DapLocator for PythonLocator { · 27 unmodified lines
6875 }
6976 let mut config = serde_json::json!({
7077 "request": "launch",
71− "python": build_config.command,
78+ "python": command,
7279 "args": args,
7380 "cwd": build_config.cwd.clone()
7481 });