From a23494dc3247ccb0844a32da5da5e9250f58a4fe Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Mon, 1 Mar 2021 21:25:43 +1100 Subject: Fix double line-feed in plain text documents --- src/renderers/renderhelpers.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/renderers/renderhelpers.cpp') diff --git a/src/renderers/renderhelpers.cpp b/src/renderers/renderhelpers.cpp index 6fc5bc9..5f9925b 100644 --- a/src/renderers/renderhelpers.cpp +++ b/src/renderers/renderhelpers.cpp @@ -324,12 +324,26 @@ static void parseCSI( } } +// Replaces CR-LF line endings with pure LF endings, +// and then replaces any remaining CRs with LFs. +static QString cleanLineEndings(QString &input) +{ + // Replace all CR-LF with LF + input.replace("\r\n", "\n"); + + // Replace stray CRs with LF + input.replace("\r", "\n"); + + return input; +} + void renderhelpers::renderEscapeCodes(const QByteArray &input, const QTextCharFormat& format, QTextCursor& cursor) { auto textFormat = format; const auto tokens = input.split(escapeString); - const auto inputString = QString::fromUtf8(input); + QString inputString = QString::fromUtf8(input); + cleanLineEndings(inputString); for (QString::const_iterator it = inputString.cbegin(); it != inputString.cend(); ++it) { const auto currentCharacter = *it;; -- cgit v1.2.3