diff options
author | Jan Hrastnik | 2020-10-15 10:08:01 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2020-10-16 03:01:46 +0000 |
commit | fa55b1e51c2310cf73689da37c5c57441d7e89c3 (patch) | |
tree | 132f1fe974d3f5b0b1a82499a89fbbfed0a062d9 /helix-view | |
parent | 3c0f187c5bd24b0af7699cf813a151088b2217d0 (diff) |
added closures to prompt
Diffstat (limited to 'helix-view')
-rw-r--r-- | helix-view/src/prompt.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/helix-view/src/prompt.rs b/helix-view/src/prompt.rs index 3cb15f68..8cfb9fde 100644 --- a/helix-view/src/prompt.rs +++ b/helix-view/src/prompt.rs @@ -6,15 +6,21 @@ use std::string::String; pub struct Prompt { pub buffer: String, pub cursor_loc: usize, + completion_fn: Box<dyn FnMut(&str) -> Option<Vec<&str>>>, + callback_fn: Box<dyn Fn(&str)>, } impl Prompt { - pub fn new() -> Prompt { - let prompt = Prompt { + pub fn new( + completion_fn: impl FnMut(&str) -> Option<Vec<&str>> + 'static, + callback_fn: impl Fn(&str) + 'static, + ) -> Prompt { + Prompt { buffer: String::from(""), cursor_loc: 0, - }; - prompt + completion_fn: Box::new(completion_fn), + callback_fn: Box::new(callback_fn), + } } pub fn insert_char(&mut self, c: char) { @@ -49,10 +55,6 @@ impl Prompt { } } - pub fn success_fn() { - // TODO: - } - pub fn handle_input(&mut self, key_event: KeyEvent, view: &mut View) { match key_event { KeyEvent { @@ -82,6 +84,10 @@ impl Prompt { code: KeyCode::Backspace, .. } => self.delete_char_backwards(), + KeyEvent { + code: KeyCode::Enter, + .. + } => (self.callback_fn)(&self.buffer), _ => (), } } |