diff --git a/yazi-config/src/pattern.rs b/yazi-config/src/pattern.rs index a171d758..3a428dbf 100644 --- a/yazi-config/src/pattern.rs +++ b/yazi-config/src/pattern.rs @@ -35,6 +35,9 @@ impl Pattern { path.file_name().map_or_else(|| path.to_string_lossy(), |n| n.to_string_lossy()) }) } + + #[inline] + pub fn is_wildcard(&self) -> bool { self.inner.as_str() == "*" || self.inner.as_str() == "*/" } } impl TryFrom<&str> for Pattern { diff --git a/yazi-config/src/plugin/plugin.rs b/yazi-config/src/plugin/plugin.rs index dc5228f0..91ae8d73 100644 --- a/yazi-config/src/plugin/plugin.rs +++ b/yazi-config/src/plugin/plugin.rs @@ -52,6 +52,13 @@ impl Default for Plugin { } let mut shadow = toml::from_str::(&MERGED_YAZI).unwrap().plugin; + if shadow.append_preloaders.iter().any(|r| r.name.as_ref().is_some_and(|p| p.is_wildcard())) { + shadow.preloaders.retain(|r| !r.name.as_ref().is_some_and(|p| p.is_wildcard())); + } + if shadow.append_previewers.iter().any(|r| r.name.as_ref().is_some_and(|p| p.is_wildcard())) { + shadow.previewers.retain(|r| !r.name.as_ref().is_some_and(|p| p.is_wildcard())); + } + Preset::mix(&mut shadow.preloaders, shadow.prepend_preloaders, shadow.append_preloaders); Preset::mix(&mut shadow.previewers, shadow.prepend_previewers, shadow.append_previewers); diff --git a/yazi-core/src/tasks/commands/cancel.rs b/yazi-core/src/tasks/commands/cancel.rs index a7e6b4fa..815b58cd 100644 --- a/yazi-core/src/tasks/commands/cancel.rs +++ b/yazi-core/src/tasks/commands/cancel.rs @@ -9,8 +9,8 @@ impl Tasks { return; } - let len = self.scheduler.running.lock().len(); - self.cursor = self.cursor.min(len.saturating_sub(1)); + self.summaries = self.paginate(); + self.arrow(0); render!(); } }