From 987d8e6dd66d65c2503cc81a3b9ea8787435839a Mon Sep 17 00:00:00 2001 From: Kirawi <67773714+kirawi@users.noreply.github.com> Date: Fri, 10 Sep 2021 11:12:26 -0400 Subject: [PATCH] Convert clipboard line ending to document line ending when pasting (#716) * convert a paste's line-ending to the current doc's line-ending * move paste regex into paste_impl --- helix-term/src/commands.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index a7a715763e05..f9ebb801d512 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -3462,7 +3462,14 @@ fn paste_impl( .iter() .any(|value| get_line_ending_of_str(value).is_some()); - let mut values = values.iter().cloned().map(Tendril::from).chain(repeat); + // Only compiled once. + #[allow(clippy::trivial_regex)] + static REGEX: Lazy = Lazy::new(|| Regex::new(r"\r\n|\r|\n").unwrap()); + let mut values = values + .iter() + .map(|value| REGEX.replace_all(value, doc.line_ending.as_str())) + .map(|value| Tendril::from(value.as_ref())) + .chain(repeat); let text = doc.text(); let selection = doc.selection(view.id);