@@ -5,7 +5,7 @@ use helix_core::{
55 match_brackets,
66 movement::{self, Direction},
77 object, pos_at_coords,
8− regex::{self, Regex},
8+ regex::{self, Regex, RegexBuilder},
99 register::Register,
1010 search, selection, surround, textobject, LineEnding, Position, Range, Rope, RopeGraphemes,
1111 RopeSlice, Selection, SmallVec, Tendril, Transaction,
@@ -1154,7 +1154,15 @@ fn search_next_impl(cx: &mut Context, extend: bool) {
11541154 if let Some(query) = registers.read('/') {
11551155 let query = query.last().unwrap();
11561156 let contents = doc.text().slice(..).to_string();
1157− if let Ok(regex) = Regex::new(query) {
1157+ let case_insensitive = if cx.editor.config.smart_case {
1158+ !query.chars().any(char::is_uppercase)
1159+ } else {
1160+ false
1161+ };
1162+ if let Ok(regex) = RegexBuilder::new(query)
1163+ .case_insensitive(case_insensitive)
1164+ .build()
1165+ {
11581166 search_impl(doc, view, &contents, ®ex, extend);
11591167 } else {
11601168 // get around warning `mutable_borrow_reservation_conflict`