diff --git a/src/libs/utils/textutils.cpp b/src/libs/utils/textutils.cpp index c3b2822ae3e..9840e653561 100644 --- a/src/libs/utils/textutils.cpp +++ b/src/libs/utils/textutils.cpp @@ -4,6 +4,7 @@ #include "textutils.h" #include "qtcassert.h" +#include #include #include #include @@ -299,14 +300,20 @@ static HighlightCallback &codeHighlighter() return s_highlighter; } -QTextDocument *highlightCode(const QString &code, const QString &mimeType) +QFuture 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; + + QPromise promise; + promise.start(); + promise.addResult(doc); + promise.finish(); + + return promise.future(); } void setCodeHighlighter(const HighlightCallback &highlighter) diff --git a/src/libs/utils/textutils.h b/src/libs/utils/textutils.h index a900cb6e9d4..3d6d8cb5efe 100644 --- a/src/libs/utils/textutils.h +++ b/src/libs/utils/textutils.h @@ -5,6 +5,7 @@ #include "utils_global.h" +#include #include #include @@ -84,8 +85,9 @@ QTCREATOR_UTILS_EXPORT QString utf16LineTextInUtf8Buffer(const QByteArray &utf8B QTCREATOR_UTILS_EXPORT QDebug &operator<<(QDebug &stream, const Position &pos); -using HighlightCallback = std::function; -QTCREATOR_UTILS_EXPORT QTextDocument *highlightCode(const QString &code, const QString &mimeType); +using HighlightCallback = std::function(const QString &, const QString &)>; +QTCREATOR_UTILS_EXPORT QFuture highlightCode( + const QString &code, const QString &mimeType); QTCREATOR_UTILS_EXPORT void setCodeHighlighter(const HighlightCallback &highlighter); } // Text