Imports EnvDTE Imports System.Diagnostics Imports System.IO Public Module Valve Sub CloseToolWindows() DTE.ExecuteCommand("View.CommandWindow") DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Close() DTE.Windows.Item("{73F6DD5A-437E-11D3-B88E-00C04F79F802}").Close() DTE.ExecuteCommand("View.Output") DTE.Windows.Item(Constants.vsWindowKindOutput).Close() DTE.ExecuteCommand("View.TaskList") DTE.Windows.Item(Constants.vsWindowKindTaskList).Close() DTE.ExecuteCommand("View.FindResults1") DTE.Windows.Item(Constants.vsWindowKindFindResults1).Close() DTE.ExecuteCommand("View.FindResults2") DTE.Windows.Item(Constants.vsWindowKindFindResults2).Close() End Sub Sub ModuleHeader() 'DESCRIPTION: This macro adds the standard copyright information to the top of a module. ActiveDocument.Selection.StartOfDocument() ' Create the standard file prologue Dim Header As String Header = "//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======" + vbCrLf Header = Header + "//" + vbCrLf Header = Header + "// Purpose: " + vbCrLf Header = Header + "//" + vbCrLf Header = Header + "//=============================================================================" + vbCrLf + vbCrLf ' Add the single inclusion macros for header files Dim DotHPos As String DotHPos = InStr(ActiveDocument.Name, ".h") Dim InclusionKey As String If DotHPos > 0 Then InclusionKey = Left(ActiveDocument.Name, DotHPos - 1) InclusionKey = UCase(InclusionKey) + "_H" Header = Header + "#ifndef " + InclusionKey + vbCrLf Header = Header + "#define " + InclusionKey + vbCrLf Header = Header + "#ifdef _WIN32" + vbCrLf Header = Header + "#pragma once" + vbCrLf Header = Header + "#endif" + vbCrLf + vbCrLf End If ActiveDocument.Selection.Text = Header ' Add the "#endif" for header files If DotHPos > 0 Then ActiveDocument.Selection.EndOfDocument() Header = vbCrLf + "#endif // " + InclusionKey + vbCrLf ActiveDocument.Selection.Text = Header End If ActiveDocument.Selection.StartOfDocument() End Sub Sub TypeHeader() 'DESCRIPTION: This macro adds a description block above a type declaration ' Select the text on the current line and store it for parsing ActiveDocument.Selection.SelectLine() Dim TypeDec As String TypeDec = ActiveDocument.Selection.Text ActiveDocument.Selection.StartOfLine() ' Check to make sure that this line is a type delcaration If InStr(TypeDec, "class") = 0 And InStr(TypeDec, "struct") = 0 And InStr(TypeDec, "interface") = 0 And InStr(TypeDec, "enum") = 0 Then MsgBox("This line does not contain a class, struct, interface, or enum declaration.") Else ' Construct the type header Dim Header As String Header = "//-----------------------------------------------------------------------------" + vbCrLf Header = Header + "// Purpose: " + vbCrLf Header = Header + "//-----------------------------------------------------------------------------" + vbCrLf ' Write the header ActiveDocument.Selection.Text = Header End If End Sub Sub FunctionHeader() 'DESCRIPTION: This macro creates a function header for C functions or C++ member functions ' Select the text on the current line and store it for parsing ActiveDocument.Selection.SelectLine() Dim FunctionImp = ActiveDocument.Selection.Text ActiveDocument.Selection.StartOfLine() Dim LineNum = ActiveDocument.Selection.CurrentLine Dim FunctionName = Left(FunctionImp, InStr(FunctionImp, "(")) ' Check to make sure that this line is a class delcaration If Len(FunctionName) = 0 Then MsgBox("This line does not contain a function implementation.") Else Dim FuncArray = Split(FunctionName) Dim ReturnType = "" ' Get the return type and function name Dim Element For Each Element In FuncArray If InStr(Element, "(") = 0 Then ReturnType = ReturnType + Element + " " Else FunctionName = Left(Element, Len(Element) - 1) End If Next ReturnType = Trim(ReturnType) If ReturnType = "BOOL" Then ReturnType = "Returns TRUE on success, FALSE on failure." ElseIf ReturnType = "bool" Then ReturnType = "Returns true on success, false on failure." End If ' Place the function parameters in its own string Dim Params = Right(FunctionImp, Len(FunctionImp) - InStr(FunctionImp, "(")) Do While InStr(Params, ")") = 0 ActiveDocument.Selection.LineDown() ActiveDocument.Selection.SelectLine() Params = Left(Params, InStr(Params, vbCrLf) - 1) Params = Params + Trim(ActiveDocument.Selection.Text) Loop ActiveDocument.Selection.GotoLine(LineNum - 1) Params = Left(Params, InStr(Params, ")") - 1) Params = Trim(Params) ' Remove any /* */ comments from Params Dim Pos = InStr(Params, "/*") Do While Pos Dim EndComment = InStr(Params, "*/") If EndComment Then Dim StartString = Left(Params, InStr(Params, "/*") - 1) Dim Pos2 = Len(Params) - InStr(Params, "*/") + 3 Dim EndString = Mid(Params, InStr(Params, "*/") + 2, Pos2) StartString = Trim(StartString) EndString = Trim(EndString) Params = StartString + EndString Pos = InStr(Params, "/*") Else Pos = 0 End If Loop ' Create an array of individual parameters Dim ParamsArray = Split(Params, ",") ' Construct the parameters section Dim ParamSection = "" Dim AddNewLine = 0 For Each Element In ParamsArray Element = Trim(Element) Element = Right(Element, Len(Element) - InStrRev(Element, " ")) If AddNewLine = 1 Then ParamSection = ParamSection + vbCrLf + "// " End If ParamSection = ParamSection + Element + " - " AddNewLine = 1 Next ' Construct the rest of the header Dim Header = "//-----------------------------------------------------------------------------" + vbCrLf Header = Header + "// Purpose: " + vbCrLf If ParamSection <> "void - " And ParamSection <> "" Then Header = Header + "// Input : " + ParamSection + vbCrLf End If If ReturnType <> "void" And ReturnType <> "" Then Header = Header + "// Output : " + ReturnType + vbCrLf End If Header = Header + "//-----------------------------------------------------------------------------" + vbCrLf ' Write the header ActiveDocument.Selection.Text = Header End If End Sub 'DESCRIPTION: Comments in or out a line of code, then moves to the next line. Sub ToggleComment() ActiveDocument.Selection.SelectLine() Dim LineText As String = ActiveDocument.Selection.Text Dim FirstTwoChars = Left(LineText, 2) If Len(FirstTwoChars) < 2 Then ActiveDocument.Selection.Text = "" ElseIf FirstTwoChars = "//" Then ActiveDocument.Selection.Text = Right(LineText, Len(LineText) - 2) Else ActiveDocument.Selection.Text = "//" + LineText End If End Sub Sub JumpToHeader() '//////////////////////////////////////////// 'DESCRIPTION: Switch Between Header and cpp '//////////////////////////////////////////// Dim myDocument Dim a Dim b Dim c Dim Flag Dim Flag1 Flag1 = 0 Flag = 1 a = ActiveDocument.FullName Dim tmp = InStr(a, ".cpp") If tmp Then b = Left(a, Len(a) - 3) + "h" c = Left(a, Len(a) - 3) + "h" Flag1 = 1 Else tmp = InStr(a, ".c") If tmp Then b = Left(a, Len(a) - 1) + "h" c = Left(a, Len(a) - 1) + "h" Flag1 = 1 Else tmp = InStr(a, ".h") If tmp Then b = Left(a, Len(a) - 1) + "c" c = Left(a, Len(a) - 1) + "cpp" Flag1 = 1 End If End If End If For Each myDocument In Application.Documents If myDocument.FullName = b Then myDocument.Active = True Flag = 0 Exit For End If If myDocument.FullName = c Then myDocument.Active = True Flag = 0 b = c Exit For End If Next If Flag And Flag1 Then DTE.Documents.Open(b, "Text") End If End Sub End Module