LSPMIVEH5IYUPBMB7DL5VTM2HOMYDBA5ZY3GIW6ZFTCDGTUUDFFAC CVXA6LIYFYIZEVPTI335A332EXRVJXF2SC4B5F2NFYXZXYVDFBKQC PTQ26KY65NDVZ35EG66SARWRGGYKDJ2BT3EVK4RJFS2J5AQUX6OQC X6QJYZJZSS7YSRCDOPQ2I2Y7U7VJA4HE5P74ZYENROR7FRUPPXWQC B66IOHMWFZINTWC57Q5OD4YPBVQNBN3YUM3ZKX4MTDKHYGH5JHFAC 576YRB7XSKS6Q265TEJQS7HUGMKSGHGDRGVP6WBZS7XMK6RVJRNQC AFZQUL4VKEEDRSA5CV6YXN7PMX6PQ2PMLECTG53S4HZKTNCAIMXQC VL4FY4YJUFRVCZR67KOTB22RILTEP2KX2GLHP4J662XF7VGS77WAC HKVKPIIWK6AB4DWCS6SB47RYEXTD4QAQIGDFNQGA3TDJEIAXBZKQC use std::{collections::HashMap,error::Error,io::{BufRead, BufReader},process::{Command, Stdio},thread::JoinHandle,};
use std::{collections::HashMap, error::Error, process::Stdio, thread::JoinHandle};
fn kakoune_thread_main() {let mut child = Command::new("kak")
enum KakouneMessage {/// Resize screen to .0 x .1 charactersResizeScreen(u32, u32),}async fn kakoune_thread_main(messages: smol::channel::Receiver<KakouneMessage>) {let mut child = smol::process::Command::new("kak")
loop {let mut out = String::new();if stdout.read_line(&mut out).is_err() {break;
let kakoune_loop = async {loop {let mut out = String::new();if stdout.read_line(&mut out).await.is_err() {break;}let content: Rpc<json_ui::Request> = serde_json::from_str(&out).unwrap();println!("{:?}---", content);
let content: json_ui::Rpc<json_ui::Request> = serde_json::from_str(&out).unwrap();println!("{:?}---", content);}child.wait().unwrap();
};let message_loop = async {loop {let message = messages.recv().await.unwrap();match message {KakouneMessage::ResizeScreen(x, y) => {println!("{}, {}", x, y);let resp =serde_json::to_vec(&Rpc::from(json_ui::Response::Resize(x, y))).unwrap();stdin.write(&resp).await.unwrap();}}}};kakoune_loop.race(message_loop).await;