1use anyhow::bail;
2use mlua::{ExternalError, IntoLua, Lua, Value};
3use yazi_shared::event::CmdCow;
4
5use crate::Step;
6
7#[derive(Clone, Copy, Debug, Default)]
8pub struct ArrowOpt {
9 pub step: Step,
10}
11
12impl TryFrom<CmdCow> for ArrowOpt {
13 type Error = anyhow::Error;
14
15 fn try_from(c: CmdCow) -> Result<Self, Self::Error> {
16 let Ok(step) = c.first() else {
17 bail!("'step' is required for ArrowOpt");
18 };
19
20 Ok(Self { step })
21 }
22}
23
24impl From<isize> for ArrowOpt {
25 fn from(n: isize) -> Self { Self { step: n.into() } }
26}
27
28impl IntoLua for ArrowOpt {
29 fn into_lua(self, _: &Lua) -> mlua::Result<Value> { Err("unsupported".into_lua_err()) }
30}