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

Visual StudioVisual Studioutiliza un servicio de color para identificar los elementos del lenguaje y mostrarlas con los colores especificados en un editor. 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 SVCSVC Colorizer graphic
Modelo simple aplicador de colorSimple colorizer model

Nota

El servicio de color de sintaxis es independiente de la ficha general Visual StudioVisual Studio mecanismo para colorear texto.The syntax coloring service is separate from the general Visual StudioVisual 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 use el editor básico no es necesario que obtener un idioma explícitamente objetos del aplicador de color del servicio.VSPackages that use the core editor do not 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 T:Microsoft.VisualStudio.TextManager.Interop.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 T:Microsoft.VisualStudio.TextManager.Interop.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.

      ColorizeLineDevuelve 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 uso general Visual StudioVisual Studio mecanismo de color de texto.In addition to using a language service colorizer, a VSPackage can also use the general-purpose Visual StudioVisual 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 colores de la sintaxisImplementing Syntax Coloring
Describe cómo un editor tiene acceso a un servicio de lenguaje colorear la sintaxis y qué el servicio de lenguaje debe implementar para admitir la sintaxis de color.Discusses how an editor accesses a language service's syntax coloring and what the language service must implement to support syntax coloring.

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

Elementos coloreables personalizadosCustom Colorable Items
Describe cómo implementar elementos coloreables personalizados.Discusses how to implement custom colorable items.

Vea tambiénSee Also

Utilizar fuentes y coloresUsing Fonts and Colors