Конфликт между автозаполнением ReSharper и GitHub Copilot, одновременно использующими Tab ⇐ C#

Место общения программистов C#
Anonymous
Конфликт между автозаполнением ReSharper и GitHub Copilot, одновременно использующими Tab

Сообщение Anonymous »

Я столкнулся с проблемой при использовании ReSharper и GitHub Copilot в Visual Studio 2022. Оба эти инструмента предлагают варианты кода, что невероятно полезно, но иногда они конфликтуют, что приводит к непригодному для использования коду.
  • Когда я начинаю вводить код, например, если я ввожу букву «i», ReSharper немедленно предлагает оператор «if». С другой стороны, GitHub Copilot предоставляет полный оператор, который соответствует контексту того, что я пытаюсь сделать, и оба отображаются одновременно; ReSharper с его контекстным меню и Copilot со встроенным предложением.
Предложение ReSharper:

Код: Выделить всё

if (expr)
{

}
Там, где курсор перемещается в выражение, чтобы я мог заполнить выражение.
Предложение второго пилота:

Код: Выделить всё

if (Logger.IsDebugEnabled)
Logger.Info($"GetNearestClimate returned: {climateData}");
  • Чтобы решить эту проблему и определить приоритетность предложений GitHub Copilot, я уже включил настройку «Отключить автоматическое завершение ReSharper, пока отображается предложение GitHub Copilot». Я ожидаю, что когда я нажму клавишу «Tab», чтобы принять предложение GitHub Copilot, оно будет интегрировано в мой код, а меню ReSharper закроется и не будет использоваться.
Однако проблема возникает, когда я нажимаю «Tab». Удивительно, но и ReSharper, и GitHub Copilot одновременно приняли это предложение. ReSharper следует своему шаблону для операторов «if», а GitHub Copilot добавляет часть своего кода, что приводит к путанице непригодного для использования и конфликтующего кода.

Код: Выделить всё

if (expr)
{

}                    Logger.Info($"GetNearestClimate returned: {climateData}");
Что я могу сделать, чтобы в таких ситуациях предложения GitHub Copilot имели приоритет над предложениями ReSharper. Как мне справиться с этим конфликтом и гарантировать, что предложения кода GitHub Copilot будут последовательно использоваться, сохраняя при этом преимущества ценных функций ReSharper, таких как само контекстное меню?
Предпочтительно, чтобы Copilot использовал каждый раз, когда я нажимаю «Tab», в то время как ReSharper будет потреблять энергию всякий раз, когда я нажимаю пробел или ввожу, как это уже происходит - поэтому просто отключил функцию «Tab» для ReSharper, однако мне не удалось найти такой вариант.
Я уже просмотрел настройки и попытался включить и отключить параметр «Отключить автоматическое завершение ReSharper, пока отображается предложение GitHub Copilot». вариант.
Я также пытался выяснить, можно ли отключить клавишу Tab для ReSharper, но безуспешно.
Я бы очень хотел оцените любые идеи, советы или обходные пути, не отключая функции для решения этой проблемы. Спасибо за вашу помощь.

Подробнее здесь: https://stackoverflow.com/questions/774 ... ing-tab-at

Вернуться в «C#»