summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorDLFW <daniel@llin.info>2021-06-28 02:56:28 +0200
committerGitHub <noreply@github.com>2021-06-27 20:56:28 -0400
commit8cefdc24500864993e66d28ba198070906161b67 (patch)
tree6f81e82b1a5777601fa55cebd6c0c9c187fec105 /src/ui
parentfe87911dbbdd0c20acef825a0bb6213e011fca02 (diff)
highlight invalid symlinks (#80)
* own display style for invalid symlinks * add link_invalid to default theme.toml * footer shows link target in link style
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/widgets/tui_dirlist_detailed.rs2
-rw-r--r--src/ui/widgets/tui_footer.rs18
2 files changed, 16 insertions, 4 deletions
diff --git a/src/ui/widgets/tui_dirlist_detailed.rs b/src/ui/widgets/tui_dirlist_detailed.rs
index 4a4dc2a..a43d4f6 100644
--- a/src/ui/widgets/tui_dirlist_detailed.rs
+++ b/src/ui/widgets/tui_dirlist_detailed.rs
@@ -90,7 +90,7 @@ fn print_entry(
};
let symlink_string = match entry.metadata.link_type() {
LinkType::Normal => "",
- LinkType::Symlink(_) => "-> ",
+ LinkType::Symlink(_, _) => "-> ",
};
let left_label_original = entry.label();
let right_label_original = format!(" {}{} ", symlink_string, size_string);
diff --git a/src/ui/widgets/tui_footer.rs b/src/ui/widgets/tui_footer.rs
index 1bf9c2a..d340983 100644
--- a/src/ui/widgets/tui_footer.rs
+++ b/src/ui/widgets/tui_footer.rs
@@ -7,6 +7,7 @@ use tui::widgets::{Paragraph, Widget};
use crate::fs::{JoshutoDirList, LinkType};
use crate::util::format;
use crate::util::unix;
+use crate::THEME_T;
pub struct TuiFooter<'a> {
dirlist: &'a JoshutoDirList,
@@ -41,9 +42,20 @@ impl<'a> Widget for TuiFooter<'a> {
Span::raw(size_str),
];
- if let LinkType::Symlink(s) = entry.metadata.link_type() {
- text.push(Span::styled(" -> ", mode_style));
- text.push(Span::styled(s, mode_style));
+ if let LinkType::Symlink(target, valid) = entry.metadata.link_type() {
+ let link_style = if *valid {
+ Style::default()
+ .fg(THEME_T.link.fg)
+ .bg(THEME_T.link.bg)
+ .add_modifier(THEME_T.link.modifier)
+ } else {
+ Style::default()
+ .fg(THEME_T.link_invalid.fg)
+ .bg(THEME_T.link_invalid.bg)
+ .add_modifier(THEME_T.link_invalid.modifier)
+ };
+ text.push(Span::styled(" -> ", link_style));
+ text.push(Span::styled(target, link_style));
}
Paragraph::new(Spans::from(text)).render(area, buf);