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("")
+ + 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