Visual Studio SDK - GetClassificationSpans 不会被调用



在我的分类器类中,我有一个包含以下代码的方法:

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

当我调用我的方法时,getclassificationspan不会被调用。我不明白为什么。我做错了什么吗?当没有发生编辑时,我如何强制Visual Studio调用getclassificationspan并将分类格式重新应用于代码?

我按照SLaks的建议查看了TextBuffer,它让我找到了解决方案。我在代码的其他地方引用了我的分类器来调用问题中提到的方法。然而,它被证明是对另一个具有不同TextBuffer的分类器的引用。我确保引用是正确的,现在一切都正常工作。

相关内容

  • 没有找到相关文章

最新更新