如何解决需要有关通过按键宏格式化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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。