Show resolved code language on the left of each block header
This commit is contained in:
1 parent
54b1a4fbe5
commit
c1daeb4982
3 files changed
+16
-3
No files matched your search
@@ -166,18 +166,25 @@ QSharedPointer<const MessageText> formattedMessageText(const QModelIndex& index)
|
||||
static const QHash<QString, QString> aliases = {{"cpp", "C++"}, {"c++", "C++"}, {"c", "C"},
|
||||
{"py", "Python"}, {"js", "JavaScript"}, {"ts", "TypeScript"}, {"sh", "Bash"}, {"shell", "Bash"},
|
||||
{"cs", "C#"}, {"csharp", "C#"}, {"kt", "Kotlin"}, {"rs", "Rust"}, {"php", "PHP/PHP"}, {"yml", "YAML"}};
|
||||
for (const auto& block : message->code) {
|
||||
if (block.language == "text" || block.language == "plain") continue;
|
||||
for (auto& block : message->code) {
|
||||
block.languageName = block.language;
|
||||
if (block.language == "text" || block.language == "plain") { block.languageName = "text"; continue; }
|
||||
const QString language = block.language.isEmpty()
|
||||
? detectCodeLanguage(QStringView(message->text).mid(block.start, block.length)) : block.language;
|
||||
if (language.isEmpty()) continue;
|
||||
block.languageName = language;
|
||||
auto definition = repository.definitionForName(aliases.value(language, language));
|
||||
if (!definition.isValid()) {
|
||||
for (const auto& candidate : repository.definitions()) {
|
||||
if (candidate.name().compare(language, Qt::CaseInsensitive) == 0) { definition = candidate; break; }
|
||||
}
|
||||
}
|
||||
if (definition.isValid()) highlighter.highlight(block, definition);
|
||||
if (definition.isValid()) {
|
||||
block.languageName = definition.name() == "PHP/PHP" ? QStringLiteral("PHP") : definition.name();
|
||||
highlighter.highlight(block, definition);
|
||||
GUI_DEBUG("message code: language=%s explicit=%d chars=%d", qPrintable(block.languageName),
|
||||
!block.language.isEmpty(), block.length);
|
||||
}
|
||||
else GUI_DEBUG("message code: unknown language=%s; using plain code", qPrintable(language));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user