[PATCH] Refactor the formatter of clang-format.

Daniel Jasper djasper at google.com
Fri May 8 05:24:09 PDT 2015


================
Comment at: lib/Format/UnwrappedLineFormatter.cpp:448
@@ +447,3 @@
+/// \brief Formatter that puts all tokens into a single line without breaks.
+class FitInOneLineFormatter : public LineFormatter {
+public:
----------------
I think this is a NoLineBreakFormatter. The fact that it is used if something fits into a line is not really a description of its function.

================
Comment at: lib/Format/UnwrappedLineFormatter.h:42-45
@@ -32,11 +41,6 @@
 public:
-  UnwrappedLineFormatter(ContinuationIndenter *Indenter,
-                         WhitespaceManager *Whitespaces,
-                         const FormatStyle &Style,
-                         const AdditionalKeywords &Keywords,
-                         bool *IncompleteFormat)
-      : Indenter(Indenter), Whitespaces(Whitespaces), Style(Style),
-        Keywords(Keywords), IncompleteFormat(IncompleteFormat) {}
-
-  unsigned format(const SmallVectorImpl<AnnotatedLine *> &Lines, bool DryRun,
-                  int AdditionalIndent = 0, bool FixBadIndentation = false);
+  UnwrappedLineFormatter(const SmallVectorImpl<AnnotatedLine *> &Lines,
+                         FormattingContext Context, bool DryRun = false,
+                         int AdditionalIndent = 0,
+                         bool FixBadIndentation = false)
+      : Lines(Lines), Context(Context), AdditionalIndent(AdditionalIndent),
----------------
I am not sure what the long term solution for UnwrappedLineFormatter/BlockFormatter is. I think we will probably want to try to separate the individual concepts into different classes (indent level tracking, deciding which line to format and how, deciding which formatter to use).

Until we have that, I'd like it to remain a container for the formatting configuration and pass it to the different LineFormatters (so that LineFormatter::formatChildren() can just call format).

http://reviews.llvm.org/D9597

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the cfe-commits mailing list