ClangFormat: Convert old settings to a new ones

Added possibility to convert old setting to new one out of the box.
So now, if options FormattingInsteadOfIndentting or FormatOnSave
was set the mode will be set to Formatting.

Change-Id: I3c30ca8543d4fe25d1a44665d286f27ac2102c52
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Artem Sokolovskii
2022-06-01 14:51:07 +02:00
parent ff8495b0a2
commit 7020b0a44a

View File

@@ -29,6 +29,9 @@
#include <coreplugin/icore.h>
namespace ClangFormat {
static const char FORMAT_CODE_INSTEAD_OF_INDENT_ID[] = "ClangFormat.FormatCodeInsteadOfIndent";
static const char FORMAT_CODE_ON_SAVE_ID[] = "ClangFormat.FormatCodeOnSave";
static const char FORMAT_WHILE_TYPING_ID[] = "ClangFormat.FormatWhileTyping";
ClangFormatSettings &ClangFormatSettings::instance()
{
@@ -42,9 +45,25 @@ ClangFormatSettings::ClangFormatSettings()
settings->beginGroup(QLatin1String(Constants::SETTINGS_ID));
m_overrideDefaultFile = settings->value(QLatin1String(Constants::OVERRIDE_FILE_ID), false)
.toBool();
m_mode = static_cast<ClangFormatSettings::Mode>(
settings->value(QLatin1String(Constants::MODE_ID), ClangFormatSettings::Mode::Indenting)
.toInt());
// Convert old settings to new ones. New settings were added to QtC 8.0
bool isOldFormattingOn
= settings->value(QLatin1String(FORMAT_CODE_INSTEAD_OF_INDENT_ID), false).toBool()
|| settings->value(QLatin1String(FORMAT_CODE_ON_SAVE_ID), false).toBool();
Core::ICore::settings()->remove(QLatin1String(FORMAT_CODE_INSTEAD_OF_INDENT_ID));
Core::ICore::settings()->remove(QLatin1String(FORMAT_CODE_ON_SAVE_ID));
Core::ICore::settings()->remove(QLatin1String(FORMAT_WHILE_TYPING_ID));
if (isOldFormattingOn) {
settings->setValue(QLatin1String(Constants::MODE_ID),
static_cast<int>(ClangFormatSettings::Mode::Formatting));
m_mode = ClangFormatSettings::Mode::Formatting;
} else
m_mode = static_cast<ClangFormatSettings::Mode>(
settings->value(QLatin1String(Constants::MODE_ID), ClangFormatSettings::Mode::Indenting)
.toInt());
settings->endGroup();
}