IScanner.ScanTokenAndProvideInfoAboutIt 方法
分析从当前行的下一个语言标记并返回有关它的信息。
命名空间: Microsoft.VisualStudio.Package
程序集: Microsoft.VisualStudio.Package.LanguageService.10.0(在 Microsoft.VisualStudio.Package.LanguageService.10.0.dll 中)
Microsoft.VisualStudio.Package.LanguageService.11.0(在 Microsoft.VisualStudio.Package.LanguageService.11.0.dll 中)
Microsoft.VisualStudio.Package.LanguageService.9.0(在 Microsoft.VisualStudio.Package.LanguageService.9.0.dll 中)
Microsoft.VisualStudio.Package.LanguageService(在 Microsoft.VisualStudio.Package.LanguageService.dll 中)
语法
声明
Function ScanTokenAndProvideInfoAboutIt ( _
tokenInfo As TokenInfo, _
ByRef state As Integer _
) As Boolean
bool ScanTokenAndProvideInfoAboutIt(
TokenInfo tokenInfo,
ref int state
)
参数
- tokenInfo
类型:Microsoft.VisualStudio.Package.TokenInfo
[in, out] 将填充的 TokenInfo 结构。
- state
类型:System.Int32%
[in, out] 扫描仪的当前状态值。
返回值
类型:System.Boolean
返回 true ,如果标记从当前行进行分析,并信息返回;否则,将不返回指示在当前行的 false 没有其他标记。
备注
调用 SetSource 方法设置要分析的行。然后 ScanTokenAndProvideInfoAboutIt 方法重复通常会调用,直到所有标记获取。
示例
这是 colorizer 可以使用此策略方法的示例。
using Microsoft.VisualStudio.TextManager.Interop;
using Microsoft.VisualStudio.Package;
namespace MyLanguagePackage
{
public class MyColorizer : IVsColorizer
{
IScanner scanner;
public int ColorizeLine(int line,
int length,
IntPtr ptr,
int state,
uint[] attrs)
{
int linepos = 0;
if (this.scanner != null)
{
try
{
string text = Marshal.PtrToStringUni(ptr, length);
this.scanner.SetSource(text, 0);
TokenInfo tokenInfo = new TokenInfo();
while (this.scanner.ScanTokenAndProvideInfoAboutIt(tokenInfo, ref state))
{
// Do something with tokenInfo
}
}
catch (Exception)
{
// Catch and ignore exceptions
}
}
return state;
}
}
}
.NET Framework 安全性
- 对直接调用方的完全信任。此成员不能由部分信任的代码使用。有关更多信息,请参见通过部分受信任的代码使用库。