Compartir a través de


Colores de sintaxis en editores personalizados

Los editores del SDK del entorno de Visual Studio, incluido el editor principal, usan servicios de lenguaje para identificar elementos sintácticos específicos y mostrarlos con colores especificados para una vista de documento determinada.

Requisitos de coloración

Todos los editores que implementan el colorizador de un servicio de idioma deben:

  1. Use un objeto que implementa IVsTextBuffer para administrar el texto que se va a colorear y un objeto que implementa IVsTextView para proporcionar una vista de documento del texto.

  2. Obtenga una interfaz a un servicio de lenguaje determinado consultando el proveedor de servicios de VSPackage mediante el GUID de identificación del servicio de idiomas.

  3. Llame al SetLanguageServiceID método del objeto que implementa IVsTextBuffer. Este método asocia el servicio de lenguaje a la IVsTextBuffer implementación que VSPackage usa para administrar el texto que se va a colorear.

Uso principal del editor del colorizador de un servicio de lenguaje

Cuando una instancia del editor principal obtiene un servicio de idioma con un colorizador, el análisis y la representación del texto por el colorizador de un servicio de lenguaje se produce automáticamente sin necesidad de intervención adicional en su parte.

El IDE es transparente:

  • Llama al colorizador según sea necesario para analizar y analizar texto a medida que se agrega o modifica en la implementación de IVsTextBuffer.

  • Garantiza que la visualización proporcionada por la vista de documento proporcionada por la IVsTextView implementación se actualiza y se vuelve a dibujar mediante la información devuelta por el colorizador.

Uso del editor no principal del colorizador de un servicio de lenguaje

Las instancias de editor no principales también pueden usar el servicio de colorización de sintaxis de un servicio de lenguaje, pero deben recuperar y aplicar explícitamente el colorizador del servicio y volver a dibujar sus vistas de documento.

Para ello, un editor no básico debe:

  1. Obtenga el objeto colorizador de un servicio de lenguaje (que implementa IVsColorizer y IVsColorizer2). VSPackage lo hace llamando al GetColorizer método en la interfaz del servicio de lenguaje.

  2. Llame al ColorizeLine método para solicitar que se colore un intervalo determinado de texto.

    El ColorizeLine método devuelve una matriz de valores, una para cada letra del intervalo de texto que se va a colorear. También identifica el intervalo de texto como un tipo determinado de elemento colorable, como un comentario, una palabra clave o un tipo de datos.

  3. Use la información de coloración devuelta por ColorizeLine para volver a dibujar y mostrar su texto.

Nota:

Además de usar el colorizador de un servicio de lenguaje, un VSPackage puede optar por usar el mecanismo de coloración de texto del SDK del entorno de Visual Studio de uso general. Para obtener más información sobre este mecanismo, consulte Uso de fuentes y colores.