Пользовательское расширение Intellisense

Я хочу написать дополнение к intellisense в Visual Studio.

Можно ли вообще продлить, из моих исследований я не нашел никаких образцов или документации по расширениям intellisense.

Как я могу заставить intellisense показать простое сообщение HelloWorld, подобное следующему (где во время выполнения для intellisense для String добавлен мир привет):

введите описание изображения здесь

    Таким образом, в Visual Studio 2010 и более поздних версиях API расширения, которые вы хотите использовать, находится в пространстве имен Microsoft.VisualStudio.Languages.IntelliSense. На высоком уровне вы хотите, чтобы MEF экспортировал ICompletionSourceProvider который предоставит нужные вам элементы. Здесь есть две хорошие сообщения в блоге, которые демонстрируют базовую технику.

    Есть две проблемы, с которыми вы столкнетесь, если хотите сделать свой скриншот реальностью. (Вот почему я попросил сценарий, так как мой совет здесь изменился.) Во-первых, этот метод юридически не позволяет добавить к существующему набору завершений, а скорее предоставить новый. В пользовательском интерфейсе это выглядит как две вкладки, такие как вкладки «Общие / Все» в редакторе Visual Basic. Это ограничение текущего API. Вы можете попытаться изменить один из существующих наборов завершений в своем источнике AugmentCompletionSource но я не знаю, будет ли это работать. В любом случае это определенно не поддерживается.

    Во-вторых, очень сложно узнать, когда и где порекомендовать вещи. В вашем примере вы сказали «IntelliSense для string ». К сожалению, в VS нет каких-либо API (в настоящее время), которые позволяют вам знать, что происходит до точки. Вы можете сделать несколько простых эвристик или попытаться реализовать какой-то синтаксический анализатор Good Enough ™ для вашего сценария, но теперь вам придется принять, что у вас не будет отличных результатов.

    Проект Roslyn нацелен на решение второй проблемы, поэтому вам может быть полезно изучить немного дальше. Поскольку мы ожидаем, что многие люди захотят расширить ICompletionSourceProvider завершение, мы также думаем о том, чтобы предлагать другие API расширяемости, поэтому вам не нужно откатывать ICompletionSourceProvider с нуля, но такие API не находятся в текущем CTP.

    [Отказ от ответственности: я член команды Roslyn, которая работает в IntelliSense.]

    Давайте будем гением компьютера.