mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
feat: expose Finder API to Lua
This commit is contained in:
parent
f35712a768
commit
b5b6c9642a
5 changed files with 32 additions and 4 deletions
|
|
@ -21,8 +21,6 @@ impl Filter {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn register(lua: &Lua) -> mlua::Result<()> {
|
pub(super) fn register(lua: &Lua) -> mlua::Result<()> {
|
||||||
lua.register_userdata_type::<Self>(|_| {})?;
|
lua.register_userdata_type::<Self>(|_| {})
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
26
yazi-fm/src/lives/finder.rs
Normal file
26
yazi-fm/src/lives/finder.rs
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
use std::ops::Deref;
|
||||||
|
|
||||||
|
use mlua::{AnyUserData, Lua};
|
||||||
|
|
||||||
|
use super::SCOPE;
|
||||||
|
|
||||||
|
pub(super) struct Finder {
|
||||||
|
inner: *const yazi_core::tab::Finder,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Deref for Finder {
|
||||||
|
type Target = yazi_core::tab::Finder;
|
||||||
|
|
||||||
|
fn deref(&self) -> &Self::Target { unsafe { &*self.inner } }
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Finder {
|
||||||
|
#[inline]
|
||||||
|
pub(super) fn make(inner: &yazi_core::tab::Finder) -> mlua::Result<AnyUserData<'static>> {
|
||||||
|
SCOPE.create_any_userdata(Self { inner })
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(super) fn register(lua: &Lua) -> mlua::Result<()> {
|
||||||
|
lua.register_userdata_type::<Self>(|_| {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -19,6 +19,7 @@ impl Lives {
|
||||||
super::File::register(&LUA)?;
|
super::File::register(&LUA)?;
|
||||||
super::Files::register(&LUA)?;
|
super::Files::register(&LUA)?;
|
||||||
super::Filter::register(&LUA)?;
|
super::Filter::register(&LUA)?;
|
||||||
|
super::Finder::register(&LUA)?;
|
||||||
super::Folder::register(&LUA)?;
|
super::Folder::register(&LUA)?;
|
||||||
super::Mode::register(&LUA)?;
|
super::Mode::register(&LUA)?;
|
||||||
super::Preview::register(&LUA)?;
|
super::Preview::register(&LUA)?;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ mod config;
|
||||||
mod file;
|
mod file;
|
||||||
mod files;
|
mod files;
|
||||||
mod filter;
|
mod filter;
|
||||||
|
mod finder;
|
||||||
mod folder;
|
mod folder;
|
||||||
mod iter;
|
mod iter;
|
||||||
mod lives;
|
mod lives;
|
||||||
|
|
@ -19,6 +20,7 @@ use config::*;
|
||||||
use file::*;
|
use file::*;
|
||||||
use files::*;
|
use files::*;
|
||||||
use filter::*;
|
use filter::*;
|
||||||
|
use finder::*;
|
||||||
use folder::*;
|
use folder::*;
|
||||||
use iter::*;
|
use iter::*;
|
||||||
pub(super) use lives::*;
|
pub(super) use lives::*;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ use std::ops::Deref;
|
||||||
|
|
||||||
use mlua::{AnyUserData, Lua, UserDataFields, UserDataMethods};
|
use mlua::{AnyUserData, Lua, UserDataFields, UserDataMethods};
|
||||||
|
|
||||||
use super::{Config, Folder, Mode, Preview, Selected, SCOPE};
|
use super::{Config, Finder, Folder, Mode, Preview, Selected, SCOPE};
|
||||||
|
|
||||||
pub(super) struct Tab {
|
pub(super) struct Tab {
|
||||||
inner: *const yazi_core::tab::Tab,
|
inner: *const yazi_core::tab::Tab,
|
||||||
|
|
@ -44,6 +44,7 @@ impl Tab {
|
||||||
reg.add_field_method_get("selected", |_, me| Selected::make(&me.selected));
|
reg.add_field_method_get("selected", |_, me| Selected::make(&me.selected));
|
||||||
|
|
||||||
reg.add_field_method_get("preview", |_, me| Preview::make(me));
|
reg.add_field_method_get("preview", |_, me| Preview::make(me));
|
||||||
|
reg.add_field_method_get("finder", |_, me| me.finder.as_ref().map(Finder::make).transpose());
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue