diff options
author | Daniel Jasper <djasper@google.com> | 2015-05-08 13:51:14 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2015-05-08 13:51:14 +0000 |
commit | e4c16c7ce354e260775f8dbf62f1aa58e49916ab (patch) | |
tree | 814fc1d91d24de69c002e96a33982337ebbd5e83 /clang/lib/Format/FormatToken.cpp | |
parent | 284e7b3d6c5a285fc826aa4c51b5ae0f03282c5c (diff) | |
download | llvm-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.cpp | 7 |
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); |