From 65f8e3264804f9231d2eceba94e2688385e826b8 Mon Sep 17 00:00:00 2001 From: Mika Vilpas Date: Tue, 14 May 2024 22:23:33 +0300 Subject: [PATCH] feat: add "extension" linemode (`m e`) to show extensions of files Solves https://github.com/sxyazi/yazi/issues/903 --- yazi-config/preset/keymap.toml | 1 + yazi-plugin/preset/components/folder.lua | 2 ++ yazi-plugin/src/url/url.rs | 3 +++ 3 files changed, 6 insertions(+) diff --git a/yazi-config/preset/keymap.toml b/yazi-config/preset/keymap.toml index 0ab02b91..18a94ca7 100644 --- a/yazi-config/preset/keymap.toml +++ b/yazi-config/preset/keymap.toml @@ -88,6 +88,7 @@ keymap = [ { on = [ "m", "s" ], run = "linemode size", desc = "Set linemode to size" }, { on = [ "m", "p" ], run = "linemode permissions", desc = "Set linemode to permissions" }, { on = [ "m", "m" ], run = "linemode mtime", desc = "Set linemode to mtime" }, + { on = [ "m", "m" ], run = "linemode extension", desc = "Set linemode to extension" }, { on = [ "m", "n" ], run = "linemode none", desc = "Set linemode to none" }, # Copy diff --git a/yazi-plugin/preset/components/folder.lua b/yazi-plugin/preset/components/folder.lua index aaaa7df5..f531b885 100644 --- a/yazi-plugin/preset/components/folder.lua +++ b/yazi-plugin/preset/components/folder.lua @@ -21,6 +21,8 @@ function Folder:linemode(area, files) spans[#spans + 1] = ui.Span(time and os.date("%y-%m-%d %H:%M", time // 1) or "") elseif mode == "permissions" then spans[#spans + 1] = ui.Span(f.cha:permissions() or "") + elseif mode == "extension" then + spans[#spans + 1] = ui.Span(f.url:extension() or "") end spans[#spans + 1] = ui.Span(" ") diff --git a/yazi-plugin/src/url/url.rs b/yazi-plugin/src/url/url.rs index 30c5b7c6..bfb1bbca 100644 --- a/yazi-plugin/src/url/url.rs +++ b/yazi-plugin/src/url/url.rs @@ -20,6 +20,9 @@ impl Url { reg.add_method("stem", |lua, me, ()| { me.file_stem().map(|s| lua.create_string(s.as_encoded_bytes())).transpose() }); + reg.add_method("extension", |lua, me, ()| { + me.extension().map(|s| lua.create_string(s.as_encoded_bytes())).transpose() + }); reg.add_method("join", |lua, me, other: UrlRef| Self::cast(lua, me.join(&*other))); reg.add_method("parent", |lua, me, ()| { me.parent_url().map(|u| Self::cast(lua, u)).transpose()