nvim-api 0.2.0

Neovim API bindings
Documentation
use nvim_types::{self as nvim, conversion::FromObject, serde::Serializer};
use serde::Serialize;

#[non_exhaustive]
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Serialize)]
pub enum ContextType {
    #[serde(rename = "bufs")]
    Bufferlist,

    #[serde(rename = "gvars")]
    GlobalVars,

    #[serde(rename = "funcs")]
    GlobalAndScriptLocalFuncs,

    #[serde(rename = "jumps")]
    Jumplist,

    #[serde(rename = "regs")]
    Registers,

    #[serde(rename = "sfuncs")]
    ScriptLocalFuncs,
}

impl From<ContextType> for nvim::String {
    fn from(ctx: ContextType) -> Self {
        nvim::String::from_object(
            ctx.serialize(Serializer::new())
                .expect("`ContextType` is serializable"),
        )
        .expect("`ContextType` is serialized into a string")
    }
}