on master help sign in
enhanced `surround_replace` to provide visual feedback (#7588)
843ae97Alex Vinyals
helix-term/src/commands.rs+9−1
@@ -5174,11 +5174,18 @@ fn surround_replace(cx: &mut Context) {
5174 }
5174 }
5175 };
5175 };
5176
5176
5177+ let selection = selection.clone();
5178+ let ranges: SmallVec<[Range; 1]> = change_pos.iter().map(|&p| Range::point(p)).collect();
5179+ doc.set_selection(
5180+ view.id,
5181+ Selection::new(ranges, selection.primary_index() * 2),
5182+ );
5183+
5177 cx.on_next_key(move |cx, event| {
5184 cx.on_next_key(move |cx, event| {
5178 let (view, doc) = current!(cx.editor);
5185 let (view, doc) = current!(cx.editor);
5179 let to = match event.char() {
5186 let to = match event.char() {
5180 Some(to) => to,
5187 Some(to) => to,
5181− None => return,
5188+ None => return doc.set_selection(view.id, selection),
5182 };
5189 };
5183 let (open, close) = surround::get_pair(to);
5190 let (open, close) = surround::get_pair(to);
5184 let transaction = Transaction::change(
5191 let transaction = Transaction::change(
@@ -5189,6 +5196,7 @@ fn surround_replace(cx: &mut Context) {
5189 (pos, pos + 1, Some(t))
5196 (pos, pos + 1, Some(t))
5190 }),
5197 }),
5191 );
5198 );
5199+ doc.set_selection(view.id, selection);
5192 doc.apply(&transaction, view.id);
5200 doc.apply(&transaction, view.id);
5193 exit_select_mode(cx);
5201 exit_select_mode(cx);
5194 });
5202 });