From 7ca17c2aa4f16046a715cfc43e6f01e314f6c207 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 25 Jul 2023 08:35:38 +0200 Subject: [PATCH] Terminal: Fix nano paste Nano does not work well with pasted \n, so we replace them with \r. Change-Id: I2518e6e2095b5ee76e8eca55dede7ed708f21b9e Reviewed-by: Christian Stenger Reviewed-by: Cristian Adam --- src/plugins/terminal/terminalsurface.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plugins/terminal/terminalsurface.cpp b/src/plugins/terminal/terminalsurface.cpp index ea994302318..caab0a93702 100644 --- a/src/plugins/terminal/terminalsurface.cpp +++ b/src/plugins/terminal/terminalsurface.cpp @@ -419,8 +419,14 @@ void TerminalSurface::pasteFromClipboard(const QString &clipboardText) return; vterm_keyboard_start_paste(d->m_vterm.get()); - for (unsigned int ch : clipboardText.toUcs4()) + for (unsigned int ch : clipboardText.toUcs4()) { + // Workaround for weird nano behavior to correctly paste newlines + // see: http://savannah.gnu.org/bugs/?49176 + // and: https://github.com/kovidgoyal/kitty/issues/994 + if (ch == '\n') + ch = '\r'; vterm_keyboard_unichar(d->m_vterm.get(), ch, VTERM_MOD_NONE); + } vterm_keyboard_end_paste(d->m_vterm.get()); if (!d->m_altscreen) {