diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2021-06-25 16:50:52 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2021-06-28 10:34:24 +0000 |
commit | ba138a185534269f6a6f32088965b12cbb898337 (patch) | |
tree | 9a29aa1877502f61e089cc263755a45c83e4f056 /src/plugins/cpptools/cppcodemodelsettings.cpp | |
parent | cd20ad8ff433acdf1629580e4700c2e9e394a962 (diff) | |
download | qt-creator-ba138a185534269f6a6f32088965b12cbb898337.tar.gz |
CppTools: Add dedicated settings and settings page for clangd
We plan to add more clangd settings, and it makes sense to have a
dedicated place for them both in the code and the UI.
Change-Id: Ideb92935b7a5a6a98e07980f4011736fb82042d1
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppcodemodelsettings.cpp')
-rw-r--r-- | src/plugins/cpptools/cppcodemodelsettings.cpp | 61 |
1 files changed, 52 insertions, 9 deletions
diff --git a/src/plugins/cpptools/cppcodemodelsettings.cpp b/src/plugins/cpptools/cppcodemodelsettings.cpp index 5c5113d004..aa09d40918 100644 --- a/src/plugins/cpptools/cppcodemodelsettings.cpp +++ b/src/plugins/cpptools/cppcodemodelsettings.cpp @@ -29,6 +29,8 @@ #include "cpptoolsconstants.h" #include "cpptoolsreuse.h" +#include <coreplugin/icore.h> + #include <utils/algorithm.h> #include <utils/qtcassert.h> @@ -172,9 +174,6 @@ void CppCodeModelSettings::fromSettings(QSettings *s) const QVariant indexerFileSizeLimit = s->value(indexerFileSizeLimitKey(), 5); setIndexerFileSizeLimitInMb(indexerFileSizeLimit.toInt()); - setUseClangd(s->value(useClangdKey(), false).toBool()); - setClangdFilePath(FilePath::fromString(s->value(clangdPathKey()).toString())); - s->endGroup(); if (write) @@ -198,8 +197,6 @@ void CppCodeModelSettings::toSettings(QSettings *s) s->setValue(interpretAmbiguousHeadersAsCHeadersKey(), interpretAmbigiousHeadersAsCHeaders()); s->setValue(skipIndexingBigFilesKey(), skipIndexingBigFiles()); s->setValue(indexerFileSizeLimitKey(), indexerFileSizeLimitInMb()); - s->setValue(useClangdKey(), useClangd()); - s->setValue(clangdPathKey(), m_clangdFilePath.toString()); s->endGroup(); @@ -300,14 +297,60 @@ void CppCodeModelSettings::setEnableLowerClazyLevels(bool yesno) m_enableLowerClazyLevels = yesno; } -void CppCodeModelSettings::setDefaultClangdPath(const Utils::FilePath &filePath) + +static bool operator==(const ClangdSettings::Data &s1, const ClangdSettings::Data &s2) +{ + return s1.useClangd == s2.useClangd && s1.executableFilePath == s2.executableFilePath; +} +static bool operator!=(const ClangdSettings::Data &s1, const ClangdSettings::Data &s2) +{ + return !(s1 == s2); +} + +ClangdSettings &ClangdSettings::instance() +{ + static ClangdSettings settings; + return settings; +} + +void ClangdSettings::setDefaultClangdPath(const Utils::FilePath &filePath) { g_defaultClangdFilePath = filePath; } -FilePath CppCodeModelSettings::clangdFilePath() const +FilePath ClangdSettings::clangdFilePath() { - if (!m_clangdFilePath.isEmpty()) - return m_clangdFilePath; + if (!instance().m_data.executableFilePath.isEmpty()) + return instance().m_data.executableFilePath; return fallbackClangdFilePath(); } + +void ClangdSettings::setData(const Data &data) +{ + if (data != instance().m_data) { + instance().m_data = data; + instance().saveSettings(); + } +} + +void ClangdSettings::loadSettings() +{ + QSettings * const s = Core::ICore::settings(); + m_data.useClangd = s->value(useClangdKey(), false).toBool(); + m_data.executableFilePath = FilePath::fromString(s->value(clangdPathKey()).toString()); +} + +void ClangdSettings::saveSettings() +{ + QSettings * const s = Core::ICore::settings(); + s->setValue(useClangdKey(), useClangd()); + s->setValue(clangdPathKey(), m_data.executableFilePath.toString()); +} + +#ifdef WITH_TESTS +void ClangdSettings::setUseClangd(bool use) { instance().m_data.useClangd = use; } +void ClangdSettings::setClangdFilePath(const Utils::FilePath &filePath) +{ + instance().m_data.executableFilePath = filePath; +} +#endif |