Поделиться через


интерфейсы службы языка

Для любого языка программирования может существовать только один экземпляр службы языка одновременно. Однако одна служба языка может обслуживать несколько редактор.

Visual Studio не связывает службу языка с одним конкретным редактором. Поэтому при запросе операции службы языка необходимо указать соответствующий редактор в качестве параметра.

Общие интерфейсы, связанные со службами языка

Редактор получает путем вызова службы языка QueryService на соответствующем VSPackage. Идентификатор службы (sid), передаваемое в этот вызов определяет службу языка запрошено.

Можно реализовать интерфейсы службы языка в любом количестве различных базовых классов. Однако общий подход реализовывать следующие интерфейсы в одном классе.

IVsLanguageInfo интерфейс должен быть реализован во всех службах языка. Он предоставляет сведения о службе языка, например локализованное имя языка расширения имени файла, связанные со службой языка и как получить colorizer.

Дополнительные интерфейсы службы языка

Другие интерфейсы могут быть защищены с этой службой языка. Visual Studio запрашивает отдельный экземпляр этих интерфейсов для каждого экземпляра текстового буфера. Поэтому необходимо реализовать каждый из этих интерфейсов в собственном объекте. В следующей таблице перечислены интерфейсы, требующих одного экземпляра для каждого экземпляра текстового буфера.

Интерфейс

Описание

IVsCodeWindowManager

Управляет оформления окна, например панель кода раскрывающемся списке. Можно получить этот интерфейс с помощью GetCodeWindowManager метод. Одно IVsCodeWindowManager в поле кода.

IVsColorizer

Ключевые слова языка Colorizes и разделители. Можно получить этот интерфейс с помощью GetColorizer метод. IVsColorizer вызывается во время рисования. Избегайте вычислени-интенсивнейший работы внутри IVsColorizer или производительность может снизиться.

IVsMethodData

Предоставляет подсказки параметров IntelliSense. Когда служба языка распознает символ, указывающий, что данные метода должны отображаться в открытую круглую скобку, она вызывает SetMethodData метод, чтобы уведомить представление текста, что служба языка готова указать подсказку сведения о параметрах. Представление текста, после чего вызывает обратно в службу языка, используя методы IVsMethodData интерфейс для получения необходимых сведений указать подсказку.

IVsCompletionSet

Предоставляет завершение выписки IntelliSense. Когда служба готова для отображения списка завершения языка, он вызывает UpdateCompletionStatus метод представления текста. Представление текста, после чего вызывает обратно в службу языка с помощью методов IVsCompletionSet объект.

IVsTextViewFilter

Разрешает для изменения представления текста с помощью обработчика команды. Класс, в котором реализуется IVsTextViewFilter также должен реализовывать интерфейс IOleCommandTarget интерфейс. Получает представление текста AddCommandFilter объект путем запроса IVsTextViewFilter объект, который передается в IOleCommandTarget метод. Должен иметь одно IVsTextViewFilter объект для каждого представления.

IOleCommandTarget

Перехватывает эти пользовательские типы команд в поле кода. Выход из элемента управления IOleCommandTarget реализация, чтобы обеспечить пользовательские данные завершения и просмотр изменений

Передавать свое AddCommandFilterобъект к представлению текста, вызов IOleCommandTarget .

См. также

Основные понятия

контрольный список: Создание службы языка

Другие ресурсы

Инициализация службы языка