Visual Studio: исключить выделение из стека отмены / повтора - PullRequest
22 голосов
/ 30 ноября 2009

В Visual Studio есть что-то действительно раздражающее: когда я раскрываю или сворачиваю область метода или кода, это действие помещается в стек отмены. Поэтому, если я отредактирую некоторый код в методе, затем сверну этот метод, а затем захочу отменить свое изменение, мне придется отменить дважды: один раз для действия свертывания и один раз для изменения кода. Это может ОЧЕНЬ сбивать с толку, если после редактирования кода вы развернули или свернули несколько вещей, редактор продолжает переходить в разные места, и вы не знаете, отменены ли ваши изменения или нет ...

Итак, мой вопрос: возможно ли отключить это поведение? то есть, что в стеке отмены учитываются только изменения в коде?

PS: я использую Visual Studio 2008


РЕДАКТИРОВАТЬ: если это поведение вас тоже раздражает, проголосуйте, чтобы исправить это на UserVoice !

Ответы [ 6 ]

4 голосов
/ 21 октября 2013

Вы можете проголосовать за исправление в Visual Studio UserVoice .

2 голосов
/ 22 июня 2018

Я немного покопался и обнаружил, что на самом деле в Visual Studio есть возможность отключить это поведение, и, тем не менее, оно, похоже, нигде не отображается в пользовательском интерфейсе. Однако вы можете установить его программно, и я проверил, что он работает, так что это (технически) возможно.

Варианты:

DefaultTextViewOptions.OutliningUndoOptionId

и вы установите его так:

textView.Options.SetOptionValue(DefaultTextViewOptions.OutliningUndoOptionId, false);

С этой информацией можно написать очень простое расширение Visual Studio, чтобы переключать этот параметр для всех новых ITextView экземпляров.

2 голосов
/ 15 декабря 2009

Во-первых, кажется, что не все операции выделения записываются в стек отмены / возврата.

  • Расширение Toggle Outlining (CTRL + M / CTRL + M) записывается в стек
  • Переключение всех контуров (CTRL + M / CTRL + L) записывается в стек
  • Свернуть до определений (CTRL + M / CTRL + O) НЕ записано в стеке

Итак, насколько я знаю, невозможно избежать записи операций Toggle в стек отмены / повтора в Visual Studio 2008.

Единственная опция, которая у вас есть - включить / отключить выделение для каждого типа источника. Для C # выделение может быть включено / отключено в Tools > Options > Text Editor > C# > Advanced с помощью флажка "Enter outlining mode when files open".

2 голосов
/ 15 декабря 2009

Я не верю, что есть способ отключить это поведение.

В качестве альтернативы значки панели инструментов отмены и повтора имеют раскрывающиеся списки истории, которые позволяют визуально увидеть сводку последних изменений, которые вы бы отменили или повторили. Иногда это может помочь гарантировать, что вы отменяете (или переделываете) то, что ожидаете.

Поскольку этого не всегда достаточно, чтобы точно знать, что это за изменения (в истории отмены отображается только сводная информация), решение, которое я иногда использую для решения этой проблемы, состоит в комбинировании отмены (Ctrl-Z) и повторения (Ctrl-Y ) и снова отмените. Первая отмена перемещается туда, где произошло изменение (и отменяет это изменение). Повторить отменяет отмену (которая по существу повторяет последнее сделанное изменение). И последняя отмена выполнит отмену снова с прокруткой окна до места, где я на самом деле вижу происходящее отмену, и может подтвердить, было ли это изменение, которое я ожидал отменить. Это не очень эффективно, но может быть очень эффективно, чтобы гарантировать, что код находится в состоянии, которое действительно ожидается.

1 голос
/ 11 марта 2019

Я создал расширение Disable Outlining Undo , которое исключает операции развертывания и свертывания при записи в стек отмены / повтора в Visual Studio 2017 / 2019.

Спасибо Рику Сладки за идею!

1 голос
/ 10 декабря 2009

Лучшее решение, которое я могу предложить, - отключить выделение, используя CTRL + M, а затем CTRL + P.

...