diff options
author | Manuel Klimek <klimek@google.com> | 2013-01-09 15:25:02 +0000 |
---|---|---|
committer | Manuel Klimek <klimek@google.com> | 2013-01-09 15:25:02 +0000 |
commit | 526ed11ad9743c773df76bd1649d33fb92c2b8cb (patch) | |
tree | a2043c193caafb553102c6c1f413db8cdc404a87 /lib/Format/UnwrappedLineParser.h | |
parent | 35eb8c3e12cac22f91d1cd4c74ae092ebc94fc40 (diff) |
Enables layouting unwrapped lines around preprocessor directives.
Previously, we'd always start at indent level 0 after a preprocessor
directive, now we layout the following snippet (column limit 69) as
follows:
functionCallTo(someOtherFunction(
withSomeParameters, whichInSequence,
areLongerThanALine(andAnotherCall,
B
withMoreParamters,
whichStronglyInfluenceTheLayout),
andMoreParameters),
trailing);
Note that the different jumping indent is a different issue that will be
addressed separately.
This is the first step towards handling #ifdef->#else->#endif chains
correctly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171974 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/UnwrappedLineParser.h')
-rw-r--r-- | lib/Format/UnwrappedLineParser.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/Format/UnwrappedLineParser.h b/lib/Format/UnwrappedLineParser.h index 010bad8ece..500054fe9a 100644 --- a/lib/Format/UnwrappedLineParser.h +++ b/lib/Format/UnwrappedLineParser.h @@ -34,7 +34,7 @@ namespace format { struct FormatToken { FormatToken() : NewlinesBefore(0), HasUnescapedNewline(false), WhiteSpaceLength(0), - TokenLength(0), IsFirst(false) { + TokenLength(0), IsFirst(false), MustBreakBefore(false) { } /// \brief The \c Token. @@ -68,6 +68,12 @@ struct FormatToken { /// \brief Indicates that this is the first token. bool IsFirst; + /// \brief Whether there must be a line break before this token. + /// + /// This happens for example when a preprocessor directive ended directly + /// before the token. + bool MustBreakBefore; + // FIXME: We currently assume that there is exactly one token in this vector // except for the very last token that does not have any children. /// \brief All tokens that logically follow this token. @@ -144,10 +150,11 @@ private: // FIXME: We are constantly running into bugs where Line.Level is incorrectly // subtracted from beyond 0. Introduce a method to subtract from Line.Level // and use that everywhere in the Parser. - UnwrappedLine Line; + llvm::OwningPtr<UnwrappedLine> Line; bool RootTokenInitialized; FormatToken *LastInCurrentLine; FormatToken FormatTok; + bool MustBreakBeforeNextToken; const FormatStyle &Style; FormatTokenSource *Tokens; |