aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cppeditor/cppcodemodelsettings.h
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2024-02-22 16:26:13 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2024-03-15 14:21:21 +0000
commitfaa595e38b830690a79904df413376996f728bb6 (patch)
tree62235f3e4261e5b0f4d7e20dc48aa18559de6782 /src/plugins/cppeditor/cppcodemodelsettings.h
parent812326eadc842e6c745ab676bc8eaa848fb07861 (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.h40
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