From 77e9d01b39da8fc979edbc37e37956029b01b6c0 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Fri, 24 Jan 2025 17:46:48 +0100 Subject: [PATCH] task: Always use untruncated label if it is short (#23611) Also changed rust tasks to be less mouthful. Release Notes: - Shortened Rust task labels. - Task modal will now use full task label when it does not require truncation. --- crates/languages/src/rust.rs | 22 +++++++++++----------- crates/task/src/task_template.rs | 27 ++++++++++++++++++--------- crates/tasks_ui/src/modal.rs | 4 ++-- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/crates/languages/src/rust.rs b/crates/languages/src/rust.rs index 3ef2747642..830eb4a494 100644 --- a/crates/languages/src/rust.rs +++ b/crates/languages/src/rust.rs @@ -523,7 +523,7 @@ impl ContextProvider for RustContextProvider { Some(TaskTemplates(vec![ TaskTemplate { label: format!( - "cargo check -p {}", + "Check (package: {})", RUST_PACKAGE_TASK_VARIABLE.template_value(), ), command: "cargo".into(), @@ -536,7 +536,7 @@ impl ContextProvider for RustContextProvider { ..TaskTemplate::default() }, TaskTemplate { - label: "cargo check --workspace --all-targets".into(), + label: "Check all targets (workspace)".into(), command: "cargo".into(), args: vec!["check".into(), "--workspace".into(), "--all-targets".into()], cwd: Some("$ZED_DIRNAME".to_owned()), @@ -544,9 +544,9 @@ impl ContextProvider for RustContextProvider { }, TaskTemplate { label: format!( - "cargo test -p {} {} -- --nocapture", - RUST_PACKAGE_TASK_VARIABLE.template_value(), + "Test '{}' (package: {})", VariableName::Symbol.template_value(), + RUST_PACKAGE_TASK_VARIABLE.template_value(), ), command: "cargo".into(), args: vec![ @@ -563,9 +563,9 @@ impl ContextProvider for RustContextProvider { }, TaskTemplate { label: format!( - "cargo test -p {} {}", - RUST_PACKAGE_TASK_VARIABLE.template_value(), + "Test '{}' (package: {})", VariableName::Stem.template_value(), + RUST_PACKAGE_TASK_VARIABLE.template_value(), ), command: "cargo".into(), args: vec![ @@ -580,10 +580,10 @@ impl ContextProvider for RustContextProvider { }, TaskTemplate { label: format!( - "cargo run -p {} --{} {}", - RUST_PACKAGE_TASK_VARIABLE.template_value(), + "Run {} {} (package: {})", RUST_BIN_KIND_TASK_VARIABLE.template_value(), RUST_BIN_NAME_TASK_VARIABLE.template_value(), + RUST_PACKAGE_TASK_VARIABLE.template_value(), ), command: "cargo".into(), args: vec![ @@ -599,7 +599,7 @@ impl ContextProvider for RustContextProvider { }, TaskTemplate { label: format!( - "cargo test -p {}", + "Test (package: {})", RUST_PACKAGE_TASK_VARIABLE.template_value() ), command: "cargo".into(), @@ -612,14 +612,14 @@ impl ContextProvider for RustContextProvider { ..TaskTemplate::default() }, TaskTemplate { - label: "cargo run".into(), + label: "Run".into(), command: "cargo".into(), args: run_task_args, cwd: Some("$ZED_DIRNAME".to_owned()), ..TaskTemplate::default() }, TaskTemplate { - label: "cargo clean".into(), + label: "Clean".into(), command: "cargo".into(), args: vec!["clean".into()], cwd: Some("$ZED_DIRNAME".to_owned()), diff --git a/crates/task/src/task_template.rs b/crates/task/src/task_template.rs index 2d13a7e18b..a25e407f10 100644 --- a/crates/task/src/task_template.rs +++ b/crates/task/src/task_template.rs @@ -154,12 +154,26 @@ impl TaskTemplate { None => None, } .or(cx.cwd.clone()); - let human_readable_label = substitute_all_template_variables_in_str( + let full_label = substitute_all_template_variables_in_str( &self.label, - &truncated_variables, + &task_variables, &variable_names, &mut substituted_variables, - )? + )?; + + // Arbitrarily picked threshold below which we don't truncate any variables. + const TRUNCATION_THRESHOLD: usize = 64; + + let human_readable_label = if full_label.len() > TRUNCATION_THRESHOLD { + substitute_all_template_variables_in_str( + &self.label, + &truncated_variables, + &variable_names, + &mut substituted_variables, + )? + } else { + full_label.clone() + } .lines() .fold(String::new(), |mut string, line| { if string.is_empty() { @@ -170,12 +184,7 @@ impl TaskTemplate { } string }); - let full_label = substitute_all_template_variables_in_str( - &self.label, - &task_variables, - &variable_names, - &mut substituted_variables, - )?; + let command = substitute_all_template_variables_in_str( &self.command, &task_variables, diff --git a/crates/tasks_ui/src/modal.rs b/crates/tasks_ui/src/modal.rs index 1dc63c4852..811e449392 100644 --- a/crates/tasks_ui/src/modal.rs +++ b/crates/tasks_ui/src/modal.rs @@ -791,7 +791,7 @@ mod tests { assert_eq!( task_names(&tasks_picker, cx), vec![ - "hello from …h.odd_extension:1:1".to_string(), + "hello from /dir/file_with.odd_extension:1:1".to_string(), "opened now: /dir".to_string() ], "Second opened buffer should fill the context, labels should be trimmed if long enough" @@ -820,7 +820,7 @@ mod tests { assert_eq!( task_names(&tasks_picker, cx), vec![ - "hello from …thout_extension:2:3".to_string(), + "hello from /dir/file_without_extension:2:3".to_string(), "opened now: /dir".to_string() ], "Opened buffer should fill the context, labels should be trimmed if long enough"