Как я могу применить только одно действие в стиле clang?
Я хочу использовать clang-format для выравнивания моих комментариев, но ничего больше.
Опция для этого: AlignTrailingComments (bool)
.
Но когда я запускаю следующее:
clang-format-3.6 -i -style='{AlignTrailingComments: true}' <file>
Он выполняет всевозможные другие параметры форматирования, которые, как я полагаю, имеют значение по умолчанию, когда они не указаны.
Как я могу выполнить только одно правило форматирования clang на базе кода?
Наличие всех этих параметров по умолчанию затрудняет просмотр полного эффекта, который имеет один параметр форматирования для кода. Мне нужно разобрать все эти другие изменения и решить, был ли это вариант, который я указал, который на самом деле это сделал.
Я заметил, что существует опция DisableFormat, но независимо от того, как я ее использую, она вообще не останавливает любое форматирование.
clang-format-3.6 -i -style='{AlignTrailingComments: true, DisableFormat: true}'
clang-format-3.6 -i -style='{DisableFormat: true, AlignTrailingComments: true}'
Оба из-за того, что clang-format не делает никакого кода нигде.
Ответы
Ответ 1
Я думаю, что формат clang просто не был предназначен для этого. Правила - это не то, что он применяет постепенно, программа вместо этого строится вокруг, анализирует всю вашу программу и забывает (большую часть) старые пробелы и генерирует новые пробелы на основе выбранных правил.
Здесь вы можете увидеть обзор архитектуры: http://www.llvm.org/devmtg/2013-04/jasper-slides.pdf
Сначала он запускает clang lexer и parser, затем он делит группы токенов на "развернутые строки", которые являются "токенами, которые мы хотели бы объединить на одной строке, если не было предела столбца". Затем layouter определяет форматирование каждой развернутой линии на основе различных ограничений и оптимизации для различных штрафов.
Итак, я не думаю, что "одно действие в стиле clang-format" на самом деле вещь, дизайн выглядит довольно монолитно для меня.