Browse Source

Better detection of a block statement beginning on auto-formatting.

pull/478/head
Andreas Weizel 11 years ago
parent
commit
f22e332f6e
  1. 13
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

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

@ -407,7 +407,18 @@ namespace CSharpBinding.FormattingStrategy @@ -407,7 +407,18 @@ namespace CSharpBinding.FormattingStrategy
var bracketSearchResult = textArea.Language.BracketSearcher.SearchBracket(textArea.Document, cursorOffset);
if (bracketSearchResult != null) {
// Format the block
int bracketLineOffset = textArea.Document.GetLineByOffset(bracketSearchResult.OpeningBracketOffset).Offset;
var bracketLine = textArea.Document.GetLineByOffset(bracketSearchResult.OpeningBracketOffset);
int bracketLineOffset = bracketLine.Offset;
int textLengthBeforeBracket = bracketSearchResult.OpeningBracketOffset - bracketLineOffset;
if (textLengthBeforeBracket > 0) {
string textBeforeBracket = textArea.Document.GetText(bracketLineOffset, textLengthBeforeBracket);
if (textBeforeBracket.Trim(' ', '\t').Length == 0) {
// Line seems to begin with the bracket, so format the line above, too
if (bracketLine.PreviousLine != null) {
bracketLineOffset = bracketLine.PreviousLine.Offset;
}
}
}
if (!FormatCode(textArea, bracketLineOffset, cursorOffset - bracketLineOffset, true)) {
// No auto-formatting seems to be active, at least indent the line
IndentLine(textArea, curLine);

Loading…
Cancel
Save