aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Format/FormatToken.cpp
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2015-05-08 13:51:14 +0000
committerDaniel Jasper <djasper@google.com>2015-05-08 13:51:14 +0000
commite4c16c7ce354e260775f8dbf62f1aa58e49916ab (patch)
tree814fc1d91d24de69c002e96a33982337ebbd5e83 /clang/lib/Format/FormatToken.cpp
parent284e7b3d6c5a285fc826aa4c51b5ae0f03282c5c (diff)
downloadllvm-e4c16c7ce354e260775f8dbf62f1aa58e49916ab.zip
llvm-e4c16c7ce354e260775f8dbf62f1aa58e49916ab.tar.gz
llvm-e4c16c7ce354e260775f8dbf62f1aa58e49916ab.tar.bz2
clang-format: Several improvements around formatting braced lists.
In particular: * If the difference between the longest and shortest element, we copped out of column format completely. Now, we instead allow to arrange these in a single column, essentially enforcing a one-per-line format. * Allow column layout even if there are braced lists. Especially, if there are many short lists, this can be beneficial. The bad case, where there is a long nested init list is usually caught as we now limit the length difference of the longest and shortest element. llvm-svn: 236851
Diffstat (limited to 'clang/lib/Format/FormatToken.cpp')
-rw-r--r--clang/lib/Format/FormatToken.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Format/FormatToken.cpp b/clang/lib/Format/FormatToken.cpp
index 0addbfe..cc1ef55 100644
--- a/clang/lib/Format/FormatToken.cpp
+++ b/clang/lib/Format/FormatToken.cpp
@@ -199,13 +199,14 @@ void CommaSeparatedList::precomputeFormattingInfos(const FormatToken *Token) {
// create a column layout. If it has a nested list, column layout ensures one
// list element per line. If the difference between the shortest and longest
// element is too large, column layout would create too much whitespace.
- if (HasNestedBracedList || Commas.size() < 5 || Token->NestingLevel != 0 ||
- MaxItemLength - MinItemLength > 10)
+ if (Commas.size() < 5 || Token->NestingLevel != 0)
return;
// We can never place more than ColumnLimit / 3 items in a row (because of the
// spaces and the comma).
- for (unsigned Columns = 1; Columns <= Style.ColumnLimit / 3; ++Columns) {
+ unsigned MaxColumns =
+ MaxItemLength - MinItemLength > 10 ? 1 : Style.ColumnLimit / 3;
+ for (unsigned Columns = 1; Columns <= MaxColumns; ++Columns) {
ColumnFormat Format;
Format.Columns = Columns;
Format.ColumnSizes.resize(Columns);