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/Format.cpp | |
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/Format.cpp')
-rw-r--r-- | lib/Format/Format.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 1854d70d90..e271ba2e13 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -803,18 +803,21 @@ public: void calculateExtraInformation(AnnotatedToken &Current) { Current.SpaceRequiredBefore = spaceRequiredBefore(Current); - if (Current.Type == TT_CtorInitializerColon || Current.Parent->Type == - TT_LineComment || (Current.is(tok::string_literal) && - Current.Parent->is(tok::string_literal))) { - Current.MustBreakBefore = true; - } else if (Current.is(tok::at) && Current.Parent->Parent->is(tok::at)) { - // Don't put two objc's '@' on the same line. This could happen, - // as in, @optional @property ... + if (Current.FormatTok.MustBreakBefore) { Current.MustBreakBefore = true; } else { - Current.MustBreakBefore = false; + if (Current.Type == TT_CtorInitializerColon || Current.Parent->Type == + TT_LineComment || (Current.is(tok::string_literal) && + Current.Parent->is(tok::string_literal))) { + Current.MustBreakBefore = true; + } else if (Current.is(tok::at) && Current.Parent->Parent->is(tok::at)) { + // Don't put two objc's '@' on the same line. This could happen, + // as in, @optional @property ... + Current.MustBreakBefore = true; + } else { + Current.MustBreakBefore = false; + } } - Current.CanBreakBefore = Current.MustBreakBefore || canBreakBefore(Current); if (!Current.Children.empty()) |