Visual studio 2010 强制从外部事件更新标记
这是一个有点异国情调的问题,但无论如何我都会尝试 我正在使用MEF编写VisualStudio2010扩展。在我的代码中,每当保存文档时,我都需要提供一些错误图示符,如制动点。问题是,我似乎无法找到如何在不让用户编写任何内容的情况下强制调用ITagger的GetTags 我可以捕获document save事件,但我缺少了这与调用GetTags方法之间的联系。有什么想法吗 下面是一些代码:Visual studio 2010 强制从外部事件更新标记,visual-studio-2010,plugins,mef,Visual Studio 2010,Plugins,Mef,这是一个有点异国情调的问题,但无论如何我都会尝试 我正在使用MEF编写VisualStudio2010扩展。在我的代码中,每当保存文档时,我都需要提供一些错误图示符,如制动点。问题是,我似乎无法找到如何在不让用户编写任何内容的情况下强制调用ITagger的GetTags 我可以捕获document save事件,但我缺少了这与调用GetTags方法之间的联系。有什么想法吗 下面是一些代码: internal class RTextErrorTag : IGlyphTag {}
internal class RTextErrorTag : IGlyphTag
{}
class RTextErrorGlyphTagger : ITagger<RTextErrorTag>
{
private IClassifier mClassifier;
private SimpleTagger<ErrorTag> mSquiggleTagger;
private EnvDTE._DTE mMSVSInstance = null;
private List<object> mDTEEvents = new List<object>();
internal RTextErrorGlyphTagger(IClassifier classifier, IErrorProviderFactory squiggleProviderFactory, ITextBuffer buffer, IServiceProvider serviceProvider)
{
this.mClassifier = classifier;
this.mSquiggleTagger = squiggleProviderFactory.GetErrorTagger(buffer);
mMSVSInstance = serviceProvider.GetService(typeof(EnvDTE._DTE)) as EnvDTE._DTE;
var eventHolder = mMSVSInstance.Events.DocumentEvents;
mDTEEvents.Add(eventHolder);
eventHolder.DocumentSaved += new EnvDTE._dispDocumentEvents_DocumentSavedEventHandler(OnDocumentSaved);
}
void OnDocumentSaved(EnvDTE.Document Document)
{
//fire up event to renew glyphs - how to force GetTags method?
var temp = this.TagsChanged;
if (temp != null)
temp(this, new SnapshotSpanEventArgs(new SnapshotSpan() )); //how to foce get
}
IEnumerable<ITagSpan<RTextErrorTag>> ITagger<RTextErrorTag>.GetTags(NormalizedSnapshotSpanCollection spans)
{
foreach (SnapshotSpan span in spans)
{
foreach (var error in this.mSquiggleTagger.GetTaggedSpans(span))
{
yield return new TagSpan<RTextErrorTag>(new SnapshotSpan(span.Start, 1), new RTextErrorTag());
}
}
}
public event EventHandler<SnapshotSpanEventArgs> TagsChanged;
}
我也有同样的需要-你找到解决办法了吗?谢谢