diff --git a/src/plugins/qmljseditor/qmljscompletionassist.cpp b/src/plugins/qmljseditor/qmljscompletionassist.cpp index 8bcf186ff68..8c76781c26a 100644 --- a/src/plugins/qmljseditor/qmljscompletionassist.cpp +++ b/src/plugins/qmljseditor/qmljscompletionassist.cpp @@ -858,6 +858,8 @@ bool QmlJSCompletionAssistProcessor::acceptsIdleEditor() const maybeAccept = true; } else { const QChar &charUnderCursor = m_interface->textDocument()->characterAt(cursorPos); + if (isValidIdentifierChar(charUnderCursor)) + return false; if (isIdentifierChar(charBeforeCursor) && ((charUnderCursor.isSpace() || charUnderCursor.isNull() diff --git a/src/plugins/qmljseditor/qmljsreuse.cpp b/src/plugins/qmljseditor/qmljsreuse.cpp index 3147e54cd3b..34ebcb9bab4 100644 --- a/src/plugins/qmljseditor/qmljsreuse.cpp +++ b/src/plugins/qmljseditor/qmljsreuse.cpp @@ -54,6 +54,15 @@ bool isIdentifierChar(const QChar &c, bool atStart, bool acceptDollar) } } +bool isValidFirstIdentifierChar(const QChar &ch) { + return ch.isLetter() || ch == QLatin1Char('_') || ch.isHighSurrogate() + || ch.isLowSurrogate(); +} + +bool isValidIdentifierChar(const QChar &ch) { + return isValidFirstIdentifierChar(ch) || ch.isNumber(); +} + bool isDelimiterChar(const QChar &c) { switch (c.unicode()) { diff --git a/src/plugins/qmljseditor/qmljsreuse.h b/src/plugins/qmljseditor/qmljsreuse.h index 9e920158593..c5183f3604c 100644 --- a/src/plugins/qmljseditor/qmljsreuse.h +++ b/src/plugins/qmljseditor/qmljsreuse.h @@ -42,6 +42,8 @@ namespace QmlJSEditor { namespace Internal { bool isIdentifierChar(const QChar &c, bool atStart = false, bool acceptDollar = true); +bool isValidFirstIdentifierChar(const QChar &c); +bool isValidIdentifierChar(const QChar &c); bool isDelimiterChar(const QChar &c); bool isActivationChar(const QChar &c);