Color de un servicio de lenguaje heredado sintaxisSyntax Coloring in a Legacy Language Service

Visual Studio usa un servicio de color para identificar los elementos del lenguaje y mostrarlas con los colores especificados en un editor.Visual Studio uses a coloring service to identify elements of the language and display them with the specified colors in an editor.

Modelo de aplicador de colorColorizer Model

El servicio de lenguaje implementa la IVsColorizer interfaz, que, a continuación, se usa el Editor.The language service implements the IVsColorizer interface, which is then used by editors. Esta implementación es un objeto independiente desde el servicio de lenguaje, como se muestra en la siguiente ilustración:This implementation is a separate object from the language service, as shown in the following illustration:

Gráfico del aplicador de color SVC

Nota

El servicio de color de sintaxis es el mecanismo general de Visual Studio para colorear texto independiente.The syntax coloring service is separate from the general Visual Studio mechanism for colorizing text. Para obtener más información acerca de la ficha general Visual Studio SDKVisual Studio SDK mecanismo admitir colorear, consulte utilizar fuentes y colores.For more information about the general Visual Studio SDKVisual Studio SDK mechanism supporting colorizing, see Using Fonts and Colors.

Además del aplicador de color, el servicio de lenguaje puede proporcionar elementos coloreables personalizados son utilizados por el editor, publicidad que proporciona elementos coloreables personalizados.Besides the colorizer, the language service can supply custom colorable items that are used by the editor, by advertising that it supplies custom colorable items. Puede hacerlo mediante la implementación de la IVsProvideColorableItems interfaz en el mismo objeto que implementa el IVsLanguageInfo interfaz.You can do this by implementing the IVsProvideColorableItems interface on the same object that implements the IVsLanguageInfo interface. Devuelve el número de elementos coloreables personalizados cuando el editor llama el GetItemCount (método) y devuelve un elemento coloreable personalizado individual cuando se llama el editor de la GetColorableItem método.It returns the number of custom colorable items when the editor calls the GetItemCount method, and it returns an individual custom colorable item when the editor calls the GetColorableItem method.

El GetColorableItem método devuelve un objeto que implementa el IVsColorableItem interfaz.The GetColorableItem method returns an object that implements the IVsColorableItem interface. Si el servicio de lenguaje es compatible con los valores de color de 24 bits o alta, debe implementar la IVsHiColorItem interfaz en el mismo objeto que la IVsColorableItem interfaz.If the language service supports 24-bit or high color values, it must implement the IVsHiColorItem interface on the same object as the IVsColorableItem interface.

Cómo un paquete VSPackage usa un aplicador de color del servicio de lenguajeHow a VSPackage Uses a Language Service Colorizer

  1. El paquete VSPackage debe obtener el servicio de idioma correspondiente, lo que requiere el servicio de lenguaje VSPackage para hacer lo siguiente:The VSPackage must get the appropriate language service, which requires the language service VSPackage to do the following:

    1. Usar un objeto que implementa el IVsTextBuffer interfaz para obtener el texto que se colorea.Use an object implementing the IVsTextBuffer interface to get the text to be colorized.

      Texto se muestra normalmente mediante un objeto que implementa el IVsTextView interfaz.Text is typically displayed using an object that implements the IVsTextView interface.

    2. Obtener el servicio de lenguaje consultando el proveedor de servicios de VSPackage para el GUID del servicio de lenguaje.Get the language service by querying the service provider of the VSPackage for the language service GUID. Servicios de lenguaje se identifican en el registro por extensión de archivo.Language services are identified in the registry by file extension.

    3. Asociar el servicio de lenguaje con el IVsTextBuffer mediante una llamada a su SetLanguageServiceID método.Associate the language service with the IVsTextBuffer by calling its SetLanguageServiceID method.

  2. El VSPackage ahora puede obtener y usar el objeto de aplicador de color como sigue:The VSPackage can now obtain and use the colorizer object as follows:

    Nota

    VSPackages que utilice el editor principal no tiene que obtener un lenguaje explícitamente objetos del aplicador de color del servicio.VSPackages that use the core editor don't have to obtain a language service's colorizer objects explicitly. Tan pronto como una instancia del editor principal obtiene un servicio de lenguaje correspondiente, realiza todas las tareas de colores se muestra aquí.As soon as an instance of the core editor obtains an appropriate language service, it performs all the colorization tasks shown here.

    1. Obtener el objeto de aplicador de color del servicio de lenguaje, que implementa el IVsColorizer, y IVsColorizer2 interfaces, mediante una llamada a la GetColorizer método en el servicio de lenguaje IVsLanguageInfo objeto.Obtain the language service's colorizer object, which implements the IVsColorizer, and IVsColorizer2 interfaces, by calling the GetColorizer method on the language service's IVsLanguageInfo object.

    2. Llame a la ColorizeLine método para obtener la información del aplicador de color para un determinado intervalo de texto.Call the ColorizeLine method to obtain the colorizer information for a particular span of text.

      ColorizeLine Devuelve una matriz de valores, uno para cada carácter en el intervalo de texto que se colorea.ColorizeLine returns an array of values, one for each character in the text span being colorized. Los valores son índices en una lista de elemento coloreable es la lista de elemento coloreable predeterminada mantenida por el editor principal o una lista de elemento coloreable personalizado mantenida por el propio servicio de lenguaje.The values are indexes into a colorable item list that is either the default colorable item list maintained by the core editor or a custom colorable item list maintained by the language service itself.

    3. Use la información de colores devuelta por la ColorizeLine método para mostrar el texto seleccionado.Use the colorization information returned by the ColorizeLine method to display the selected text.

Nota

Además de utilizar un aplicador de color del servicio de lenguaje, un VSPackage también puede utilizar el texto de Visual Studio de propósito general mecanismo de color.In addition to using a language service colorizer, a VSPackage can also use the general-purpose Visual Studio text coloring mechanism. Para obtener más información sobre este mecanismo, vea utilizar fuentes y colores.For more information about this mechanism, see Using Fonts and Colors.

En esta secciónIn This Section

Implementación de color de sintaxis explica cómo un editor tiene acceso a un servicio de lenguaje colorear la sintaxis y el servicio de lenguaje de qué debe implementar para admitir el color de la sintaxis.Implementing Syntax Coloring Discusses how an editor accesses a language service's syntax coloring and what the language service must implement to support syntax coloring.

Cómo: Use los elementos integrados coloreable muestra cómo utilizar elementos coloreables integrados desde el servicio de lenguaje.How to: Use Built-In Colorable Items Demonstrates how to use built-in colorable items from the language service.

Elementos coloreable personalizado describe cómo implementar elementos coloreables personalizados.Custom Colorable Items Discusses how to implement custom colorable items.

Vea tambiénSee Also