ClangFormat: Improve conversion from and to ClangFormat style

Improved conversion from ClangFormat style settings to
CppCode style settings and the other way around.

Task-number: QTCREATORBUG-29069
Change-Id: If4f75259f7fe77397fc144a83370749a49d25297
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Artem Sokolovskii
2023-05-08 11:39:33 +02:00
parent 979f938aa5
commit ef06d89255

View File

@@ -169,6 +169,12 @@ CppEditor::CppCodeStyleSettings ClangFormatFile::toCppCodeStyleSettings(
settings.bindStarToRightSpecifier = style.PointerAlignment == FormatStyle::PAS_Right; settings.bindStarToRightSpecifier = style.PointerAlignment == FormatStyle::PAS_Right;
} }
settings.extraPaddingForConditionsIfConfusingAlign = style.BreakBeforeBinaryOperators
== FormatStyle::BOS_All;
settings.alignAssignments = style.BreakBeforeBinaryOperators == FormatStyle::BOS_All
|| style.BreakBeforeBinaryOperators
== FormatStyle::BOS_NonAssignment;
return settings; return settings;
} }
@@ -188,6 +194,9 @@ void ClangFormatFile::fromCppCodeStyleSettings(const CppEditor::CppCodeStyleSett
if (settings.indentClassBraces || settings.indentEnumBraces || settings.indentBlockBraces if (settings.indentClassBraces || settings.indentEnumBraces || settings.indentBlockBraces
|| settings.indentFunctionBraces) || settings.indentFunctionBraces)
m_style.BreakBeforeBraces = FormatStyle::BS_Whitesmiths; m_style.BreakBeforeBraces = FormatStyle::BS_Whitesmiths;
else
m_style.BreakBeforeBraces = FormatStyle::BS_Custom;
m_style.IndentCaseLabels = settings.indentSwitchLabels; m_style.IndentCaseLabels = settings.indentSwitchLabels;
#if LLVM_VERSION_MAJOR >= 11 #if LLVM_VERSION_MAJOR >= 11
@@ -196,11 +205,12 @@ void ClangFormatFile::fromCppCodeStyleSettings(const CppEditor::CppCodeStyleSett
|| settings.indentControlFlowRelativeToSwitchLabels; || settings.indentControlFlowRelativeToSwitchLabels;
#endif #endif
if (settings.alignAssignments)
m_style.BreakBeforeBinaryOperators = FormatStyle::BOS_NonAssignment;
if (settings.extraPaddingForConditionsIfConfusingAlign) if (settings.extraPaddingForConditionsIfConfusingAlign)
m_style.BreakBeforeBinaryOperators = FormatStyle::BOS_All; m_style.BreakBeforeBinaryOperators = FormatStyle::BOS_All;
else if (settings.alignAssignments)
m_style.BreakBeforeBinaryOperators = FormatStyle::BOS_NonAssignment;
else
m_style.BreakBeforeBinaryOperators = FormatStyle::BOS_None;
m_style.DerivePointerAlignment = settings.bindStarToIdentifier || settings.bindStarToTypeName m_style.DerivePointerAlignment = settings.bindStarToIdentifier || settings.bindStarToTypeName
|| settings.bindStarToLeftSpecifier || settings.bindStarToLeftSpecifier