From f7589983b50670994b1741e6e81e5e404f62322f Mon Sep 17 00:00:00 2001 From: Le Tan Date: Wed, 26 Sep 2018 19:24:25 +0800 Subject: [PATCH] Editor: fix completion --- src/utils/veditutils.cpp | 9 +++++++-- src/utils/veditutils.h | 2 ++ src/veditor.cpp | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) 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; }