diff options
Diffstat (limited to 'helix-view/src/prompt.rs')
-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), _ => (), } } |