2009-07-27 6 views
3

Lors de l'exécution d'une macro qui modifie le texte sélectionné, les étiquettes sont automatiquement fermées et le texte est formaté. Comment puis-je empêcher cela?Visual Studio - Comment désactiver autoformat/correct lors de l'exécution de la macro?

Par exemple, le texte enveloppant dans une balise:

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

se termine avec deux balises de fermeture:

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

Même étranger, plusieurs lignes échoue:

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

Une extrémités comme

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

Comment puis-je empêcher cela? Comme on peut le voir dans le dernier exemple, le formatage est incorrect et il y a un

Répondre

0

Je pense que la seule façon d'y parvenir est d'ouvrir une transaction d'annulation pour votre édition. Cela devrait suspendre toutes les opérations de formatage jusqu'à ce que la transaction soit terminée. Cela vous permettra de faire plusieurs opérations d'édition avant un format.

Voici la documentation OpenLinkedUndo méthode

+0

Aucun code exemple, il ... aurait vouloir annuler l'action de la macro (si cela arrête cela de se produire c'est) – SamWM

4

Vous aurez besoin d'insérer le texte plutôt que de lui attribuer:

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 
Questions connexes