add clear method
This commit is contained in:
parent
d52311cafa
commit
ffed15e697
19
src/nvim.rs
19
src/nvim.rs
@ -15,6 +15,8 @@ pub trait RedrawEvents {
|
|||||||
fn on_cursor_goto(&mut self, row: u64, col: u64);
|
fn on_cursor_goto(&mut self, row: u64, col: u64);
|
||||||
|
|
||||||
fn on_put(&mut self, text: &str);
|
fn on_put(&mut self, text: &str);
|
||||||
|
|
||||||
|
fn on_clear(&mut self);
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! try_str {
|
macro_rules! try_str {
|
||||||
@ -84,26 +86,33 @@ fn nvim_cb(ui: &SharedUi, method: &str, params: Vec<Value>) {
|
|||||||
fn call(ui: &SharedUi, method: &str, args: Vec<Value>) {
|
fn call(ui: &SharedUi, method: &str, args: Vec<Value>) {
|
||||||
match method {
|
match method {
|
||||||
"cursor_goto" => {
|
"cursor_goto" => {
|
||||||
safe_call(ui.clone(), move |ui| {
|
safe_call(ui, move |ui| {
|
||||||
ui.borrow_mut().on_cursor_goto(try_int!(args[0]), try_int!(args[1]));
|
ui.borrow_mut().on_cursor_goto(try_int!(args[0]), try_int!(args[1]));
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
},
|
}
|
||||||
"put" => {
|
"put" => {
|
||||||
safe_call(ui.clone(), move |ui| {
|
safe_call(ui, move |ui| {
|
||||||
ui.borrow_mut().on_put(try_str!(args[0]));
|
ui.borrow_mut().on_put(try_str!(args[0]));
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
"clear" => {
|
||||||
|
safe_call(ui, move |ui| {
|
||||||
|
ui.borrow_mut().on_clear();
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
}
|
||||||
_ => println!("Event {}", method),
|
_ => println!("Event {}", method),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fn safe_call<F>(mutex: SharedUi, cb: F)
|
fn safe_call<F>(ui: &SharedUi, cb: F)
|
||||||
where F: Fn(&UiMutex<Ui>) -> result::Result<(), String> + 'static + Send
|
where F: Fn(&UiMutex<Ui>) -> result::Result<(), String> + 'static + Send
|
||||||
{
|
{
|
||||||
|
let sent_ui = ui.clone();
|
||||||
glib::idle_add(move || {
|
glib::idle_add(move || {
|
||||||
if let Err(msg) = cb(&*mutex) {
|
if let Err(msg) = cb(&*sent_ui) {
|
||||||
println!("Error call function: {}", msg);
|
println!("Error call function: {}", msg);
|
||||||
}
|
}
|
||||||
glib::Continue(false)
|
glib::Continue(false)
|
||||||
|
@ -86,5 +86,9 @@ impl RedrawEvents for Ui {
|
|||||||
fn on_put(&mut self, text: &str) {
|
fn on_put(&mut self, text: &str) {
|
||||||
self.model.put(text);
|
self.model.put(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_clear(&mut self) {
|
||||||
|
self.model.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,10 @@ impl Cell {
|
|||||||
pub fn new(ch: char) -> Cell {
|
pub fn new(ch: char) -> Cell {
|
||||||
Cell { ch: ch }
|
Cell { ch: ch }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn clear(&mut self) {
|
||||||
|
self.ch = ' ';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct UiModel {
|
pub struct UiModel {
|
||||||
@ -48,4 +52,12 @@ impl UiModel {
|
|||||||
self.model[self.cur_row][self.cur_col].ch = text.chars().last().unwrap();
|
self.model[self.cur_row][self.cur_col].ch = text.chars().last().unwrap();
|
||||||
self.cur_col += 1;
|
self.cur_col += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn clear(&mut self) {
|
||||||
|
for row in 0..self.rows {
|
||||||
|
for col in 0..self.columns {
|
||||||
|
self.model[row][col].clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user