From e4f9d21d2879fcbf68331de8099e00aca08649e4 Mon Sep 17 00:00:00 2001 From: Lorenz Haas Date: Tue, 19 Jan 2016 20:26:59 +0100 Subject: [PATCH] Beautifier: Fix format for clang-format's command line style parameter clang-format uses YAML for its configuration file. Thus the content has to be properly reformated when used in a single line as command line argument. Task-number: QTCREATORBUG-15604 Change-Id: I867caf7ccb1f2f396677e2d0cd5335e5255e03ea Reviewed-by: Eike Ziller Reviewed-by: David Schulz --- src/plugins/beautifier/clangformat/clangformat.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/plugins/beautifier/clangformat/clangformat.cpp b/src/plugins/beautifier/clangformat/clangformat.cpp index 79eee4a1356..17bab746cc5 100644 --- a/src/plugins/beautifier/clangformat/clangformat.cpp +++ b/src/plugins/beautifier/clangformat/clangformat.cpp @@ -49,9 +49,11 @@ #include #include #include +#include #include #include +#include namespace Beautifier { namespace Internal { @@ -136,8 +138,14 @@ Command ClangFormat::command(int offset, int length) const if (m_settings->usePredefinedStyle()) { command.addOption(QLatin1String("-style=") + m_settings->predefinedStyle()); } else { - command.addOption(QLatin1String("-style={") - + m_settings->style(m_settings->customStyle()).remove(QLatin1Char('\n')) + // The clang-format option file is YAML + const QStringList lines = m_settings->style(m_settings->customStyle()) + .split(QLatin1Char('\n'), QString::SkipEmptyParts); + const QStringList options = Utils::filtered(lines, [](const QString &s) -> bool { + const QString option = s.trimmed(); + return !(option.startsWith(QLatin1Char('#')) || option == QLatin1String("---")); + }); + command.addOption(QLatin1String("-style={") + options.join(QLatin1String(", ")) + QLatin1Char('}')); }