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

Например, в библиотеке MySQL ++ есть макросы, которые можно использовать для определения простых структур на основе определения таблицы sql, например:

sql_create_6(stock, 1, 6,
    mysqlpp::sql_char, item,
    mysqlpp::sql_bigint, num,
    mysqlpp::sql_double, weight,
    mysqlpp::sql_decimal, price,
    mysqlpp::sql_date, sdate,
    mysqlpp::Null<mysqlpp::sql_mediumtext>, description)

Проблема в том, что clang-format переформатирует это так, чтобы его было гораздо труднее читать (каждый параметр в новой строке). Большинство средств форматирования кода могут распознавать специальные комментарии по отключению / включению форматирования, но я не нашел ничего подобного в руководстве по формату clang.


person Alex    schedule 26.07.2014    source источник


Ответы (2)


В более новой версии вы можете окружить часть кода:

// clang-format off
...
// clang-format on
person djasper    schedule 03.09.2014
comment
Я вижу это в документации уже в версии 3.6. , но сначала у меня не сработало, хотя я использую 3.8. Я не реплицировал пробелы идентично - убедитесь, что у вас есть пробелы! - person sage; 30.03.2017
comment
Теперь мне просто жаль, что я не знал способ отключить его для всей кодовой базы вниз в файле формата .clang, потому что люди, использующие VS 2017+, слепо поражают мою кодовую базу, потому что у них она включена в пользовательском интерфейсе, а затем отправляют PR с большим количеством шум. ???? Проблема в том, что каталоги более высокого уровня из других проектов могут включать файл в формате .clang над нашим кодом, включенным в качестве подмодуля. [обновление] А, нашел: DisableFormat: true - person Dwayne Robinson; 02.07.2020

Попробуйте добавить маркер комментария // после каждой строки, это может сработать. У меня была такая же проблема в Eclipse, и я научился этому трюку.

sql_create_6(stock, 1, 6, //
    mysqlpp::sql_char, item, //
    mysqlpp::sql_bigint, num, //
    mysqlpp::sql_double, weight, //
    mysqlpp::sql_decimal, price, //
    mysqlpp::sql_date, sdate, //
    mysqlpp::Null<mysqlpp::sql_mediumtext>, description)
person vsoftco    schedule 26.07.2014
comment
Это не сработало. Но // clang-format on/off сделал. Я редактирую в Eclipse и запускаю через командную строку инструмент clang-format. - person eigenfield; 21.01.2020