@@ -652,8 +652,13 @@ where
652 let text = doc.text().slice(..);
652 let text = doc.text().slice(..);
654 let selection = doc.selection(view.id).clone().transform(|range| {
654 let selection = doc.selection(view.id).clone().transform(|range| {
655− search_fn(text, ch, range.head, count, inclusive)
655+ search_fn(text, ch, range.head, count, inclusive).map_or(range, |pos| {
656− .map_or(range, |pos| range.put(text, pos, extend))
656+ if extend {
657+ range.put(text, pos, true)
659+ range.put(text, pos.saturating_sub(1), false)
658 doc.set_selection(view.id, selection);
663 doc.set_selection(view.id, selection);