Visual Studio SDK - 未调用 GetClassificationSpans
Visual Studio SDK - GetClassificationSpans doesn't get called
在我的 classifier class 中,我有一个包含以下代码的方法:
var handler = ClassificationChanged;
if (handler != null)
{
IVsTextManager textManager = (IVsTextManager)ServiceProvider.GlobalProvider.GetService(typeof(SVsTextManager));
IVsTextView vTextView = null;
int mustHaveFocus = 1;
textManager.GetActiveView(mustHaveFocus, null, out vTextView);
IVsUserData userData = vTextView as IVsUserData;
if (userData != null)
{
IWpfTextViewHost viewHost;
object holder;
Guid guidViewHost = DefGuidList.guidIWpfTextViewHost;
userData.GetData(ref guidViewHost, out holder);
viewHost = (IWpfTextViewHost)holder;
IWpfTextView textView = viewHost.TextView;
ITextSnapshot textSnapshot = textView.TextSnapshot;
SnapshotSpan span = new SnapshotSpan(textSnapshot, 0, textSnapshot.Length);
var eventArgs = new ClassificationChangedEventArgs(span);
handler(this, eventArgs);
}
}
当我调用我的方法时,GetClassificationSpans 没有被调用。我不明白为什么。我做错了什么吗?如何强制 Visual Studio 调用 GetClassificationSpans 并在未发生编辑时将 class化格式重新应用到代码?
我按照 SLaks 的建议查看了 TextBuffer,它引导我找到了解决方案。我在代码的其他地方引用了我的分类器来调用我在问题中提到的方法。然而,结果证明它是对另一个具有不同 TextBuffer 的分类器的引用。我确保参考是正确的,现在一切正常。
在我的 classifier class 中,我有一个包含以下代码的方法:
var handler = ClassificationChanged;
if (handler != null)
{
IVsTextManager textManager = (IVsTextManager)ServiceProvider.GlobalProvider.GetService(typeof(SVsTextManager));
IVsTextView vTextView = null;
int mustHaveFocus = 1;
textManager.GetActiveView(mustHaveFocus, null, out vTextView);
IVsUserData userData = vTextView as IVsUserData;
if (userData != null)
{
IWpfTextViewHost viewHost;
object holder;
Guid guidViewHost = DefGuidList.guidIWpfTextViewHost;
userData.GetData(ref guidViewHost, out holder);
viewHost = (IWpfTextViewHost)holder;
IWpfTextView textView = viewHost.TextView;
ITextSnapshot textSnapshot = textView.TextSnapshot;
SnapshotSpan span = new SnapshotSpan(textSnapshot, 0, textSnapshot.Length);
var eventArgs = new ClassificationChangedEventArgs(span);
handler(this, eventArgs);
}
}
当我调用我的方法时,GetClassificationSpans 没有被调用。我不明白为什么。我做错了什么吗?如何强制 Visual Studio 调用 GetClassificationSpans 并在未发生编辑时将 class化格式重新应用到代码?
我按照 SLaks 的建议查看了 TextBuffer,它引导我找到了解决方案。我在代码的其他地方引用了我的分类器来调用我在问题中提到的方法。然而,结果证明它是对另一个具有不同 TextBuffer 的分类器的引用。我确保参考是正确的,现在一切正常。