Проблема формата Clang с параметрами объявления многострочной функции
Clang Format последовательно делает это:
bool importSomethingIn( const boost::property_tree::ptree& inBoostTree,
int inSomeIndex,
std::shared_ptr<Something>
inSomething,
int x,
int y );
когда я хочу сделать это:
bool importSomethingIn( const boost::property_tree::ptree& inBoostTree,
int inSomeIndex,
std::shared_ptr<Something> inSomething,
int x,
int y );
обратите внимание, что он добавляет новую строку и отступ перед символом inSomething
. Кажется, что всегда есть шаблонные типы, которые вызывают это поведение.
как я могу остановить его от этого?
вот мой нынешний .clang-формат:
BasedOnStyle: LLVM
Language: Cpp
AccessModifierOffset: -4
AlignEscapedNewlinesLeft: false
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: true
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackParameters: false
BreakBeforeBinaryOperators: false
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 120
CommentPragmas: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DerivePointerBinding: false
ExperimentalAutoDetectBinPacking: false
IndentCaseLabels: true
IndentFunctionDeclarationAfterType: true
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2
NamespaceIndentation: All
ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
PointerBindsToType: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: true
Standard: Cpp11
TabWidth: 8
UseTab: Never
Edit: я использую плагин clang format Xcode, который я получил здесь on GitHub июль 2016 (сначала установлен Alcatraz, затем плагин формата clang с Aclatraz). Я не совсем уверен, где двоичный файл формата clang, поэтому не видел номер версии для того, который пришел с плагином.
однако, основываясь на приведенных ниже предложениях, я установил clang-формат с помощью Homebrew, который дал мне версию 3.9.0. Затем я установил плагин Xcode В "использовать системный clang-формат", и я получил желаемый результат, поэтому я думаю, что это была ошибка.
2 ответов
ваш случай кажется мне прекрасным на ubuntu 16.04 с clang-format 3.8
-
установить clang-format-3.8
sudo apt-get install clang-format-3.8
-
на
~/.vimrc
map <F3> :pyf /usr/share/vim/addons/syntax/clang-format-3.8.py<cr> imap <F3> <C-o>:pyf /usr/share/vim/addons/syntax/clang-format-3.8.py<cr>
-
используйте @OP .лязг-формат и исходный код
mkdir ~/test vim ~/test/.clang-format vim ~/test/test.cpp
-
тестовый формат.cpp в vim (используя F3), то результат:
bool importSomethingIn( const boost::property_tree::ptree& inBoostTree, int inSomeIndex, std::shared_ptr<Something> inSomething, int x, int y );
Я думаю, что это вызвано ColumnLimit
. Я думаю, это жук...У меня была эта проблема, и я решил ее, изменив эту переменную. Попробуйте установить:
ColumnLimit: 0
причина
длина bool importSomethingIn( const boost::property_tree::ptree& inBoostTree, int inSomeIndex, std::shared_ptr<Something>" has 117+-3 chars in dependence of computing invisible chars.
составляет 117+-3 в зависимости от вычислительной невидимых символов. ColumnLimit: 120
был установлен, и это одна из возможных причин, я думаю, он был сокращен.