clang 20.0.0git
|
Functions | |
std::pair< tooling::Replacements, unsigned > | reformat (const FormatStyle &Style, StringRef Code, ArrayRef< tooling::Range > Ranges, unsigned FirstStartColumn, unsigned NextStartColumn, unsigned LastStartColumn, StringRef FileName, FormattingAttemptStatus *Status) |
Reformats the given Ranges in the code fragment Code . | |
std::pair< tooling::Replacements, unsigned > clang::format::internal::reformat | ( | const FormatStyle & | Style, |
StringRef | Code, | ||
ArrayRef< tooling::Range > | Ranges, | ||
unsigned | FirstStartColumn, | ||
unsigned | NextStartColumn, | ||
unsigned | LastStartColumn, | ||
StringRef | FileName, | ||
FormattingAttemptStatus * | Status | ||
) |
Reformats the given Ranges
in the code fragment Code
.
A fragment of code could conceptually be surrounded by other code that might constrain how that fragment is laid out. For example, consider the fragment of code between 'R"(' and ')"', exclusive, in the following code:
void outer(int x) { string inner = R"(name: data ^ FirstStartColumn value: { x: 1 ^ NextStartColumn } )"; ^ LastStartColumn }
The outer code can influence the inner fragment as follows:
FirstStartColumn
specifies the column at which Code
starts.NextStartColumn
specifies the additional indent dictated by the surrounding code. It is applied to the rest of the lines of Code
.LastStartColumn
specifies the column at which the last line of Code
should end, in case the last line is an empty line.
In the case where the last line of the fragment contains content, the fragment ends at the end of that content and LastStartColumn
is not taken into account, for example in:
void block() { string inner = R"(name: value)"; }
Each range is extended on either end to its next bigger logic unit, i.e. everything that might influence its formatting or might be influenced by its formatting.
Returns a pair P, where:
Replacements
necessary to make all Ranges
comply with Style
.Code
. If the formatting of the fragment doesn't have a notion of penalty, returns 0.If Status
is non-null, its value will be populated with the status of this formatting attempt. See FormattingAttemptStatus
.
Definition at line 3634 of file Format.cpp.
References clang::tooling::Replacements::add(), clang::format::addQualifierAlignmentFixerPasses(), clang::format::FormatStyle::DisableFormat, E, Env, clang::format::expandPresetsBraceWrapping(), clang::format::expandPresetsSpaceBeforeParens(), clang::format::expandPresetsSpacesInParens(), clang::FileName, clang::format::FormatStyle::FixNamespaceComments, clang::format::FormatStyle::IndentRequiresClause, clang::format::FormatStyle::InsertBraces, clang::format::FormatStyle::InsertTrailingCommas, clang::format::FormatStyle::isCpp(), clang::format::FormatStyle::isJavaScript(), clang::format::FormatStyle::isJson(), clang::format::isLikelyXml(), clang::format::isMpegTS(), clang::format::FormatStyle::JavaScriptQuotes, clang::format::FormatStyle::Language, clang::tooling::Replacements::merge(), clang::format::FormatStyle::ObjCPropertyAttributeOrder, clang::format::TokenAnalyzer::process(), clang::format::IntegerLiteralSeparatorFixer::process(), clang::format::FormatStyle::QualifierAlignment, clang::format::reformat(), clang::format::FormatStyle::RemoveBracesLLVM, clang::format::FormatStyle::RemoveParentheses, clang::format::FormatStyle::RemoveSemicolon, clang::format::FormatStyle::RequiresClausePosition, clang::format::FormatStyle::SeparateDefinitionBlocks, clang::format::FormatStyle::SortUsingDeclarations, and toString().
Referenced by clang::format::reformat().