diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2024-02-22 16:26:13 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2024-03-15 14:21:21 +0000 |
commit | faa595e38b830690a79904df413376996f728bb6 (patch) | |
tree | 62235f3e4261e5b0f4d7e20dc48aa18559de6782 /src/plugins/cppeditor/cppcodemodelsettings.h | |
parent | 812326eadc842e6c745ab676bc8eaa848fb07861 (diff) |
CppEditor: Introduce per-project code model settings
Change-Id: I325cc39e60d4b1f0fba1651502d772bfb9c6a91c
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cppeditor/cppcodemodelsettings.h')
-rw-r--r-- | src/plugins/cppeditor/cppcodemodelsettings.h | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h index c76f3318f2..19cc078b26 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.h +++ b/src/plugins/cppeditor/cppcodemodelsettings.h @@ -37,6 +37,8 @@ public: class Data { public: + Data() = default; + Data(const Utils::Store &store) { fromMap(store); } Utils::Store toMap() const; void fromMap(const Utils::Store &store); @@ -53,26 +55,35 @@ public: QString ignorePattern; }; - static CppCodeModelSettings &instance(); + CppCodeModelSettings(const Data &data) : m_data(data) {} - void setData(const Data &data); + static CppCodeModelSettings &globalInstance(); // TODO: Make inaccessible. + static CppCodeModelSettings settingsForProject(const ProjectExplorer::Project *project); + static CppCodeModelSettings settingsForProject(const Utils::FilePath &projectFile); + static CppCodeModelSettings settingsForFile(const Utils::FilePath &file); + + static void setGlobalData(const Data &data); // TODO: Make inaccessible. + void setData(const Data &data) { m_data = data; } Data data() const { return m_data; } PCHUsage pchUsage() const { return m_data.pchUsage; } + static PCHUsage pchUsage(const ProjectExplorer::Project *project); UsePrecompiledHeaders usePrecompiledHeaders() const; + static UsePrecompiledHeaders usePrecompiledHeaders(const ProjectExplorer::Project *project); + bool interpretAmbigiousHeadersAsC() const { return m_data.interpretAmbigiousHeadersAsC; } bool skipIndexingBigFiles() const { return m_data.skipIndexingBigFiles; } bool useBuiltinPreprocessor() const { return m_data.useBuiltinPreprocessor; } int indexerFileSizeLimitInMb() const { return m_data.indexerFileSizeLimitInMb; } int effectiveIndexerFileSizeLimitInMb() const; - bool categorizeFindReferences() const { return m_data.categorizeFindReferences; } bool ignoreFiles() const { return m_data.ignoreFiles; } QString ignorePattern() const { return m_data.ignorePattern; } - void setCategorizeFindReferences(bool categorize); + static bool categorizeFindReferences(); + static void setCategorizeFindReferences(bool categorize); signals: - void changed(); + void changed(ProjectExplorer::Project *project); private: CppCodeModelSettings() = default; @@ -84,6 +95,25 @@ private: Data m_data; }; +class CppCodeModelProjectSettings +{ +public: + CppCodeModelProjectSettings(ProjectExplorer::Project *project); + + CppCodeModelSettings::Data data() const; + void setData(const CppCodeModelSettings::Data &data); + bool useGlobalSettings() const { return m_useGlobalSettings; } + void setUseGlobalSettings(bool useGlobal); + +private: + void loadSettings(); + void saveSettings(); + + ProjectExplorer::Project * const m_project; + CppCodeModelSettings::Data m_customSettings; + bool m_useGlobalSettings = true; +}; + class CPPEDITOR_EXPORT ClangdSettings : public QObject { Q_OBJECT |