Как сделать, чтобы мои операторы кода отображались в одной строке в формате clang?

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

Я пытаюсь, чтобы мой код выглядел так (в одну строку) -

std::cout << "Congratulations, you sorted the list.\n" << "You needed " << score << " reversals." << std::endl;
std::vector<uint32_t> returnVector(uint32_t *LongNameForParameter1, double *LongNameForParameter2, const float &LongNameForParameter3,const std::map<std::string, int32_t> &LongNameForParameter4)

Однако, используя этот .clang-формат, это выглядит так

std::cout << "Congratulations, you sorted the list.\n"
              << "You needed " << score << " reversals." << std::endl;
std::vector<uint32_t> returnVector(uint32_t *LongNameForParameter1, double *LongNameForParameter2, const float &LongNameForParameter3,
                                           const std::map<std::string, int32_t> &LongNameForParameter4)

Мой формат .clang

BasedOnStyle: LLVM
AccessModifierOffset: '-2'
AlignConsecutiveMacros: 'true'
AlignConsecutiveAssignments: 'true'
AlignTrailingComments: 'true'
AllowShortCaseLabelsOnASingleLine: 'false'
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: 'false'
BreakBeforeBraces: Stroustrup
ColumnLimit: '150'
CompactNamespaces: 'false'
IncludeBlocks: Regroup
IndentCaseLabels: 'true'
IndentPPDirectives: None
IndentWidth: '4'
Language: Cpp
NamespaceIndentation: All
ReflowComments: 'true'
SortIncludes: 'true'
SortUsingDeclarations: 'true'
SpaceAfterCStyleCast: 'true'
SpaceAfterLogicalNot: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeCpp11BracedList: 'true'
SpaceBeforeCtorInitializerColon: 'true'
SpaceBeforeInheritanceColon: 'true'
SpaceBeforeParens: Never
SpaceBeforeRangeBasedForLoopColon: 'false'
SpaceInEmptyParentheses: 'true'
SpacesInAngles: 'false'
SpacesInParentheses: 'false'
SpacesInSquareBrackets: 'false'
Standard: Auto
TabWidth: '4'

person InFerNus    schedule 22.07.2020    source источник
comment
а зачем тебе это? Длинные строки крайне нечитаемы и, самое главное, они делают весь файл крайне нечитаемым.   -  person bolov    schedule 22.07.2020
comment
Не уверен в конкретном способе сделать это, кроме подавления clang-format для этих строк, то есть // clang-format off и // clang-format on.   -  person aep    schedule 22.07.2020
comment
@bolov Это было немного странно, но все было бы в порядке, однако мой vscode показывает красную полосу из-за неправильной идентификации во вторых строках. См. это изображение imgur.com/a/uJ3ZNk1   -  person InFerNus    schedule 22.07.2020
comment
проблема в vscode, поэтому исправьте vscode, а не наоборот. Это ненормальное поведение со стороны vscode. Это либо настройка, либо расширение.   -  person bolov    schedule 22.07.2020
comment
Хорошо, тогда я посмотрю на расширения. Спасибо @bolov   -  person InFerNus    schedule 22.07.2020


Ответы (1)


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

В этом случае ColumnLimit нужно изменить. В зависимости от вашего экрана, вы можете захотеть иметь здесь другое значение. Число — это количество символов, которое можно поместить в одну строку (если табуляция заменена пробелами). Если вы превысите это число, оно всегда будет разделяться.

Лучшее, что вы можете сделать, это визуализировать это количество символов, набрав # 150 раз. Это может помочь вам решить, является ли номер достаточно хорошим или нуждается в изменении. Имейте в виду, что это ограничение распространяется на весь ваш код.

Как уже упоминалось в комментариях, вы можете добавить // clang-format off для отключения изменений и // clang-format on для повторного включения форматирования. Однако в данном случае это неподходящее место.

person JVApen    schedule 22.07.2020
comment
Спасибо. Я отключил радугу отступов, из-за которой она выглядела странно, и изменил ограничение столбца (ограничение столбца не могло решить проблему) в любом случае, это был псевдокод. Я сомневаюсь, что буду часто использовать такие длинные линии, так как я только начинаю. Кстати @JVApen я получил ответ, я должен заблокировать вопрос или что-то здесь? Я тоже новичок в stackoverflow???? - person InFerNus; 22.07.2020
comment
Зависит от того, если ваш ответ был в комментариях, не стесняйтесь поместить его в ответ с дополнительной информацией и отметить его как ответ (см. значок V). Если это один из существующих ответов, просто отметьте его как ответ. Если ответы были полезны, вы можете проголосовать за них (если у вас есть разрешение), не отмечая их как ответ. - person JVApen; 22.07.2020