on master help sign in
Replace current selection with all yanked values. (#882)
commitb1ebd7a07e55f8ff5b8ef9fcbf09940a9f4a4f39 authorradical3dd <radical3dd@gmail.com> dateThu 21 Oct 2021, 02:44 (5 years ago) parente9b23c2
1 file changed+12−2
helix-term/src/commands.rs+12−2
helix-term/src/commands.rs+12−2
@@ -3782,11 +3782,21 @@ fn replace_with_yanked(cx: &mut Context) {
37823782 let registers = &mut cx.editor.registers;
37833783
37843784 if let Some(values) = registers.read(reg_name) {
3785− if let Some(yank) = values.first() {
3785+ if !values.is_empty() {
3786+ let repeat = std::iter::repeat(
3787+ values
3788+ .last()
3789+ .map(|value| Tendril::from_slice(value))
3790+ .unwrap(),
3791+ );
3792+ let mut values = values
3793+ .iter()
3794+ .map(|value| Tendril::from_slice(value))
3795+ .chain(repeat);
37863796 let selection = doc.selection(view.id);
37873797 let transaction = Transaction::change_by_selection(doc.text(), selection, |range| {
37883798 if !range.is_empty() {
3789− (range.from(), range.to(), Some(yank.as_str().into()))
3799+ (range.from(), range.to(), Some(values.next().unwrap()))
37903800 } else {
37913801 (range.from(), range.to(), None)
37923802 }