From 4c6611f96b6a7d3e27bfb0c8e43d49f62dde493b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Wed, 3 Mar 2021 17:55:56 +0900
Subject: [PATCH] commands: Stop select_regex from breaking when no matches.

---
 helix-term/src/commands.rs | 8 +++-----
 helix-term/src/ui/mod.rs   | 5 +++++
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index bbd78092..cb811c98 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -307,11 +307,9 @@ pub fn select_all(cx: &mut Context) {
 pub fn select_regex(cx: &mut Context) {
     let prompt = ui::regex_prompt(cx, "select:".to_string(), |doc, regex| {
         let text = doc.text().slice(..);
-        // TODO: if select on matches returns empty range, we need to abort
-        // if regex empty or no matches, return
-        let selection =
-            selection::select_on_matches(text, doc.selection(), &regex).expect("no matches");
-        doc.set_selection(selection);
+        if let Some(selection) = selection::select_on_matches(text, doc.selection(), &regex) {
+            doc.set_selection(selection);
+        }
     });
 
     cx.push_layer(Box::new(prompt));
diff --git a/helix-term/src/ui/mod.rs b/helix-term/src/ui/mod.rs
index 463ac368..593da3ae 100644
--- a/helix-term/src/ui/mod.rs
+++ b/helix-term/src/ui/mod.rs
@@ -45,6 +45,11 @@ pub fn regex_prompt(
                     //
                 }
                 PromptEvent::Update => {
+                    // skip empty input, TODO: trigger default
+                    if input.is_empty() {
+                        return;
+                    }
+
                     match Regex::new(input) {
                         Ok(regex) => {
                             let view = &mut editor.view_mut();