From a71f626eac2bf3ffb1d45a68273a83e630957ea9 Mon Sep 17 00:00:00 2001 From: Krasimir Georgiev Date: Thu, 8 Mar 2018 11:29:27 +0000 Subject: [PATCH] [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 --- clang/lib/Format/ContinuationIndenter.cpp | 9 +++++---- clang/unittests/Format/FormatTestRawStrings.cpp | 11 +++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index d28254d..d53cf80 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/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/clang/unittests/Format/FormatTestRawStrings.cpp b/clang/unittests/Format/FormatTestRawStrings.cpp index 21bbc3f..daef6d7 100644 --- a/clang/unittests/Format/FormatTestRawStrings.cpp +++ b/clang/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() { -- 2.7.4