需要有关通过按键宏格式化c注释的方法的建议

|| 为了可视化,假装\'_ \'实际上是空白。 考虑以下
/*!
____This_is_a_comment_about_a_function
____and_its_purpose
____and_arguments
____and_things_of_that_ilk
*/
我想做的是选择那部分文本,按一个按钮,然后敲击! 更改为这种形式。
/*!____________________________________
____This_is_a_comment_about_a_function_
____and_its_purpose____________________
____and_arguments______________________
____and_things_of_that_ilk_____________
_____________________________________*/
我为什么要这个?第二种形式在检查代码时可以减轻我的视力。对我来说,要做些事情就足够了。 到目前为止,我尝试了什么?大多数情况下,使用Google搜索宏示例。尚未出现任何暗示可能会产生成果的方向的消息。尝试理解宏观理念有些困难。一些在这里搜索 我有什么问题 你能指出我的链接吗?给我一个提示?猜一下?我需要研究的内容以弄清楚如何做到这一点。 感谢您的关注。 邪恶。     
已邀请:
        您是否在寻找使用宏获取和替换所选文本的宏示例,以及与字符串填充等效的宏?我认为可以将这三件事结合起来,在每行上循环以构造最终的字符串以替换原始选择。 伪代码:
selText = getSelectedText();
selTextSplit = selText.split(\"\\n\");
selTextPadded = \"\";
for (i = 0; i < selTextSplit.length; i++) {
    selTextPadded += selTextSplit[i].padRight(80, \' \') + \"\\n\";
}
replaceSelectedText(selTextPadded);
    
        这就是我的工作。 感谢Jared向我指出了一个富有成效的方向。
Sub FormatEvil()

Try
    DTE.UndoContext.Open(\"Evil Style C Comment Padder\")

    Dim txtSel As TextSelection = DTE.ActiveDocument.Selection

    Dim currText As String = txtSel.Text

    If currText.Trim.StartsWith(\"/*\") AndAlso currText.Trim.EndsWith(\"*/\") Then

        Dim splitText() As String = Split(currText, vbCrLf)

        \' Trim all of the lines down
        For z = 0 To UBound(splitText) - 1
            splitText(z) = Trim(splitText(z))
        Next

        \' How long should the block be?
        Dim longestLine As Integer = 0
        For z = 0 To UBound(splitText) - 1
            If splitText(z).Length > longestLine Then
                longestLine = splitText(z).Length
            End If
        Next

        longestLine += 4

        \' build the value to replace the selection with.
        Dim selTextPadded As String = \"/*    \"
        selTextPadded = selTextPadded.PadRight(longestLine + 2) + vbCrLf

        For z = 1 To UBound(splitText) - 2
            splitText(z) = splitText(z).PadRight(longestLine - 2)
            selTextPadded += \"    \" + splitText(z).ToString() + vbCrLf
        Next

        splitText(UBound(splitText) - 1) = splitText(UBound(splitText) - 1).PadRight(longestLine - 2)
        selTextPadded += \"    \" + splitText(UBound(splitText) - 1).ToString() + vbCrLf

        Dim tmp As String = \"*/\"
        selTextPadded += tmp.PadLeft(longestLine + 2) + vbCrLf

        txtSel.Delete() \'This is to help keep formatting correct when multiline
        txtSel.Insert(selTextPadded, vsInsertFlags.vsInsertFlagsContainNewText)
    Else
        \' This is not a c comment
    End If
Finally
    DTE.UndoContext.Close()
End Try
End Sub
    

要回复问题请先登录注册