aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/textutils.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <[email protected]>2024-10-10 11:05:10 +0200
committerMarcus Tillmanns <[email protected]>2024-10-10 11:30:29 +0000
commitce9638d64cfe80ddf61b214d2ad4480f8a2f034b (patch)
tree16934506720e038e6d6288c3426347a685c8391b /src/libs/utils/textutils.cpp
parent41473eadd8cd1ba3c875b1784696bd243cef7712 (diff)
Utils: Allow highlighting to be done asynchronously
Diffstat (limited to 'src/libs/utils/textutils.cpp')
-rw-r--r--src/libs/utils/textutils.cpp11
1 files changed, 9 insertions, 2 deletions
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 <QPromise>
#include <QRegularExpression>
#include <QTextBlock>
#include <QTextDocument>
@@ -299,14 +300,20 @@ static HighlightCallback &codeHighlighter()
return s_highlighter;
}
-QTextDocument *highlightCode(const QString &code, const QString &mimeType)
+QFuture<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;
+
+ QPromise<QTextDocument *> promise;
+ promise.start();
+ promise.addResult(doc);
+ promise.finish();
+
+ return promise.future();
}
void setCodeHighlighter(const HighlightCallback &highlighter)