diff options
Diffstat (limited to 'src/ui/widgets/tui_tab.rs')
-rw-r--r-- | src/ui/widgets/tui_tab.rs | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/ui/widgets/tui_tab.rs b/src/ui/widgets/tui_tab.rs index f724b86..d82dcbe 100644 --- a/src/ui/widgets/tui_tab.rs +++ b/src/ui/widgets/tui_tab.rs @@ -1,11 +1,11 @@ -use std::ffi::OsStr; - use ratatui::buffer::Buffer; use ratatui::layout::Rect; use ratatui::text::{Line, Span}; use ratatui::widgets::{Paragraph, Widget, Wrap}; +use crate::config::option::TabBarDisplayMode; use crate::context::TabContext; +use crate::util::format::format_tab_bar_title_string; use crate::THEME_T; pub struct TuiTabBar<'a> { @@ -34,23 +34,27 @@ impl<'a> Widget for TuiTabBar<'a> { regular_style }; if let Some(curr_tab) = self.context.tab_ref(tab_id) { - let preview_text: String = curr_tab - .cwd() - .file_name() - .unwrap_or_else(|| OsStr::new("/")) - .to_string_lossy() - .chars() - .take(4) - .collect(); - - spans_vec.push(Span::styled( - format!("{}: {}", i + 1, preview_text), - curr_style, - )); - spans_vec.push(Span::styled(" ", regular_style)); + let preview_text = match self.context.display.mode { + TabBarDisplayMode::Number => format!(" {} ", i + 1), + TabBarDisplayMode::Directory => format_tab_bar_title_string( + self.context.display.max_len, + None, + curr_tab.tab_title(), + ), + TabBarDisplayMode::All => format_tab_bar_title_string( + self.context.display.max_len, + Some(i), + curr_tab.tab_title(), + ), + }; + + spans_vec.push(Span::styled(preview_text, curr_style)); + spans_vec.push(Span::styled(" | ", regular_style)); } } + spans_vec.pop(); + Paragraph::new(Line::from(spans_vec)) .wrap(Wrap { trim: true }) .render(area, buf); |