LINUX.ORG.RU

Настройка clang-format

 ,


0

2

Всем привет.

Не получается настроить пару моментов в clang-format.

Хочу получить следующее форматирование:

static const app::log::LoggerPluginDeclaration kPluginDec(kPluginId, 
                                                          kPluginPath, 
                                                          kPluginDescr);


static const std::string kSomeJsonConfig =
            R"(
            {
                "logger_creators": [
                    {
                        "id": ")" + kPluginId + R"(",
                        "path": ")" + kPluginPath + R"(",
                        "description": ")" + kPluginDescr + R"("
                    }
                ]
            })";

Но получаю следующее:

static const app::log::LoggerPluginDeclaration kPluginDecl(
        kPluginId, kPluginPath, kPluginDescr);


static const std::string kSomeJsonConfig =
            R"(
            {
                "logger_creators": [
                    {
                        "id": ")" +
                        kPluginId + R"(",
                        "path": ")" +
                        kPluginPath + R"(",
                        "description": ")" +
                        kPluginDescr + R"("
                        },
                ]
            })";

Перечитал несколько раз всю документацию отсюда https://clang.llvm.org/docs/ClangFormatStyleOptions.html, но решения так и не нашел.

Версия clang-format:

clang-format version 8.0.0 (tags/RELEASE_800/final)

Текст .clang-format:

############################################################
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html #
############################################################

BasedOnStyle: Chromium
Language: Cpp
Standard: Cpp11

ColumnLimit: 90
IndentWidth: 4

SpacesBeforeTrailingComments: 4
ConstructorInitializerIndentWidth: 4
AccessModifierOffset: -2

AlwaysBreakBeforeMultilineStrings: false

BinPackArguments: false
BinPackParameters: false

IndentPPDirectives: AfterHash
UseTab: Never
AllowShortIfStatementsOnASingleLine: false

ContinuationIndentWidth: 8

Заранее спасибо за помощь.

Забей и используй один из стандартных пресетов с минимальными правками, либо будешь страдать.

Deleted
()

Если вопрос в форматировании строковых литералов то надо искать настройку для сохнанения пользовательских переводов строк (в литералах). Так как для форматтера смысл форматирования твоего не виден (а точнее безразличен).

UPD Действительно, опций не так уж много. Попробуй ColumnLimit: 0:

A column limit of 0 means that there is no column limit. In this case, clang-format will respect the input’s line breaking decisions within statements unless they contradict other rules

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 2)

Если тебе не принципиален именно clang-format, то куда более фичастый и стабильный от версии к версии Uncrustify.

a1batross ★★★★★
()

Оно скорее всего такое форматирование просто не поддерживает. Его пилят больше для встроенных стилей, а не для произвольного форматирования.

xaizek ★★★★★
()
AlignAfterOpenBracket: Align
AllowAllArgumentsOnNextLine: false
BinPackArguments: false
BinPackParameters: false
PenaltyBreakBeforeFirstCallParameter: 1
ColumnLimit: 0
LamerOk ★★★★★
()
Ответ на: комментарий от KennyMinigun

Изначально был

ColumnLimit: 0
и было счастье :) Но было принято решение ограничить длину строки. После этого начались пляски с бубном...

Sergius_San
() автор топика
Ответ на: комментарий от a1batross

Огромное спасибо за совет. Обязательно попробую.

Sergius_San
() автор топика
Ответ на: комментарий от LamerOk

Всем огромно спасибо за помощь! Попробую все ваши советы и отпишусь о результате. Возможно кому-то будет полезно.

Sergius_San
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.