nui 0.0.1

Experimental neovim RPC for UI clients
Documentation
use rmpv::Value;

#[derive(Debug)]
pub enum MessageKind {
    Confirm,
    ConfirmSubstitute,
    Error,
    Echo,
    EchoMessage,
    EchoError,
    LuaError,
    RpcError,
    ReturnPrompt,
    QuickFix,
    SearchCount,
    Warning,
    Unknown,
}

#[derive(Debug)]
pub struct MessageShow {
    pub kind: String,
    pub content: String,
    pub replace_last: bool,
}

#[derive(Debug)]
pub struct MessageShowMode {
    pub content: String,
}

#[derive(Debug)]
pub struct MessageShowCmd {
    pub content: String,
}

#[derive(Debug)]
pub struct MessageRuler {
    pub content: String,
}

#[derive(Debug)]
pub struct MessageHistoryShow {
    pub entries: Vec<String>,
}

impl MessageKind {
    pub fn parse(value: &Value) -> MessageKind {
        match value.as_str().unwrap() {
            "confirm" => MessageKind::Confirm,
            "confirm_sub" => MessageKind::ConfirmSubstitute,
            "emsg" => MessageKind::Error,
            "echo" => MessageKind::Echo,
            "echomsg" => MessageKind::EchoMessage,
            "echoerr" => MessageKind::EchoError,
            "lua_error" => MessageKind::LuaError,
            "rpc_error" => MessageKind::RpcError,
            "return_prompt" => MessageKind::ReturnPrompt,
            "quickfix" => MessageKind::QuickFix,
            "search_count" => MessageKind::SearchCount,
            "wmsg" => MessageKind::Warning,
            _ => MessageKind::Unknown,
        }
    }
}