forked from qt-creator/qt-creator
Clang: Use completion through backend process
This makes us independent of libclang crashes for completion.
Re-parsing for highlighting still happens in the Qt Creator process.
Run in verbose mode:
qtc.clangcodemodel.ipc=true
Run tests:
-test "ClangCodeModel"
Task-number: QTCREATORBUG-14108
Task-number: QTCREATORBUG-12819
Change-Id: Id3e95bd2afdb6508bbd1d35fddc69534a909b905
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
This commit is contained in:
@@ -48,6 +48,8 @@ void CppCodeModelSettings::fromSettings(QSettings *s)
|
||||
QVariant v = s->value(QLatin1String(Constants::CPPTOOLS_MODEL_MANAGER_PCH_USAGE), PchUse_None);
|
||||
setPCHUsage(static_cast<PCHUsage>(v.toInt()));
|
||||
s->endGroup();
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
void CppCodeModelSettings::toSettings(QSettings *s)
|
||||
@@ -59,6 +61,8 @@ void CppCodeModelSettings::toSettings(QSettings *s)
|
||||
s->setValue(QLatin1String(Constants::CPPTOOLS_MODEL_MANAGER_SUPPORTERS_KEY), QVariant(var));
|
||||
s->setValue(QLatin1String(Constants::CPPTOOLS_MODEL_MANAGER_PCH_USAGE), pchUsage());
|
||||
s->endGroup();
|
||||
|
||||
emit changed();
|
||||
}
|
||||
|
||||
QStringList CppCodeModelSettings::supportedMimeTypes()
|
||||
@@ -72,14 +76,20 @@ QStringList CppCodeModelSettings::supportedMimeTypes()
|
||||
});
|
||||
}
|
||||
|
||||
void CppCodeModelSettings::setModelManagerSupports(const QList<ModelManagerSupport *> &supporters)
|
||||
void CppCodeModelSettings::emitChanged()
|
||||
{
|
||||
m_availableModelManagerSupportersByName.clear();
|
||||
foreach (ModelManagerSupport *supporter, supporters)
|
||||
m_availableModelManagerSupportersByName[supporter->displayName()] = supporter->id();
|
||||
emit changed();
|
||||
}
|
||||
|
||||
QString CppCodeModelSettings::modelManagerSupportId(const QString &mimeType) const
|
||||
void CppCodeModelSettings::setModelManagerSupportProviders(
|
||||
const QList<ModelManagerSupportProvider *> &providers)
|
||||
{
|
||||
m_modelManagerSupportsByName.clear();
|
||||
foreach (ModelManagerSupportProvider *provider, providers)
|
||||
m_modelManagerSupportsByName[provider->displayName()] = provider->id();
|
||||
}
|
||||
|
||||
QString CppCodeModelSettings::modelManagerSupportIdForMimeType(const QString &mimeType) const
|
||||
{
|
||||
if (mimeType == cHeaderMimeType)
|
||||
return m_modelManagerSupportByMimeType.value(cppHeaderMimeType);
|
||||
@@ -87,13 +97,14 @@ QString CppCodeModelSettings::modelManagerSupportId(const QString &mimeType) con
|
||||
return m_modelManagerSupportByMimeType.value(mimeType);
|
||||
}
|
||||
|
||||
void CppCodeModelSettings::setModelManagerSupportId(const QString &mimeType,
|
||||
const QString &supporter)
|
||||
void CppCodeModelSettings::setModelManagerSupportIdForMimeType(const QString &mimeType,
|
||||
const QString &id)
|
||||
{
|
||||
if (mimeType == cHeaderMimeType)
|
||||
m_modelManagerSupportByMimeType.insert(cppHeaderMimeType, supporter);
|
||||
else
|
||||
m_modelManagerSupportByMimeType.insert(mimeType, supporter);
|
||||
QString theMimeType = mimeType;
|
||||
if (theMimeType == cHeaderMimeType)
|
||||
theMimeType = cppHeaderMimeType;
|
||||
|
||||
m_modelManagerSupportByMimeType.insert(theMimeType, id);
|
||||
}
|
||||
|
||||
void CppCodeModelSettings::setIdForMimeType(const QVariant &var, const QString &mimeType)
|
||||
|
||||
Reference in New Issue
Block a user