|
@@ -283,9 +283,14 @@ impl<'l, T: std::fmt::Display> SelectPrompt<'l, T> {
|
|
},
|
|
},
|
|
termion::event::Key::Char('\r') | termion::event::Key::Char('\n') => {
|
|
termion::event::Key::Char('\r') | termion::event::Key::Char('\n') => {
|
|
self.refilter();
|
|
self.refilter();
|
|
- if self.filtered_items.len() == 1 {
|
|
|
|
- return Ok(Some(self.items.swap_remove(self.filtered_items[0]).1))
|
|
|
|
- }
|
|
|
|
|
|
+ let pos = if self.filtered_items.len() == 1 {
|
|
|
|
+ self.filtered_items[0]
|
|
|
|
+ } else if let Some(pos) = self.items.iter().position(|p| p.0 == self.input) {
|
|
|
|
+ pos
|
|
|
|
+ } else {
|
|
|
|
+ continue
|
|
|
|
+ };
|
|
|
|
+ return Ok(Some(self.items.swap_remove(pos).1))
|
|
},
|
|
},
|
|
termion::event::Key::Ctrl('u') => {
|
|
termion::event::Key::Ctrl('u') => {
|
|
self.input.clear();
|
|
self.input.clear();
|