@@ -5,7 +5,7 @@ use helix_core::{
5 match_brackets,
5 match_brackets,
6 movement::{self, Direction},
6 movement::{self, Direction},
7 object, pos_at_coords,
7 object, pos_at_coords,
8− regex::{self, Regex},
8+ regex::{self, Regex, RegexBuilder},
9 register::Register,
9 register::Register,
10 search, selection, surround, textobject, LineEnding, Position, Range, Rope, RopeGraphemes,
10 search, selection, surround, textobject, LineEnding, Position, Range, Rope, RopeGraphemes,
11 RopeSlice, Selection, SmallVec, Tendril, Transaction,
11 RopeSlice, Selection, SmallVec, Tendril, Transaction,
@@ -1154,7 +1154,15 @@ fn search_next_impl(cx: &mut Context, extend: bool) {
1154 if let Some(query) = registers.read('/') {
1154 if let Some(query) = registers.read('/') {
1155 let query = query.last().unwrap();
1155 let query = query.last().unwrap();
1156 let contents = doc.text().slice(..).to_string();
1156 let contents = doc.text().slice(..).to_string();
1157+ let case_insensitive = if cx.editor.config.smart_case {
1158+ !query.chars().any(char::is_uppercase)
1157− if let Ok(regex) = Regex::new(query) {
1162+ if let Ok(regex) = RegexBuilder::new(query)
1163+ .case_insensitive(case_insensitive)
1158 search_impl(doc, view, &contents, ®ex, extend);
1166 search_impl(doc, view, &contents, ®ex, extend);
1159 } else {
1167 } else {
1160 // get around warning `mutable_borrow_reservation_conflict`
1168 // get around warning `mutable_borrow_reservation_conflict`