#[derive(Debug, PartialEq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum MenuShowStyle {
Prompt,
Inline,
}
#[derive(Debug, PartialEq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum InfoShowStyle {
Prompt,
Inline,
InlineAbove,
InlineBelow,
MenuDoc,
Modal,
}
#[derive(Debug, PartialEq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum SetCursorMode {
Prompt,
Buffer,
}
#[derive(Debug, PartialEq, Deserialize)]
#[serde(rename_all = "snake_case", tag = "method", content = "params")]
/// JSONRPC call *from* Kakoune
pub enum Request {
Draw(Vec<Line>, Face, Face),
DrawStatus(Line, Line, Face),
MenuShow(Vec<Line>, Coord, Face, Face, MenuShowStyle),
MenuSelect(i32),
MenuHide(),
InfoShow(String, String, Coord, Face, InfoShowStyle),
InfoHide,
SetCursor(SetCursorMode, Coord),
SetUiOptions(HashMap<String, String>),
Refresh(bool),
}
#[derive(Debug, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum MouseEvent {
Move,
Press,
Release,
WheelUp,
WheelDown,
}
#[derive(Debug, PartialEq, Serialize)]
#[serde(rename_all = "snake_case", tag = "method", content = "params")]
/// JSONRPC call *to* Kakoune
/// NOTE: contrary to the name, this is a JSONRPC request(method call)
pub enum Response {
Keys(Vec<String>),
Resize(i32, i32),
Mouse(MouseEvent, i32, i32),
MenuSelect([i32; 0]),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Rpc<T> {
jsonrpc: String,
#[serde(flatten)]
inner: T,
}
impl<T> From<T> for Rpc<T> {
fn from(inner: T) -> Self {
Rpc {
jsonrpc: String::from("2.0"),
inner,
}
}
}