diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs index f6531b5d32..43d71e98fb 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs @@ -584,15 +584,6 @@ namespace VBNetBinding.FormattingStrategy if (currentToken.Kind == Tokens.EOL) isDelegate = isDeclare = isMustOverride = false; - if (IsSpecialCase(currentToken, prevToken)) { - ApplyToRange(textArea, indentation, oldLine, currentToken.Location.Line, begin, end); - Unindent(indentation); - ApplyToRange(textArea, indentation, currentToken.Location.Line - 1, currentToken.Location.Line, begin, end); - Indent(textArea, indentation); - - oldLine = currentToken.Location.Line; - } - if (IsBlockEnd(currentToken, prevToken)) { ApplyToRange(textArea, indentation, oldLine, currentToken.Location.Line - 1, begin, end); @@ -728,7 +719,7 @@ namespace VBNetBinding.FormattingStrategy return true; } - return false; + return IsSpecialCase(current, prev); } bool IsBlockEnd(Token current, Token prev) @@ -750,7 +741,7 @@ namespace VBNetBinding.FormattingStrategy return false; } - return false; + return IsSpecialCase(current, prev); } bool IsSpecialCase(Token current, Token prev) diff --git a/src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/IndentationTests.cs b/src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/IndentationTests.cs index bd3f09f5b3..da26ce02b0 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/IndentationTests.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/IndentationTests.cs @@ -11,7 +11,7 @@ using ICSharpCode.Core; using NUnit.Framework; using VBNetBinding.FormattingStrategy; -namespace VBNetBinding.Tests.FormattingStrategy +namespace VBNetBinding.Tests { [TestFixture] public class IndentationTests @@ -116,6 +116,180 @@ End Class"; RunFormatTest(code, expected); } + [Test] + public void ElseIfMultiLineContinuationTest() + { + string expected = @"Public Class Test + Private Sub Tester() + If True Then + 'CODE HERE + Else If False And _ + False Then + 'CODE HERE1 + End If + End Sub +End Class"; + + string code = @"Public Class Test +Private Sub Tester() +If True Then +'CODE HERE +Else If False And _ +False Then +'CODE HERE1 +End If +End Sub +End Class"; + + RunFormatTest(code, expected); + } + + [Test] + public void SelectCaseTest() + { + string expected = @"Public Class Test + Private Sub Tester() + Select Case a + Case 0 + DoSomething() + ' TEST CASE 0 + Case 1 + 'TEST CASE 1 + Case 2 + 'TEST CASE 2 + Case Else + DoElse() + End Select + End Sub +End Class"; + + string code = @"Public Class Test +Private Sub Tester() +Select Case a +Case 0 +DoSomething() +' TEST CASE 0 +Case 1 +'TEST CASE 1 +Case 2 +'TEST CASE 2 +Case Else +DoElse() +End Select +End Sub +End Class"; + + RunFormatTest(code, expected); + } + + [Test] + public void SelectCaseTest2() + { + string expected = @"Public Class Test + Private Sub Tester() + Select Case a + Case 0 + DoSomething() + Case 1 + Case 2 + Case Else + DoElse() + End Select + End Sub +End Class"; + + string code = @"Public Class Test +Private Sub Tester() +Select Case a +Case 0 +DoSomething() +Case 1 +Case 2 +Case Else +DoElse() +End Select +End Sub +End Class"; + + RunFormatTest(code, expected); + } + + [Test] + public void WithTest() + { + string expected = @"Public Class Test + Private Sub Tester() + With a + If True Then + ' Test + ElseIf False Then + ' Test3 + Else + ' Test2 + End If + End With + End Sub +End Class"; + + string code = @"Public Class Test +Private Sub Tester() +With a +If True Then +' Test +ElseIf False Then +' Test3 +Else +' Test2 +End If +End With +End Sub +End Class"; + + RunFormatTest(code, expected); + } + + [Test] + public void WithTest2() + { + string expected = @"Public Class Test + Private Sub Tester() + With a + If True Then + ' Test + ElseIf False Then + ' Test3 + Else + Try + DoSomething() + Catch ex As Exception + 'Handle + End Try + End If + End With + End Sub +End Class"; + + string code = @"Public Class Test +Private Sub Tester() +With a +If True Then +' Test +ElseIf False Then +' Test3 +Else +Try +DoSomething() +Catch ex As Exception +'Handle +End Try +End If +End With +End Sub +End Class"; + + RunFormatTest(code, expected); + } + void RunFormatTest(string code, string expectedCode) { using (TextEditorControl editor = new TextEditorControl()) {