summaryrefslogtreecommitdiffstats
path: root/src/widget.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-05-08 13:47:36 +0200
committerrabite <rabite@posteo.de>2019-05-08 13:48:46 +0200
commit572a217e17b0cc2c30cd94b57e5a94ede75e0707 (patch)
treefcf713135acb4516d4f935565d6b836eba525c21 /src/widget.rs
parent7d08e6b064a0def48df927cd19572b1964aedcc8 (diff)
add incremental search/filter
Diffstat (limited to 'src/widget.rs')
-rw-r--r--src/widget.rs22
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