Always show full command on terminal tab hover (#3934)

Deals with https://github.com/zed-industries/community/issues/1856

Release Notes:

- Fixed terminal tab tooltip being truncated
This commit is contained in:
Kirill Bulatov 2024-01-07 13:52:56 +02:00 committed by GitHub
commit eb9ddef083
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 27 deletions

View File

@ -1311,22 +1311,16 @@ impl Terminal {
}) })
} }
pub fn title(&self) -> String { pub fn title(&self, truncate: bool) -> String {
self.foreground_process_info self.foreground_process_info
.as_ref() .as_ref()
.map(|fpi| { .map(|fpi| {
format!( let process_file = fpi
"{} — {}", .cwd
truncate_and_trailoff(
&fpi.cwd
.file_name() .file_name()
.map(|name| name.to_string_lossy().to_string()) .map(|name| name.to_string_lossy().to_string())
.unwrap_or_default(), .unwrap_or_default();
25 let process_name = format!(
),
truncate_and_trailoff(
&{
format!(
"{}{}", "{}{}",
fpi.name, fpi.name,
if fpi.argv.len() >= 1 { if fpi.argv.len() >= 1 {
@ -1334,11 +1328,16 @@ impl Terminal {
} else { } else {
"".to_string() "".to_string()
} }
);
let (process_file, process_name) = if truncate {
(
truncate_and_trailoff(&process_file, 25),
truncate_and_trailoff(&process_name, 25),
) )
}, } else {
25 (process_file, process_name)
) };
) format!("{process_file}{process_name}")
}) })
.unwrap_or_else(|| "Terminal".to_string()) .unwrap_or_else(|| "Terminal".to_string())
} }

View File

@ -680,7 +680,7 @@ impl Item for TerminalView {
type Event = ItemEvent; type Event = ItemEvent;
fn tab_tooltip_text(&self, cx: &AppContext) -> Option<SharedString> { fn tab_tooltip_text(&self, cx: &AppContext) -> Option<SharedString> {
Some(self.terminal().read(cx).title().into()) Some(self.terminal().read(cx).title(false).into())
} }
fn tab_content( fn tab_content(
@ -689,8 +689,7 @@ impl Item for TerminalView {
selected: bool, selected: bool,
cx: &WindowContext, cx: &WindowContext,
) -> AnyElement { ) -> AnyElement {
let title = self.terminal().read(cx).title(); let title = self.terminal().read(cx).title(true);
h_stack() h_stack()
.gap_2() .gap_2()
.child(IconElement::new(Icon::Terminal)) .child(IconElement::new(Icon::Terminal))