mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-21 23:01: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<()> {
|
||||
lua.register_userdata_type::<Self>(|_| {})?;
|
||||
|
||||
Ok(())
|
||||
lua.register_userdata_type::<Self>(|_| {})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
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::Files::register(&LUA)?;
|
||||
super::Filter::register(&LUA)?;
|
||||
super::Finder::register(&LUA)?;
|
||||
super::Folder::register(&LUA)?;
|
||||
super::Mode::register(&LUA)?;
|
||||
super::Preview::register(&LUA)?;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ mod config;
|
|||
mod file;
|
||||
mod files;
|
||||
mod filter;
|
||||
mod finder;
|
||||
mod folder;
|
||||
mod iter;
|
||||
mod lives;
|
||||
|
|
@ -19,6 +20,7 @@ use config::*;
|
|||
use file::*;
|
||||
use files::*;
|
||||
use filter::*;
|
||||
use finder::*;
|
||||
use folder::*;
|
||||
use iter::*;
|
||||
pub(super) use lives::*;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use std::ops::Deref;
|
|||
|
||||
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 {
|
||||
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("preview", |_, me| Preview::make(me));
|
||||
reg.add_field_method_get("finder", |_, me| me.finder.as_ref().map(Finder::make).transpose());
|
||||
})?;
|
||||
|
||||
Ok(())
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue