in Backend/Core/ForTea.Core/Psi/Formatting/T4CSharpCustomIndentHandler.cs [130:159]
private static bool HasStatementsBefore(
[NotNull] ISecondaryRangeTranslator rangeTranslator,
[NotNull] ITreeNode node
) => node.GetFirstTokenIn()
.PrevTokens()
.Where(token => !token.IsWhitespaceToken())
.Select(token => token.GetTreeTextRange())
.Select(range => rangeTranslator.GeneratedToOriginal(range))
.Where(originalRange => originalRange.IsValid())
.SelectNotNull(rangeTranslator.OriginalFile.FindNodeAt)
.Any(it => it.GetParentOfType<IT4StatementBlock>() != null);
[Pure]
private static bool HasLineBreak([NotNull] IT4CodeBlock codeBlock, int nodeStart, TreeOffset blockStart) =>
codeBlock.GetText().Substring(0, nodeStart - blockStart.Offset).IndexOf('\n') >= 0;
[Pure, CanBeNull]
private static string GetIndentFromPreviousStatement(
[NotNull] ITreeNode node,
[NotNull] RangeTranslatorWithGeneratedRangeMap rangeTranslator
)
{
for (var currentNode = node.PrevSibling; currentNode != null; currentNode = currentNode.PrevSibling)
{
string indent = TryGetIndentFromStatement(rangeTranslator, currentNode);
if (indent != null) return indent;
}
return null;
}