Любой способ в Visual Studio программно изменить выбранный текст редактора в то время как в редакторе?Фрагменты кода?Макросы? - PullRequest
0 голосов
/ 29 декабря 2018

Я хотел бы иметь возможность выделить часть текста и удалить любой ';'в выделенном разделе.

Я написал «окружение с фрагментом» для инкапсуляции выделенного текста, но также хотел бы прагматично изменить этот текст и не уверен, как.

Я используюРасширение "Snippet Designer" в визуальных студиях для создания фрагментов.

Я ожидаю, что выделенный текст " RunMethod1(var1); " будет преобразован в ".Then(() => RunMethod1(var1) ) ", то есть без точки с запятой.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

AutoHotKey смог сделать то, что мне было нужно, и оказался довольно надежным инструментом после ознакомления с синтаксисом.Спасибо за предложение Caius Jard.

Это был код, который я использовал для решения проблемы.

# p ::; Удерживая клавишу Windows и нажмите «P» ConvertToPromise ()

return

; ------------------------------------------------ ConvertToPromise ()
{

oCB: = буфер обмена;локальная переменная для сохранения исходного содержимого буфера обмена. Буфер обмена: =
отправить, ^ c
ClipWait, 1
nCB: = буфер обмена;получить выбранный текст.
mnCB: = EraseSemiColon (nCB)

буфер обмена: = mnCB
отправить,: = oCB;восстанавливает исходное значение буфера обмена.

}

; ------------------------------------------------- EraseSemiColon (stringText)
{
strVar: = stringText
ifiedSt: = StrReplace (strVar, "`; "," ")

возврат, %ifiedSt%
}

0 голосов
/ 30 декабря 2018

Вы можете использовать следующую команду для Visual Commander , чтобы удалить любой ';'в выделении и окружите его «Затем» (язык: C #):

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
    {
        EnvDTE.TextSelection ts = DTE.ActiveDocument.Selection as EnvDTE.TextSelection;
        ts.Text = ".Then(() =>" + ts.Text.Replace(";", "") + ") ";
    }
}
...