implémenter la coloration de syntaxe
Lorsque le service de langage fournit la colorisation de syntaxe, l'analyseur convertit une ligne de texte en un tableau d'éléments qui autorisent la modification de la couleur et retourne des types de jeton correspondant à ces éléments qui autorisent la modification de la couleur. L'analyseur doit retourner les types de jetons qui appartiennent à une liste d'éléments qui autorisent la modification de la couleur. Visual Studio affiche chaque élément coloriable dans la fenêtre de code en fonction de les attributs assignés par l'objet de coloriseur au type de jeton approprié.
Visual Studio ne spécifie pas d'interface analyseur, et l'implémentation de l'analyseur est complètement à vous. Toutefois, une implémentation par défaut de l'analyseur est fournie dans le projet de package de langage de Visual Studio. Pour le code managé, managed package (MPF) offre une prise en charge complète du texte colorizing.
étapes suivies d'un éditeur au texte de Colorize
l'éditeur obtient le coloriseur en appelant la méthode d' GetColorizer sur l'objet d' IVsLanguageInfo .
L'éditeur appelle la méthode d' GetStateMaintenanceFlag pour déterminer si le coloriseur a besoin de l'état de chaque ligne pour rester en dehors de le coloriseur.
Si le coloriseur requiert l'état à conserver en dehors de le coloriseur, l'éditeur appelle la méthode d' GetStartState passer l'état de la première ligne.
Pour chaque ligne de la mémoire tampon, l'éditeur appelle la méthode d' ColorizeLine , qui effectue les étapes suivantes :
La ligne de texte est passée à un scanner pour convertir le texte en jetons. Chaque jeton spécifie le texte d'un jeton et le type de jeton.
Le type de jeton est converti en un index dans une liste coloriable d'éléments.
Des informations symboliques sont utilisées pour remplir un tableau de sorte que chaque élément du tableau correspond à un caractère de la ligne. Les valeurs stockées dans le tableau sont les index dans la liste coloriable d'éléments.
L'état à la fin de la ligne est retourné pour chaque ligne.
Si le coloriseur requiert l'état à maintenir, l'éditeur met en cache l'état de cette ligne.
L'éditeur affiche la ligne de texte à l'aide de les informations retournées de la méthode d' ColorizeLine . Ce processus implique les étapes suivantes :
Pour chaque caractère de la ligne, obtenez l'index coloriable d'élément.
Si vous utilisez les éléments qui autorisent la modification de la couleur par défaut, accédez à la liste coloriable des éléments de l'éditeur.
Sinon, appelez la méthode de l' GetColorableItem du service de langage pour obtenir un élément coloriable.
Utilisez les informations figurant dans l'élément coloriable pour afficher du texte dans l'affichage.
Coloriseur managé du package
Managed package (MPF) fournit toutes les classes requises pour implémenter un coloriseur. Votre classe de service de langage doit hériter de la classe d' LanguageService et implémenter les méthodes obligatoires. Vous devez fournir un scanneur et un analyseur en implémentant l'interface d' IScanner , et retournez une instance de cette interface de la méthode d' GetScanner (l'une des méthodes qui doivent être implémentées dans la classe d' LanguageService ). Pour plus d'informations, consultez Syntaxe Colorizing (managed de package).
Voir aussi
Tâches
Comment : Éléments qui autorisent la modification de la couleur prédéfinis d'utilisation
Concepts
Éléments qui autorisent la modification de la couleur personnalisés
Syntaxe Colorizing (managed de package)