summaryrefslogtreecommitdiffstats
path: root/src/util/style.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/style.rs')
-rw-r--r--src/util/style.rs26
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)