From: Krasimir Georgiev Date: Thu, 8 Mar 2018 11:29:27 +0000 (+0000) Subject: [clang-format] Use NestedBlockIndent as a 0 column in formatted raw strings X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4890a84991653f96f89aaad7e8215afdba8b0441;p=clang [clang-format] Use NestedBlockIndent as a 0 column in formatted raw strings Summary: This makes the formatter of raw string literals use NestedBlockIndent for determining the 0 column of the content inside. This makes the formatting use less horizonal space and fixes a case where two newlines before and after the raw string prefix were selected instead of a single newline after it: Before: ``` aaaa = ffff( R"pb( key: value)pb"); ``` After: ``` aaaa = ffff(R"pb( key: value)pb"); ``` Reviewers: djasper, sammccall Reviewed By: sammccall Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D44141 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326996 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index d28254d806..d53cf808dd 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -1385,9 +1385,10 @@ unsigned ContinuationIndenter::reformatRawStringLiteral( // violate the rectangle rule and visually flows within the surrounding // source. bool ContentStartsOnNewline = Current.TokenText[OldPrefixSize] == '\n'; - unsigned NextStartColumn = ContentStartsOnNewline - ? State.Stack.back().Indent + Style.IndentWidth - : FirstStartColumn; + unsigned NextStartColumn = + ContentStartsOnNewline + ? State.Stack.back().NestedBlockIndent + Style.IndentWidth + : FirstStartColumn; // The last start column is the column the raw string suffix starts if it is // put on a newline. @@ -1399,7 +1400,7 @@ unsigned ContinuationIndenter::reformatRawStringLiteral( // indent. unsigned LastStartColumn = Current.NewlinesBefore ? FirstStartColumn - NewPrefixSize - : State.Stack.back().Indent; + : State.Stack.back().NestedBlockIndent; std::pair Fixes = internal::reformat( RawStringStyle, RawText, {tooling::Range(0, RawText.size())}, diff --git a/unittests/Format/FormatTestRawStrings.cpp b/unittests/Format/FormatTestRawStrings.cpp index 21bbc3fe6f..daef6d7225 100644 --- a/unittests/Format/FormatTestRawStrings.cpp +++ b/unittests/Format/FormatTestRawStrings.cpp @@ -681,15 +681,14 @@ int s() { })test", getRawStringPbStyleWithColumns(20))); - // Align the suffix with the surrounding FirstIndent if the prefix is not on + // Align the suffix with the surrounding indent if the prefix is not on // a line of its own. expect_eq(R"test( int s() { - auto S = PTP( - R"pb( - item_1: 1, - item_2: 2 - )pb"); + auto S = PTP(R"pb( + item_1: 1, + item_2: 2 + )pb"); })test", format(R"test( int s() {