Closed r2p2 closed 3 years ago
I have the following example code file named source.cc.
source.cc.
#include "source.h" #include "other_files.h" #include "another_file.h" #include <libb.h> #include <liba.h> void fun() {}
If I open it in neovim and call :Format, then the result looks like this: (note that "source.h" not not at the top anymore)
#include "another_file.h" #include "other_files.h" #include "source.h" #include <liba.h> #include <libb.h> void fun() {}
But if I run clang-format source.cc in the terminal, I get this, result, which is what I would expect:
clang-format source.cc
#include "source.h" #include "another_file.h" #include "other_files.h" #include <liba.h> #include <libb.h> void fun() {}
The .clang-format file looks like this:
.clang-format
--- Language: Cpp # BasedOnStyle: WebKit AccessModifierOffset: -4 AlignAfterOpenBracket: AlwaysBreak AlignConsecutiveAssignments: true AlignConsecutiveDeclarations: true AlignEscapedNewlines: Left AlignOperands: true AlignTrailingComments: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: false AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: false BinPackArguments: false BinPackParameters: false BraceWrapping: AfterClass: true AfterControlStatement: false AfterEnum: true AfterFunction: true AfterNamespace: true AfterObjCDeclaration: false AfterStruct: true AfterUnion: true AfterExternBlock: true BeforeCatch: false BeforeElse: false IndentBraces: false SplitEmptyFunction: false SplitEmptyRecord: false SplitEmptyNamespace: false BreakBeforeBinaryOperators: None BreakBeforeBraces: Custom BreakBeforeInheritanceComma: true BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: true BreakConstructorInitializers: BeforeComma BreakAfterJavaFieldAnnotations: false BreakStringLiterals: true ColumnLimit: 80 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: false DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: false FixNamespaceComments: true ForEachMacros: - foreach - Q_FOREACH - BOOST_FOREACH IncludeBlocks: Regroup IncludeCategories: - Regex: '^"(llvm|llvm-c|clang|clang-c)/' Priority: 2 - Regex: '^(<|"(gtest|gmock|isl|json)/)' Priority: 3 - Regex: '.*' Priority: 1 IncludeIsMainRegex: '(Test)?$' IndentCaseLabels: false IndentPPDirectives: AfterHash IndentWidth: 4 IndentWrappedFunctionNames: true JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: false MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 NamespaceIndentation: None ObjCBlockIndentWidth: 4 ObjCSpaceAfterProperty: true ObjCSpaceBeforeProtocolList: true PenaltyBreakAssignment: 2 PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Left ReflowComments: true SortIncludes: true SortUsingDeclarations: true SpaceAfterCStyleCast: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInContainerLiterals: true SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 TabWidth: 4 UseTab: ForContinuationAndIndentation ...
The lua setup looks like this:
local formatter = require('formatter') formatter.setup({ logging = true, filetype = { cpp = { function() return { exe = "clang-format", args = {}, stdin = true, cwd = vim.fn.expand("%:p:h") } end } } })
I've compared the clang-format calls with strace and it looked the same to me in the sense that the .clang-format file is found. Is it possible that :Formatitself removes some empty lines before it passes the buffer contents to clang-format?
strace
:Format
Wrong project, sorry. I should not write issues in the middle of the night.
I have the following example code file named
source.cc.
If I open it in neovim and call :Format, then the result looks like this: (note that "source.h" not not at the top anymore)
But if I run
clang-format source.cc
in the terminal, I get this, result, which is what I would expect:The
.clang-format
file looks like this:The lua setup looks like this:
I've compared the clang-format calls with
strace
and it looked the same to me in the sense that the.clang-format
file is found. Is it possible that:Format
itself removes some empty lines before it passes the buffer contents to clang-format?