[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 llvm-svn: 326996
This commit is contained in:
parent
667026297d
commit
a71f626eac
|
@ -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<tooling::Replacements, unsigned> Fixes = internal::reformat(
|
||||
RawStringStyle, RawText, {tooling::Range(0, RawText.size())},
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue