Я создаю нечто похожее на Server Explorer для Apache CouchDB. Одна из необходимых вещей - возможность редактировать определения представлений CouchDB, которые в CouchDB являются функциями JavaScript.
Как я могу заставить Visual Studio использовать мой объект для извлечения и сохранения содержимого функции JavaScript, но при этом использовать все остальное - я доволен самим редактором и не собираюсь писать свой собственный редактор / языковой сервис, и т. д. Последнее будет гораздо большим усилием, чем того требует этот проект
Редактировать
После дальнейших копаний я все еще застрял. Вот что я знаю: интерфейс IVsUIShellOpenDocument
предоставляет метод OpenStandardEditor
, который можно использовать для открытия стандартного редактора Visual Studio. В качестве одного из параметров этот метод принимает указатель на интерфейс IUnknown объекта данных документа. Предполагается, что этот объект реализует несколько интерфейсов, описанных во многих местах по всему MSDN.
Visual Studio SDK также предоставляет пример реализации объекта данных документа VsTextBufferClass
. Я могу создать экземпляр этого класса, и когда я передаю указатель на экземпляр в OpenStandardEditor
, я вижу свой редактор, и он, кажется, работает нормально.
Когда я пытаюсь реализовать свой собственный класс, реализующий те же интерфейсы (IVsTextBuffer
, VsTextBuffer
, IVsTextLines
), метод OpenStandardEditor
возвращает успех, но VS взрывается при вызове editor.Show()
с нарушением доступа.
Я подозреваю, что VsTextBufferClass также реализует некоторые другие интерфейсы, но не в C #, а скорее в старом добром COM-стиле. Я просто не знаю, какие из них.
Есть мысли?