diff options
author | DLFW <daniel@llin.info> | 2021-06-28 02:56:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-27 20:56:28 -0400 |
commit | 8cefdc24500864993e66d28ba198070906161b67 (patch) | |
tree | 6f81e82b1a5777601fa55cebd6c0c9c187fec105 /src/ui | |
parent | fe87911dbbdd0c20acef825a0bb6213e011fca02 (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.rs | 2 | ||||
-rw-r--r-- | src/ui/widgets/tui_footer.rs | 18 |
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); |