diff options
author | rabite <rabite@posteo.de> | 2019-05-08 13:47:36 +0200 |
---|---|---|
committer | rabite <rabite@posteo.de> | 2019-05-08 13:48:46 +0200 |
commit | 572a217e17b0cc2c30cd94b57e5a94ede75e0707 (patch) | |
tree | fcf713135acb4516d4f935565d6b836eba525c21 /src/widget.rs | |
parent | 7d08e6b064a0def48df927cd19572b1964aedcc8 (diff) |
add incremental search/filter
Diffstat (limited to 'src/widget.rs')
-rw-r--r-- | src/widget.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/widget.rs b/src/widget.rs index 2f1d54c..e4e529c 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -23,6 +23,7 @@ pub enum Events { InputEvent(Event), WidgetReady, TerminalResized, + InputUpdated(String), ExclusiveEvent(Option<Mutex<Option<Sender<Events>>>>), InputEnabled(bool), RequestInput, @@ -270,6 +271,7 @@ pub trait Widget { err @ Err(HError::PopupFinnished) | err @ Err(HError::Quit) | err @ Err(HError::MiniBufferCancelledInput) => err?, + err @ Err(HError::MiniBufferInputUpdated(_)) => err?, err @ Err(HError::WidgetResizedError) => err?, err @ Err(_) => err.log(), Ok(_) => {} @@ -290,6 +292,9 @@ pub trait Widget { _ => {} } } + Events::InputUpdated(input) => { + HError::input_updated(input)? + } Events::ConfigLoaded => { self.get_core_mut()?.config.write()?.take_async().log(); } @@ -445,7 +450,22 @@ pub trait Widget { } fn minibuffer(&self, query: &str) -> HResult<String> { - let answer = self.get_core()?.minibuffer.lock()?.as_mut()?.query(query); + let answer = self.get_core()? + .minibuffer + .lock()? + .as_mut()? + .query(query, false); + let mut screen = self.screen()?; + screen.cursor_hide().log(); + answer + } + + fn minibuffer_continuous(&self, query: &str) -> HResult<String> { + let answer = self.get_core()? + .minibuffer + .lock()? + .as_mut()? + .query(query, true); let mut screen = self.screen()?; screen.cursor_hide().log(); answer |