aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEnan Ajmain <3nan.ajmain@gmail.com>2023-03-19 23:23:34 +0600
committerGitHub <noreply@github.com>2023-03-19 10:23:34 -0700
commit8786b2066d39e45295eacfe7b10263af4a330f2e (patch)
tree5f5167adebe656e0ce4ba1442c2536d23ab4882a /src
parent65046c830e14f8988d9c3b477187f6b871e45af2 (diff)
downloadrneovim-8786b2066d39e45295eacfe7b10263af4a330f2e.tar.gz
rneovim-8786b2066d39e45295eacfe7b10263af4a330f2e.tar.bz2
rneovim-8786b2066d39e45295eacfe7b10263af4a330f2e.zip
fix: pasting in terminal buffer on windows #22566
Problem: On Windows, pasting multiple lines on a terminal buffer cause all the lines to appear on the same line, i.e., the line breaks are lost. Cause: Windows shells expect "\r\n" as line break but "terminal_paste" function uses "\n". Solution: Use "\r\n" as line break for pasting in terminal buffer on Windows. Note: Although this issue was reported with powershell set as 'shell', it occurs in cmd too. Fixes #14621
Diffstat (limited to 'src')
-rw-r--r--src/nvim/terminal.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c
index fca8515fab..76fa3049f6 100644
--- a/src/nvim/terminal.c
+++ b/src/nvim/terminal.c
@@ -723,7 +723,11 @@ void terminal_paste(long count, char **y_array, size_t y_size)
for (size_t j = 0; j < y_size; j++) {
if (j) {
// terminate the previous line
+#ifdef MSWIN
+ terminal_send(curbuf->terminal, "\r\n", 2);
+#else
terminal_send(curbuf->terminal, "\n", 1);
+#endif
}
size_t len = strlen(y_array[j]);
if (len > buff_len) {