QmlJSEditor: Add completion for JS keywords and Qml reserved words.

Task-number: QTCREATORBUG-919
Reviewed-by: Roberto Raggi
This commit is contained in:
Christian Kamm
2010-03-26 13:50:51 +01:00
parent c21747a292
commit b2bb919e45
3 changed files with 30 additions and 0 deletions

View File

@@ -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;
}

View File

@@ -87,6 +87,7 @@ public:
int state() const;
bool isKeyword(const QString &text) const;
static QStringList keywords();
private:
int _state;

View File

@@ -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('(')) {