Partager via


coloration de syntaxe

Visual Studio utilise un service de coloration pour identifier des éléments du langage et de les afficher avec des couleurs spécifiées dans un éditeur.

modèle de coloriseur

Le service de langage implémente l'interface d' IVsColorizer , qui est ensuite utilisée par les éditeurs. Cette implémentation est un objet distinct du service de langage, comme indiqué dans l'illustration suivante.

modèle simple de coloriseur

Graphique Coloriseur SVC

Notes

le service de coloration de syntaxe est séparé du mécanisme de général Visual Studio pour le texte colorizing.Pour plus d'informations sur le mécanisme de général Kit de développement logiciel Visual Studio prenant en charge colorizing, consultez Polices.

En plus de le coloriseur, le service de langage peut fournir des éléments qui autorisent la modification de la couleur personnalisés utilisés par l'éditeur en publiant ce qui fournissent les éléments qui autorisent la modification de la couleur personnalisés. Vous pouvez le faire en implémentant l'interface d' IVsProvideColorableItems sur le même objet qui implémente l'interface d' IVsLanguageInfo . Il retourne le nombre d'éléments personnalisés qui autorisent la modification de la couleur lorsque l'éditeur appelle la méthode d' GetItemCount , et elle retourne un élément coloriable personnalisé spécifique lorsque l'éditeur appelle la méthode d' GetColorableItem .

La méthode d' GetColorableItem retourne un objet qui implémente l'interface d' IVsColorableItem . Si le service prend en charge du langage 24 bits ou des valeurs de 65536 couleurs, il doit implémenter l'interface de IVsHiColorItem sur le même objet que l'interface d' IVsColorableItem .

Comment un VSPackage utilise un coloriseur de service de langage

  1. Le VSPackage doit obtenir le service de langage appropriée, qui exige du service de langage VSPackage pour effectuer les opérations suivantes :

    1. Utilisez un objet qui implémente l'interface d' IVsTextBuffer pour obtenir le texte pour sont colorisés.

      Le texte est généralement affichée à l'aide d'un objet qui implémente l'interface d' IVsTextView .

    2. Obtenez le service de langage en interrogeant le fournisseur de services du VSPackage pour le service de langage GUID. Les services linguistiques sont identifiés dans le Registre par l'extension.

    3. Associez le service de langage avec IVsTextBuffer en appelant sa méthode d' SetLanguageServiceID .

  2. le VSPackage peut maintenant obtenir et utiliser l'objet de coloriseur comme suit :

    Notes

    VSPackages qui utilisent l'éditeur principal ne doivent pas obtenir des objets du coloriseur d'un service de langage explicitement.Dès qu'une instance du éditeur principal obtiendra un service de langage de langue appropriée, elle effectue toutes les tâches de la colorisation présentées ici.

    1. Obtenez l'objet du coloriseur du service de langage, qui implémente T:Microsoft.VisualStudio.TextManager.Interop.IVsColorizer, et les interfaces d' IVsColorizer2 , en appelant la méthode d' GetColorizer sur l'objet d' IVsLanguageInfo du service de langage.

    2. Appelez la méthode d' ColorizeLine pour obtenir des informations de coloriseur pour une étendue de texte particulière.

      l'ColorizeLine retourne un tableau de valeurs, une pour chaque caractère de l'étendue de texte sont colorisés. Les valeurs sont des index dans une liste d'éléments coloriable qui est la liste d'éléments coloriable par défaut contenue par l'éditeur principal ou une liste d'éléments coloriable personnalisée gérée par le service de langage lui-même.

    3. Utilisez les informations de la colorisation retournées par la méthode d' ColorizeLine pour afficher le texte sélectionné.

Notes

En plus de utiliser un coloriseur de service de langage, un VSPackage peut également utiliser le mécanisme à usage général de coloration de texte de Visual Studio .Pour plus d'informations sur ce mécanisme, consultez Polices.

Dans cette section

Voir aussi

Autres ressources

Polices