【问题标题】:Visual Studio - How to disable autoformat/correct while running macro?Visual Studio - 如何在运行宏时禁用自动格式化/更正?
【发布时间】:2010-11-14 09:51:38
【问题描述】:

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

例如,在标签中换行:

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>

如何防止这种情况发生?从上个例子可以看出,格式不对,多了一个&lt;/li&gt;

【问题讨论】:

    标签: visual-studio macros autocorrect


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

      我认为这样做的唯一方法是为您的编辑打开一个撤消事务。这应该暂停所有格式化操作,直到事务完成。这将允许您在格式之前执行多个编辑操作。

      这里是文档 OpenLinkedUndo 方法

      【讨论】:

      • 那里没有示例代码...想要撤消宏操作(如果这阻止了这种情况的发生)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2011-11-04
      相关资源
      最近更新 更多