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


Цветовая маркировка синтаксиса в специализированных редакторах

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

Требования к цветописи

Все редакторы, реализующие цветовую службу языка, должны:

  1. Используйте объект, реализующий IVsTextBuffer для управления цветом текста, и объект, реализующий IVsTextView для предоставления представления документа текста.

  2. Получите интерфейс для определенной языковой службы, запросив поставщика услуг VSPackage с помощью идентификатора GUID службы языков.

  3. SetLanguageServiceID Вызовите метод реализуемого IVsTextBufferобъекта. Этот метод связывает языковую службу с IVsTextBuffer реализацией, которую VSPackage использует для управления цветным текстом.

Использование цветового редактора основного редактора цветовой службы языка

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

Интегрированная среда разработки прозрачно:

  • Вызывает цветизатор по мере необходимости для синтаксического анализа и анализа текста при добавлении или изменении в реализации IVsTextBuffer.

  • Гарантирует, что отображение, предоставленное представлением документа, предоставленное IVsTextView реализацией, обновляется и переопределено с помощью сведений, возвращаемых цветовителем.

Использование цветизатора языковой службы не основного редактора

Кроме того, экземпляры редактора, отличные от основных, могут использовать службу синтаксической цветовой обработки синтаксиса службы, но они должны явно извлекать и применять цветизатор службы, а также перезаписываться сами представления документов.

Для этого редактору, отличному от ядра, необходимо:

  1. Получите объект цветизатора языковой службы (который реализует IVsColorizer и IVsColorizer2). VSPackage делает это путем вызова GetColorizer метода в интерфейсе языковой службы.

  2. ColorizeLine Вызовите метод, чтобы запросить, чтобы определенный диапазон текста был цветным.

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

  3. Используйте сведения о цветизации, возвращаемые ColorizeLine для перезаписи и отображения текста.

Примечание.

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