summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodemodelsettings.h
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2021-06-28 14:55:54 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2021-06-30 15:09:56 +0000
commitfbb804c442e34d669f7ce4e6a39aacd554ef8008 (patch)
tree73f5b5d4f1d2ae487e453c27e44de27c17c8a51d /src/plugins/cpptools/cppcodemodelsettings.h
parentb3c83b79f70546c4ba16f41b30e32b5d163de71a (diff)
downloadqt-creator-fbb804c442e34d669f7ce4e6a39aacd554ef8008.tar.gz
Clangd: Add per-project settings
Users might want to use clangd for certain project, but not for others. Change-Id: Id29ce3349f0acd359cf7c824ece073b147ed2280 Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppcodemodelsettings.h')
-rw-r--r--src/plugins/cpptools/cppcodemodelsettings.h40
1 files changed, 33 insertions, 7 deletions
diff --git a/src/plugins/cpptools/cppcodemodelsettings.h b/src/plugins/cpptools/cppcodemodelsettings.h
index eb4abe4537..6bfccc4bf7 100644
--- a/src/plugins/cpptools/cppcodemodelsettings.h
+++ b/src/plugins/cpptools/cppcodemodelsettings.h
@@ -38,6 +38,8 @@ QT_BEGIN_NAMESPACE
class QSettings;
QT_END_NAMESPACE
+namespace ProjectExplorer { class Project; }
+
namespace CppTools {
class CPPTOOLS_EXPORT CppCodeModelSettings : public QObject
@@ -102,21 +104,27 @@ public:
class Data
{
public:
+ QVariantMap toMap() const;
+ void fromMap(const QVariantMap &map);
+
Utils::FilePath executableFilePath;
int workerThreadLimit = 0;
bool useClangd = false;
bool enableIndexing = true;
};
- static bool useClangd() { return instance().m_data.useClangd; }
+ ClangdSettings(const Data &data) : m_data(data) {}
+
+ static ClangdSettings &instance();
+ bool useClangd() const { return m_data.useClangd; }
static void setDefaultClangdPath(const Utils::FilePath &filePath);
- static Utils::FilePath clangdFilePath();
- static bool indexingEnabled() { return instance().m_data.enableIndexing; }
- static int workerThreadLimit() { return instance().m_data.workerThreadLimit; }
+ Utils::FilePath clangdFilePath() const;
+ bool indexingEnabled() const { return m_data.enableIndexing; }
+ int workerThreadLimit() const { return m_data.workerThreadLimit; }
- static void setData(const Data &data);
- static Data data() { return instance().m_data; }
+ void setData(const Data &data);
+ Data data() const { return m_data; }
#ifdef WITH_TESTS
static void setUseClangd(bool use);
@@ -125,7 +133,6 @@ public:
private:
ClangdSettings() { loadSettings(); }
- static ClangdSettings &instance();
void loadSettings();
void saveSettings();
@@ -133,4 +140,23 @@ private:
Data m_data;
};
+class CPPTOOLS_EXPORT ClangdProjectSettings
+{
+public:
+ ClangdProjectSettings(ProjectExplorer::Project *project);
+
+ ClangdSettings settings() const;
+ void setSettings(const ClangdSettings::Data &data);
+ bool useGlobalSettings() const { return m_useGlobalSettings; }
+ void setUseGlobalSettings(bool useGlobal);
+
+private:
+ void loadSettings();
+ void saveSettings();
+
+ ProjectExplorer::Project * const m_project;
+ ClangdSettings::Data m_customSettings;
+ bool m_useGlobalSettings = true;
+};
+
} // namespace CppTools