Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit f22e332

Browse files
committed
Better detection of a block statement beginning on auto-formatting.
1 parent d0649ba commit f22e332

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,18 @@ void FormatLineInternal(ITextEditor textArea, int lineNr, int cursorOffset, char
407407
var bracketSearchResult = textArea.Language.BracketSearcher.SearchBracket(textArea.Document, cursorOffset);
408408
if (bracketSearchResult != null) {
409409
// Format the block
410-
int bracketLineOffset = textArea.Document.GetLineByOffset(bracketSearchResult.OpeningBracketOffset).Offset;
410+
var bracketLine = textArea.Document.GetLineByOffset(bracketSearchResult.OpeningBracketOffset);
411+
int bracketLineOffset = bracketLine.Offset;
412+
int textLengthBeforeBracket = bracketSearchResult.OpeningBracketOffset - bracketLineOffset;
413+
if (textLengthBeforeBracket > 0) {
414+
string textBeforeBracket = textArea.Document.GetText(bracketLineOffset, textLengthBeforeBracket);
415+
if (textBeforeBracket.Trim(' ', '\t').Length == 0) {
416+
// Line seems to begin with the bracket, so format the line above, too
417+
if (bracketLine.PreviousLine != null) {
418+
bracketLineOffset = bracketLine.PreviousLine.Offset;
419+
}
420+
}
421+
}
411422
if (!FormatCode(textArea, bracketLineOffset, cursorOffset - bracketLineOffset, true)) {
412423
// No auto-formatting seems to be active, at least indent the line
413424
IndentLine(textArea, curLine);

0 commit comments

Comments
 (0)