Skip to content

Commit 5e43f87

Browse files
authored
fix: rendering fails when no file type style is matched (#721)
1 parent 8ea7556 commit 5e43f87

File tree

5 files changed

+20
-9
lines changed

5 files changed

+20
-9
lines changed

yazi-fm/src/lives/file.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,13 @@ impl File {
9595
})
9696
});
9797
reg.add_method("is_selected", |_, me, ()| Ok(me.tab().selected.contains(&me.url)));
98+
reg.add_method("in_parent", |_, me, ()| {
99+
Ok(me.tab().parent.as_ref().is_some_and(|f| me.folder().cwd == f.cwd))
100+
});
98101
reg.add_method("in_current", |_, me, ()| Ok(me.folder().cwd == me.tab().current.cwd));
102+
reg.add_method("in_preview", |_, me, ()| {
103+
Ok(me.tab().current.hovered().is_some_and(|f| me.folder().cwd == f.url))
104+
});
99105
reg.add_method("found", |lua, me, ()| {
100106
let cx = lua.named_registry_value::<CtxRef>("cx")?;
101107
let Some(finder) = &cx.manager.active().finder else {

yazi-plugin/preset/components/current.lua

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ function Current:render(area)
1212

1313
local items, markers = {}, {}
1414
for i, f in ipairs(files) do
15-
local style = f:style()
16-
items[#items + 1] = ui.ListItem(ui.Line(File:full(f)))
17-
:style(f:is_hovered() and style:patch(THEME.manager.hovered) or style)
15+
items[#items + 1] = ui.ListItem(ui.Line(File:full(f))):style(File:style(f))
1816

1917
-- Yanked/marked/selected files
2018
local marker = File:marker(f)

yazi-plugin/preset/components/file.lua

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,17 @@ function File:full(file)
7272
}
7373
end
7474

75+
function File:style(file)
76+
local style = file:style()
77+
if not file:is_hovered() then
78+
return style
79+
elseif file:in_preview() then
80+
return style and style:patch(THEME.manager.preview_hovered) or THEME.manager.preview_hovered
81+
else
82+
return style and style:patch(THEME.manager.hovered) or THEME.manager.hovered
83+
end
84+
end
85+
7586
function File:marker(file)
7687
local yanked = file:is_yanked()
7788
if yanked ~= 0 then

yazi-plugin/preset/components/parent.lua

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ function Parent:render(area)
1212

1313
local items, markers = {}, {}
1414
for i, f in ipairs(folder.window) do
15-
local style = f:style()
16-
items[#items + 1] = ui.ListItem(ui.Line(File:full(f)))
17-
:style(f:is_hovered() and style:patch(THEME.manager.hovered) or style)
15+
items[#items + 1] = ui.ListItem(ui.Line(File:full(f))):style(File:style(f))
1816

1917
-- Yanked/marked/selected files
2018
local marker = File:marker(f)

yazi-plugin/preset/plugins/folder.lua

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ function M:peek()
1313

1414
local items, markers = {}, {}
1515
for i, f in ipairs(folder.window) do
16-
local style = f:style()
17-
items[#items + 1] = ui.ListItem(ui.Line(File:full(f)))
18-
:style(f:is_hovered() and style:patch(THEME.manager.preview_hovered) or style)
16+
items[#items + 1] = ui.ListItem(ui.Line(File:full(f))):style(File:style(f))
1917

2018
-- Yanked/marked/selected files
2119
local marker = File:marker(f)

0 commit comments

Comments
 (0)