From b017ae0f685e3d62cf15812f3ab4f68cee8251ed Mon Sep 17 00:00:00 2001 From: MarkZaytsev Date: Sat, 27 Jul 2024 23:33:51 +0700 Subject: [PATCH] feat: displaying filter shortcut in help menu instead of "{widget}.help" --- yazi-config/src/keymap/keymap.rs | 12 ++++++++++++ yazi-fm/src/help/layout.rs | 7 ++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/yazi-config/src/keymap/keymap.rs b/yazi-config/src/keymap/keymap.rs index f5542281..73187dce 100644 --- a/yazi-config/src/keymap/keymap.rs +++ b/yazi-config/src/keymap/keymap.rs @@ -30,6 +30,18 @@ impl Keymap { Layer::Which => unreachable!(), } } + + pub fn get_shortcut_for_command(&self, cmd_name: &str, layer: Layer) -> Option { + let control = self + .get(layer) + .iter() + .find(|&c| c.run.iter().any(|cmd| cmd.name.eq(cmd_name))); + + match control { + Some(c) => Some(c.on()), + None => None + } + } } impl FromStr for Keymap { diff --git a/yazi-fm/src/help/layout.rs b/yazi-fm/src/help/layout.rs index 2bbfdeba..82bb7be7 100644 --- a/yazi-fm/src/help/layout.rs +++ b/yazi-fm/src/help/layout.rs @@ -1,6 +1,6 @@ use ratatui::{buffer::Buffer, layout::{self, Constraint, Rect}, text::Line, widgets::Widget}; -use yazi_config::THEME; - +use yazi_config::{KEYMAP, THEME}; +use yazi_shared::Layer; use super::Bindings; use crate::Ctx; @@ -18,8 +18,9 @@ impl<'a> Widget for Layout<'a> { yazi_plugin::elements::Clear::default().render(area, buf); let chunks = layout::Layout::vertical([Constraint::Fill(1), Constraint::Length(1)]).split(area); + let filter_key = KEYMAP.get_shortcut_for_command("filter", Layer::Help).unwrap_or_else(|| "[undefined]".into()); Line::styled( - help.keyword().unwrap_or_else(|| format!("{}.help", help.layer)), + help.keyword().unwrap_or_else(|| format!("{}.help (press {} to filter)", help.layer, filter_key)), THEME.help.footer, ) .render(chunks[1], buf);