Coloração de sintaxe
Visual Studiousa um serviço de cor para identificar os elementos da linguagem e exibi-los com as cores especificadas em um editor.
Modelo de colorizer
A linguagem implementa o serviço de IVsColorizer interface, que é usado pelos editores. Essa implementação é um objeto separado do serviço da linguagem, como mostrado na ilustração a seguir.
Modelo simples de colorizer
Dica
O serviço de coloração de sintaxe é separada da geral Visual Studio o mecanismo para colorir o texto.Para obter mais informações sobre o general SDK do Visual Studio mecanismo com suporte para colorir, consulte Fontes.
Além da colorizer, o serviço de linguagem pode fornecer os itens personalizados de colorable que são usados pelo editor de publicidade que ele fornece os itens personalizados de colorable. Você pode fazer isso por meio da implementação de IVsProvideColorableItems interface no mesmo objeto que implementa o IVsLanguageInfo interface. Ele retorna o número de itens personalizados de colorable quando o editor chama o GetItemCount método e ele retorna um item individual de colorable personalizado quando o editor chama o GetColorableItem método.
O GetColorableItem método retorna um objeto que implementa o IVsColorableItem interface. Se o serviço de idioma oferece suporte a valores de cores de 24 bits ou alta, ele deve implementar a IVsHiColorItem interface no mesmo objeto, como o IVsColorableItem interface.
Como um VSPackage usa um Colorizer de serviço de linguagem
O VSPackage deve obter o serviço de idioma apropriado, o que requer o serviço de linguagem VSPackage para fazer o seguinte:
Use um objeto implementando a IVsTextBuffer interface para obter o texto a ser coloridas.
Texto normalmente é exibido usando um objeto que implementa o IVsTextView interface.
Obter o serviço de linguagem consultando o provedor de serviços do VSPackage para o serviço de linguagem GUID. Serviços de linguagem são identificados no registro por extensão de arquivo.
Associar o serviço de idioma com o IVsTextBuffer , chamando seu SetLanguageServiceID método.
O VSPackage agora pode obter e usar o objeto de colorizer da seguinte maneira:
Dica
VSPackages que use o editor de núcleo não é necessário obter um idioma objetos de colorizer do serviço explicitamente.Assim que uma instância do editor principal obtém um serviço de idioma apropriado, ele executa todas as tarefas de colorização mostradas aqui.
Obter o objeto de colorizer do serviço de linguagem, que implementa o T:Microsoft.VisualStudio.TextManager.Interop.IVsColorizer, e IVsColorizer2 interfaces, chamando o GetColorizer o método do serviço de linguagem IVsLanguageInfo objeto.
Chamar o ColorizeLine método para obter as informações de colorizer para um determinado intervalo de texto.
ColorizeLineRetorna uma matriz de valores, um para cada caractere na extensão texto sendo colorida. Os valores são índices em uma lista de itens colorable que é a lista de colorable de item padrão mantido pelo editor do núcleo ou uma lista de colorable de item personalizado mantido pelo serviço de linguagem propriamente dita.
Use as informações de colorização retornadas pela ColorizeLine método para exibir o texto selecionado.
Dica
Além de ser usado um colorizer de serviço de linguagem, VSPackage também pode usar o uso geral Visual Studio colorindo o mecanismo de texto.Para obter mais informações sobre esse mecanismo, consulte Fontes.
Nesta seção
Implementando a coloração de sintaxe
Discute como um editor acessa coloração de sintaxe e o serviço de linguagem deve implementar para dar suporte à sintaxe colorir um serviço de linguagem.Como: usar itens internos de Colorable
Demonstra como usar o colorable dos itens internos do serviço da linguagem.Personalizar itens Colorable
Discute como implementar itens personalizados de colorable.