Udostępnij za pośrednictwem


Metoda LanguageService.GetProximityExpressions —

Zwraca listę wyrażeń należy ocenić i przedstawione w samochody okna dla danego zakresu linii.

Przestrzeń nazw:  Microsoft.VisualStudio.Package
Zestawy:   Microsoft.VisualStudio.Package.LanguageService.9.0 (w Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (w Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.11.0 (w Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (w Microsoft.VisualStudio.Package.LanguageService.dll)

Składnia

'Deklaracja
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
)

Parametry

  • line
    Typ: System.Int32
    [w] Pierwszy wiersz zakresu do zbadania w wyrażeniach.
  • col
    Typ: System.Int32
    [w] Przesunięcie w pierwszym wierszu, aby rozpocząć wyszukiwanie wyrażeń.

Wartość zwracana

Typ: System.Int32
Jeśli się powiedzie, zwraca S_OK, zwraca S_FALSE , jeśli nie istnieją żadne wyrażenia; w przeciwnym razie zwraca kod błędu.

Implementuje

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

Uwagi

Ta metoda jest wywoływana podczas debugowania w celu uzyskania listy zmiennych, które mogą być wyświetlane w samochody okna.Zakres wierszy zazwyczaj obejmuje metody lub funkcji.

Tę metodę można zastosować do używać wersji AuthoringSink klasy, zgromadzony wyrażenia przez AutoExpression metody.Implementacji byłoby przeszukać listę wyrażeń zebranych podczas analizowania operacji i zwrócić wszystkie wyrażenia, które spadły w okresie, określonym przez line, col, i cLines argumentów.

Metody podstawowej zawsze zwraca wartość null.

Przykłady

W tym miejscu jest jedną z możliwych implementacji GetProximityExpressions wywołuje metodę ParseSource parser metoda uzyskania span kod skojarzony z bieżącej lokalizacji.Należy zauważyć, że ParseSource wywoływana jest metoda w bieżącym wątku tak obsługi Autos analizy przyczyny muszą być bardzo szybki uniknąć opóźnień podczas wypełniania Cofnij samochody okna.

GetAutoExpressionsCount i GetAutoExpression w przykładzie przedstawiono niestandardowe metody na MyAuthoringSink obiektu i zostały dodane do obsługi tego przykładem implementacji.Ponadto MyVsEnumBSTR klasa jest klasą, który implementuje IVsEnumBSTR interfejsu.

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

Zabezpieczenia programu .NET Framework

Zobacz też

Informacje

LanguageService Klasa

Przestrzeń nazw Microsoft.VisualStudio.Package