2009-07-27 72 views
3

當運行改變所選文本的宏時,標籤會自動關閉並且文本被格式化。我怎樣才能防止這種情況發生?Visual Studio - 如何在運行宏時禁用autoformat/correct?

例如,在一個標籤文本換行:

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> 

的端部up as

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

我該如何預防?從最後一個例子可以看出,格式是錯誤的,並且有一個額外的</li>

回答

0

我認爲唯一的方法是爲您的編輯打開撤銷事務。這應該暫停所有的格式化操作,直到事務完成。這將允許您在格式之前執行多個編輯操作。

這裏是文檔OpenLinkedUndo方法

+0

沒有示例代碼有...會想要撤消宏操作(如果這停止了發生的事情) – SamWM 2009-07-28 09:43:27

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 
相關問題