on master help sign in
fix: Don't crash on empty completion, don't retrigger on close
f692edeBlaž Hrastnik
helix-term/src/ui/editor.rs+8
@@ -730,6 +730,12 @@ impl EditorView {
730 ) {
730 ) {
731 let mut completion =
731 let mut completion =
732 Completion::new(editor, items, offset_encoding, start_offset, trigger_offset);
732 Completion::new(editor, items, offset_encoding, start_offset, trigger_offset);
733+
734+ if completion.is_empty() {
735+ // skip if we got no completion results
736+ return;
737+ }
738+
733 // TODO : propagate required size on resize to completion too
739 // TODO : propagate required size on resize to completion too
734 completion.required_size((size.width, size.height));
740 completion.required_size((size.width, size.height));
735 self.completion = Some(completion);
741 self.completion = Some(completion);
@@ -939,6 +945,7 @@ impl Component for EditorView {
939 if callback.is_some() {
945 if callback.is_some() {
940 // assume close_fn
946 // assume close_fn
941 self.completion = None;
947 self.completion = None;
948+ cxt.editor.clear_idle_timer(); // don't retrigger
942 }
949 }
943 }
950 }
944 }
951 }
@@ -952,6 +959,7 @@ impl Component for EditorView {
952 completion.update(&mut cxt);
959 completion.update(&mut cxt);
953 if completion.is_empty() {
960 if completion.is_empty() {
954 self.completion = None;
961 self.completion = None;
962+ cxt.editor.clear_idle_timer(); // don't retrigger
955 }
963 }
956 }
964 }
957 }
965 }