You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
270 lines
7.9 KiB
270 lines
7.9 KiB
'------------------------------------------------------------------------------ |
|
'FILE DESCRIPTION: Contains macros which make MSVC commenting more automated |
|
'------------------------------------------------------------------------------ |
|
|
|
Sub ModuleHeader() |
|
'DESCRIPTION: This macro adds the standard copyright information to the top of a module. |
|
|
|
ActiveDocument.Selection.StartOfDocument |
|
|
|
' Create the standard file prologue |
|
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 |
|
DotHPos = InStr(ActiveDocument.Name, ".h") |
|
|
|
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 |
|
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 |
|
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 |
|
FunctionImp = ActiveDocument.Selection.Text |
|
ActiveDocument.Selection.StartOfLine |
|
LineNum = ActiveDocument.Selection.CurrentLine |
|
|
|
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 |
|
FuncArray = Split(FunctionName) |
|
|
|
ReturnType = "" |
|
|
|
' Get the return type and function name |
|
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 |
|
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 |
|
Params = Left(Params, InStr(Params, ")") - 1) |
|
Params = Trim(Params) |
|
|
|
' Remove any /* */ comments from Params |
|
Pos = InStr( Params, "/*" ) |
|
Do While Pos |
|
EndComment = InStr( Params, "*/" ) |
|
If EndComment Then |
|
StartString = Left( Params, InStr( Params, "/*" ) - 1) |
|
Pos2 = len( Params ) - InStr( Params, "*/" ) + 3 |
|
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 |
|
ParamsArray = Split(Params, ",") |
|
|
|
' Construct the parameters section |
|
ParamSection = "" |
|
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 |
|
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 |
|
LineText = ActiveDocument.Selection.Text |
|
ActiveDocument.Selection.StartOfLine |
|
|
|
FirstTwoChars = Left(LineText, 2) |
|
|
|
If len(FirstTwoChars) < 2 Then |
|
ActiveDocument.Selection = "" |
|
Elseif FirstTwoChars = "//" Then |
|
ActiveDocument.Selection.CharRight dsExtend |
|
ActiveDocument.Selection.CharRight dsExtend |
|
ActiveDocument.Selection = "" |
|
Else |
|
ActiveDocument.Selection = "//" |
|
End if |
|
|
|
ActiveDocument.Selection.LineDown |
|
|
|
End Sub |
|
|
|
Sub ScheduleTemplate() |
|
'DESCRIPTION: Adds a schedule template at the current cursor position |
|
ActiveDocument.Selection = "//==================================================" + vbCrLf + "// SCHED_" + vbCrLf + "//==================================================" + vbCrLf + vbCrLf + "Schedule" + vbCrLf + vbTab + "SCHED_" + vbCrLf + "Tasks" + vbCrLf + vbCrLf + "Interrupts" + vbCrLf + vbCrLf + ActiveDocument.Selection |
|
|
|
End Sub |
|
|
|
Sub CommentTODO() |
|
'DESCRIPTION: Adds "//TODO:" at the current cursor position |
|
ActiveDocument.Selection = "//TODO: " + ActiveDocument.Selection |
|
|
|
End Sub |
|
|
|
Sub CommentFIXME() |
|
'DESCRIPTION: Adds "//FIXME:" at the current cursor position |
|
ActiveDocument.Selection = "//FIXME: " + ActiveDocument.Selection |
|
|
|
End Sub |
|
|
|
Sub CommentNOTENOTE() |
|
'DESCRIPTION: Adds "//NOTENOTE:" at the current cursor position |
|
ActiveDocument.Selection = "//NOTENOTE: " + ActiveDocument.Selection |
|
|
|
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 |
|
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 |
|
Documents.Open b, "Text" |
|
End If |
|
End Sub
|
|
|