Visual Studio Package/Macro: как объединить несколько текстовых операций в одну отмену

У меня есть пакет Visual Studio (2010), который объединяет несколько текстовых операций, например, он вставляет пользовательские свойства в мои файлы csharp.

Этих вставок может быть довольно много, и я хотел бы иметь возможность полностью изменить эффект Команды одним нажатием кнопки отмены. Есть ли способ сделать это?

1 ответ

Решение

Да. Если у вас есть действительный

ITextBuffer buffer;

Вам просто нужно получить ITextEdit, вот так:

var textEdit = buffer.CreateEdit();

Тогда ты можешь:

textEdit.Delete(...)
textEdit.Insert(....)

и когда вы закончите, вы должны

textEdit.Apply();

или же

textEdit.Cancel();

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

Надеюсь это поможет.

Другие вопросы по тегам