diff options
Diffstat (limited to 'src/plugins/cppeditor/cppcodemodelsettings.cpp')
-rw-r--r-- | src/plugins/cppeditor/cppcodemodelsettings.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index c798cd9dd3..5dde29a49c 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -48,6 +48,7 @@ public: CppCodeModelSettings settings() const; void setSettings(const CppCodeModelSettings &settings); + void forceCustomSettingsSettings(const CppCodeModelSettings &settings); bool useGlobalSettings() const { return m_useGlobalSettings; } void setUseGlobalSettings(bool useGlobal); @@ -64,6 +65,7 @@ private: static Key pchUsageKey() { return Constants::CPPEDITOR_MODEL_MANAGER_PCH_USAGE; } static Key interpretAmbiguousHeadersAsCHeadersKey() { return Constants::CPPEDITOR_INTERPRET_AMBIGIUOUS_HEADERS_AS_C_HEADERS; } +static Key enableIndexingKey() { return "EnableIndexing"; } static Key skipIndexingBigFilesKey() { return Constants::CPPEDITOR_SKIP_INDEXING_BIG_FILES; } static Key ignoreFilesKey() { return Constants::CPPEDITOR_IGNORE_FILES; } static Key ignorePatternKey() { return Constants::CPPEDITOR_IGNORE_PATTERN; } @@ -76,10 +78,12 @@ bool operator==(const CppEditor::CppCodeModelSettings &s1, { return s1.pchUsage == s2.pchUsage && s1.interpretAmbigiousHeadersAsC == s2.interpretAmbigiousHeadersAsC + && s1.enableIndexing == s2.enableIndexing && s1.skipIndexingBigFiles == s2.skipIndexingBigFiles && s1.useBuiltinPreprocessor == s2.useBuiltinPreprocessor && s1.indexerFileSizeLimitInMb == s2.indexerFileSizeLimitInMb && s1.m_categorizeFindReferences == s2.m_categorizeFindReferences + && s1.interactiveFollowSymbol == s2.interactiveFollowSymbol && s1.ignoreFiles == s2.ignoreFiles && s1.ignorePattern == s2.ignorePattern; } @@ -88,6 +92,7 @@ Store CppCodeModelSettings::toMap() const Store store; store.insert(pchUsageKey(), pchUsage); store.insert(interpretAmbiguousHeadersAsCHeadersKey(), interpretAmbigiousHeadersAsC); + store.insert(enableIndexingKey(), enableIndexing); store.insert(skipIndexingBigFilesKey(), skipIndexingBigFiles); store.insert(ignoreFilesKey(), ignoreFiles); store.insert(ignorePatternKey(), ignorePattern); @@ -103,6 +108,7 @@ void CppCodeModelSettings::fromMap(const Utils::Store &store) interpretAmbigiousHeadersAsC = store.value(interpretAmbiguousHeadersAsCHeadersKey(), def.interpretAmbigiousHeadersAsC) .toBool(); + enableIndexing = store.value(enableIndexingKey(), def.enableIndexing).toBool(); skipIndexingBigFiles = store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles).toBool(); ignoreFiles = store.value(ignoreFilesKey(), def.ignoreFiles).toBool(); @@ -155,8 +161,7 @@ void CppCodeModelSettings::setSettingsForProject( ProjectExplorer::Project *project, const CppCodeModelSettings &settings) { CppCodeModelProjectSettings pSettings(project); - pSettings.setUseGlobalSettings(false); - pSettings.setSettings(settings); + pSettings.forceCustomSettingsSettings(settings); } void CppCodeModelSettings::setGlobal(const CppCodeModelSettings &settings) @@ -200,6 +205,16 @@ void CppCodeModelSettings::setCategorizeFindReferences(bool categorize) globalInstance().m_categorizeFindReferences = categorize; } +bool CppCodeModelSettings::isInteractiveFollowSymbol() +{ + return globalInstance().interactiveFollowSymbol; +} + +void CppCodeModelSettings::setInteractiveFollowSymbol(bool interactive) +{ + globalInstance().interactiveFollowSymbol = interactive; +} + CppCodeModelProjectSettings::CppCodeModelProjectSettings(ProjectExplorer::Project *project) : m_project(project) { @@ -218,6 +233,12 @@ void CppCodeModelProjectSettings::setSettings(const CppCodeModelSettings &settin CppModelManager::handleSettingsChange(m_project); } +void CppCodeModelProjectSettings::forceCustomSettingsSettings(const CppCodeModelSettings &settings) +{ + m_useGlobalSettings = false; + setSettings(settings); +} + void CppCodeModelProjectSettings::setUseGlobalSettings(bool useGlobal) { m_useGlobalSettings = useGlobal; @@ -261,6 +282,7 @@ private: QCheckBox *m_interpretAmbiguousHeadersAsCHeaders; QCheckBox *m_ignorePchCheckBox; QCheckBox *m_useBuiltinPreprocessorCheckBox; + QCheckBox *m_enableIndexingCheckBox; QCheckBox *m_skipIndexingBigFilesCheckBox; QSpinBox *m_bigFilesLimitSpinBox; QCheckBox *m_ignoreFilesCheckBox; @@ -272,6 +294,12 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting m_interpretAmbiguousHeadersAsCHeaders = new QCheckBox(Tr::tr("Interpret ambiguous headers as C headers")); + m_enableIndexingCheckBox = new QCheckBox(Tr::tr("Enable indexing")); + m_enableIndexingCheckBox->setChecked(settings.enableIndexing); + m_enableIndexingCheckBox->setToolTip(Tr::tr( + "Indexing should almost always be kept enabled, as disabling it will severely limit the " + "capabilities of the code model.")); + m_skipIndexingBigFilesCheckBox = new QCheckBox(Tr::tr("Do not index files greater than")); m_skipIndexingBigFilesCheckBox->setChecked(settings.skipIndexingBigFiles); @@ -320,6 +348,7 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting m_interpretAmbiguousHeadersAsCHeaders, m_ignorePchCheckBox, m_useBuiltinPreprocessorCheckBox, + m_enableIndexingCheckBox, Row { m_skipIndexingBigFilesCheckBox, m_bigFilesLimitSpinBox, st }, Row { Column { m_ignoreFilesCheckBox, st }, m_ignorePatternTextEdit }, } @@ -329,6 +358,7 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSetting for (const QCheckBox *const b : {m_interpretAmbiguousHeadersAsCHeaders, m_ignorePchCheckBox, + m_enableIndexingCheckBox, m_useBuiltinPreprocessorCheckBox, m_skipIndexingBigFilesCheckBox, m_ignoreFilesCheckBox}) { @@ -349,6 +379,7 @@ CppCodeModelSettings CppCodeModelSettingsWidget::settings() const { CppCodeModelSettings settings; settings.interpretAmbigiousHeadersAsC = m_interpretAmbiguousHeadersAsCHeaders->isChecked(); + settings.enableIndexing = m_enableIndexingCheckBox->isChecked(); settings.skipIndexingBigFiles = m_skipIndexingBigFilesCheckBox->isChecked(); settings.useBuiltinPreprocessor = m_useBuiltinPreprocessorCheckBox->isChecked(); settings.ignoreFiles = m_ignoreFilesCheckBox->isChecked(); |