From 2eb41f3d3d608cebf4540b42ff8250c5b619b55d Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sat, 14 Sep 2019 13:02:35 +0300 Subject: [PATCH] ui: dedup history suggestions in command execute bar --- ui/src/components/utilities.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ui/src/components/utilities.rs b/ui/src/components/utilities.rs index 14834b8b..5c66c895 100644 --- a/ui/src/components/utilities.rs +++ b/ui/src/components/utilities.rs @@ -26,6 +26,7 @@ use super::*; mod widgets; pub use self::widgets::*; +use fnv::FnvHashSet; /// A horizontally split in half container. #[derive(Debug)] @@ -745,11 +746,15 @@ impl Component for StatusBar { if self.ex_buffer.as_str().split_graphemes().len() <= 2 { return; } + + let mut unique_suggestions: FnvHashSet<&str> = FnvHashSet::default(); let mut suggestions: Vec = self .cmd_history .iter() .filter_map(|h| { - if h.starts_with(self.ex_buffer.as_str()) { + let sug = self.ex_buffer.as_str(); + if h.starts_with(sug) && !unique_suggestions.contains(sug) { + unique_suggestions.insert(sug); Some(h.clone().into()) } else { None