diff options
Diffstat (limited to 'src/util/style.rs')
-rw-r--r-- | src/util/style.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/util/style.rs b/src/util/style.rs index de5a622..058a9a9 100644 --- a/src/util/style.rs +++ b/src/util/style.rs @@ -3,6 +3,7 @@ use lscolors::LsColors; use ratatui::style::Style; use std::path::Path; +use crate::config::clean::app::AppConfig; use crate::fs::{FileType, JoshutoDirEntry, LinkType}; use crate::util::unix; @@ -25,7 +26,7 @@ impl PathStyleIfSome for Style { } } -pub fn entry_style(entry: &JoshutoDirEntry) -> Style { +pub fn entry_style(config: &AppConfig, entry: &JoshutoDirEntry) -> Style { let metadata = &entry.metadata; let filetype = metadata.file_type(); let linktype = metadata.link_type(); @@ -41,9 +42,9 @@ pub fn entry_style(entry: &JoshutoDirEntry) -> Style { Some(lscolors) => { let path = entry.file_path(); lscolors_style(lscolors, path) - .unwrap_or_else(|| default_style(entry, linktype, filetype)) + .unwrap_or_else(|| default_style(config, entry, linktype, filetype)) } - None => default_style(entry, linktype, filetype), + None => default_style(config, entry, linktype, filetype), } } @@ -63,13 +64,18 @@ pub fn entry_prefix(entry: &JoshutoDirEntry) -> (&str, usize) { ("", 0) } -fn default_style(entry: &JoshutoDirEntry, linktype: &LinkType, filetype: &FileType) -> Style { +fn default_style( + config: &AppConfig, + entry: &JoshutoDirEntry, + linktype: &LinkType, + filetype: &FileType, +) -> Style { match linktype { LinkType::Symlink { valid: true, .. } => symlink_valid_style(), LinkType::Symlink { valid: false, .. } => symlink_invalid_style(), LinkType::Normal => match filetype { FileType::Directory => directory_style(), - FileType::File => file_style(entry), + FileType::File => file_style(config, entry), }, } } @@ -109,7 +115,7 @@ fn directory_style() -> Style { .add_modifier(THEME_T.directory.modifier) } -fn file_style(entry: &JoshutoDirEntry) -> Style { +fn file_style(config: &AppConfig, entry: &JoshutoDirEntry) -> Style { let regular_style = Style::default() .fg(THEME_T.regular.fg) .bg(THEME_T.regular.bg) @@ -123,7 +129,13 @@ fn file_style(entry: &JoshutoDirEntry) -> Style { } else { entry .ext() - .and_then(|s| THEME_T.ext.get(s)) + .and_then(|s| { + if config.case_insensitive_ext { + THEME_T.ext.get(&s.to_lowercase()) + } else { + THEME_T.ext.get(s) + } + }) .map(|theme| { Style::default() .fg(theme.fg) |