Как формат clang поддерживает списки инициализаторов параметров K & R? - PullRequest
0 голосов
/ 18 апреля 2019

У меня старый код на C, и я хотел бы переформатировать его в формате clang. Одна из возникающих проблем состоит в том, что многие старые функции написаны с использованием списков инициализаторов параметров K & R. И clang-format делает странное переформатирование в этих строках.

Пример:

int tz_start_new( nr, start, old )
char    *nr;
char    *start;
char    *old;
{
return 0;
}

форматируется в:

int tz_start_new( nr, start, old ) char *nr;
char    *start;
char    *old;
{
return 0;
}

Таким образом, первый параметр записывается непосредственно после объявления функции. Остальные говорят так, как были раньше.

Это формат файла, который я использую:

---
AlignAfterOpenBracket: DontAlign
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'true'
AllowShortBlocksOnASingleLine: 'false'
AllowShortCaseLabelsOnASingleLine: 'false'
AllowShortIfStatementsOnASingleLine: 'false'
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterDefinitionReturnType: None
BreakBeforeBraces: Custom
BraceWrapping:
  AfterClass: true
  AfterControlStatement: true
  AfterEnum: true
  AfterFunction: true
  AfterNamespace: true
  AfterStruct: true
  AfterUnion: true
  AfterExternBlock: true
  BeforeCatch: true
  BeforeElse: true
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakBeforeTernaryOperators: 'false'
IndentCaseLabels: 'true'
ColumnLimit: '80'
IndentWidth: '4'
Language: Cpp
PointerAlignment: Right
SortIncludes: 'false'
SpaceAfterCStyleCast: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeParens: Never
SpaceInEmptyParentheses: 'false'
SpacesInCStyleCastParentheses: 'false'
SpacesInParentheses: 'true'
SpacesInSquareBrackets: 'true'
TabWidth: '4'
UseTab: ForIndentation

...

Так как мне добиться, чтобы все параметры оставались под объявлением функции, как раньше?

...