summaryrefslogtreecommitdiffstats
path: root/src/ui/widgets/tui_dirlist_detailed.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widgets/tui_dirlist_detailed.rs')
-rw-r--r--src/ui/widgets/tui_dirlist_detailed.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/ui/widgets/tui_dirlist_detailed.rs b/src/ui/widgets/tui_dirlist_detailed.rs
index 3373134..6e2a2a8 100644
--- a/src/ui/widgets/tui_dirlist_detailed.rs
+++ b/src/ui/widgets/tui_dirlist_detailed.rs
@@ -7,9 +7,9 @@ use ratatui::widgets::Widget;
use crate::config::option::{DisplayOption, LineMode, LineNumberStyle, TabDisplayOption};
use crate::fs::{FileType, JoshutoDirEntry, JoshutoDirList, LinkType};
-use crate::util::format;
use crate::util::string::UnicodeTruncate;
use crate::util::style;
+use crate::util::{format, unix};
use unicode_width::UnicodeWidthStr;
const MIN_LEFT_LABEL_WIDTH: i32 = 15;
@@ -144,15 +144,18 @@ fn print_entry(
let right_label_original = format!(
" {}{} ",
symlink_string,
- match linemode {
- LineMode::Size => get_entry_size_string(entry),
- LineMode::MTime => format::mtime_to_string(entry.metadata.modified()),
- LineMode::SizeMTime => format!(
- "{} {}",
- get_entry_size_string(entry),
- format::mtime_to_string(entry.metadata.modified())
- ),
- }
+ linemode
+ .iter_names()
+ .map(|f| match f.0 {
+ "size" => get_entry_size_string(entry),
+ "mtime" => format::mtime_to_string(entry.metadata.modified()),
+ "user" => unix::uid_to_string(entry.metadata.uid).unwrap_or("unknown".into()),
+ "group" => unix::gid_to_string(entry.metadata.gid).unwrap_or("unknown".into()),
+ "perm" => unix::mode_to_string(entry.metadata.mode),
+ _ => unreachable!(),
+ })
+ .collect::<Vec<_>>()
+ .join(" ")
);
// draw prefix first