Expand description
Provides a high-level wrapper around kakoune’s JSON-RPC UI. This crate doesn’t have any opinions on how you choose to communicate with kakoune or how you choose to deserialize/serialize JSON as long as it is supported by serde.
The main types to look at here are IncomingRequest
and OutgoingRequest
.
§Examples
Basic usage:
use std::io::{BufRead, BufReader};
use std::process::{Command, Child, Stdio};
use kak_ui::{IncomingRequest, OutgoingRequest};
let kak_child_process = Command::new("kak")
.args(&["-ui", "json"])
.stdout(Stdio::piped())
.stdin(Stdio::piped())
.spawn()
.unwrap();
let incoming_request: IncomingRequest = serde_json::from_str(
&BufReader::new(kak_child_process.stdout.unwrap())
.lines()
.next()
.unwrap()
.unwrap(),
)
.unwrap();
let outgoing_request = OutgoingRequest::Keys(vec!["<esc>:q<ret>".to_string()]);
serde_json::to_writer(kak_child_process.stdin.unwrap(), &outgoing_request).unwrap();
Structs§
- KakAtom
- A kakoune atom
- KakColor
- A color in kakoune. Currently, this is a newtype wrapper around String.
- KakCoord
- A coordinate in kakoune
- KakFace
- A kakoune face
Enums§
- Incoming
Request - A incoming request. Recieve this from kakoune’s stdout
- KakAttribute
- An attribute in kakoune
- Outgoing
Request - A outgoing request. Input this to kakoune via stdin.