diff --git a/src/libs/utils/stringutils.cpp b/src/libs/utils/stringutils.cpp index d21c7cb9bc1..9e0df1bc6f2 100644 --- a/src/libs/utils/stringutils.cpp +++ b/src/libs/utils/stringutils.cpp @@ -678,4 +678,25 @@ QString ansiColoredText(const QString &text, const QColor &color) return formatString.arg(color.red()).arg(color.green()).arg(color.blue()).arg(text); } +static HighlightCallback &codeHighlighter() +{ + static HighlightCallback s_highlighter; + return s_highlighter; +} + +QTextDocument *highlightCode(const QString &code, const QString &mimeType) +{ + if (const auto highlighter = codeHighlighter()) + return highlighter(code, mimeType); + + QTextDocument *doc = new QTextDocument; + doc->setPlainText(code); + return doc; +} + +void setCodeHighlighter(const HighlightCallback &highlighter) +{ + codeHighlighter() = highlighter; +} + } // namespace Utils diff --git a/src/libs/utils/stringutils.h b/src/libs/utils/stringutils.h index cab6d774f3f..599d5102ba6 100644 --- a/src/libs/utils/stringutils.h +++ b/src/libs/utils/stringutils.h @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -140,4 +141,8 @@ private: QTCREATOR_UTILS_EXPORT QString ansiColoredText(const QString &text, const QColor &color); +using HighlightCallback = std::function; +QTCREATOR_UTILS_EXPORT QTextDocument *highlightCode(const QString &code, const QString &mimeType); +QTCREATOR_UTILS_EXPORT void setCodeHighlighter(const HighlightCallback &highlighter); + } // namespace Utils