интерфейсы службы языка
Для любого языка программирования может существовать только один экземпляр службы языка одновременно. Однако одна служба языка может обслуживать несколько редактор.
Visual Studio не связывает службу языка с одним конкретным редактором. Поэтому при запросе операции службы языка необходимо указать соответствующий редактор в качестве параметра.
Общие интерфейсы, связанные со службами языка
Редактор получает путем вызова службы языка QueryService на соответствующем VSPackage. Идентификатор службы (sid), передаваемое в этот вызов определяет службу языка запрошено.
Можно реализовать интерфейсы службы языка в любом количестве различных базовых классов. Однако общий подход реализовывать следующие интерфейсы в одном классе.
IVsLanguageBlock (необязательный параметр)
IVsLanguageInfo интерфейс должен быть реализован во всех службах языка. Он предоставляет сведения о службе языка, например локализованное имя языка расширения имени файла, связанные со службой языка и как получить colorizer.
Дополнительные интерфейсы службы языка
Другие интерфейсы могут быть защищены с этой службой языка. Visual Studio запрашивает отдельный экземпляр этих интерфейсов для каждого экземпляра текстового буфера. Поэтому необходимо реализовать каждый из этих интерфейсов в собственном объекте. В следующей таблице перечислены интерфейсы, требующих одного экземпляра для каждого экземпляра текстового буфера.
Интерфейс |
Описание |
---|---|
Управляет оформления окна, например панель кода раскрывающемся списке. Можно получить этот интерфейс с помощью GetCodeWindowManager метод. Одно IVsCodeWindowManager в поле кода. |
|
Ключевые слова языка Colorizes и разделители. Можно получить этот интерфейс с помощью GetColorizer метод. IVsColorizer вызывается во время рисования. Избегайте вычислени-интенсивнейший работы внутри IVsColorizer или производительность может снизиться. |
|
Предоставляет подсказки параметров IntelliSense. Когда служба языка распознает символ, указывающий, что данные метода должны отображаться в открытую круглую скобку, она вызывает SetMethodData метод, чтобы уведомить представление текста, что служба языка готова указать подсказку сведения о параметрах. Представление текста, после чего вызывает обратно в службу языка, используя методы IVsMethodData интерфейс для получения необходимых сведений указать подсказку. |
|
Предоставляет завершение выписки IntelliSense. Когда служба готова для отображения списка завершения языка, он вызывает UpdateCompletionStatus метод представления текста. Представление текста, после чего вызывает обратно в службу языка с помощью методов IVsCompletionSet объект. |
|
Разрешает для изменения представления текста с помощью обработчика команды. Класс, в котором реализуется IVsTextViewFilter также должен реализовывать интерфейс IOleCommandTarget интерфейс. Получает представление текста AddCommandFilter объект путем запроса IVsTextViewFilter объект, который передается в IOleCommandTarget метод. Должен иметь одно IVsTextViewFilter объект для каждого представления. |
|
Перехватывает эти пользовательские типы команд в поле кода. Выход из элемента управления IOleCommandTarget реализация, чтобы обеспечить пользовательские данные завершения и просмотр изменений Передавать свое AddCommandFilterобъект к представлению текста, вызов IOleCommandTarget . |
См. также
Основные понятия
контрольный список: Создание службы языка