桃源谷

心灵的旅行

人生就是一场旅行,不在乎旅行的目的地,在乎的是沿途的风景和看风景的心情 !
posts - 32, comments - 42, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

在Visual Studio定制新的注释格式

在本文中,使用Visual Studio2003作为例子来描述宏的做成步骤。(我想在Visual Studio2005、2008中也应该是一样的)  
     
在编写ASP代码时,可以使用单引号来注释掉不要的代码。在Visual Studio的IDE环境中也支持使用块注释的方式把一整段的代码注释掉。  
不过有的时候,也有要求用<%' ~ %>这种注释格式来注释掉HTML中的代码,但是包括Visual Studio在内的一些流行的编辑器都不支持这种格式的注释方式。不过还好,Visual Studio的IDE支持宏的功能,因此我们可以使用VBScript宏来定制任意格式的代码注释。
例如:
<%' if(LengthB(frmMe.txtUserCd.value) > <%= LENGTH_USR_CD %><%'){ %>
<%'  alert("使用者的ID长度有误"); %>
<%'  frmMe.txtUserCd.focus(); %>
<%'  return false; %>
<%' } %>
 if(LengthB(frmMe.txtUserCd.value) > <%= LENMAX_USR_CD %>){
  alert(
"使用者的ID长度有误");
  frmMe.txtUserCd.focus();
  return 
false;
 }

在JavaScript代码中使用<% ~ %>可以隐藏其间的代码。因此,在网页代码中有很多的地方就存在<% ~ %>的符号,  
  也就是说<% ~ %>和我们要添加的注释<%' ~ %>格式有冲突。    
  其中,值得注意的地方是,这种注释格式在每遇到一个%>符号时要新添加一个<%',而不是简单的在一行的首尾添加<%' ~ %>

 

1. 打开宏编辑器(Macros IDE)  
  1.1 启动Visual Studio 2005之后,从主菜单中选择:  
     Tools → Macros → Macros 



1.2 点击菜单选项“Macros IDE“后,Microsoft Visual Studio Marcos这个编辑器就会启动。    
  1.3 如果这是第一次编辑宏的话,此时随着编辑器的启动,一个叫做“My Macros“的工程自动会被打开  
      在工程"My Macros"中应该有两个模块,一个是EnvironmentEvent ,另一个是 Module1    
  1.4 咱们可以选择任何一个模块来添加宏代码。这里我们选择 Module1,双击模块名字则进入到编辑模式。
                该模块中只有4行代码.每行代码都有用,请不要删除.


其中,Imports EnvDTE 这句非常有用,后面用到的几乎所有的对象都出自EnvDTE这个命名空间。  
      DTE 是Development Tools Enviroment的缩写。

2.1 在“Public Module Module1“和“End Module“之间,写入以下的代码
2. 在宏编辑器中写入创建注释的VBScript代码  
 
 
         首先,为了能给一段代码添加注释,我们要做成AddHTMLcomment()函数


图片中的代码如下所示,请原样拷贝到Module1中
Sub AddHTMLcomment()   
          
'得到当前文档中被用户选择的代码片断   
          Dim selection As TextSelection = DTE.ActiveDocument.Selection()   
          
'创建一个编辑点,用于指示在被选择的代码片断中的修改位置。类似于C语言中的指针   
          Dim start As EditPoint = selection.TopPoint.CreateEditPoint()   
          
'得到已选择的代码片断的终点   
          Dim endpt As TextPoint = selection.BottomPoint   
  
          
'在当前文档中打开Undo功能   
          DTE.UndoContext.Open("Comment Region")   
  
          Try   
              
'在一行代码中如果出现一个注释尾"%>",则在它后面插入一个注释头"<%'"   
              Dim objMovePt As EditPoint   
              
Do While start.FindPattern("%>", , objMovePt)   
                  
If objMovePt.GreaterThan(endpt) Then   
                      
Exit Do   
                  
End If   
                  start.MoveToPoint(objMovePt)   
                  start.Insert(
"<%'")   
              
Loop   
  
              
'在一行的行首和行尾分别插入注释头和注释尾   
              start = selection.TopPoint.CreateEditPoint()   
              
Do While (start.LessThan(endpt))   
                  
'在这里插入注释头   
                  start.Insert("<%' ")   
  
                  
'在行尾插入注释尾   
                  start.EndOfLine()   
                  start.Insert(
" %>")   
  
                  start.LineDown()   
                  start.StartOfLine()   
              
Loop   
          Finally   
              
'If an error occured, then need to make sure that the undo context is cleaned up.   
              'Otherwise, the editor can be left in a perpetual undo context   
              DTE.UndoContext.Close()   
          
End Try   
  
      
End Sub 
其中,该函数分两个部分,第一个部分是先查找选择的代码片断中是否存在注释尾,如果    
  存在的话,则在它后面插入一个注释头。函数FindPattern是编辑点对象中的一个查找函数。  
  该函数有三个参数:第一个是要查找的对象(一般是字符串),第三个则是如果找到该字符串,  
  则指示该字符串后面的第一个字符在代码片断中的位置,也是一个编辑点对象。第二个参数我们不用关心,  
  调用时什么也不写即可。第二个部分则是遍历每一个行,在行首和行尾插入注释头和注释尾    
     
 
  此后,为了可以删除代码中的注释, 我们要增加DelHTMLcomment()函数  
    把下面的代码原样的拷贝到Module1中
Sub DelHTMLcomment()   
          
Dim selection As TextSelection = DTE.ActiveDocument.Selection()   
          
Dim start As EditPoint = selection.TopPoint.CreateEditPoint()   
          
Dim endpt As TextPoint = selection.BottomPoint   
  
          DTE.UndoContext.Open(
"Comment Region")   
  
          Try   
              
'删除代码中的所有注释头   
              Dim objMovePt As EditPoint   
              
Do While start.FindPattern("<%'", , objMovePt)   
                  
If objMovePt.GreaterThan(endpt) Then   
                      
Exit Do   
                  
End If   
  
                  start.Delete(
3)   
              
Loop   
  
              
'只删除行尾的注释尾   
              start = selection.TopPoint.CreateEditPoint()   
              
Do While (start.LessThan(endpt))   
                  
Dim len As Long = start.LineLength()   
                  
Dim num As Long = start.Line()   
  
                  start.MoveToLineAndOffset(num, 
len - 2)   
                  
If start.GetText(3<> " %>" Then   
                      
MsgBox("L" & num & "行的最后几个字符不是  %> ,请按CTRL+Z恢复原来的代码!")   
                      
Exit Do   
                  
End If   
  
                  start.Delete(
3)   
  
                  start.LineDown()   
                  start.StartOfLine()   
              
Loop   
          Finally   
              
'If an error occured, then need to make sure that the undo context is cleaned up.   
              'Otherwise, the editor can be left in a perpetual undo context   
              DTE.UndoContext.Close()   
          
End Try   
  
      
End Sub 
  该函数分两个部分,第一个部分把代码中的所有注释头全部删掉,第二部分则是删除注释尾。  
  与AddHTMLcomment()相比,逻辑稍微简单一些。其中稍微值得注意的地方是,该函数对行尾有  
  特殊要求,即在行尾的最后三个字符必须是注释尾    
     
 
 
3. 请存盘后关闭宏编辑器  
  3.1 请按「Ctrl+S」键,然后从主菜单"File"中选择"Close And Return"关闭编辑器




4. 打开Visual Studio的“Macro Explorer“  
  4.1 在主菜单中作以下的选择  
      View → Other Windows → Macros Explorer


4.2 此时、在Visual Studio IDE的右侧则会出现Marcos Explorer树状列表


5. 选择完整的一段代码给它添加注释以及取消注释  
  5.1 用鼠标选择要添加注释的代码


5.2 双击Macros Explorer树中的AddHTMLcomment项目即可给这段代码添加注释


5.3 如果想取消注释,则双击Macros Explorer树中的DelHTMLcomment项目即可为选择的代码取消所加的注释


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


我的个人简历第一页 我的个人简历第二页