Типизированные шаблоны стиля CodeRush для ReSharper - PullRequest
5 голосов
/ 27 декабря 2011

Я большой поклонник CodeRush и их философии в отношении шаблонов. На моей нынешней работе мы будем делать большое количество пар, и консенсус - это предпочтение ReSharper (v6), что в значительной степени ставит меня в место, где я ДОЛЖЕН использовать его.

Я не собираюсь начинать войну CodeRush / Resharper здесь. Есть много вещей, которые могут понравиться в Resharper, но есть одна вещь, с которой мне трудно пройти в ReSharper.

Механизм шаблонов Live от ReSharper, как ни крути, не имеет встроенных понятий для того, чтобы печатать так, как это делает CodeRush (по крайней мере, как я могу сказать). Простой пример заключается в следующем. Для генерации следующего кода:

public String MyStringProperty { get; set; }

В CodeRush ... Я мог бы напечатать «as» («a» для AutoProperty и «s» для строки), а затем просто изменить имя свойства.

В ReSharper мне нужно набрать «prop» (для свойства), затем задать тип и имя.

Похоже, что в живых шаблонах ReSharper нет аналогичных понятий для распознавания типов или сочетаний клавиш. Таким образом, похоже, что нет ничего похожего на многочисленные двух- и трехсимвольные шаблоны, чтобы получить предварительно введенные переменные, свойства, методы и т. Д. *

Итак, наконец, вопрос после всего этого фона. Есть ли способ повторить это понятие «типизированные шаблоны» в ReSharper, не создавая новый живой шаблон для каждой комбинации шаблон / тип?

Ответы [ 2 ]

4 голосов
/ 28 декабря 2011

В настоящее время ReSharper не поддерживает шаблон использования, на который вы ссылаетесь. Однако , есть два варианта, которые я могу придумать, чтобы сделать это возможным.

  • Один вариант - генерировать живые шаблоны для всех распространенных случаев использования.Я использую этот файл , но учтите, что он не был протестирован с R # 6.1.
  • Другой вариант - просто написать плагин для этого.В ReSharper SDK есть пример HtmlZen, который делает нечто очень похожее, то есть расширяет строку DSL в кусок кода.Вы можете легко сделать то же самое для мнемонического расширения.

Обратите внимание, что какой бы вариант вы ни выбрали, вы не получите возможность расширять шаблоны нажатием Пробел - это просто невозможно в ReSharper прямо сейчас.

Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы.

Дмитрий

3 голосов
/ 28 декабря 2011

Я не думаю, что можно заставить Resharper иметь шаблон, который принимает имя из одной буквы, за которым следует тип из одной буквы. Вам нужно будет создать новый шаблон для каждого типа, например, 'as' и определите его как:

public string $NAME$ { get; set; }

Вы можете изменить место, где оно доступно, то есть файлы C #, где разрешено объявление члена типа.

Вы можете переименовать шаблон «prop» в «a», а затем набрать: «a», TAB, «s», TAB, TAB, «property_name», TAB

...