use derive_builder::Builder;
use nvim_types::{self as nvim, Dictionary, Object};
use crate::Buffer;
use crate::ToFunction;
pub type OnInputArgs = (
String, u32, Buffer, nvim::String, );
#[derive(Clone, Debug, Default, Builder)]
#[builder(default, build_fn(private, name = "fallible_build"))]
pub struct OpenTermOpts {
#[builder(setter(custom))]
on_input: Object,
}
impl OpenTermOpts {
#[inline(always)]
pub fn builder() -> OpenTermOptsBuilder {
OpenTermOptsBuilder::default()
}
}
impl OpenTermOptsBuilder {
pub fn on_input<F>(&mut self, fun: F) -> &mut Self
where
F: ToFunction<OnInputArgs, ()>,
{
self.on_input = Some(fun.to_object());
self
}
pub fn build(&mut self) -> OpenTermOpts {
self.fallible_build().expect("never fails, all fields have defaults")
}
}
impl From<&OpenTermOpts> for Dictionary {
fn from(opts: &OpenTermOpts) -> Self {
Self::from_iter([("on_input", opts.on_input.clone())])
}
}