in resharper/resharper-unity/src/Unity.Shaders/HlslSupport/Feature/Services/TypingAssists/InjectedHlslDummyFormatter.cs [32:68]
public override string CalculateInjectionIndent(CppDummyFormatterContext context, CachingLexer lexer)
{
var offset = context.TextControl.Caret.DocumentOffset().Offset;
using (LexerStateCookie.Create(lexer))
{
if (!lexer.FindTokenAt(offset))
return "";
var tt = lexer.TokenType;
while (tt != null)
{
lexer.Advance(-1);
tt = lexer.TokenType;
if (tt == ShaderLabTokenType.CG_PROGRAM || tt == ShaderLabTokenType.CG_INCLUDE ||
tt == ShaderLabTokenType.HLSL_PROGRAM || tt == ShaderLabTokenType.HLSL_INCLUDE ||
tt == ShaderLabTokenType.GLSL_PROGRAM || tt == ShaderLabTokenType.GLSL_INCLUDE)
break;
}
if (tt != null)
{
var blockStartPos = lexer.CurrentPosition;
for (lexer.Advance(); lexer.TokenEnd <= offset && (tt = lexer.TokenType) is { IsWhitespace: true }; lexer.Advance()) { } // skip to next non-whitespace token
// if next non-empty token is end of block then reset to block start otherwise use offset of first line in the block
if (tt == ShaderLabTokenType.CG_END ||
tt == ShaderLabTokenType.HLSL_END ||
tt == ShaderLabTokenType.GLSL_END)
lexer.CurrentPosition = blockStartPos;
return CalculateLineIndent(context, lexer);
}
}
return "";
}