on master help sign in
Replace current selection with all yanked values. (#882)
b1ebd7aradical3dd
helix-term/src/commands.rs+12−2
@@ -3782,11 +3782,21 @@ fn replace_with_yanked(cx: &mut Context) {
3782 let registers = &mut cx.editor.registers;
3782 let registers = &mut cx.editor.registers;
3783
3783
3784 if let Some(values) = registers.read(reg_name) {
3784 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);
3786 let selection = doc.selection(view.id);
3796 let selection = doc.selection(view.id);
3787 let transaction = Transaction::change_by_selection(doc.text(), selection, |range| {
3797 let transaction = Transaction::change_by_selection(doc.text(), selection, |range| {
3788 if !range.is_empty() {
3798 if !range.is_empty() {
3789− (range.from(), range.to(), Some(yank.as_str().into()))
3799+ (range.from(), range.to(), Some(values.next().unwrap()))
3790 } else {
3800 } else {
3791 (range.from(), range.to(), None)
3801 (range.from(), range.to(), None)
3792 }
3802 }