【发布时间】:2011-03-04 18:02:57
【问题描述】:
我正在寻找一种编写宏事件来解析用户代码的方法。
例如,当程序员编写一些特定代码时,此事件将解析代码行,如果匹配正则表达式,则会在活动文档上插入一些附加代码。
如何获取孔线代码以及我应该使用哪个事件?
【问题讨论】:
标签: visual-studio visual-studio-2010 macros visual-studio-macros
我正在寻找一种编写宏事件来解析用户代码的方法。
例如,当程序员编写一些特定代码时,此事件将解析代码行,如果匹配正则表达式,则会在活动文档上插入一些附加代码。
如何获取孔线代码以及我应该使用哪个事件?
【问题讨论】:
标签: visual-studio visual-studio-2010 macros visual-studio-macros
您可以使用 TextDocumentKeyPressEvents.AfterKeyPress 事件。用户在文本编辑器中按下任意键后会触发以下宏。然后它获取当前行。此示例测试该行是否包含“hello”文本,如果是,则在消息框中显示该行。
Private Sub TextDocumentKeyPressEvents_AfterKeyPress(ByVal Keypress As String, _
ByVal Selection As EnvDTE.TextSelection, ByVal InStatementCompletion As Boolean) _
Handles TextDocumentKeyPressEvents.AfterKeyPress
Try
Dim line As String
Dim aPoint As EditPoint = Selection.ActivePoint.CreateEditPoint
Dim startPoint As EditPoint = aPoint.CreateEditPoint
startPoint.StartOfLine()
Dim endPoint As EditPoint = aPoint.CreateEditPoint
endPoint.EndOfLine()
line = startPoint.GetText(endPoint)
If line.Contains("hello") Then
MsgBox(line)
End If
Catch ex As Exception
End Try
End Sub
创建和应用这个宏:
【讨论】:
宏可以响应某些事件,但是,我不认为文本输入是其中之一,更好的方法可能是使用 sn-ps - http://msdn.microsoft.com/en-us/library/ms165392(v=VS.100).aspx
它们将允许您定义关键字,然后将文本添加到编辑器中。 一个很好的例子是属性 sn-p;在您的编辑器中键入“prop”,然后按 Tab(在 C# 中两次,在 VB 中一次)进行调用。
这里是可用 sn-ps 的更详细列表: http://msdn.microsoft.com/en-us/library/z41h7fat(v=VS.100).aspx
【讨论】: