Colorear la sintaxis
Visual Studio utiliza un servicio de color para identificar los elementos del lenguaje y mostrarlos con los colores especificados en un editor.
modelo de Colorizer
El servicio de lenguaje implementa la interfaz de IVsColorizer , que se usan los editores. Esta implementación es un objeto independiente del servicio de lenguaje, como se muestra en la ilustración siguiente.
Modelo simple de colorizer
Nota
El servicio de colorear la sintaxis es independiente del mecanismo general de Visual Studio para colorear el texto.Para obtener más información sobre el mecanismo general de Visual Studio SDK que admite color, vea Fuentes.
Además de colorizer, el servicio de lenguaje puede proporcionar los elementos colorear personalizados utilizados por el editor haciendo anunciar que agrupa los elementos colorear personalizados de fuentes. Esto se puede hacer implementando la interfaz de IVsProvideColorableItems en el mismo objeto que implementa la interfaz de IVsLanguageInfo . Devuelve el número de elementos colorear personalizados cuando el editor llama al método de GetItemCount , y devuelve un elemento coloreable personalizado individual cuando el editor llama al método de GetColorableItem .
El método de GetColorableItem devuelve un objeto que implementa la interfaz de IVsColorableItem . Si el servicio de lenguaje admite 24 bits o de color de gran densidad, debe implementar la interfaz de IVsHiColorItem en el mismo objeto que la interfaz de IVsColorableItem .
cómo un VSPackage utiliza un lenguaje Service Colorizer
El Paquete debe obtener el servicio de lenguaje adecuado, que requiere el servicio de lenguaje VSPackage hacer lo siguiente:
utilice un objeto que implementa la interfaz de IVsTextBuffer para obtener el texto que se coloreará.
El texto se muestra normalmente mediante un objeto que implementa la interfaz de IVsTextView .
Obtiene el servicio de lenguaje consultando el proveedor de servicios de VSPackage para el servicio de lenguaje GUID. Los servicios se identifican en el registro mediante la extensión de archivo.
Asociar el servicio de lenguaje con IVsTextBuffer llamando a su método de SetLanguageServiceID .
El Paquete puede recopilar y utilizar el objeto de colorizer como sigue:
Nota
VSPackages que utiliza el editor básico no tiene que obtener objetos de colorizer de un servicio de lenguaje explícitamente.Tan pronto como una instancia del editor básico obtenga un servicio de lenguaje adecuado, realiza todas las tareas del color que aquí.
Obtiene el objeto de colorizer del servicio de lenguaje, que implementa T:Microsoft.VisualStudio.TextManager.Interop.IVsColorizer, e interfaces de IVsColorizer2 , llamando al método GetColorizer en el objeto de IVsLanguageInfo del servicio de lenguaje.
Llame al método de ColorizeLine para obtener la información de colorizer para un intervalo de texto determinada.
elColorizeLine devuelve una matriz de valores, uno por cada carácter en el intervalo de texto que es coloreada. Los valores son índices en una lista de elementos plausible que es la lista de elementos plausible predeterminada mantenida por el editor básico o una lista de elementos coloreable personalizado mantenida por el servicio de lenguaje propio.
Utilice la información del color devuelta por el método de ColorizeLine para mostrar el texto seleccionado.
Nota
Además de un colorizer del servicio de lenguaje, un Paquete puede usar el mecanismo de uso general de color del texto de Visual Studio .Para obtener más información sobre este mecanismo, vea Fuentes.
En esta sección
Implementar el colorear la sintaxis
Explica cómo un editor tiene acceso a un color de la sintaxis del servicio de lenguaje y lo que debe implementar el servicio de lenguaje para admitir el colorear la sintaxis.Cómo: Elementos colorear integrados de uso
Muestra cómo utilizar elementos colorear integrados del servicio de lenguaje.Elementos colorear personalizados
Describe cómo implementar elementos colorear personalizados.