views:

509

answers:

2

I'm using ASP.NET MVC a lot recently which means using server blocks a bunch. Visual Studio does this strange thing when I type:

<% } %>

and hit enter, I get this:

<%
     }
     %>

Which is unsightly and generally the most horrible thing I've ever seen. I've customized the Ctrl+K+D behavior pretty heavily and when I do this I get everything to look the way I want except for this one case. Anyone have any suggestions on how to customize this?

+3  A: 

Looking at the behavior. I don't know that you can override it just for the HTML editor. It is exhibiting the exact behavior that is defined in the C# editor preferences.

I suppose you could modify the behavior for a closing brace in the C# editor preferences, but it would do fugly things to your .cs files.

Edit:

I got tired of trying to find other ways to do it. So I wrote this macro. Tested in VS 2k8. Not 2k5. You can see what it does. Also, sorry about the VB, but it was the default for the macro editor.

Sub FixFormatCurrentFile()

    Dim selection As TextSelection = DTE.ActiveDocument.Selection
    Dim fixed As String = "<% } %>"
    Dim regex As String = "\<\%:Wh*\}:Wh*\%\>"

    While selection.FindPattern(regex, vsFindOptions.vsFindOptionsRegularExpression)
        selection.ReplacePattern(regex, fixed, vsFindOptions.vsFindOptionsRegularExpression)
    End While
End Sub
Chad Ruppert
I'm not familiar with using macros in Visual studio...can I essentially attach this to Ctrl+K+D?
JC Grubbs
Not to ctrl-k-d, its going to have be an extra keystroke, I believe. You could however, likely call the 'autoformat' within the macro first.
Chad Ruppert
A: 

i think you format it by Ctrl + K, Ctrl + D

Yassir