mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
35 lines
881 B
Rust
35 lines
881 B
Rust
use yazi_config::keymap::Exec;
|
|
|
|
use crate::input::{op::InputOp, Input};
|
|
|
|
pub struct Opt {
|
|
cut: bool,
|
|
insert: bool,
|
|
}
|
|
|
|
impl From<&Exec> for Opt {
|
|
fn from(e: &Exec) -> Self {
|
|
Self { cut: e.named.contains_key("cut"), insert: e.named.contains_key("insert") }
|
|
}
|
|
}
|
|
|
|
impl Input {
|
|
pub fn delete(&mut self, opt: impl Into<Opt>) -> bool {
|
|
let opt = opt.into() as Opt;
|
|
match self.snap().op {
|
|
InputOp::None => {
|
|
self.snap_mut().op = InputOp::Delete(opt.cut, opt.insert, self.snap().cursor);
|
|
false
|
|
}
|
|
InputOp::Select(start) => {
|
|
self.snap_mut().op = InputOp::Delete(opt.cut, opt.insert, start);
|
|
return self.handle_op(self.snap().cursor, true).then(|| self.move_(0)).is_some();
|
|
}
|
|
InputOp::Delete(..) => {
|
|
self.snap_mut().op = InputOp::Delete(opt.cut, opt.insert, 0);
|
|
return self.move_(self.snap().len() as isize);
|
|
}
|
|
_ => false,
|
|
}
|
|
}
|
|
}
|