aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-10-16 09:43:07 +0000
committerBlaž Hrastnik2021-10-16 09:43:07 +0000
commit2c0468ffd16de1f835ac9c4e39692a682273fb7b (patch)
treeaafbc12fa7d5e1b577d582ddf5457226b413cd6c
parentbe428a295a0884ed0523a8a995e913ee1c863b60 (diff)
fix: If backspacing past the start offset, cancel completion
Refs #822
-rw-r--r--helix-term/src/ui/completion.rs4
-rw-r--r--helix-term/src/ui/menu.rs8
2 files changed, 12 insertions, 0 deletions
diff --git a/helix-term/src/ui/completion.rs b/helix-term/src/ui/completion.rs
index ba009c50..c75b24f1 100644
--- a/helix-term/src/ui/completion.rs
+++ b/helix-term/src/ui/completion.rs
@@ -215,6 +215,10 @@ impl Completion {
let text = Cow::from(fragment);
// TODO: logic is same as ui/picker
menu.score(&text);
+ } else {
+ // we backspaced before the start offset, clear the menu
+ // this will cause the editor to remove the completion popup
+ menu.clear();
}
}
diff --git a/helix-term/src/ui/menu.rs b/helix-term/src/ui/menu.rs
index dab0c34f..055593fd 100644
--- a/helix-term/src/ui/menu.rs
+++ b/helix-term/src/ui/menu.rs
@@ -90,6 +90,14 @@ impl<T: Item> Menu<T> {
self.recalculate = true;
}
+ pub fn clear(&mut self) {
+ self.matches.clear();
+
+ // reset cursor position
+ self.cursor = None;
+ self.scroll = 0;
+ }
+
pub fn move_up(&mut self) {
let len = self.matches.len();
let pos = self.cursor.map_or(0, |i| (i + len.saturating_sub(1)) % len) % len;