如何在 Visual Studio 2010 中自动折叠某些评论?

Posted

技术标签:

【中文标题】如何在 Visual Studio 2010 中自动折叠某些评论?【英文标题】:How to auto-collapse certain comments in Visual Studio 2010? 【发布时间】:2011-04-09 01:10:10 【问题描述】:

我的一位同事使用 abomination 文本编辑器,该编辑器通常会在整个代码中留下注释块。不用说,这让我很生气。评论块如下所示:

/* EasyCODE ) */
/* EasyCODE ( 0 
WndProc */
/* EasyCODE F */

即它们都以EasyCODE 开头,并且大多数跨越几行。值得庆幸的是,VS2010 可以折叠评论块,所以我不必必须一直看到它们。

有没有办法实现自动化?一种自动折叠所有这些可怕的EasyCODE 块的方法将是天赐之物!

【问题讨论】:

有没有办法让你的同事每次使用所说的可憎之物时都会让他感到震惊? :) 如果它用不可读和无用的 cmets 使每个人的代码变得混乱,也许更好的解决方案是说服您的同事停用此功能,或更改他的编辑器。 @ereOn:可悲的是,那个编辑器严重依赖这些 cmets。它用奇怪的、机器可读的 cmets 代替了漂亮的、人类可读的代码。 只是出于好奇,那个编辑器是什么? @ereOn:嗯,它叫EasyCODE。它基本上是基于结构图的编程,它使用这些注释块来构建代码。 【参考方案1】:

您无法自动执行此操作。但是,您可以选择一段代码,然后从上下文菜单中选择大纲/隐藏选择 (Ctrl+M Ctrl+H)。所以选择丑陋的 cmets 并这样做。

取自here。

【讨论】:

【参考方案2】:

这是一个应该做的宏。有一些更奇怪的 EasyCode cmets,它没有捕捉到,但大多数情况下都能解决问题。

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a ' remove for VS2008
Imports EnvDTE100 ' remove for VS2008
Imports System.Diagnostics
Imports System.Collections.Generic

Public Module HideEasyCODEComments
    ''
    '' Collapse all EasyCODE comment blocks
    ''
    Sub ToggleSummaryCommentsOutlineExpansion()
        If (DTE.ActiveDocument Is Nothing) Then
            Exit Sub
        End If

        If (DTE.UndoContext.IsOpen) Then
            DTE.UndoContext.Close()
        End If

        DTE.SuppressUI = True

        Try
            DTE.UndoContext.Open("ToggleSummaryCommentsOutline")
        Catch
        End Try

        Dim objSelection As TextSelection = DTE.ActiveDocument.Selection
        Dim line As Integer = objSelection.CurrentLine
        objSelection.StartOfDocument()

        ' find all EasyCODE blocks
        While objSelection.FindText("^.*\/\* EasyCODE.*((\n.*\*\/)|(\n.*\/\*.*)|(\n\/\/.*))*", vsFindOptions.vsFindOptionsRegularExpression)
            DTE.ExecuteCommand("Edit.HideSelection")
        End While
        objSelection.StartOfDocument()
        objSelection.GotoLine(line)

        DTE.UndoContext.Close()
        DTE.SuppressUI = False
    End Sub

End Module

在宏IDE(Tools->Macros->Macro IDE)中新建一个宏,把上面的代码粘贴进去,然后给它分配一个快捷键(Tools->Options->Environment->Keyboard,搜索它在列表框中)。点击键盘快捷键,所有 EasyCode cmets 都将消失。

玩得开心!

【讨论】:

宏有什么作用?任何链接

以上是关于如何在 Visual Studio 2010 中自动折叠某些评论?的主要内容,如果未能解决你的问题,请参考以下文章

如何在visual studio中自定义dataGridView单元格

在 Visual Studio Code 中自定义语法突出显示

如何在 Visual Studio 2008 或 Visual Studio 2010 中设置 JavaScript 断点

如何在 Visual Studio 2010 中使用 Visual Studio 2008 创建的 DLL?

visual studio 2010不能正确安装,急求

关于在Visual Studio2010中如何卸载Visual Asixist这个插件?为啥将它卸载后Visual Studio启动后仍然有