diff --git a/src/plugins/qmleditor/qmlcodecompletion.cpp b/src/plugins/qmleditor/qmlcodecompletion.cpp index e0e5dac2c05fd9b34c9784a8255b1dde8c5712c4..7b6bf6a295631a39b8f32ad8468522bd80ae9621 100644 --- a/src/plugins/qmleditor/qmlcodecompletion.cpp +++ b/src/plugins/qmleditor/qmlcodecompletion.cpp @@ -78,9 +78,10 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor) if (!qmlDocument->program()) qmlDocument = m_modelManager->snapshot().value(qmlDocument->fileName()); - if (qmlDocument->program()) { + // FIXME: this completion strategy is not going to work when the document was never parsed correctly. + if (qmlDocument && qmlDocument->program()) { QmlJS::AST::UiProgram *program = qmlDocument->program(); -// qDebug() << "*** program:" << program; +// qDebug() << "*** program:" << program; if (program) { QmlExpressionUnderCursor expressionUnderCursor; @@ -90,7 +91,9 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor) QmlLookupContext context(expressionUnderCursor.expressionScopes(), qmlDocument, m_modelManager->snapshot()); QmlResolveExpression resolver(context); +// qDebug()<<"*** expression under cursor:"<<expressionUnderCursor.expressionNode(); QList<QmlSymbol*> symbols = resolver.visibleSymbols(expressionUnderCursor.expressionNode()); +// qDebug()<<"***"<<symbols.size()<<"visible symbols"; foreach (QmlSymbol *symbol, symbols) { QString word; diff --git a/src/plugins/qmleditor/qmllookupcontext.cpp b/src/plugins/qmleditor/qmllookupcontext.cpp index 5cd065bff66d727fff81bd531091b8846f610746..5bbc044899b4004a94ead2c39d813a1da637f34a 100644 --- a/src/plugins/qmleditor/qmllookupcontext.cpp +++ b/src/plugins/qmleditor/qmllookupcontext.cpp @@ -94,6 +94,8 @@ QmlSymbol *QmlLookupContext::resolveType(const QString &name, const QString &fil if (!import) continue; + // TODO: handle Qt imports + if (!(import->fileName)) continue; @@ -107,6 +109,7 @@ QmlSymbol *QmlLookupContext::resolveType(const QString &name, const QString &fil } } + // TODO: handle Qt imports, hack for now: return resolveBuildinType(name); } @@ -297,5 +300,9 @@ QList<QmlSymbol*> QmlLookupContext::visibleTypes() } } + // TODO: handle Qt imports, hack for now: + foreach (const QString &name, qmlMetaTypes) + result.append(resolveBuildinType(name)); + return result; }