'Visual Studio 2010 VB.NET Macros 'www.expressionsoftware.com 'v11.8.1 Imports System Imports System.Collections.Generic Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Imports EnvDTE100 Public Module ExpressionSoftwareMacros Sub PrintFilenamesForOpenFiles() Dim output = "macro: PrintFilenamesForOpenFiles" + vbCrLf Dim outputFiles As String Dim openFiles = GetOpenFiles() 'openFiles.Sort() 'error: failed to compare two elements in the array openFiles.Sort(New EnvDteDocumentComparerClass()) For Each file In openFiles outputFiles += "file: " + file.FullName + vbCrLf Next output += "date: " + Date.Now + vbCrLf output += "count: " + Str(openFiles.Count) + vbCrLf output += outputFiles Out(output) End Sub Sub HideLinebreakToBrace() Dim output = "macro: HideLinebreakToBrace" + vbCrLf Dim count = 0 'vs pofs regex ':b whitespace or tab 'Dim searchString = ":b*\n:b*\{" 'matches "\b\n{" which cannot be hidden, can use if count is not output, else count incorrect Dim searchString = "{:b+\n:b*\{}|{:b*\n:b+\{}" DTE.Find.FindWhat = searchString DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument 'search current file only DTE.Find.Action = vsFindAction.vsFindActionFind DTE.Find.MatchInHiddenText = True DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr 'regex search DTE.SuppressUI = False DTE.ActiveDocument.Selection.StartOfDocument() 'set cursor top of file While DTE.Find.Execute() <> vsFindResult.vsFindResultNotFound count += 1 DTE.ActiveDocument.Selection.CharLeft(True, 1) 'unselect brace char DTE.ExecuteCommand("Edit.HideSelection") End While DTE.ActiveDocument.Selection.StartOfDocument() output += "date: " + Date.Now + vbCrLf output += "file: " + DTE.ActiveDocument.FullName + vbCrLf output += "count: " + Str(count) Out(output) End Sub Private Function GetOpenFiles() As List(Of EnvDTE.Document) Dim openFiles As New List(Of EnvDTE.Document) For Each doc As EnvDTE.Document In DTE.Documents If doc.ProjectItem IsNot Nothing Then 'todo: combine If doc.ProjectItem.IsOpen() Then openFiles.Add(doc) End If End If Next Return openFiles End Function Private Sub Out(ByVal output) GetMacrosOutputWindow().OutputString(output) End Sub 'requires Microsoft Samples Utilities module, 'copy module into MyMacros project Private Function GetMacrosOutputWindow() As OutputWindowPane Dim windowTitle = "Expression Software Macros" Dim window As Window Dim target As Object Dim document As EnvDTE.Document window = DTE.Windows.Item(Constants.vsWindowKindCommandWindow) If DTE.ActiveWindow Is window Then target = window.Object Else target = Utilities.GetOutputWindowPane(windowTitle) target.clear() End If Return target End Function End Module Public Class EnvDteDocumentComparerClass Implements IComparer(Of EnvDTE.Document) 'compare docs by full filename, for sorting Function Compare(ByVal file1 As EnvDTE.Document, _ ByVal file2 As EnvDTE.Document) _ As Integer Implements IComparer(Of EnvDTE.Document).Compare Return file1.FullName.CompareTo(file2.FullName) End Function End Class Public Class EnvDteDocumentComparableClass Implements IComparable(Of EnvDTE.Document) 'compare docs by full filename, for sorting Function CompareTo(ByVal other As EnvDTE.Document) _ As Integer Implements IComparable(Of EnvDTE.Document).CompareTo Return FullName.CompareTo(other.FullName) End Function End Class '************************************************************** 'Misc 'DTE.Documents.Count includes closed docs 'DTE.ActiveDocument.FullName 'output += "date: " + Date.Now + vbCrLf 'Microsoft.VisualBasic.Constants.vbCrLf 'DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument 'keyboard shortcuts ' alt + F8 macro explorer ' alt + F11 macros ide '**************************************************************
8/1/11
Visual Studio 2010 VB.NET Macros
Subscribe to:
Post Comments (Atom)
requires the Utilities module from Samples project, add to MyMacros project
ReplyDelete