Coloração de sintaxe em editores personalizados

Os editores do SDK do Visual Studio Environment, incluindo o editor principal, usam serviços de idioma para identificar itens sintáticos específicos e exibi-los com cores especificadas para um determinado modo de exibição de documento.

Requisitos de colorização

Todos os editores que implementam o colorizador de um serviço de idiomas devem:

  1. Use uma implementação de objeto para gerenciar o texto a ser colorido e uma implementação IVsTextBufferIVsTextView de objeto para fornecer uma exibição de documento do texto.

  2. Obtenha uma interface para um serviço de idioma específico consultando o provedor de serviços do VSPackage usando o GUID de identificação do serviço de idiomas.

  3. Chame o SetLanguageServiceID método do objeto que implementa IVsTextBuffer. Esse método associa o serviço de idioma com a IVsTextBuffer implementação que o VSPackage usa para gerenciar o texto que deve ser colorido.

Uso do Editor Principal do Colorizador de um Serviço de Idiomas

Quando um serviço de idioma com um colorizador é obtido por uma instância do editor principal, a análise e renderização de texto pelo colorizador de um serviço de idioma ocorre automaticamente sem exigir qualquer intervenção adicional de sua parte.

O IDE de forma transparente:

  • Chama o colorizador conforme necessário para analisar e analisar o texto à medida que ele é adicionado ou modificado na implementação do IVsTextBuffer.

  • Garante que a exibição fornecida pela exibição de IVsTextView documento fornecida pela implementação seja atualizada e repintada usando as informações retornadas pelo colorizador.

Uso não essencial do editor do colorizador de um serviço de idiomas

As instâncias do editor não essencial também podem usar o serviço de colorização de sintaxe de um serviço de idioma, mas devem recuperar e aplicar explicitamente o colorizador do serviço e repintar suas próprias exibições de documento.

Para fazer isso, um editor não-core deve:

  1. Obter o objeto colorizador de um serviço de idioma (que implementa IVsColorizer e IVsColorizer2). O VSPackage faz isso chamando o GetColorizer método na interface do serviço de idioma.

  2. Chame o ColorizeLine método para solicitar que uma determinada extensão de texto seja colorida.

    O ColorizeLine método retorna uma matriz de valores, um para cada letra na extensão de texto que está sendo colorida. Ele também identifica a extensão do texto como um tipo específico de item colorido, como um comentário, palavra-chave ou tipo de dados.

  3. Use as informações de colorização retornadas por ColorizeLine para repintar e exibir seu texto.

Observação

Além de usar o colorizador de um serviço de idioma, um VSPackage pode optar por usar o mecanismo de coloração de texto do SDK do Visual Studio Environment de uso geral. Para obter mais informações sobre esse mecanismo, consulte Usando fontes e cores.