[PATCH] D40068: Implement more accurate penalty & trade-offs while breaking protruding tokens.
Francois Ferrand via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 21 07:27:26 PST 2017
Typz added a comment.
Generally, this indeed improves the situation (though I cannot say much about the code itself, it is still too subtle for my shallow knowledge of clang-format).
But it seems to give some strange looking result with long comments: it seems like the decision is made at each line (e.g. is it better to wrap this line or overflow a bit), so we can get a comment where each line overflows by a few characters, even if the total is worse... For exemple, say we have a 100 lines of comment, with 9 characters overflow on each line, and an excess character penalty of 30 : with this patch nothing will be re-wrapped (9*30 = 270 is less the the 300 penalty for wrapping); but the total penatly would be 900....
(btw, it seems this got merged, but the ticket does not reflect it)
================
Comment at: lib/Format/BreakableToken.cpp:293
Split ReflowSplit =
- FullWidth <= ColumnLimit
- ? Split(TrimmedText.size(), Text.size() - TrimmedText.size())
- : getCommentSplit(Text, ReflowStartColumn, ColumnLimit,
- Style.TabWidth, Encoding);
-
+// FullWidth <= ColumnLimit
+ //?
----------------
commented-out code to be removed?
================
Comment at: lib/Format/BreakableToken.cpp:300
+
+ return ReflowSplit;
// We need to be extra careful here, because while it's OK to keep a long line
----------------
unconditional return --> remove the end of the function
================
Comment at: lib/Format/BreakableToken.cpp:572
+ return Split(0, 0);
+ /*
StringRef TrimmedContent = Content[LineIndex].ltrim(Blanks);
----------------
remove commented-out code
================
Comment at: lib/Format/BreakableToken.cpp:603
+ // FIXME: pull together with getLineLegnthAfterSplit (same as for
+ // BreakableLineCommentSeciotn.
+ unsigned ContentStartColumn = 0;
----------------
BreakableLineCommentSection
https://reviews.llvm.org/D40068
More information about the cfe-commits
mailing list