VS.NET Macro To Group and Sort Your Using Statements
Also see: Determining Whether a File Is an Assembly
I try to follow a coding standard for organizing my using statements. System.* goes at the top and then other namespaces grouped together like this:
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Web; using System.Web.Script.Services; using System.Web.Services; using System.Web.Services.Protocols; using Microsoft; using Microsoft.CSharp; using MyCompany; using MyCompany.Web;
I finally got tired enough of keeping this all sorted out that I made a VS.NET macro to do it for me. This macro will take the current selection, parse it for using statements, group and sort them like the above example.
Also see: ReflectionTypeLoadException
Also see: Tagspace: Social Bookmarking for the Whole Web…from Microsoft
Also see: Channel 9 Interview
Also see: Blogs at work
Also see: Updated Finalization and Hosting
Also see: Applied Metamodelling: A Foundation for Language Driven Development
Also see: Applied Metamodelling: A Foundation for Language Driven Development
Here’s the macro code:
Dim _usingPattern As Regex = New Regex( _ “\s*(?<using>using\s*(?<group>\w+)[^;]*);”, _ RegexOptions.IgnoreCase _ Or RegexOptions.Multiline _ Or RegexOptions.ExplicitCapture _ Or RegexOptions.CultureInvariant _ Or RegexOptions.Compiled _ ) Public Sub SortUsing() If Not DTE.ActiveDocument Is Nothing Then Dim sel As TextSelection = DTE.ActiveDocument.Selection If sel.Text.Contains(vbCrLf) Then If sel.ActivePoint Is sel.BottomPoint Then sel.SwapAnchor() sel.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn, True) sel.SwapAnchor() sel.EndOfLine(True) Dim groups As New SortedList(Of String, List(Of String))() For Each match As Match In _usingPattern.Matches(sel.Text) Dim u As String = match.Groups(“using”).Value Dim g As String = match.Groups(“group”).Value ‘ System usings sort at the top If g = “System” Then g = “_” + g Dim list As List(Of String) If Not groups.TryGetValue(g, list) Then list = New List(Of String)() groups.Add(g, list) End If list.Add(u) Next Dim builder As New StringBuilder() For Each group As KeyValuePair(Of String, List(Of String)) In groups If builder.Length > 0 Then builder.AppendLine() group.Value.Sort() For Each line As String In group.Value builder.Append(line) builder.AppendLine(“;”) Next Next sel.DeleteLeft() sel.Insert(builder.ToString()) End If End If End Sub
Also see: A web site is not an RSS feed…nor the reverse.
Also see: My Presidential Endorsement:
Also see: Java perfomance talk
Also see: Finalization
Also see: Bragging on HDNet
Also see: Eriskay: a Programming Language Based on Game Semantics
Also see: SIGPLAN Workshop on Undergraduate Programming Language Curriculum
Also see: From C# to Java: Part 5
Also see: Parallels adds “Express Windows Installation”
Also see: My Presidential Endorsement:
Also see: Determining the Referencing Assembly
Also see: VS.NET Macro To Group and Sort Your Using Statements
Also see: Passing the Community Torch: In Search of a New Chief Executive in Redmond
Also see: Brad Abrams’ pixel8 Interview Podcast posted
Also see: Memory Model
Also see: Foundations for Structured Programming with GADTs
http://weblogs.asp.net/dfindley/archive/2007/02/07/vs-net-macro-to-group-and-sort-your-using-statements.aspx
