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
- buffer
Type : Microsoft.VisualStudio.TextManager.Interop.IVsTextBuffer
[in] IVsTextBuffer maintenant le fichier source.
- 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.
- ppEnum
Type : Microsoft.VisualStudio.TextManager.Interop.IVsEnumBSTR%
[] un objet d'IVsEnumBSTR qui contient la liste d'expressions pour examiner.Retourne une valeur NULL pour n'indiquer aucune expression.
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
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.