From c349ceb61f7af9e90db7a58d2305da239157ae63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Wojciech=20K=C4=99pka?= <wojtek.kepka@protonmail.com>
Date: Mon, 7 Jun 2021 21:28:04 +0200
Subject: [PATCH] Don't replace newlines

---
 helix-term/src/commands.rs | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 94e1af2d..0e39f0f2 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -466,19 +466,20 @@ pub fn replace(cx: &mut Context) {
             ..
         } = event
         {
-            let text = Tendril::from_char(ch);
-
             let (view, doc) = cx.current();
 
             let transaction =
                 Transaction::change_by_selection(doc.text(), doc.selection(view.id), |range| {
                     let max_to = doc.text().len_chars().saturating_sub(1);
                     let to = std::cmp::min(max_to, range.to() + 1);
-                    (
-                        range.from(),
-                        to,
-                        Some(text.repeat(to - range.from()).into()),
-                    )
+                    let text: String = doc
+                        .text()
+                        .slice(range.from()..to)
+                        .chars()
+                        .map(|c| if c == '\n' { '\n' } else { ch })
+                        .collect();
+
+                    (range.from(), to, Some(text.as_str().into()))
                 });
 
             doc.apply(&transaction, view.id);