Partager via


Interfaces de service de langage

Pour n'importe quel langage de programmation particulier, il peut y avoir qu'une seule instance d'un service de langage à la fois. Toutefois, un service seul langage peut servir plusieurs éditeur.

Visual Studio n'associe un service de langage à un éditeur particulier. Par conséquent, lorsque vous demandez une opération de service de langage, vous devez identifier l'éditeur approprié comme paramètre.

Interfaces courantes associées à des services de langage

L'éditeur obtient votre service de langage en appelant QueryService sur le VSPackage approprié. L'ID de service (SID) passé dans cet appel identifie le service de langage demandé.

Vous pouvez implémenter les interfaces principales de service de langage dans plusieurs classes séparées. Toutefois, une approche courante consiste à implémenter les interfaces suivantes dans une classe unique :

l'interface d' IVsLanguageInfo doit être implémentée sur tous les services linguistiques. Il fournit des informations sur votre service de langage, tel que le nom localisé du langage, les extensions de nom de fichier associée au service de langage, et comment récupérer un coloriseur.

Interfaces de service de langage supplémentaire

D'autres interfaces peuvent être fournies avec votre service de langage. Visual Studio demande une instance séparée de ces interfaces pour chaque instance de la mémoire tampon de texte. Par conséquent, vous devez implémenter chacune de ces interfaces sur son propre objet. Le tableau suivant indique les interfaces qui nécessitent une instance de chaque instance de mémoire tampon de texte.

Interface

Description

IVsCodeWindowManager

gère des ornements de fenêtre de code, tels que la barre déroulante. vous pouvez obtenir cette interface à l'aide de la méthode d' GetCodeWindowManager . Il existe un IVsCodeWindowManager par fenêtre de code.

IVsColorizer

mots clés et séparateurs de langage de Colorizes. vous pouvez obtenir cette interface à l'aide de la méthode d' GetColorizer . IVsColorizer est appelé au temps de peinture. Évitez le travail nécessitant de nombreuses ressources de calcul à l'intérieur de IVsColorizer ou les performances peuvent souffrir.

IVsMethodData

Fournit des info-bulles de paramètre Intellisense. Lorsque le service de langage reconnaît un caractère qui indique ces données de méthode doit être rendu, par exemple une parenthèse ouvrante, il appelle la méthode d' SetMethodData pour informer l'affichage de texte que le service de langage est prêt à afficher des informations sur les paramètres une info-bulle. Les appels d'affichage de texte ensuite au service de langage à l'aide de les méthodes d' IVsMethodData interface pour obtenir les informations requises pour afficher l'info-bulle.

IVsCompletionSet

Fournit la saisie semi-automatique des instructions Intellisense. Lorsque le service de langage est prêt à afficher une liste de saisie semi-automatique, elle appelle la méthode d' UpdateCompletionStatus sur l'affichage de texte. Les appels d'affichage de texte et au service de langage à l'aide de méthodes sur l'objet d' IVsCompletionSet .

IVsTextViewFilter

Autorise la modification de l'affichage de texte à l'aide de le gestionnaire de commandes. la classe dans laquelle vous implémentez l'interface d' IVsTextViewFilter doit également implémenter l'interface d' IOleCommandTarget . L'affichage de texte récupère l'objet d' IVsTextViewFilter en interrogeant l'objet d' IOleCommandTarget passé dans la méthode d' AddCommandFilter . Il doit y avoir un objet d' IVsTextViewFilter pour chaque affichage.

IOleCommandTarget

Arrête les commandes ces les types d'utilisateur de la fenêtre de code. Sortie écran de votre implémentation d' IOleCommandTarget pour fournir des informations personnalisées d'avancement et la modification de vue

pour passer votre objet d' IOleCommandTarget à l'affichage de texte, AddCommandFilterd'appel.

Voir aussi

Concepts

Liste de vérification : Créer un service de langage

Autres ressources

Développer un service de langage