Clang: turn off delayed template parsing

Fix templates highlight and completion on Windows
Add UI to turn on/off delayed parsing (off by default)

Task-number: QTCREATORBUG-17222
Change-Id: I0cd5e0bcfff2789cd938e4096829f777ff15957a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Ivan Donchevskii
2017-05-23 09:49:22 +02:00
parent 0784dd20fe
commit 78db7d7ed2
23 changed files with 255 additions and 139 deletions

View File

@@ -115,7 +115,7 @@ void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited()
= diagnosticOptions.trimmed().split(QLatin1Char(' '), QString::SkipEmptyParts);
ClangDiagnosticConfig updatedConfig = currentConfig();
updatedConfig.setCommandLineOptions(updatedCommandLine);
updatedConfig.setCommandLineWarnings(updatedCommandLine);
m_diagnosticConfigsModel.appendOrUpdate(updatedConfig);
emit customConfigsChanged(customConfigs());
@@ -127,15 +127,6 @@ void ClangDiagnosticConfigsWidget::syncWidgetsToModel(const Core::Id &configToSe
syncOtherWidgetsToComboBox();
}
static QString displayNameWithBuiltinIndication(const ClangDiagnosticConfig &config,
const Core::Id &exceptionalConfig)
{
if (exceptionalConfig == config.id())
return config.displayName();
return ClangDiagnosticConfigsModel::displayNameWithBuiltinIndication(config);
}
void ClangDiagnosticConfigsWidget::syncConfigChooserToModel(const Core::Id &configToSelect)
{
disconnectConfigChooserCurrentIndex();
@@ -148,7 +139,7 @@ void ClangDiagnosticConfigsWidget::syncConfigChooserToModel(const Core::Id &conf
for (int i = 0; i < size; ++i) {
const ClangDiagnosticConfig &config = m_diagnosticConfigsModel.at(i);
const QString displayName
= displayNameWithBuiltinIndication(config, m_configWithUndecoratedDisplayName);
= ClangDiagnosticConfigsModel::displayNameWithBuiltinIndication(config);
m_ui->configChooserComboBox->addItem(displayName, config.id().toSetting());
if (configToSelect == config.id())
@@ -176,8 +167,8 @@ void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox()
m_ui->removeButton->setEnabled(!config.isReadOnly());
// Update child widgets
const QString commandLineOptions = config.commandLineOptions().join(QLatin1Char(' '));
setDiagnosticOptions(commandLineOptions);
const QString commandLineWarnings = config.commandLineWarnings().join(QLatin1Char(' '));
setDiagnosticOptions(commandLineWarnings);
m_ui->diagnosticOptionsTextEdit->setReadOnly(config.isReadOnly());
}
@@ -228,11 +219,6 @@ void ClangDiagnosticConfigsWidget::disconnectDiagnosticOptionsChanged()
this, &ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
}
void ClangDiagnosticConfigsWidget::setConfigWithUndecoratedDisplayName(const Core::Id &id)
{
m_configWithUndecoratedDisplayName = id;
}
Core::Id ClangDiagnosticConfigsWidget::currentConfigId() const
{
return Core::Id::fromSetting(m_ui->configChooserComboBox->currentData());