Моя проблема
Я пытаюсь создать расширение для Visual Studio, которое позволяет редактировать код для каждой функции, а не для каждого файла. Я в основном пытаюсь отобразить код аналогично Canvas Microsoft Debugger.
Мне интересно, как размещать несколько редакторов Visual Studio в одном окне (я считаю, что в Windows реализовано IVsWindowFrame). Функцию, которую я за ней, можно увидеть ниже:
Каждое окно редактора сохраняет типичную функциональность и взаимодействует с сторонними расширениями, как ожидалось. (Например, VsVim функционирует правильно в этих окнах).
Что я пробовал
Я провел почти две недели, исследуя и пробовал этот материал, и у меня много проблем с выяснением, какие сервисы, интерфейсы и классы я буду использовать.
Чтение через MSDN
Во-первых, большая часть документации обсуждает, как редактировать одиночное окно редактора и добавлять украшения, метки, поля и т.д. t обсуждать возможность появления нескольких редакторов в окне окна.
Я просмотрел документацию на большом количестве интересующих меня интерфейсов, включая IVsTextBuffer
, IVsTextView
и IVsInvisibleEditor
. К сожалению, я не могу заставить некоторые из этих интерфейсов хорошо играть вместе.
В верхней части этого, как правило, превосходная MSDN крайне не хватает в этой области. Многие интерфейсы содержат только список членов, даже без основного замечания о предполагаемом использовании и функциональности. (IComponentModel, например).
Многие интерфейсы ссылаются на набор Примеры редактора, но код не может быть прочитан или загружен на MSDN. По-видимому, он поставляется с Visual Studio 2005, но у меня нет этой версии Visual Studio, и я не могу ее найти.
Взаимодействие с IVsUIShell
Я могу получить доступ ко всем открытым окнам, используя IVsUIShell.GetDocumentWindowEnum();
Я вижу, что существует метод IVsUiShell.CreateDocumentWindow(), но я совершенно не знаком с параметрами, которые он принимает, или если это правильно путь вниз.
Что мне нужно сделать
- Программно создать прикрепляемую оконную панель
- Программно добавить редакторов в это окно. (И убедитесь, что они правильно зарегистрированы в Visual Studio, рабочей таблице и т.д.).
Edit:
Извините, я должен был расширить свои шаги. Когда я сказал, что мне нужно зарегистрироваться в рабочей таблице документов и Visual Studio, это потому, что я хочу редактировать исходный документ в своем настраиваемом редакторе. Ниже приведен краткий пример функциональности, доступной в Canvas отладчика, которую я пытаюсь воссоздать:
http://i.imgur.com/aYm8A5E.gif (я не могу вставить .gif)
В качестве альтернативы:
Если кто-нибудь знает, где я могу найти образцы редактора, включенные в Visual Studio 2005, например Пример основного редактора, я уверен, что смогу Извлеките это. В документации MSDN нет образцов кода, касающихся этих интерфейсов, что затруднило мою работу.