QmlJS: Use mime types to distinguish qml and js files.

This allows adding patterns to the qml mime type in the options dialog.
Previously they were always parsed as js.

Change-Id: Ifa344fb6ab8cbcda02becef991cf6807615a1caa
Reviewed-on: http://codereview.qt-project.org/4515
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
This commit is contained in:
Christian Kamm
2011-09-09 10:55:11 +02:00
parent 509eb894dd
commit 903c6b60cd
14 changed files with 115 additions and 58 deletions

View File

@@ -136,7 +136,7 @@ QmlJS::AST::ExpressionNode *QmlExpressionUnderCursor::operator()(const QTextCurs
ExpressionUnderCursor expressionUnderCursor;
_text = expressionUnderCursor(cursor);
exprDoc = Document::create(QLatin1String("<expression>"));
exprDoc = Document::create(QLatin1String("<expression>"), Document::JavaScriptLanguage);
exprDoc->setSource(_text);
exprDoc->parseExpression();

View File

@@ -51,6 +51,7 @@
#include <qmljs/qmljscontext.h>
#include <qmljs/parser/qmljsastvisitor_p.h>
#include <qmljs/parser/qmljsast_p.h>
#include <qmljstools/qmljsmodelmanager.h>
#include "qmljseditorconstants.h"
@@ -799,11 +800,19 @@ static void find_helper(QFutureInterface<FindReferences::Usage> &future,
QHashIterator< QString, QPair<QString, int> > it(workingCopy.all());
while (it.hasNext()) {
it.next();
Document::Ptr oldDoc = snapshot.document(it.key());
const QString fileName = it.key();
Document::Ptr oldDoc = snapshot.document(fileName);
if (oldDoc && oldDoc->editorRevision() == it.value().second)
continue;
Document::Ptr newDoc = snapshot.documentFromSource(it.key(), it.value().first);
Document::Language language;
if (oldDoc)
language = oldDoc->language();
else
language = QmlJSTools::languageOfFile(fileName);
Document::Ptr newDoc = snapshot.documentFromSource(it.value().first, fileName,
language);
newDoc->parse();
snapshot.insert(newDoc);
}

View File

@@ -37,6 +37,7 @@
#include <qmljs/qmljscheck.h>
#include <qmljs/qmljscontext.h>
#include <qmljs/qmljslink.h>
#include <qmljstools/qmljsmodelmanager.h>
namespace QmlJSEditor {
namespace Internal {
@@ -122,7 +123,12 @@ SemanticInfo SemanticInfoUpdater::semanticInfo(const SemanticInfoUpdaterSource &
if (! doc) {
snapshot = source.snapshot;
doc = snapshot.documentFromSource(source.code, source.fileName);
QmlJS::Document::Language language;
if (m_lastSemanticInfo.document)
language = m_lastSemanticInfo.document->language();
else
language = QmlJSTools::languageOfFile(source.fileName);
doc = snapshot.documentFromSource(source.code, source.fileName, language);
doc->setEditorRevision(source.revision);
doc->parse();
snapshot.insert(doc);