LanguageService.GetProximityExpressions(IVsTextBuffer, Int32, Int32, Int32, IVsEnumBSTR) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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.