diff options
| author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-05-22 10:21:56 +0200 |
|---|---|---|
| committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-05-23 08:08:30 +0000 |
| commit | 975173af11da200e94517db7085dea46d2592f26 (patch) | |
| tree | 1afdd299e6e375035ac312ccd6585a631318b862 /src/plugins/cpptools/cppcompletionassist.cpp | |
| parent | 76d44aea0d4c1c05b9fb9156c6d370f55aa71c54 (diff) | |
| download | qt-creator-975173af11da200e94517db7085dea46d2592f26.tar.gz | |
CodeAssist: Ensure perfect match for keywords
...as otherwise the completion windows stays open and gets in the way.
Fixes: QTCREATORBUG-21767
Change-Id: Ib0a841b9d9de52109439f067c466478744361814
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppcompletionassist.cpp')
| -rw-r--r-- | src/plugins/cpptools/cppcompletionassist.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp index 12b226f756..b51f833afe 100644 --- a/src/plugins/cpptools/cppcompletionassist.cpp +++ b/src/plugins/cpptools/cppcompletionassist.cpp @@ -92,7 +92,10 @@ public: void keepCompletionOperator(unsigned compOp) { m_completionOperator = compOp; } void keepTypeOfExpression(const QSharedPointer<TypeOfExpression> &typeOfExp) { m_typeOfExpression = typeOfExp; } - + bool isKeyword() const final + { return m_isKeyword; } + void setIsKeyword(bool isKeyword) + { m_isKeyword = isKeyword; } quint64 hash() const override; @@ -101,6 +104,7 @@ private: unsigned m_completionOperator = T_EOF_SYMBOL; mutable QChar m_typedChar; bool m_isOverloaded = false; + bool m_isKeyword = false; }; } // Internal @@ -1531,6 +1535,16 @@ bool InternalCppCompletionAssistProcessor::globalCompletion(Scope *currentScope) return !m_completions.isEmpty(); } +void InternalCppCompletionAssistProcessor::addKeywordCompletionItem(const QString &text) +{ + auto item = new CppAssistProposalItem; + item->setText(text); + item->setIcon(Icons::keywordIcon()); + item->setOrder(KeywordsOrder); + item->setIsKeyword(true); + m_completions.append(item); +} + bool InternalCppCompletionAssistProcessor::completeMember(const QList<LookupItem> &baseResults) { const LookupContext &context = m_model->m_typeOfExpression->context(); @@ -1859,16 +1873,16 @@ void InternalCppCompletionAssistProcessor::addKeywords() // keyword completion items. for (int i = T_FIRST_KEYWORD; i < keywordLimit; ++i) - addCompletionItem(QLatin1String(Token::name(i)), Icons::keywordIcon(), KeywordsOrder); + addKeywordCompletionItem(QLatin1String(Token::name(i))); // primitive type completion items. for (int i = T_FIRST_PRIMITIVE; i <= T_LAST_PRIMITIVE; ++i) - addCompletionItem(QLatin1String(Token::name(i)), Icons::keywordIcon(), KeywordsOrder); + addKeywordCompletionItem(QLatin1String(Token::name(i))); // "Identifiers with special meaning" if (m_interface->languageFeatures().cxx11Enabled) { - addCompletionItem(QLatin1String("override"), Icons::keywordIcon(), KeywordsOrder); - addCompletionItem(QLatin1String("final"), Icons::keywordIcon(), KeywordsOrder); + addKeywordCompletionItem(QLatin1String("override")); + addKeywordCompletionItem(QLatin1String("final")); } } |
