271 lines
20 KiB
Plaintext
271 lines
20 KiB
Plaintext
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
|
|
|