From dd4433a1ff63cefbd8d598413dd4bac82a811471 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 7 Jan 2025 10:41:34 +0100 Subject: [PATCH] Utils: pass a document instead of a cursor to Utils::Text::textAt None of the additional information by the cursor was used and almost all usages of the function created a text cursor for calling this function. Change-Id: I2667103738d159b33b7769d1934c435e45bd1bdd Reviewed-by: Christian Stenger --- src/libs/utils/textutils.cpp | 3 ++- src/libs/utils/textutils.h | 2 +- .../clangactivationsequencecontextprocessor.cpp | 3 +-- src/plugins/clangformat/clangformatbaseindenter.cpp | 9 ++++----- src/plugins/cppeditor/cppcompletion_test.cpp | 2 +- .../languageclient/languageclientcompletionassist.cpp | 4 ++-- src/plugins/texteditor/codeassist/assistinterface.cpp | 2 +- src/plugins/texteditor/formattexteditor.cpp | 2 +- src/plugins/texteditor/textdocument.cpp | 2 +- 9 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/libs/utils/textutils.cpp b/src/libs/utils/textutils.cpp index c6cc137853e..af5f2719c5f 100644 --- a/src/libs/utils/textutils.cpp +++ b/src/libs/utils/textutils.cpp @@ -156,10 +156,11 @@ int positionInText(const QTextDocument *textDocument, int line, int column) return textDocument->findBlockByNumber(line - 1).position() + column - 1; } -QString textAt(QTextCursor tc, int pos, int length) +QString textAt(QTextDocument *textDocument, int pos, int length) { if (pos < 0) pos = 0; + QTextCursor tc(textDocument); tc.movePosition(QTextCursor::End); const int end = std::min(pos + length, tc.position()); diff --git a/src/libs/utils/textutils.h b/src/libs/utils/textutils.h index b89778882d5..5122d81d379 100644 --- a/src/libs/utils/textutils.h +++ b/src/libs/utils/textutils.h @@ -65,7 +65,7 @@ QTCREATOR_UTILS_EXPORT bool convertPosition(const QTextDocument *document, // line and column are 1-based QTCREATOR_UTILS_EXPORT int positionInText(const QTextDocument *textDocument, int line, int column); -QTCREATOR_UTILS_EXPORT QString textAt(QTextCursor tc, int pos, int length); +QTCREATOR_UTILS_EXPORT QString textAt(QTextDocument *textDocument, int pos, int length); // line is 1-based, column is 0-based QTCREATOR_UTILS_EXPORT QTextCursor selectAt(QTextCursor textCursor, int line, int column, uint length); diff --git a/src/plugins/clangcodemodel/clangactivationsequencecontextprocessor.cpp b/src/plugins/clangcodemodel/clangactivationsequencecontextprocessor.cpp index 71419032249..17e4da81803 100644 --- a/src/plugins/clangcodemodel/clangactivationsequencecontextprocessor.cpp +++ b/src/plugins/clangcodemodel/clangactivationsequencecontextprocessor.cpp @@ -73,8 +73,7 @@ void ActivationSequenceContextProcessor::process() void ActivationSequenceContextProcessor::processActivationSequence() { const int nonSpacePosition = skipPrecedingWhitespace(m_document, m_startOfNamePosition); - const auto activationSequence = Utils::Text::textAt(QTextCursor(m_document), - nonSpacePosition - 3, 3); + const auto activationSequence = Utils::Text::textAt(m_document, nonSpacePosition - 3, 3); ActivationSequenceProcessor activationSequenceProcessor(activationSequence, nonSpacePosition, true); diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp index 6fa11690538..a458173cca5 100644 --- a/src/plugins/clangformat/clangformatbaseindenter.cpp +++ b/src/plugins/clangformat/clangformatbaseindenter.cpp @@ -464,11 +464,10 @@ static ChangeSet convertReplacements(const QTextDocument *doc, static QString selectedLines(QTextDocument *doc, const QTextBlock &startBlock, const QTextBlock &endBlock) { - return Text::textAt(QTextCursor(doc), - startBlock.position(), - std::max(0, - endBlock.position() + endBlock.length() - - startBlock.position() - 1)); + return Text::textAt( + doc, + startBlock.position(), + std::max(0, endBlock.position() + endBlock.length() - startBlock.position() - 1)); } static int indentationForBlock(const ChangeSet &toReplace, diff --git a/src/plugins/cppeditor/cppcompletion_test.cpp b/src/plugins/cppeditor/cppcompletion_test.cpp index 6f152c65a6e..b1a6b8e71f3 100644 --- a/src/plugins/cppeditor/cppcompletion_test.cpp +++ b/src/plugins/cppeditor/cppcompletion_test.cpp @@ -118,7 +118,7 @@ public: const int pos = proposal->basePosition(); const int length = m_position - pos; - const QString prefix = Utils::Text::textAt(QTextCursor(m_textDocument), pos, length); + const QString prefix = Utils::Text::textAt(m_textDocument, pos, length); if (!prefix.isEmpty()) listmodel->filter(prefix); if (listmodel->isSortable(prefix)) diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index b752c3aede1..4c30cc26cdb 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -204,12 +204,12 @@ bool LanguageClientCompletionItem::isPerfectMatch(int pos, QTextDocument *doc) c auto range = edit->range(); const int start = positionInText(doc, range.start().line() + 1, range.start().character() + 1); const int end = positionInText(doc, range.end().line() + 1, range.end().character() + 1); - auto text = textAt(QTextCursor(doc), start, end - start); + auto text = textAt(doc, start, end - start); return text == edit->newText(); } const QString textToInsert(m_item.insertText().value_or(text())); const int length = textToInsert.length(); - return textToInsert == textAt(QTextCursor(doc), pos - length, length); + return textToInsert == textAt(doc, pos - length, length); } bool LanguageClientCompletionItem::isDeprecated() const diff --git a/src/plugins/texteditor/codeassist/assistinterface.cpp b/src/plugins/texteditor/codeassist/assistinterface.cpp index 54ad28d3d10..afb23f615f3 100644 --- a/src/plugins/texteditor/codeassist/assistinterface.cpp +++ b/src/plugins/texteditor/codeassist/assistinterface.cpp @@ -104,7 +104,7 @@ QChar AssistInterface::characterAt(int position) const QString AssistInterface::textAt(int pos, int length) const { - return Utils::Text::textAt(QTextCursor(m_textDocument), pos, length); + return Utils::Text::textAt(m_textDocument, pos, length); } void AssistInterface::prepareForAsyncUse() diff --git a/src/plugins/texteditor/formattexteditor.cpp b/src/plugins/texteditor/formattexteditor.cpp index aea64a89f46..dd379663ce1 100644 --- a/src/plugins/texteditor/formattexteditor.cpp +++ b/src/plugins/texteditor/formattexteditor.cpp @@ -50,7 +50,7 @@ static QString sourceData(TextEditorWidget *editor, int startPos, int endPos) { return (startPos < 0) ? editor->toPlainText() - : Utils::Text::textAt(editor->textCursor(), startPos, (endPos - startPos)); + : Utils::Text::textAt(editor->document(), startPos, (endPos - startPos)); } static FormatOutput format(const FormatInput &input) diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp index f4aabd23045..ffd81a85ea5 100644 --- a/src/plugins/texteditor/textdocument.cpp +++ b/src/plugins/texteditor/textdocument.cpp @@ -334,7 +334,7 @@ QString TextDocument::plainText() const QString TextDocument::textAt(int pos, int length) const { - return Utils::Text::textAt(QTextCursor(document()), pos, length); + return Utils::Text::textAt(document(), pos, length); } QChar TextDocument::characterAt(int pos) const