Condividi tramite


Informazioni sul parametro IntelliSense (managed package Framework)

Informazioni sul parametro IntelliSense sono una descrizione comando che visualizza la firma di un metodo quando l'utente digita il carattere di inizio dell'elenco di parametri (in genere una parentesi di apertura) per l'elenco di parametri del metodo. Durante ciascun parametro è dichiarato e il separatore di parametro (in genere una virgola) viene digitato, la descrizione comandi viene aggiornata per riflettere il parametro successivo in grassetto.

Le classi gestite del framework (MPF) del pacchetto forniscono il supporto per la gestione della descrizione comandi di informazioni sul parametro. Il parser deve rilevare dopo l'inizio di un parametro, il parametro e caratteri finali di parametro e deve fornire un elenco delle firme del metodo e i relativi parametri associati.

Implementazione

Il parser consigliabile impostare il valore ParameterStart del trigger è impostato quando trova un carattere di inizio dell'elenco di parametri (spesso una parentesi di apertura). Deve impostare un trigger di ParameterNext quando trova un separatore di parametro (spesso una virgola). In questo modo una descrizione comando di informazioni parametri a essere aggiornata e mostra il parametro successivo in grassetto. Il parser consigliabile impostare il valore ParameterEnd trigger quando si trova il carattere finale dell'elenco di parametri (spesso una parentesi di chiusura).

Il valore del trigger di ParameterStart avviare una chiamata al metodo di MethodTip , che a sua volta chiama il parser del metodo di ParseSource con un motivo di analisi di MethodTip. Se il parser determina che l'identificatore prima del carattere iniziale dell'elenco di parametri sia un nome di metodo riconosciuto, restituisce un elenco delle firme dei metodi corrispondenti nell'oggetto di AuthoringScope . Se le firme del metodo vengano trovati, la descrizione comando di informazioni sul parametro viene visualizzato con la prima firma nell'elenco. Questa descrizione comando viene aggiornata a più di firma viene digitato. Quando il carattere finale dell'elenco di parametri viene digitato, la descrizione comando di informazioni sul parametro viene rimossa dalla visualizzazione.

Nota

Per assicurarsi che la descrizione comando di informazioni sul parametro correttamente viene formattata, è necessario eseguire l'override delle proprietà nella classe di Methods per fornire i caratteri appropriati.La classe di Methods di base si presuppone una firma del metodo stile c#.Vedere la classe di Methods per informazioni dettagliate su come tale operazione.

Abilitare supporto per le informazioni parametri

Per supportare le descrizioni comandi di informazioni sul parametro, è necessario impostare il parametro denominato di ShowCompletion di ProvideLanguageServiceAttribute a true. Il servizio di linguaggio indica il valore di questa chiave del Registro di sistema dalla proprietà di EnableCodeSense .

Inoltre, la proprietà di ParameterInformation deve essere impostata su true per la descrizione comando di informazioni sul parametro sia indicata.

Esempio

Di seguito è riportato un esempio semplice di rilevare i caratteri elenco dei parametri e di impostare i trigger appropriati. Questo esempio è solo a titolo esemplificativo. Si presuppone che lo scanner contenga un metodo GetNextToken che identifica e restituisce i token da una riga di testo. Il codice di esempio riportato di seguito viene semplicemente i trigger ogni volta che rileva il corretto tipo di carattere.

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;
        }
    }
}

Supporto della descrizione comandi di informazioni sul parametro nel parser

La classe di Source fare supposizioni sul contenuto delle classi di AuthoringSink e di AuthoringScope quando la descrizione comando di informazioni sul parametro e viene aggiornata.

  • Il parser viene fornito MethodTip quando il carattere di inizio dell'elenco di parametri viene digitato.

  • La posizione arresa l'oggetto di ParseRequest viene immediatamente dopo il carattere di inizio dell'elenco di parametri. Il parser necessario raccogliere le firme di tutte le dichiarazioni del metodo disponibili in tale posizione e archiviarli in un elenco nella versione dell'oggetto di AuthoringScope . Questo elenco include il nome del metodo, il tipo di metodo (o tipo restituito e un elenco di parametri possibili. Questo elenco successivamente viene trovato la firma del metodo o le firme per visualizzare la descrizione comando di informazioni sul parametro.

Il parser quindi necessario analizzare la riga specificata dall'oggetto di ParseRequest per raccogliere il nome del metodo che viene inserito nonché fino a che punto lungo l'utente è nei parametri di digitazione. Questa operazione viene eseguita passando il nome del metodo di StartName l'oggetto di AuthoringSink e chiamando quindi il metodo di StartParameters quando il carattere di inizio dell'elenco di parametri viene analizzato, chiamando il metodo di NextParameter quando l'elenco di parametri carattere successivo viene analizzato e infine chiamare il metodo di EndParameters quando il carattere finale dell'elenco di parametri viene analizzato. I risultati delle chiamate al metodo vengono utilizzati dalla classe di Source per aggiornare la descrizione comando di informazioni sul parametro in modo appropriato.

Esempio

Di seguito è riportata una riga di testo che l'utente potrebbe digitare. I numeri sotto la riga indica quale azione è intrapresa dal parser in tale posizione nella riga (che presuppone la tracciatura viene spostato da sinistra a destra). Il presupposto consiste nel fatto che tutto prima che la riga sia già state analizzate per le firme del metodo, inclusa la firma del metodo “testfunc„.

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

Le misure che il parser accetta sono delimitate di seguito:

  1. The parser calls StartName with the text "testfunc".

  2. il parser chiama StartParameters.

  3. Il parser chiama StartName con il testo "testfunc".

  4. il parser chiama EndParameters.