При записи Плагина Visual Studio 2010 года, хотел бы показать панель инструментов как Resharper в редакторе кода

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

http://www.axtools.com/products-vs2010-extensions.php?tab=selection-popup

Я хотел бы знать:

  1. Есть ли anu шаблон Visual Studio, который помогает запуститься? Я пробую "Украшением Области просмотра Редактора", но я не уверен в этом.

  2. Я должен разработать от запуска панель инструментов, или я могу показать некоторые кнопки от системной панели инструментов? В axtools плагине из ссылки это - изготовленная на заказ панель инструментов или система один?

  3. Как обнаружить, что текст был выбран?

У меня больше нет вопросов в настоящий момент. Я - довольно веб-разработчик настолько пишущий плагин Visual Studio, это - новая вещь для меня.

Заранее спасибо.

10
задан Tomasz Jaskuλa 6 February 2010 в 12:41
поделиться

1 ответ

Я могу ответить на две части этого вопроса:

  1. Шаблон «Редактор текстовых украшений», поставляемый с SDK, - хорошее место для начала. Когда у вас есть это, взгляните на этот визуальный менеджер, который я написал для небольшой демонстрации фальшивого набора нескольких пользователей: AgentBadgeVisualManager.cs . Это показывает вам, как разместить какие-либо украшения рядом с текстом (но не прямо под ним). Вы также захотите взглянуть на файл ViewCreationListener.cs , в котором есть AdornmentLayerDefinition для визуального менеджера (самое важное, что нужно изменить, по умолчанию вы получаете с шаблон проекта - это атрибут Order , чтобы убедиться, что ваше украшение отображается поверх любого текста).
  2. Я понятия не имею об этом, извините :( Вы захотите, чтобы это был какой-то WPF UIElement , но в остальном это действительно зависит от вас.
  3. Из ] ITextView , который у вас будет как часть IWpfTextViewCreationListener , реализованный как часть примера (он передается в AgentBadgeVisualManager ), вы можете подписаться на SelectionChanged событие вроде этого:

    view.Selection.SelectionChanged + = (sender, args) => / * здесь вызываются методы для обновления вашего украшения * /;

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

Для получения более общей информации о расширяемости вы можете проверить другие расширения, которые я написал на моей странице github , прочитать о том, как я их написал в моем блоге , проверить страницу примеров VSX или страницу примеров редактора на codeplex .

4
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: