Visual Studio - 如何在运行宏时禁用autoformat / correct?

时间:2009-07-27 15:57:06

标签: visual-studio macros autocorrect

运行更改所选文本的宏时,标签会自动关闭并且文本格式化。我该如何防止这种情况发生?

例如,将文本包装在标记中:

DTE.ActiveDocument.Selection.Text = String.Format("<tag>{0}</tag>", DTE.ActiveDocument.Selection.Text)

结束时有两个结束标记:

<tag>Text</tag></tag>

更奇怪的是,多行失败了:

<li>One</li>
<li>Two</li>
<li>Three</li>

结束为

<ul>            <li>One</li>
            <li>Two</li>
                        <li>Three</li></li></ul>

我该怎样防止这种情况?从最后一个示例可以看出,格式错误,还有一个额外的</li>

2 个答案:

答案 0 :(得分:4)

您需要插入文本而不是分配文本:

Try
    DTE.UndoContext.Open("InsertSomeCode")
    Dim ts As TextSelection = CType(DTE.ActiveDocument.Selection, TextSelection)
    ts.Insert(String.Format("<tag>{0}</tag>", ts.Text))
Finally
    DTE.UndoContext.Close()
End Try

答案 1 :(得分:0)

我认为执行此操作的唯一方法是为您的编辑打开撤消事务。这应该暂停所有格式化操作,直到事务完成。这样您就可以在格式化之前进行多次编辑操作。

这是OpenLinkedUndo方法文档