From 432bec10eddb3f51f3a6e32aedbfd566d74cde75 Mon Sep 17 00:00:00 2001
From: Leoi Hung Kin <leoihungkin@outlook.com>
Date: Fri, 24 Sep 2021 09:27:16 +0800
Subject: [PATCH] allow smart case in global search (#781)

---
 helix-term/src/commands.rs | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 5005962f..ac93b5d0 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -43,7 +43,7 @@ use std::{
 use once_cell::sync::Lazy;
 use serde::de::{self, Deserialize, Deserializer};
 
-use grep_regex::RegexMatcher;
+use grep_regex::RegexMatcherBuilder;
 use grep_searcher::{sinks, BinaryDetection, SearcherBuilder};
 use ignore::{DirEntry, WalkBuilder, WalkState};
 use tokio_stream::wrappers::UnboundedReceiverStream;
@@ -1226,6 +1226,7 @@ fn search_selection(cx: &mut Context) {
 fn global_search(cx: &mut Context) {
     let (all_matches_sx, all_matches_rx) =
         tokio::sync::mpsc::unbounded_channel::<(usize, PathBuf)>();
+    let smart_case = cx.editor.config.smart_case;
     let prompt = ui::regex_prompt(
         cx,
         "global search:".into(),
@@ -1234,7 +1235,11 @@ fn global_search(cx: &mut Context) {
             if event != PromptEvent::Validate {
                 return;
             }
-            if let Ok(matcher) = RegexMatcher::new_line_matcher(regex.as_str()) {
+
+            if let Ok(matcher) = RegexMatcherBuilder::new()
+                .case_smart(smart_case)
+                .build(regex.as_str())
+            {
                 let searcher = SearcherBuilder::new()
                     .binary_detection(BinaryDetection::quit(b'\x00'))
                     .build();