Partager via


Les informations sur les paramètres Intellisense (managed de package)

Les informations sur les paramètres Intellisense sont une info-bulle qui affiche la signature d'une méthode lorsque l'utilisateur tape le caractère de début de la liste de paramètres (en général une parenthèse ouvrante) pour la liste de paramètres de méthode. Comme chaque paramètre est déplacé et le séparateur de paramètre (en général une virgule) est de type, l'info-bulle est mise à jour pour afficher le paramètre suivant en gras.

Les classes managées du package (MPF) fournissent une prise en charge de la gestion de l'info-bulle des informations sur les paramètres. L'analyseur doit détecter le début de paramètre, le paramètre suivant, et les caractères de fin de paramètre, et il doit fournir une liste des signatures de méthode et leurs paramètres associés.

Implémentation

L'analyseur doit définir la valeur ParameterStart de déclencheur est défini lorsqu'il recherche un caractère de début de la liste de paramètres (souvent une parenthèse ouvrante). Il doit définir un déclencheur d' ParameterNext lorsqu'il recherche un séparateur de paramètre (souvent une virgule). Cela provoque une info-bulle des informations sur les paramètres à mettre à jour et indique le paramètre suivant en gras. L'analyseur doit définir la valeur ParameterEnd de déclencheur lorsque si les recherches le caractère de fin de la liste de paramètres (souvent un crochet fermant).

La valeur du déclencheur d' ParameterStart initialise un appel à la méthode d' MethodTip , qui appelle à son tour l'analyseur de méthode d' ParseSource et la raison de l'analyse d' MethodTip. Si l'analyseur détermine que l'identificateur avant que le caractère de début de liste de paramètres est un nom de méthode identifié, il retourne une liste des signatures de méthodes correspondantes dans l'objet d' AuthoringScope . Si les signatures de méthode ont été trouvées, l'info-bulle des informations sur les paramètres s'affiche avec la première signature dans la liste. Cette info-bulle est ensuite mise à jour comme étant plus de la signature est tapée. Lorsque le caractère de fin de la liste de paramètres est typé, l'info-bulle des informations sur les paramètres est supprimée de la vue.

Notes

Pour garantir que l'info-bulle des informations sur les paramètres est correctement mise en forme, vous devez substituer les propriétés de la classe d' Methods pour fournir des caractères appropriés.La classe d' Methods de base a une signature de méthode de style de la c#.Consultez la classe d' Methods pour savoir comment procéder.

Activer la prise en charge des informations sur les paramètres

Pour prendre en charge les info-bulles des informations sur les paramètres, vous devez définir ShowCompletion nommé paramètre d' ProvideLanguageServiceAttribute à true. Le service de langage lit la valeur de cette entrée du Registre de la propriété d' EnableCodeSense .

En outre, la propriété d' ParameterInformation doit être définie à true pour l'info-bulle d'informations sur les paramètres ne soit affichée.

Exemple

Voici un exemple simplifié de détecter les caractères de liste de paramètres et de définir des déclencheurs appropriés. Cet exemple est dans des fins de illustration uniquement. Il suppose que votre scanner contient une méthode GetNextToken qui identifie et retourne des jetons d'une ligne de texte. L'exemple de code définit simplement les déclencheurs chaque fois qu'il constate le bon type de caractère.

using Microsoft.VisualStudio.Package;
using Microsoft.VisualStudio.TextManager.Interop;

namespace TestLanguagePackage
{
    public class TestScanner : IScanner
    {
        private Lexer lex;
        private const char parameterListStartChar = '(';
        private const char parameterListEndChar   = ')';
        private const char parameterNextChar      = ',';

        public bool ScanTokenAndProvideInfoAboutIt(TokenInfo tokenInfo,
                                                   ref int state)
        {
            bool foundToken = false
            string token = lex.GetNextToken();
            if (token != null)
            {
                foundToken = true;
                char c = token[0];
                if (Char.IsPunctuation(c))
                {
                    tokenInfo.Type = TokenType.Operator;
                    tokenInfo.Color = TokenColor.Keyword;
                    tokenInfo.EndIndex = index;
                    
                    if (c == parameterListStartChar)
                    {
                        tokenInfo.Trigger |= TokenTriggers.ParameterStart;
                    }
                    else if (c == parameterListNextChar)
                    {
                        tokenInfo.Trigger |= TokenTriggers.ParameterNext;
                    else if (c == parameterListEndChar)
                    {
                        tokenInfo.Trigger |= TokenTriggers.ParameterEnd;
                    }
                }
            return foundToken;
        }
    }
}

Prendre en charge des informations sur les paramètres Info-bulle dans l'analyseur

La classe d' Source fait des hypothèses sur le contenu des classes d' AuthoringScope et d' AuthoringSink lorsque l'info-bulle des informations sur les paramètres s'affiche et mise à jour.

  • L'analyseur est fourni MethodTip lorsque le caractère de début de liste de paramètres est tapé.

  • L'emplacement donné dans l'objet d' ParseRequest est immédiatement après le caractère de début de liste de paramètres. L'analyseur doit collecter les signatures de toutes les déclarations de méthode disponibles à cette position et les stocker dans une liste dans votre version de l'objet d' AuthoringScope . Cette liste inclut le nom de la méthode, le type de méthode (ou le type de retour), et une liste de paramètres possibles. Cette liste est ultérieurement effectuera une signature de méthode ou les signatures à afficher dans l'info-bulle des informations sur les paramètres.

L'analyseur doit analyser ensuite la ligne spécifiée par l'objet d' ParseRequest pour rassembler le nom de la méthode qui est entrée ainsi qu'à la distance par l'utilisateur est en tapant des paramètres. Cela est accompli en passant le nom de la méthode à la méthode d' StartName sur l'objet d' AuthoringSink puis en appelant la méthode d' StartParameters lorsque le caractère de début de la liste de paramètres est analysé, l'appel de la méthode de NextParameter lorsque la liste de paramètres caractère suivant est analysée, et enfin appelant la méthode d' EndParameters lorsque le caractère de fin de la liste de paramètres est analysé. Les résultats de ces appels de méthode sont utilisés par la classe d' Source pour mettre à jour l'info-bulle des informations sur les paramètres de manière appropriée.

Exemple

Voici une ligne de texte que l'utilisateur peut écrire. Les nombres sous la ligne indique que l'étape est pris par l'analyseur à cette position dans la ligne (l'analyse supposant que déplace de gauche à droite). L'hypothèse ici est que tout avant que la ligne a déjà analysée pour les signatures de méthode, y compris la signature de méthode « testfunc ».

    testfunc("a string",3);
         ^^          ^ ^
         12          3 4

Les étapes que l'analyseur prend sont présentées ci-dessous :

  1. l'analyseur appelle l' StartName avec le texte « testfunc ».

  2. l'analyseur appelle StartParameters.

  3. l'analyseur appelle NextParameter.

  4. l'analyseur appelle EndParameters.