diff --git a/yazi-core/src/folder/filter.rs b/yazi-core/src/folder/filter.rs index 8d7ca45e..4dd4e912 100644 --- a/yazi-core/src/folder/filter.rs +++ b/yazi-core/src/folder/filter.rs @@ -1,4 +1,4 @@ -use std::{ffi::OsStr, ops::Range}; +use std::{ffi::OsStr, fmt::{Display, Error}, ops::Range}; use anyhow::Result; use regex::bytes::{Regex, RegexBuilder}; @@ -35,6 +35,10 @@ impl Filter { } } +impl Display for Filter { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), Error> { f.write_str(&self.raw) } +} + #[derive(Default, PartialEq, Eq)] pub enum FilterCase { Smart, diff --git a/yazi-fm/src/lives/filter.rs b/yazi-fm/src/lives/filter.rs index 1f7c66dc..9e1163ce 100644 --- a/yazi-fm/src/lives/filter.rs +++ b/yazi-fm/src/lives/filter.rs @@ -1,6 +1,6 @@ use std::ops::Deref; -use mlua::{AnyUserData, Lua}; +use mlua::{AnyUserData, Lua, UserDataFields}; use super::SCOPE; @@ -21,6 +21,8 @@ impl Filter { } pub(super) fn register(lua: &Lua) -> mlua::Result<()> { - lua.register_userdata_type::(|_| {}) + lua.register_userdata_type::(|reg| { + reg.add_field_method_get("to_string", |_, me| Ok(me.to_string())); + }) } } diff --git a/yazi-plugin/preset/components/header.lua b/yazi-plugin/preset/components/header.lua index 2443a065..c317da0f 100644 --- a/yazi-plugin/preset/components/header.lua +++ b/yazi-plugin/preset/components/header.lua @@ -5,8 +5,13 @@ Header = { function Header:cwd(max) local cwd = cx.active.current.cwd local readable = ya.readable_path(tostring(cwd)) + local files = cx.active.current.files + + local search = cwd.is_search and string.format(" (search: %s)", cwd:frag()) or "" + local filter = files.filter and string.format(" (filter: %s)", files.filter.to_string) or "" + + local text = string.format("%s%s%s", readable, search, filter) - local text = cwd.is_search and string.format("%s (search: %s)", readable, cwd:frag()) or readable return ui.Span(ya.truncate(text, { max = max, rtl = true })):style(THEME.manager.cwd) end