#
b9eae4c1 |
| 13-May-2013 |
Manuel Klimek <klimek@google.com> |
Implements UseTab for clang-format.
This is required for kernel linux kernel style formatting.
llvm-svn: 181693
|
#
cc3044cf |
| 13-May-2013 |
Daniel Jasper <djasper@google.com> |
Further improve optimization for nested calls.
Fake parentheses (i.e. emulated parentheses used to correctly handle binary expressions) used to prevent the optimization implemented in r180264.
llvm
Further improve optimization for nested calls.
Fake parentheses (i.e. emulated parentheses used to correctly handle binary expressions) used to prevent the optimization implemented in r180264.
llvm-svn: 181692
show more ...
|
#
13b97d8b |
| 13-May-2013 |
Manuel Klimek <klimek@google.com> |
Implements IndentWidth.
This is required for various styles that are for example based on 8-indent.
llvm-svn: 181690
|
#
66e4f83c |
| 10-May-2013 |
Daniel Jasper <djasper@google.com> |
When breaking at function calls, indent from function name.
Otherwise (when indenting from the wrapped -> or .), this looks like a confusing indent.
Before: aaaaaaa // .aaaaaaa( //
When breaking at function calls, indent from function name.
Otherwise (when indenting from the wrapped -> or .), this looks like a confusing indent.
Before: aaaaaaa // .aaaaaaa( // aaaaaaa); After: aaaaaaa // .aaaaaaa( // aaaaaaa);
llvm-svn: 181595
show more ...
|
#
1cb530f1 |
| 10-May-2013 |
Daniel Jasper <djasper@google.com> |
Always format entire macro definitions.
Thereby, the macro is consistently formatted (including the trailing escaped newlines) even if clang-format is invoked only on single lines of the macro.
llv
Always format entire macro definitions.
Thereby, the macro is consistently formatted (including the trailing escaped newlines) even if clang-format is invoked only on single lines of the macro.
llvm-svn: 181590
show more ...
|
#
49149677 |
| 10-May-2013 |
Alexander Kornienko <alexfh@google.com> |
Config file support for clang-format, part 2.
Summary: Adds actual config file reading to the clang-format utility. Configuration file name is .clang-format. It is looked up for each input file in i
Config file support for clang-format, part 2.
Summary: Adds actual config file reading to the clang-format utility. Configuration file name is .clang-format. It is looked up for each input file in its parent directories starting from immediate one. First found .clang-format file is used. When using standard input, .clang-format is searched starting from the current directory. Added -dump-config option to easily create configuration files.
Reviewers: djasper, klimek
Reviewed By: klimek
CC: cfe-commits, jordan_rose, kimgr
Differential Revision: http://llvm-reviews.chandlerc.com/D758
llvm-svn: 181589
show more ...
|
#
d69fc77b |
| 08-May-2013 |
Daniel Jasper <djasper@google.com> |
Improve line breaking in binary expressions.
If the LHS of a binary expression is broken, clang-format should also break after the operator as otherwise: - The RHS can be easy to miss - It can look
Improve line breaking in binary expressions.
If the LHS of a binary expression is broken, clang-format should also break after the operator as otherwise: - The RHS can be easy to miss - It can look as if clang-format doesn't understand operator precedence
Before: bool aaaaaaaaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa != bbbbbbbbbbbbbbbbbb && ccccccccc == ddddddddddd; After: bool aaaaaaaaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa != bbbbbbbbbbbbbbbbbb && ccccccccc == ddddddddddd;
As an additional note, clang-format would also be ok with the following formatting, it just has a higher penalty (IMO correctly so). bool aaaaaaaaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa != bbbbbbbbbbbbbbbbbb && ccccccccc == ddddddddddd;
llvm-svn: 181430
show more ...
|
#
0f0234e1 |
| 08-May-2013 |
Daniel Jasper <djasper@google.com> |
Change indentation of multi-line nested name specifiers.
Before: aaaaaaaa:: aaaaaaaa:: aaaaaaaa(); After: aaaaaaaa:: aaaaaaaa:: aaaaaaaa();
The reason for the change is that: a)
Change indentation of multi-line nested name specifiers.
Before: aaaaaaaa:: aaaaaaaa:: aaaaaaaa(); After: aaaaaaaa:: aaaaaaaa:: aaaaaaaa();
The reason for the change is that: a) we are not sure which is better b) it is a really rare edge case c) it simplifies the code d) it currently causes problems with memoization
llvm-svn: 181421
show more ...
|
Revision tags: llvmorg-3.3.0-rc1 |
|
#
d6538338 |
| 07-May-2013 |
Alexander Kornienko <alexfh@google.com> |
Config file support for clang-format, part 1.
Summary: Added parseConfiguration method, which reads FormatStyle from YAML string. This supports all FormatStyle fields and an additional BasedOnStyle
Config file support for clang-format, part 1.
Summary: Added parseConfiguration method, which reads FormatStyle from YAML string. This supports all FormatStyle fields and an additional BasedOnStyle field, which can be used to specify base style.
Reviewers: djasper, klimek
Reviewed By: djasper
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D754
llvm-svn: 181326
show more ...
|
#
c860266e |
| 06-May-2013 |
Alexander Kornienko <alexfh@google.com> |
Added Mozilla style, cleaned get*Style methods.
Summary: Patch based on a patch by Ehsan Akhgari.
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: http://ll
Added Mozilla style, cleaned get*Style methods.
Summary: Patch based on a patch by Ehsan Akhgari.
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D750
llvm-svn: 181196
show more ...
|
#
4a4be018 |
| 06-May-2013 |
Daniel Jasper <djasper@google.com> |
Don't break comments after includes.
LLVM/Clang basically don't use such comments and for Google-style, include-lines are explicitly exempt from the column limit. Also, for most cases, where the col
Don't break comments after includes.
LLVM/Clang basically don't use such comments and for Google-style, include-lines are explicitly exempt from the column limit. Also, for most cases, where the column limit is violated, the "better" solution would be to move the comment to before the include, which clang-format cannot do (yet).
llvm-svn: 181191
show more ...
|
#
8e35769b |
| 06-May-2013 |
Daniel Jasper <djasper@google.com> |
Change indentation when breaking after a type.
clang-format did not indent any declarations/definitions when breaking after the type. With this change, it indents for all declarations but does not i
Change indentation when breaking after a type.
clang-format did not indent any declarations/definitions when breaking after the type. With this change, it indents for all declarations but does not indent for function definitions, i.e.:
Before: const SomeLongTypeName& some_long_variable_name; typedef SomeLongTypeName SomeLongTypeAlias; const SomeLongReturnType* SomeLongFunctionName(); const SomeLongReturnType* SomeLongFunctionName() { ... }
After: const SomeLongTypeName& some_long_variable_name; typedef SomeLongTypeName SomeLongTypeAlias; const SomeLongReturnType* SomeLongFunctionName(); const SomeLongReturnType* SomeLongFunctionName() { ... }
While it might seem inconsistent to indent function declarations, but not definitions, there are two reasons for that: - Function declarations are very similar to declarations of function type variables, so there is another side to consistency to consider. - There can be many function declarations on subsequent lines and not indenting can make them harder to identify. Function definitions are already separated by their body and not indenting makes the function name slighly easier to find.
llvm-svn: 181187
show more ...
|
#
e3c0e014 |
| 25-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Improve clang-format's memoization behavior.
Deeply nested expressions basically break clang-format's memoization. This patch slightly improves the situations and makes expressions like
aaaaa(aaa
Improve clang-format's memoization behavior.
Deeply nested expressions basically break clang-format's memoization. This patch slightly improves the situations and makes expressions like
aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa( aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa( aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa( aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa( aaaaa(aaaaa())))))))))))))))))))))))))))))))))))))));
work.
llvm-svn: 180264
show more ...
|
#
6fe2f009 |
| 25-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Add option to align escaped newlines left.
This enables formattings like:
#define A \ int aaaa; \ int b; \ int ccc; \ int dddddddddd;
Enabling this for Google/Chromium styl
Add option to align escaped newlines left.
This enables formattings like:
#define A \ int aaaa; \ int b; \ int ccc; \ int dddddddddd;
Enabling this for Google/Chromium styles only as I don't know whether it is desired for Clang/LLVM.
llvm-svn: 180253
show more ...
|
#
085a2eda |
| 24-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Flip flag to merge short if-statements into one line for Google style.
This now allows clang-format to do: if (a) return;
llvm-svn: 180187
|
#
770eb7c5 |
| 24-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix comment alignment behavior.
In the following snippet, clang-format incorrectly aligned the trailing comment, when only the last line was formatted:
int aaaaaa; // comment int b; int c; //
Fix comment alignment behavior.
In the following snippet, clang-format incorrectly aligned the trailing comment, when only the last line was formatted:
int aaaaaa; // comment int b; int c; // Formatting only this line moved this comment.
llvm-svn: 180173
show more ...
|
#
cc960fa6 |
| 22-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix bin-packing behavior of constructor initialziers.
In Google style, constructor initializers need to be all on one line or one initializer per line if that does not fit. Without this patch, this
Fix bin-packing behavior of constructor initialziers.
In Google style, constructor initializers need to be all on one line or one initializer per line if that does not fit. Without this patch, this non-bin-packing-behavior incorrectly extends to the parameters of the initializers.
Before: Constructor() : aaaaa(aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaa) {}
After: Constructor() : aaaaa(aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaa) {}
llvm-svn: 180001
show more ...
|
#
9e90b62e |
| 17-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Unified token breaking logic: support for line comments.
Summary: Added BreakableLineComment, moved common code from BreakableBlockComment to newly added BreakableComment. As a side-effect of the re
Unified token breaking logic: support for line comments.
Summary: Added BreakableLineComment, moved common code from BreakableBlockComment to newly added BreakableComment. As a side-effect of the rewrite, found another problem with escaped newlines and had to change code which removes trailing whitespace from line comments not to break after this patch.
Reviewers: klimek, djasper
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D682
llvm-svn: 179693
show more ...
|
#
1b8e76f1 |
| 15-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Break after multiline parameters.
We do this in general, but missed a few cases.
Before: void aaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaa
Break after multiline parameters.
We do this in general, but missed a few cases.
Before: void aaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, bbbb bbbb);
After: void aaaaaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, bbbb bbbb);
llvm-svn: 179570
show more ...
|
#
c3c8affc |
| 15-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Fix unused variable warning with assertions disabled.
llvm-svn: 179531
|
#
cb45bc18 |
| 15-Apr-2013 |
Alexander Kornienko <alexfh@google.com> |
Unified token breaking logic for strings and block comments.
Summary: Both strings and block comments are broken into lines in breakProtrudingToken. Logic specific for strings or block comments is a
Unified token breaking logic for strings and block comments.
Summary: Both strings and block comments are broken into lines in breakProtrudingToken. Logic specific for strings or block comments is abstracted in implementations of the BreakToken interface. Among other goodness, this change fixes placement of backslashes after a block comment inside a preprocessor directive (see removed FIXMEs in unit tests).
The code is far from being polished, and some parts of it will be changed for line comments support.
Reviewers: klimek
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D665
llvm-svn: 179526
show more ...
|
#
1a18c404 |
| 12-Apr-2013 |
Manuel Klimek <klimek@google.com> |
Revamps structural error detection / handling.
Previously we'd only detect structural errors on the very first level. This leads to incorrectly balanced braces not being discovered, and thus incorre
Revamps structural error detection / handling.
Previously we'd only detect structural errors on the very first level. This leads to incorrectly balanced braces not being discovered, and thus incorrect indentation.
This change fixes the problem by: - changing the parser to use an error state that can be detected anywhere inside the productions, for example if we get an eof on SOME_MACRO({ some block <eof> - previously we'd never break lines when we discovered a structural error; now we break even in the case of a structural error if there are two unwrapped lines within the same line; thus, void f() { while (true) { g(); y(); } } will still be re-formatted, even if there's missing braces somewhere in the file - still exclude macro definitions from generating structural error; macro definitions are inbalanced snippets
llvm-svn: 179379
show more ...
|
#
6728fc11 |
| 11-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Change clang-format's affinity for breaking after return types.
Function declarations are now broken with the following preferences: 1) break amongst arguments. 2) break after return type. 3) break
Change clang-format's affinity for breaking after return types.
Function declarations are now broken with the following preferences: 1) break amongst arguments. 2) break after return type. 3) break after (. 4) break before after nested name specifiers.
Options #2 or #3 are preferred over #1 only if a substantial number of lines can be saved by that.
llvm-svn: 179287
show more ...
|
#
c04baae3 |
| 10-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix labels with trailing comments and cleanup.
Before: class A { public : // test };
After: class A { public: // test };
Also remove duplicate methods calculating properties of AnnotatedTokens and
Fix labels with trailing comments and cleanup.
Before: class A { public : // test };
After: class A { public: // test };
Also remove duplicate methods calculating properties of AnnotatedTokens and make them members of AnnotatedTokens so that they are in a common place.
llvm-svn: 179167
show more ...
|
#
b67cc423 |
| 09-Apr-2013 |
Daniel Jasper <djasper@google.com> |
Fix comments before labels.
Before: switch (...) { // a // b // c case first: break; }
After: switch (...) { // a // b // c case first: break; }
llvm-svn: 179107
|