Как получить выровненные в регистр операторы в строчке, используя clang-формат

Я бы хотел, чтобы clang-format форматировался как:

switch (x)
{
case long_name: return 1;
case sn:        return 2;
}

Опция AllowShortCaseLabelsOnASingleLine переводит их в одну строку,
но я не нашел способа выровнять утверждения aligned.

Ответ 1

На данный момент невозможно выполнить то, что вы просите, используя ClangFormat.

Официальное объяснение, почему это так:

Каждый дополнительный вариант стиля увеличивает стоимость проекта в формате clang. Некоторые из этих затрат влияют на саму разработку clang-формата, так как мы необходимо убедиться, что любая заданная комбинация опций работает и Новые функции никоим образом не нарушают ни одну из существующих опций. Там это также затраты для конечных пользователей, так как варианты становятся менее доступными и люди должны думать и принимать решения о вариантах, которые они не действительно волнует.

Цель проекта clang-format заключается в поддержке ограниченный набор стилей действительно хорошо, в отличие от поддержки каждого единый стиль, используемый кодовой базой где-то в дикой природе. [...]

Единственный способ сделать что-то подобное - это

  1. Предложите вариант стиля разработчикам;
  2. Подождите, пока не будет добавлена нужная опция стиля;
  3. Используйте альтернативу ClangFormat, которая способна выровнять операторы.

Источники:

  1. https://clang.llvm.org/docs/ClangFormatStyleOptions.html#configurable-format-style-options
  2. https://clang.llvm.org/docs/ClangFormatStyleOptions.html#adding-additional-style-options