diff --git a/src/utils/veditutils.cpp b/src/utils/veditutils.cpp index 4467cce6..8e6dd703 100644 --- a/src/utils/veditutils.cpp +++ b/src/utils/veditutils.cpp @@ -925,10 +925,10 @@ void VEditUtils::findCurrentWord(QTextCursor p_cursor, QString text = p_cursor.block().text(); int pib = p_cursor.positionInBlock(); - if (pib < text.size() && text[pib].isSpace()) { + if (pib < text.size() && isSpaceOrWordSeparator(text[pib])) { if (!p_findPrecedingWord || pib == 0 - || text[pib - 1].isSpace()) { + || isSpaceOrWordSeparator(text[pib - 1])) { p_start = p_end = p_cursor.position(); return; } @@ -1099,3 +1099,8 @@ QString VEditUtils::removeCodeBlockFence(const QString &p_text) int idx = text.indexOf('\n') + 1; return text.mid(idx, text.size() - idx - 3); } + +bool VEditUtils::isSpaceOrWordSeparator(QChar p_char) +{ + return p_char.isSpace() || isWordSeparator(p_char); +} diff --git a/src/utils/veditutils.h b/src/utils/veditutils.h index ca5da4e6..bad723d1 100644 --- a/src/utils/veditutils.h +++ b/src/utils/veditutils.h @@ -212,6 +212,8 @@ public: static bool isWordSeparator(QChar p_char); + static bool isSpaceOrWordSeparator(QChar p_char); + // Remove the fence of fenced code block. static QString removeCodeBlockFence(const QString &p_text); diff --git a/src/veditor.cpp b/src/veditor.cpp index a7583fbd..efcd43d4 100644 --- a/src/veditor.cpp +++ b/src/veditor.cpp @@ -1553,7 +1553,7 @@ QString VEditor::fetchCompletionPrefix() const QString prefix; while (pos >= blockPos) { QChar ch = m_document->characterAt(pos); - if (ch.isSpace() || VEditUtils::isWordSeparator(ch)) { + if (VEditUtils::isSpaceOrWordSeparator(ch)) { break; }