From 466fa9636eb27ea99893f8c74ac69d3985edc9b3 Mon Sep 17 00:00:00 2001 From: Marco Benelli Date: Mon, 23 Nov 2015 15:40:35 +0100 Subject: [PATCH] QmlJsEditor: unify behavior of autocompletion to C++ editor. Changed behavior of autocompletion for uniformity with C++ completion. E.g: changing 'x' to 'c' in "Rextangle" used to trigger completion, resulting in: "Rectangletangle". Task-number: QTCREATORBUG-15379 Change-Id: I0597a8d76843b8f1c20c39877267aa70a6b0e1a2 Reviewed-by: Robert Loehning Reviewed-by: Erik Verbruggen --- src/plugins/qmljseditor/qmljscompletionassist.cpp | 2 ++ src/plugins/qmljseditor/qmljsreuse.cpp | 9 +++++++++ src/plugins/qmljseditor/qmljsreuse.h | 2 ++ 3 files changed, 13 insertions(+) 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);