LanguageService.GetProximityExpressions(IVsTextBuffer, Int32, Int32, Int32, IVsEnumBSTR) Methode

Definition

Gibt eine Liste der Ausdrücke zurück, die ausgewertet und im Fenster Auto für eine bestimmte Zeilen Spanne angezeigt werden sollen.

public:
 virtual int GetProximityExpressions(Microsoft::VisualStudio::TextManager::Interop::IVsTextBuffer ^ buffer, int line, int col, int cLines, [Runtime::InteropServices::Out] Microsoft::VisualStudio::TextManager::Interop::IVsEnumBSTR ^ % ppEnum);
public:
 virtual int GetProximityExpressions(Microsoft::VisualStudio::TextManager::Interop::IVsTextBuffer ^ buffer, int line, int col, int cLines, [Runtime::InteropServices::Out] Microsoft::VisualStudio::TextManager::Interop::IVsEnumBSTR ^ &  ppEnum);
 virtual int GetProximityExpressions(Microsoft::VisualStudio::TextManager::Interop::IVsTextBuffer const & buffer, int line, int col, int cLines, [Runtime::InteropServices::Out] Microsoft::VisualStudio::TextManager::Interop::IVsEnumBSTR const & & ppEnum);
public virtual int GetProximityExpressions (Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer buffer, int line, int col, int cLines, out Microsoft.VisualStudio.TextManager.Interop.IVsEnumBSTR ppEnum);
abstract member GetProximityExpressions : Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer * int * int * int * IVsEnumBSTR -> int
override this.GetProximityExpressions : Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer * int * int * int * IVsEnumBSTR -> int
Public Overridable Function GetProximityExpressions (buffer As IVsTextBuffer, line As Integer, col As Integer, cLines As Integer, ByRef ppEnum As IVsEnumBSTR) As Integer

Parameter

buffer
IVsTextBuffer

[in] Der IVsTextBuffer, der die Quelldatei enthält.

line
Int32

[in] Die erste Zeile der Spanne, die auf Ausdrücke überprüft werden soll.

col
Int32

[in] Der Offset in der ersten Zeile, in der die Suche nach Ausdrücken beginnen soll.

cLines
Int32

[in] Die Anzahl der zu überprüfenden Zeilen.

ppEnum
IVsEnumBSTR

[out] Ein IVsEnumBSTR-Objekt, das die Liste der zu überprüfenden Ausdrücke enthält. Gibt einen NULL-Wert zurück, um anzuzeigen, dass keine Ausdrücke vorhanden sind.

Gibt zurück

Int32

Wenn erfolgreich, wird S_OK zurückgegeben, gibt S_FALSE zurück, wenn keine Ausdrücke vorhanden sind; Andernfalls wird ein Fehlercode zurückgegeben.

Implementiert

Beispiele

Hier ist eine mögliche Implementierung der- GetProximityExpressions Methode, die den ParseSource Methoden Parser aufruft, um die dem aktuellen Speicherort zugeordnete Code Spanne abzurufen. Beachten Sie, dass die- ParseSource Methode für den aktuellen Thread aufgerufen wird, sodass die Behandlung der Analyse Autos Grund sehr schnell erfolgen muss, um rückgängig-Verzögerungen beim Auffüllen des Auto-Fensters zu vermeiden.

Die GetAutoExpressionsCount GetAutoExpression im Beispiel gezeigten Methoden und sind benutzerdefinierte Methoden für das MyAuthoringSink -Objekt und wurden hinzugefügt, um diese Beispiel Implementierung zu unterstützen. Außerdem handelt es sich bei der- MyVsEnumBSTR Klasse um eine Klasse, die die- IVsEnumBSTR Schnittstelle implementiert.

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

Hinweise

Diese Methode wird während des Debuggens aufgerufen, um eine Liste der Variablen zu erhalten, die im Fenster Auto angezeigt werden können. Der Bereich von Zeilen umfasst in der Regel eine Methode oder eine Funktion.

Diese Methode kann implementiert werden, um die Version der- AuthoringSink Klasse zu verwenden, die mithilfe der-Methode Ausdrücke erfasst hat AutoExpression . Die Implementierung durchsucht die Liste der während eines Analyse-Vorgangs gesammelten Ausdrücke und gibt alle Ausdrücke zurück, die in der Spanne liegen, die durch die line Argumente, und festgelegt wurde col cLines .

Die Basis Methode gibt immer einen NULL-Wert zurück.

Gilt für