aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cppeditor
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2024-03-06 15:10:15 +0100
committerEike Ziller <eike.ziller@qt.io>2024-03-06 15:10:15 +0100
commit8abc95331f1dddafb07c691857d3519829acb4ef (patch)
tree4b7b3f506917028540aa3df17d27d4534c8857c3 /src/plugins/cppeditor
parentdb5ac2dc15f0ac607c03416e538ae2ffc5482467 (diff)
parent7b8f274b9e3956a2e8668f932ee9717f96568678 (diff)
Merge remote-tracking branch 'origin/13.0'
Conflicts: cmake/QtCreatorIDEBranding.cmake qbs/modules/qtc/qtc.qbs src/plugins/cppeditor/cppcodemodelsettings.cpp src/plugins/cppeditor/cppcodemodelsettings.h Change-Id: I54937c39b06897a72a105e4e0a8b5f8a76c38e26
Diffstat (limited to 'src/plugins/cppeditor')
-rw-r--r--src/plugins/cppeditor/cppcodemodelsettings.cpp133
-rw-r--r--src/plugins/cppeditor/cppcodemodelsettings.h29
-rw-r--r--src/plugins/cppeditor/cppdoxygen_test.cpp24
-rw-r--r--src/plugins/cppeditor/cppquickfix_test.cpp8
-rw-r--r--src/plugins/cppeditor/cpptoolstestcase.cpp11
-rw-r--r--src/plugins/cppeditor/cpptoolstestcase.h2
6 files changed, 86 insertions, 121 deletions
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp
index c767bc6426..07d3d92658 100644
--- a/src/plugins/cppeditor/cppcodemodelsettings.cpp
+++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp
@@ -86,26 +86,15 @@ bool operator==(const CppEditor::CppCodeModelSettings::Data &s1,
Store CppCodeModelSettings::Data::toMap() const
{
- const CppCodeModelSettings::Data def;
Store store;
- store.insertValueWithDefault(enableLowerClazyLevelsKey(),
- enableLowerClazyLevels,
- def.enableLowerClazyLevels);
- store.insertValueWithDefault(pchUsageKey(), pchUsage, def.pchUsage);
- store.insertValueWithDefault(interpretAmbiguousHeadersAsCHeadersKey(),
- interpretAmbigiousHeadersAsC,
- def.interpretAmbigiousHeadersAsC);
- store.insertValueWithDefault(skipIndexingBigFilesKey(),
- skipIndexingBigFiles,
- def.skipIndexingBigFiles);
- store.insertValueWithDefault(ignoreFilesKey(), ignoreFiles, def.ignoreFiles);
- store.insertValueWithDefault(ignorePatternKey(), ignorePattern, def.ignorePattern);
- store.insertValueWithDefault(useBuiltinPreprocessorKey(),
- useBuiltinPreprocessor,
- def.useBuiltinPreprocessor);
- store.insertValueWithDefault(indexerFileSizeLimitKey(),
- indexerFileSizeLimitInMb,
- def.indexerFileSizeLimitInMb);
+ store.insert(enableLowerClazyLevelsKey(), enableLowerClazyLevels);
+ store.insert(pchUsageKey(), pchUsage);
+ store.insert(interpretAmbiguousHeadersAsCHeadersKey(), interpretAmbigiousHeadersAsC);
+ store.insert(skipIndexingBigFilesKey(), skipIndexingBigFiles);
+ store.insert(ignoreFilesKey(), ignoreFiles);
+ store.insert(ignorePatternKey(), ignorePattern);
+ store.insert(useBuiltinPreprocessorKey(), useBuiltinPreprocessor);
+ store.insert(indexerFileSizeLimitKey(), indexerFileSizeLimitInMb);
return store;
}
@@ -136,7 +125,8 @@ void CppCodeModelSettings::fromSettings(QtcSettings *s)
void CppCodeModelSettings::toSettings(QtcSettings *s)
{
- storeToSettings(Constants::CPPEDITOR_SETTINGSGROUP, s, m_data.toMap());
+ const Data def;
+ storeToSettingsWithDefault(Constants::CPPEDITOR_SETTINGSGROUP, s, m_data.toMap(), def.toMap());
emit changed(); // TODO: Why?
}
@@ -432,7 +422,11 @@ void ClangdSettings::loadSettings()
void ClangdSettings::saveSettings()
{
const auto settings = Core::ICore::settings();
- Utils::storeToSettings(clangdSettingsKey(), settings, m_data.toMap());
+ const ClangdSettings::Data defaultData;
+ Utils::storeToSettingsWithDefault(clangdSettingsKey(),
+ settings,
+ m_data.toMap(),
+ defaultData.toMap());
settings->beginGroup(Constants::CPPEDITOR_SETTINGSGROUP);
diagnosticConfigsToSettings(settings, m_data.customDiagnosticConfigs);
settings->endGroup();
@@ -534,70 +528,37 @@ Store ClangdSettings::Data::toMap() const
{
Store map;
- map.insertValueWithDefault(useClangdKey(), useClangd, DefaultUseClangd);
-
- const QString clangdPath = executableFilePath != fallbackClangdFilePath()
- ? executableFilePath.toString()
- : QString();
-
- map.insertValueWithDefault(clangdPathKey(), clangdPath);
-
- map.insertValueWithDefault(clangdIndexingKey(), indexingPriority != IndexingPriority::Off, true);
- map.insertValueWithDefault(clangdIndexingPriorityKey(),
- int(indexingPriority),
- int(DefaultIndexingPriority));
- map.insertValueWithDefault(clangdProjectIndexPathKey(), projectIndexPathTemplate,
- defaultProjectIndexPathTemplate());
- map.insertValueWithDefault(clangdSessionIndexPathKey(), sessionIndexPathTemplate,
- defaultSessionIndexPathTemplate());
-
- map.insertValueWithDefault(clangdHeaderSourceSwitchModeKey(),
- int(headerSourceSwitchMode),
- int(DefaultHeaderSourceSwitchMode));
-
- map.insertValueWithDefault(clangdCompletionRankingModelKey(),
- int(completionRankingModel),
- int(DefaultCompletionRankingModel));
-
- map.insertValueWithDefault(clangdHeaderInsertionKey(),
- autoIncludeHeaders,
- DefaultAutoIncludeHeaders);
-
- map.insertValueWithDefault(clangdThreadLimitKey(), workerThreadLimit, DefaultWorkerThreadLimit);
-
- map.insertValueWithDefault(clangdDocumentThresholdKey(),
- documentUpdateThreshold,
- DefaultDocumentUpdateThreshold);
-
- map.insertValueWithDefault(clangdSizeThresholdEnabledKey(),
- sizeThresholdEnabled,
- DefaultSizeThresholdEnabled);
-
- map.insertValueWithDefault(clangdSizeThresholdKey(),
- sizeThresholdInKb,
- DefaultSizeThresholdInKb);
-
- map.insertValueWithDefault(sessionsWithOneClangdKey(), sessionsWithOneClangd);
-
- map.insertValueWithDefault(diagnosticConfigIdKey(),
- diagnosticConfigId.toSetting(),
- initialClangDiagnosticConfigId().toSetting());
-
+ map.insert(useClangdKey(), useClangd);
+
+ map.insert(clangdPathKey(),
+ executableFilePath != fallbackClangdFilePath() ? executableFilePath.toString()
+ : QString());
+
+ map.insert(clangdIndexingKey(), indexingPriority != IndexingPriority::Off);
+ map.insert(clangdIndexingPriorityKey(), int(indexingPriority));
+ map.insert(clangdProjectIndexPathKey(), projectIndexPathTemplate);
+ map.insert(clangdSessionIndexPathKey(), sessionIndexPathTemplate);
+ map.insert(clangdHeaderSourceSwitchModeKey(), int(headerSourceSwitchMode));
+ map.insert(clangdCompletionRankingModelKey(), int(completionRankingModel));
+ map.insert(clangdHeaderInsertionKey(), autoIncludeHeaders);
+ map.insert(clangdThreadLimitKey(), workerThreadLimit);
+ map.insert(clangdDocumentThresholdKey(), documentUpdateThreshold);
+ map.insert(clangdSizeThresholdEnabledKey(), sizeThresholdEnabled);
+ map.insert(clangdSizeThresholdKey(), sizeThresholdInKb);
+ map.insert(sessionsWithOneClangdKey(), sessionsWithOneClangd);
+ map.insert(diagnosticConfigIdKey(), diagnosticConfigId.toSetting());
if (haveCheckedHardwareReqirements != false)
map.insert(checkedHardwareKey(), true);
-
- map.insertValueWithDefault(completionResultsKey(),
- completionResults,
- defaultCompletionResults());
+ map.insert(completionResultsKey(), completionResults);
return map;
}
void ClangdSettings::Data::fromMap(const Store &map)
{
- useClangd = map.value(useClangdKey(), DefaultUseClangd).toBool();
+ useClangd = map.value(useClangdKey(), true).toBool();
executableFilePath = FilePath::fromString(map.value(clangdPathKey()).toString());
indexingPriority = IndexingPriority(
- map.value(clangdIndexingPriorityKey(), int(DefaultIndexingPriority)).toInt());
+ map.value(clangdIndexingPriorityKey(), int(this->indexingPriority)).toInt());
const auto it = map.find(clangdIndexingKey());
if (it != map.end() && !it->toBool())
indexingPriority = IndexingPriority::Off;
@@ -605,17 +566,15 @@ void ClangdSettings::Data::fromMap(const Store &map)
= map.value(clangdProjectIndexPathKey(), defaultProjectIndexPathTemplate()).toString();
sessionIndexPathTemplate
= map.value(clangdSessionIndexPathKey(), defaultSessionIndexPathTemplate()).toString();
- headerSourceSwitchMode = HeaderSourceSwitchMode(
- map.value(clangdHeaderSourceSwitchModeKey(), int(DefaultHeaderSourceSwitchMode)).toInt());
- completionRankingModel = CompletionRankingModel(
- map.value(clangdCompletionRankingModelKey(), int(DefaultCompletionRankingModel)).toInt());
- autoIncludeHeaders = map.value(clangdHeaderInsertionKey(), DefaultAutoIncludeHeaders).toBool();
- workerThreadLimit = map.value(clangdThreadLimitKey(), DefaultWorkerThreadLimit).toInt();
- documentUpdateThreshold
- = map.value(clangdDocumentThresholdKey(), DefaultDocumentUpdateThreshold).toInt();
- sizeThresholdEnabled
- = map.value(clangdSizeThresholdEnabledKey(), DefaultSizeThresholdEnabled).toBool();
- sizeThresholdInKb = map.value(clangdSizeThresholdKey(), DefaultSizeThresholdInKb).toLongLong();
+ headerSourceSwitchMode = HeaderSourceSwitchMode(map.value(clangdHeaderSourceSwitchModeKey(),
+ int(headerSourceSwitchMode)).toInt());
+ completionRankingModel = CompletionRankingModel(map.value(clangdCompletionRankingModelKey(),
+ int(completionRankingModel)).toInt());
+ autoIncludeHeaders = map.value(clangdHeaderInsertionKey(), false).toBool();
+ workerThreadLimit = map.value(clangdThreadLimitKey(), 0).toInt();
+ documentUpdateThreshold = map.value(clangdDocumentThresholdKey(), 500).toInt();
+ sizeThresholdEnabled = map.value(clangdSizeThresholdEnabledKey(), false).toBool();
+ sizeThresholdInKb = map.value(clangdSizeThresholdKey(), 1024).toLongLong();
sessionsWithOneClangd = map.value(sessionsWithOneClangdKey()).toStringList();
diagnosticConfigId = Id::fromSetting(map.value(diagnosticConfigIdKey(),
initialClangDiagnosticConfigId().toSetting()));
diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h
index c81fbda6f0..b13acb3f05 100644
--- a/src/plugins/cppeditor/cppcodemodelsettings.h
+++ b/src/plugins/cppeditor/cppcodemodelsettings.h
@@ -19,7 +19,6 @@
namespace ProjectExplorer { class Project; }
namespace Utils {
class MacroExpander;
-class Store;
} // namespace Utils
namespace CppEditor {
@@ -135,32 +134,22 @@ public:
ClangDiagnosticConfigs customDiagnosticConfigs;
Utils::Id diagnosticConfigId;
- int workerThreadLimit = DefaultWorkerThreadLimit;
- int documentUpdateThreshold = DefaultDocumentUpdateThreshold;
- qint64 sizeThresholdInKb = DefaultSizeThresholdInKb;
- bool useClangd = DefaultUseClangd;
- IndexingPriority indexingPriority = DefaultIndexingPriority;
+ int workerThreadLimit = 0;
+ int documentUpdateThreshold = 500;
+ qint64 sizeThresholdInKb = 1024;
+ bool useClangd = true;
+ IndexingPriority indexingPriority = IndexingPriority::Low;
QString projectIndexPathTemplate = defaultProjectIndexPathTemplate();
QString sessionIndexPathTemplate = defaultSessionIndexPathTemplate();
- HeaderSourceSwitchMode headerSourceSwitchMode = DefaultHeaderSourceSwitchMode;
- CompletionRankingModel completionRankingModel = DefaultCompletionRankingModel;
- bool autoIncludeHeaders = DefaultAutoIncludeHeaders;
- bool sizeThresholdEnabled = DefaultSizeThresholdEnabled;
+ HeaderSourceSwitchMode headerSourceSwitchMode = HeaderSourceSwitchMode::Both;
+ CompletionRankingModel completionRankingModel = CompletionRankingModel::Default;
+ bool autoIncludeHeaders = false;
+ bool sizeThresholdEnabled = false;
bool haveCheckedHardwareReqirements = false;
int completionResults = defaultCompletionResults();
private:
static int defaultCompletionResults();
-
- static constexpr auto DefaultWorkerThreadLimit = 0;
- static constexpr auto DefaultDocumentUpdateThreshold = 500;
- static constexpr auto DefaultSizeThresholdInKb = 1024ll;
- static constexpr auto DefaultUseClangd = true;
- static constexpr auto DefaultIndexingPriority = ClangdSettings::IndexingPriority::Low;
- static constexpr auto DefaultHeaderSourceSwitchMode = HeaderSourceSwitchMode::Both;
- static constexpr auto DefaultCompletionRankingModel = CompletionRankingModel::Default;
- static constexpr auto DefaultAutoIncludeHeaders = false;
- static constexpr auto DefaultSizeThresholdEnabled = false;
};
ClangdSettings(const Data &data) : m_data(data) {}
diff --git a/src/plugins/cppeditor/cppdoxygen_test.cpp b/src/plugins/cppeditor/cppdoxygen_test.cpp
index 2cab76ee49..2d85345303 100644
--- a/src/plugins/cppeditor/cppdoxygen_test.cpp
+++ b/src/plugins/cppeditor/cppdoxygen_test.cpp
@@ -225,26 +225,30 @@ void DoxygenTest::testBasic_data()
/// test cpp style doxygen comment when inside a indented scope
QTest::newRow("cpp_styleA_indented") << _(
- " bool preventFolding;\n"
+ "void func() {\n"
" ///|\n"
" int a;\n"
+ "}\n"
) << _(
- " bool preventFolding;\n"
+ "void func() {\n"
" ///\n"
" /// \\brief a\n"
" ///\n"
- " int a;\n") << int(CommandPrefix::Auto);
+ " int a;\n"
+ "}\n") << int(CommandPrefix::Auto);
QTest::newRow("cpp_styleB_indented") << _(
- " bool preventFolding;\n"
+ "void func() {\n"
" //!|\n"
" int a;\n"
+ "}\n"
) << _(
- " bool preventFolding;\n"
+ "void func() {\n"
" //!\n"
" //! \\brief a\n"
" //!\n"
- " int a;\n") << int(CommandPrefix::Auto);
+ " int a;\n"
+ "}\n") << int(CommandPrefix::Auto);
QTest::newRow("cpp_styleA_indented_preserve_mixed_indention_continuation") << _(
"\t bool preventFolding;\n"
@@ -491,6 +495,14 @@ void DoxygenTest::runTest(const QByteArray &original,
QCoreApplication::sendEvent(testDocument.m_editorWidget, &event);
const QByteArray result = testDocument.m_editorWidget->document()->toPlainText().toUtf8();
+ if (isClangFormatPresent()) {
+ QEXPECT_FAIL("noContinuationForExpressionAndComment1",
+ "ClangFormat indents differently",
+ Continue);
+ QEXPECT_FAIL("noContinuationForExpressionAndComment2",
+ "ClangFormat indents differently",
+ Continue);
+ }
QCOMPARE(QLatin1String(result), QLatin1String(expected));
testDocument.m_editorWidget->undo();
diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp
index d6de78b376..98650baa21 100644
--- a/src/plugins/cppeditor/cppquickfix_test.cpp
+++ b/src/plugins/cppeditor/cppquickfix_test.cpp
@@ -12,8 +12,6 @@
#include "cppsourceprocessertesthelper.h"
#include "cpptoolssettings.h"
-#include <extensionsystem/pluginmanager.h>
-#include <extensionsystem/pluginspec.h>
#include <utils/fileutils.h>
#include <QDebug>
@@ -5406,12 +5404,6 @@ void QuickfixTest::testInsertDefsFromDecls()
void QuickfixTest::testInsertAndFormatDefsFromDecls()
{
- static const auto isClangFormatPresent = [] {
- using namespace ExtensionSystem;
- return Utils::contains(PluginManager::plugins(), [](const PluginSpec *plugin) {
- return plugin->name() == "ClangFormat" && plugin->isEffectivelyEnabled();
- });
- };
if (!isClangFormatPresent())
QSKIP("This test reqires ClangFormat");
diff --git a/src/plugins/cppeditor/cpptoolstestcase.cpp b/src/plugins/cppeditor/cpptoolstestcase.cpp
index a55895affc..b0151e7a81 100644
--- a/src/plugins/cppeditor/cpptoolstestcase.cpp
+++ b/src/plugins/cppeditor/cpptoolstestcase.cpp
@@ -13,6 +13,9 @@
#include <coreplugin/editormanager/editormanager.h>
+#include <extensionsystem/pluginmanager.h>
+#include <extensionsystem/pluginspec.h>
+
#include <cplusplus/CppDocument.h>
#include <projectexplorer/buildsystem.h>
@@ -39,6 +42,14 @@ using namespace Utils;
namespace CppEditor::Internal::Tests {
+bool isClangFormatPresent()
+{
+ using namespace ExtensionSystem;
+ return Utils::contains(PluginManager::plugins(), [](const PluginSpec *plugin) {
+ return plugin->name() == "ClangFormat" && plugin->isEffectivelyEnabled();
+ });
+};
+
CppTestDocument::CppTestDocument(const QByteArray &fileName, const QByteArray &source,
char cursorMarker)
: m_fileName(QString::fromUtf8(fileName))
diff --git a/src/plugins/cppeditor/cpptoolstestcase.h b/src/plugins/cppeditor/cpptoolstestcase.h
index 13548630e6..99969621b3 100644
--- a/src/plugins/cppeditor/cpptoolstestcase.h
+++ b/src/plugins/cppeditor/cpptoolstestcase.h
@@ -35,6 +35,8 @@ class CppEditorWidget;
namespace Internal::Tests {
+bool isClangFormatPresent();
+
class CppTestDocument;
typedef QSharedPointer<CppTestDocument> TestDocumentPtr;