diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-01-12 18:01:12 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-01-16 10:17:50 +0000 |
commit | e4e65726614fa4e3ee02f25db755d959850441ea (patch) | |
tree | a76a4aab899eb313f25f0da8a1f3e89ede71b67b /src/plugins/cpptools/cppcodemodelsettingspage.cpp | |
parent | 4416eecc024e155438c7ed6399182dbff143bd0d (diff) | |
download | qt-creator-e4e65726614fa4e3ee02f25db755d959850441ea.tar.gz |
CppTools: Allow interpreting ambiguous headers as C headers
...instead of C++ headers.
For the Clang Code Model this results in using "-x c-header" instead of
"-x c++-header".
This introduces a new option in Options > C++ > "Code Model" to
configure this.
Change-Id: I8a0ce8fa6155f5ef58743ebc7f1d0b500fbf6599
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppcodemodelsettingspage.cpp')
-rw-r--r-- | src/plugins/cpptools/cppcodemodelsettingspage.cpp | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp index e1792ed0b7..e6af115aed 100644 --- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp +++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp @@ -56,18 +56,16 @@ void CppCodeModelSettingsWidget::setSettings(const QSharedPointer<CppCodeModelSe { m_settings = s; + setupGeneralWidgets(); setupClangCodeModelWidgets(); - setupPchCheckBox(); - setupSkipIndexingFilesWidgets(); } void CppCodeModelSettingsWidget::applyToSettings() const { bool changed = false; + changed |= applyGeneralWidgetsToSettings(); changed |= applyClangCodeModelWidgetsToSettings(); - changed |= applyPchCheckBoxToSettings(); - changed |= applySkipIndexingFilesWidgets(); if (changed) m_settings->toSettings(Core::ICore::settings()); @@ -88,16 +86,16 @@ void CppCodeModelSettingsWidget::setupClangCodeModelWidgets() m_ui->clangSettingsGroupBox->layout()->addWidget(m_clangDiagnosticConfigsWidget); } -void CppCodeModelSettingsWidget::setupPchCheckBox() const +void CppCodeModelSettingsWidget::setupGeneralWidgets() { - const bool ignorePch = m_settings->pchUsage() == CppCodeModelSettings::PchUse_None; - m_ui->ignorePCHCheckBox->setChecked(ignorePch); -} + m_ui->interpretAmbiguousHeadersAsCHeaders->setChecked( + m_settings->interpretAmbigiousHeadersAsCHeaders()); -void CppCodeModelSettingsWidget::setupSkipIndexingFilesWidgets() -{ m_ui->skipIndexingBigFilesCheckBox->setChecked(m_settings->skipIndexingBigFiles()); m_ui->bigFilesLimitSpinBox->setValue(m_settings->indexerFileSizeLimitInMb()); + + const bool ignorePch = m_settings->pchUsage() == CppCodeModelSettings::PchUse_None; + m_ui->ignorePCHCheckBox->setChecked(ignorePch); } bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const @@ -122,39 +120,39 @@ bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const return settingsChanged; } -bool CppCodeModelSettingsWidget::applyPchCheckBoxToSettings() const +bool CppCodeModelSettingsWidget::applyGeneralWidgetsToSettings() const { - const bool newIgnorePch = m_ui->ignorePCHCheckBox->isChecked(); - const bool previousIgnorePch = m_settings->pchUsage() == CppCodeModelSettings::PchUse_None; - - if (newIgnorePch != previousIgnorePch) { - const CppCodeModelSettings::PCHUsage pchUsage = m_ui->ignorePCHCheckBox->isChecked() - ? CppCodeModelSettings::PchUse_None - : CppCodeModelSettings::PchUse_BuildSystem; - m_settings->setPCHUsage(pchUsage); + bool settingsChanged = false; - return true; + const bool newInterpretAmbiguousHeaderAsCHeaders + = m_ui->interpretAmbiguousHeadersAsCHeaders->isChecked(); + if (m_settings->interpretAmbigiousHeadersAsCHeaders() + != newInterpretAmbiguousHeaderAsCHeaders) { + m_settings->setInterpretAmbigiousHeadersAsCHeaders(newInterpretAmbiguousHeaderAsCHeaders); + settingsChanged = true; } - return false; -} - -bool CppCodeModelSettingsWidget::applySkipIndexingFilesWidgets() const -{ - bool settingsChanged = false; - const bool newSkipIndexingBigFiles = m_ui->skipIndexingBigFilesCheckBox->isChecked(); if (m_settings->skipIndexingBigFiles() != newSkipIndexingBigFiles) { m_settings->setSkipIndexingBigFiles(newSkipIndexingBigFiles); settingsChanged = true; } - const int newFileSizeLimit = m_ui->bigFilesLimitSpinBox->value(); if (m_settings->indexerFileSizeLimitInMb() != newFileSizeLimit) { m_settings->setIndexerFileSizeLimitInMb(newFileSizeLimit); settingsChanged = true; } + const bool newIgnorePch = m_ui->ignorePCHCheckBox->isChecked(); + const bool previousIgnorePch = m_settings->pchUsage() == CppCodeModelSettings::PchUse_None; + if (newIgnorePch != previousIgnorePch) { + const CppCodeModelSettings::PCHUsage pchUsage = m_ui->ignorePCHCheckBox->isChecked() + ? CppCodeModelSettings::PchUse_None + : CppCodeModelSettings::PchUse_BuildSystem; + m_settings->setPCHUsage(pchUsage); + settingsChanged = true; + } + return settingsChanged; } |