Могу ли я использовать другой .clang_format для некоторых файлов в одном проекте?

хочу представить лязг-форматировщик для нашей компании, но есть некоторые ограничения, такие как:

Некоторые файлы в нашей компании лучше читать с tab-width = 2, а другие лучше читать с tab-width = 4.

Это означает, что некоторые файлы (из-за характера их содержимого) должны иметь другой файл конфигурации в формате .clang. Итак, предполагая, что мы в конечном итоге с 2 или 3 конфигурациями, подходящими для каждого контента,
есть ли способ, которым я могу заставить немного файлы, которые будут отформатированы определенным .clang_format ?

например,

  • Можно ли это сделать, поместив разные .clang_format в каждую папку?

или же

  • введя строки YAML в качестве комментариев в начале каждого файла (например, doxygen)?

мы используем C, C ++, Visual Studio и VIM

3

Решение

Вы можете поместить разные файлы в формате .clang (_clang-format) в каждый каталог. clang-format начнет искать его в каталоге файла, а затем будет искать по всем его родителям, пока не найдет его (при условии, что вы устанавливаете -style = file).

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

1

Другие решения

Вы имеете ограниченный контроль над тем, .clang_format файл используется, так как средство форматирования начнет поиск файла в каталоге исходных файлов, а затем последовательно выполнит поиск в родительских каталогах. Однако организация структуры каталогов таким образом, чтобы это работало, может быть довольно неудобной.

Однако вы можете переопределить определенные параметры стиля при каждом вызове. От документы в формате clang:

использование -style="{key: value, ...}" установить конкретные параметры, например:
-style="{BasedOnStyle: llvm, IndentWidth: 8}"

К сожалению Плагин Visual Studio в настоящее время не позволяет изменять параметры, переданные clang-format на основе файлов, поэтому последний подход не будет работать здесь.

Насколько мне известно, нет поддержки комментарии ‘modeline’ это позволило бы установить параметры стиля из исходного файла, хотя я бы хотел, чтобы это было добавлено в будущих версиях.

3