Extensibilité VS 2010: créez une extension pour envelopper automatiquement le texte sélectionné (code) dans les commentaires et ajouter un commentaire au-dessus

StackOverflow https://stackoverflow.com/questions/5391176

Question

J'essaie de développer une extension qui fonctionnera de la même manière que le bouton de la barre d'outils Commentaire dans VS 2010, mais je souhaite marquer tout le texte comme Commenté et mettre un commentaire au-dessus.

Voici un exemple.Je sais que c'est simple, mais c'est juste beaucoup plus facile.Mon idée est d'avoir un certain nombre de boutons de barre d'outils supplémentaires pour marquer le code non utilisé, marquer le code qui a des bogues ... et des choses comme ça ... et cela peut être ramassé dans la fenêtre des tâches car il commence par TODO:

        // TODO MARTIN CODE NO LONGER USED
        /*if (myItem)
        {
            txtTest.Enabled = false;
            txtTest1.Value = 0;
            btnOk.Enabled = false;
        }*/

Je suppose que je dois utiliser:

       DTE.ActiveDocument

et:

       (((TextDocument)myDoc).Selection.Text).

Ensuite, pour réécrire le code, que dois-je faire?

Était-ce utile?

La solution

Ce n'est pas exactement une réponse à votre question, mais c'est une autre option que vous pourriez envisager.Vous pouvez définir des macros qui effectuent chacune des opérations dont vous avez besoin, puis les affecter aux boutons de la barre d'outils.Un exemple de macro serait:

Sub TODOComment()
    DTE.ExecuteCommand("Edit.CommentSelection")
    DTE.ActiveDocument.Selection.LineUp()
    DTE.ActiveDocument.Selection.EndOfLine()
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.Text = "// TODO "
End Sub

Cela utilise la fonctionnalité intégrée de la section de commentaire, puis monte à la ligne avant la sélection, insère un retour à la fin de la ligne et ajoute un commentaire «TODO».Il y a donc des lacunes évidentes (ne l'exécutez pas en haut du fichier), mais cela ferait plus ou moins ce que vous recherchez.La suppression des commentaires serait essentiellement la même chose (décommentez tout, puis supprimez la ligne du haut).

Je ne connais pas très bien le moteur d'automatisation, donc ce que j'ai tendance à faire si je veux apprendre à faire ce genre de chose est d'enregistrer une macro temporaire, d'effectuer les activités qui m'intéressent, puis d'ajuster lesortie pour obtenir les résultats que je recherche.Cela a tendance à gagner un peu de temps à parcourir la documentation pas toujours évidente.

Autres conseils

Enregistrez simplement une macro temporaire pour faire ce que vous voulez et collez-la dans votre macro, en ajustant si nécessaire.Dans ce cas, je pense que c'est ce que vous vouliez faire:

    DTE.ExecuteCommand("Edit.CommentSelection")
    DTE.ActiveDocument.Selection.LineUp()
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.Text = "// TODO Whatever"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top