From 6b65b7a62c2f9af1e26f568b2b11d52707264b79 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Wed, 9 Aug 2023 17:50:12 +0800 Subject: [PATCH] feat: show current dir name in tab --- app/src/header/tabs.rs | 13 ++++++++++--- config/preset/theme.toml | 5 +++-- config/src/theme/theme.rs | 5 +++-- core/src/manager/tab.rs | 4 ++++ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/src/header/tabs.rs b/app/src/header/tabs.rs index 02f8ca44..58cfa94f 100644 --- a/app/src/header/tabs.rs +++ b/app/src/header/tabs.rs @@ -19,11 +19,18 @@ impl<'a> Widget for Tabs<'a> { tabs .iter() .enumerate() - .map(|(i, _)| { + .map(|(i, tab)| { + let mut text = format!(" {} ", i + 1); + if THEME.tab.max_width > 0 { + text + .push_str(&tab.current_name().chars().take(THEME.tab.max_width).collect::()); + text.push(' '); + } + if i == tabs.idx() { - Span::styled(format!(" {} ", i + 1), THEME.tab.active.get()) + Span::styled(text, THEME.tab.active.get()) } else { - Span::styled(format!(" {} ", i + 1), THEME.tab.inactive.get()) + Span::styled(text, THEME.tab.inactive.get()) } }) .collect::>(), diff --git a/config/preset/theme.toml b/config/preset/theme.toml index 8016374c..3dde6bd6 100644 --- a/config/preset/theme.toml +++ b/config/preset/theme.toml @@ -1,6 +1,7 @@ [tab] -active = { fg = "#1E2031", bg = "#80AEFA" } -inactive = { fg = "#C8D3F8", bg = "#484D66" } +active = { fg = "#1E2031", bg = "#80AEFA" } +inactive = { fg = "#C8D3F8", bg = "#484D66" } +max_width = 0 [status] primary = { normal = "#80AEFA", select = "#CD9EFC", unset = "#FFA577" } diff --git a/config/src/theme/theme.rs b/config/src/theme/theme.rs index 34adc49e..d3f66548 100644 --- a/config/src/theme/theme.rs +++ b/config/src/theme/theme.rs @@ -8,8 +8,9 @@ use crate::MERGED_THEME; #[derive(Deserialize)] pub struct Tab { - pub active: Style, - pub inactive: Style, + pub active: Style, + pub inactive: Style, + pub max_width: usize, } #[derive(Deserialize)] diff --git a/core/src/manager/tab.rs b/core/src/manager/tab.rs index 9124c995..3117dba8 100644 --- a/core/src/manager/tab.rs +++ b/core/src/manager/tab.rs @@ -270,6 +270,10 @@ impl Tab { }; true } + + pub fn current_name(&self) -> &str { + self.current.cwd.file_name().and_then(|name| name.to_str()).unwrap_or_default() + } } impl Tab {