2016-10-11 4 views
2

Я хочу, чтобы clang-format не изменял строки комментариев, которые я использую для разделения функций друг от друга. Я думаю, что commentPragmas подходит для этого, но я не могу найти информацию о формате регулярного выражения в стиле clang.ссылка на синтаксис регулярного выражения clang-format

Я попытался commentPragmas: '^/\*-.*' захватить мои строки разделителей, которые выглядят как этот

/*------------------------------------------------------------------*/

Но выше регулярное выражение не работает ... Где я могу посмотреть синтаксис регулярных выражений для лязгом-формате?

ответ

3

TL/DR: Вкус POSIX ERE


Насколько я могу судить, регулярное выражение аромата не документированы в ClangFormat docs, это довольно бесполезно.

Давайте углубимся в исходный код, чтобы узнать.

Существует класс под названием ContinuationIndenter, в котором есть поле CommentPragmasRegex, типа ... llvm::Regexright here. Ну, это тоже не очень полезно, но, возможно, это просто обертка ...

Выбрано llvm::Regexis a wrapper вокруг ... llvm_regex. Заголовок включает в себя this comment:

Этот файл реализует контрольный символ регулярного выражения POSIX. Поддерживаются как Basic, так и Расширенные регулярные выражения POSIX (ERE). ERE были расширены для поддержки обратных ссылок в матчах. Эта реализация также поддерживает соответствующие строки со встроенными символами NUL.

В header that defines llvm_regex мы также можем найти этот комментарий:

Этот код является производным от OpenBSD в LibC/регулярное выражение

+0

Спасибо. Однако, если я не пропускаю что-то, мое регулярное выражение совместимо с posix ere, не так ли? Потому что тогда мне нужно искать другую причину, почему это не работает. –

+0

Да, ваш шаблон выглядит нормально. Я не знаю ClangFormat, поэтому я не уверен, что могу помочь дальше, но если бы я должен был обвинить что-то, это было бы '^' - оно должно совпадать по каждой строке по умолчанию? –

+0

Я уже пробовал с и без, не имел никакого значения:/Но в любом случае спасибо, я буду продолжать экспериментировать. –