Partager via


LanguageService.GetProximityExpressions, méthode

Retourne une liste d'expressions à évaluer et être montrées dans la fenêtre d'Automatique, pour une étendue donnée des lignes.

Espace de noms :  Microsoft.VisualStudio.Package
Assemblys :   Microsoft.VisualStudio.Package.LanguageService.9.0 (dans Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (dans Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.11.0 (dans Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (dans Microsoft.VisualStudio.Package.LanguageService.dll)

Syntaxe

'Déclaration
Public Overridable Function GetProximityExpressions ( _
    buffer As IVsTextBuffer, _
    line As Integer, _
    col As Integer, _
    cLines As Integer, _
    <OutAttribute> ByRef ppEnum As IVsEnumBSTR _
) As Integer
public virtual int GetProximityExpressions(
    IVsTextBuffer buffer,
    int line,
    int col,
    int cLines,
    out IVsEnumBSTR ppEnum
)

Paramètres

  • line
    Type : System.Int32
    [in] la première ligne de l'étendue à examiner pour des expressions.
  • col
    Type : System.Int32
    [in] l'offset sur la première ligne pour commencer à rechercher des expressions.
  • cLines
    Type : System.Int32
    [in] nombre de lignes à examiner.

Valeur de retour

Type : System.Int32
Si réussis, les retours S_OK, retourne S_FALSE s'il n'existe aucune expression ; sinon, retours code d'erreur.

Implémentations

IVsLanguageDebugInfo.GetProximityExpressions(IVsTextBuffer, Int32, Int32, Int32, IVsEnumBSTR%)

Remarques

Cette méthode est appelée pendant le débogage pour obtenir une liste de variables qui peuvent être affichées dans la fenêtre d'Automatique.La plage des lignes entoure en général une méthode ou une fonction.

Cette méthode peut être implémentée pour utiliser votre version de la classe d'AuthoringSink qui a collecté des expressions via la méthode d'AutoExpression.Votre implémentation rechercherait la liste d'expressions rassemblées pendant une opération d'analyse et retourner toutes les expressions qui ont fait partie de l'étendue a spécifié par line, col, et des arguments d'cLines.

La méthode de base retourne toujours une valeur NULL.

Exemples

Voici une implémentation possible de la méthode d'GetProximityExpressions qui appelle l'analyseur de méthode d'ParseSource pour obtenir l'étendue de code associée à la position actuelle.Notez que la méthode d'ParseSource est appelée sur le thread actuel ainsi la gestion d'Autos analysent la raison doit être très rapide pour éviter les retards de phase de restauration à remplir fenêtre d'Automatique.

Les méthodes d'GetAutoExpressionsCount et d'GetAutoExpression montrées dans l'exemple sont des méthodes personnalisées sur l'objet d'MyAuthoringSink et ont été ajoutées pour prendre en charge cet exemple d'implémentation.En outre, la classe d'MyVsEnumBSTR est une classe qui implémente l'interface d'IVsEnumBSTR.

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

namespace MyLanguagePackage
{
    public class MyLanguageService : LanguageService
    {
        public override int GetProximityExpressions(IVsTextBuffer buffer,
                                                    int line,
                                                    int col,
                                                    int cLines,
                                                    out IVsEnumBSTR ppEnum)
        {
            int retval = HRESULT.E_NOTIMPL;
            ppEnum = null;
            if (buffer != null)
            {
                IVsTextLines textLines = buffer as IVsTextLines;
                if (textLines != null)
                {
                    Source src = this.GetSource(textLines);
                    if (src != null)
                    {
                        TokenInfo tokenInfo = new TokenInfo();
                        string text = src.GetText();
                        ParseRequest req = CreateParseRequest(src,
                                                              line,
                                                              col,
                                                              tokenInfo,
                                                              text,
                                                              src.GetFilePath(),
                                                              ParseReason.Autos,
                                                              null);
                        req.Scope = this.ParseSource(req);
                        MyAuthoringSink sink = req.Sink as MyAuthoringSink;

                        retval = VSConstants.S_FALSE;
                        int spanCount = sink.GetAutoExpressionsCount();
                        if (spanCount > 0) {
                            MyVsEnumBSTR bstrList = new MyVsEnumBSTR();
                            for (int i = 0; i < spanCount; i++)
                            {
                                TextSpan span;
                                sink.GetAutoExpression(i, out span);
                                string expression = src.GetText(span.iStartLine,
                                                                span.iStartIndex,
                                                                span.iEndLine,
                                                                span.iEndIndex);
                                bstrList.AddString(expression);
                            }
                            ppEnum = bstrList;
                            retval = VSConstants.S_OK;
                        }
                    }
                }
            }
            return retval;
        }
    }
}

Sécurité .NET Framework

Voir aussi

Référence

LanguageService Classe

Microsoft.VisualStudio.Package, espace de noms