Расширяемость VS 2010: создайте расширение для автоматического переноса выделенного текста (кода) в комментарии и добавления комментария над ним. - PullRequest
6 голосов
/ 22 марта 2011

Я пытаюсь разработать расширение, которое будет работать аналогично кнопке на панели инструментов «Комментарии» в VS 2010, но я хочу пометить весь текст как закомментированный и поместить над ним комментарий.

Вот пример. Я знаю, что это просто, но это намного проще. Моя идея состоит в том, чтобы иметь ряд дополнительных кнопок панели инструментов, чтобы пометить код, который больше не используется, пометить код с ошибками ... и тому подобное ... и это можно выбрать в окне задач, потому что оно начинается с TODO:

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

Полагаю, мне нужно использовать:

       DTE.ActiveDocument

и

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

Затем, чтобы снова написать код, что мне нужно сделать?

Ответы [ 2 ]

4 голосов
/ 29 марта 2011

Это не совсем ответ на ваш вопрос, но это еще один вариант, который вы могли бы рассмотреть. Вы можете определить макросы, которые выполняют каждую нужную вам операцию, а затем назначить их кнопкам панели инструментов. Пример макроса будет:

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

При этом используется встроенная функция секции комментариев, затем она поднимается до строки перед выбором, вставляет возврат в конце строки и добавляет комментарий «TODO». Таким образом, есть очевидные недостатки (не запускайте его в верхней части файла), но он будет делать более или менее то, что вам нужно. Раскомментируйте по существу то же самое (раскомментируйте все, затем удалите верхнюю строку).

Я не очень хорошо знаю механизм автоматизации, поэтому я склонен делать, если я хочу научиться делать такие вещи, - записывать временный макрос, выполнять интересующие меня действия, затем настраивать вывод, чтобы получить результаты, которые я после. Это позволяет сэкономить немного времени на поиске не всегда очевидной документации.

0 голосов
/ 31 марта 2011

Просто запишите временный макрос, чтобы сделать все, что вы хотите, и вставьте его в свой макрос, настраивая при необходимости.В этом случае, я думаю, это то, что вы хотели сделать:

    DTE.ExecuteCommand("Edit.CommentSelection")
    DTE.ActiveDocument.Selection.LineUp()
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.Text = "// TODO Whatever"
...