diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-15 04:56:03 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-15 04:56:03 +0300 |
| commit | 4ffd99c2ec62fd3cbc9f9e0673d92c6a2a4f12b1 (patch) | |
| tree | 90941a31138eeb55090cb90e714c92ef4f1c848b /src/workspace.rs | |
| parent | efe7c557690157a4e133cd60dd7e2ec1bf6124f7 (diff) | |
fix: keep auto tab labels compact
Diffstat (limited to 'src/workspace.rs')
| -rw-r--r-- | src/workspace.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/workspace.rs b/src/workspace.rs index 02e9e9a6..8216001b 100644 --- a/src/workspace.rs +++ b/src/workspace.rs @@ -423,7 +423,16 @@ impl Workspace { } pub fn active_tab_display_name(&self) -> Option<String> { - self.active_tab().map(Tab::display_name) + self.tab_display_name(self.active_tab) + } + + pub fn tab_display_name(&self, tab_idx: usize) -> Option<String> { + let tab = self.tabs.get(tab_idx)?; + Some( + tab.custom_name + .clone() + .unwrap_or_else(|| (tab_idx + 1).to_string()), + ) } pub fn switch_tab(&mut self, idx: usize) { @@ -1581,8 +1590,10 @@ mod tests { assert!(ws.move_tab(0, ws.tabs.len())); - let labels: Vec<_> = ws.tabs.iter().map(|tab| tab.display_name()).collect(); - assert_eq!(labels, vec!["foo", "3", "1"]); + let labels: Vec<_> = (0..ws.tabs.len()) + .map(|tab_idx| ws.tab_display_name(tab_idx).unwrap()) + .collect(); + assert_eq!(labels, vec!["foo", "2", "3"]); assert_eq!(ws.tabs[0].custom_name.as_deref(), Some("foo")); assert!(ws.tabs[1].custom_name.is_none()); assert!(ws.tabs[2].custom_name.is_none()); |
