diff --git a/src/libs/qmljs/qmljsscanner.cpp b/src/libs/qmljs/qmljsscanner.cpp index 7b201d2c6c73762367c7dae60833e1a63a0f7dee..79f81509f23ee871f62e5350aaf9be54476fd11a 100644 --- a/src/libs/qmljs/qmljsscanner.cpp +++ b/src/libs/qmljs/qmljsscanner.cpp @@ -309,3 +309,13 @@ bool Scanner::isKeyword(const QString &text) const return false; } + +QStringList Scanner::keywords() +{ + static QStringList words; + if (words.isEmpty()) { + for (const QString *word = begin(js_keywords); word != end(js_keywords); ++word) + words.append(*word); + } + return words; +} diff --git a/src/libs/qmljs/qmljsscanner.h b/src/libs/qmljs/qmljsscanner.h index 7d02e1b42ddf820b4b304ab3234842489d52f606..9141842cd71e3403ac3413f67c7b092b8eee1070 100644 --- a/src/libs/qmljs/qmljsscanner.h +++ b/src/libs/qmljs/qmljsscanner.h @@ -87,6 +87,7 @@ public: int state() const; bool isKeyword(const QString &text) const; + static QStringList keywords(); private: int _state; diff --git a/src/plugins/qmljseditor/qmljscodecompletion.cpp b/src/plugins/qmljseditor/qmljscodecompletion.cpp index 2eab2db74fbd189b936d7641e27317ace10ad426..1c7f3e39d1bd041e4181a8b0590184d3f9d10352 100644 --- a/src/plugins/qmljseditor/qmljscodecompletion.cpp +++ b/src/plugins/qmljseditor/qmljscodecompletion.cpp @@ -692,6 +692,25 @@ int CodeCompletion::startCompletion(TextEditor::ITextEditable *editor) item.icon = symbolIcon; m_completions.append(item); } + + // add js keywords + foreach (const QString &word, Scanner::keywords()) { + TextEditor::CompletionItem item(this); + item.text = word; + m_completions.append(item); + } + + // add qml extra words + if (document->qmlProgram()) { + static QStringList qmlWords; + if (qmlWords.isEmpty()) + qmlWords << "property" << "readonly" << "signal"; + foreach (const QString &word, qmlWords) { + TextEditor::CompletionItem item(this); + item.text = word; + m_completions.append(item); + } + } } else if (completionOperator == QLatin1Char('.') || completionOperator == QLatin1Char('(')) {