diff --git a/gui/chatblockmodel.cpp b/gui/chatblockmodel.cpp index 18a3789..ef7f250 100644 --- a/gui/chatblockmodel.cpp +++ b/gui/chatblockmodel.cpp @@ -78,8 +78,9 @@ QVariant ChatBlockModel::data(const QModelIndex &index, int role) const if (trimmed.startsWith(QLatin1String("---")) || trimmed.startsWith(QLatin1String("diff "))) { return highlightedHtml(content, QStringLiteral("Diff")); } - // Plain text: escape and add line breaks - return content.toHtmlEscaped().replace('\n', QLatin1String("
")); + // Plain text: preserve whitespace + return QStringLiteral("
")
+            + content.toHtmlEscaped() + QStringLiteral("
"); } } return {}; @@ -374,7 +375,8 @@ QString ChatBlockModel::highlightedHtml(const QString &code, const QString &lang def = repo().definitionForFileName("file." + language); } if (!def.isValid()) { - QString plain = code.toHtmlEscaped().replace('\n', QStringLiteral("
")); + QString plain = QStringLiteral("
")
+            + code.toHtmlEscaped() + QStringLiteral("
"); m_highlightCache.insert(cacheKey, plain); return plain; } @@ -390,14 +392,16 @@ QString ChatBlockModel::highlightedHtml(const QString &code, const QString &lang KSyntaxHighlighting::State state; const QStringList lines = code.split('\n'); + QString result = QStringLiteral("
");
     for (int i = 0; i < lines.size(); ++i) {
         state = builder.processLine(lines[i], state);
         if (i < lines.size() - 1)
-            builder.html += QStringLiteral("
"); + builder.html += '\n'; } + result += builder.html + QStringLiteral("
"); - m_highlightCache.insert(cacheKey, builder.html); - return builder.html; + m_highlightCache.insert(cacheKey, result); + return result; } QString ChatBlockModel::prettyJson(const QString &text) const