public ITagger <T> CreateTagger <T>(ITextView textView, ITextBuffer buffer) where T : ITag { if (textView == null) { throw new ArgumentNullException(nameof(textView)); } if (buffer == null) { throw new ArgumentNullException(nameof(buffer)); } if (buffer != textView.TextBuffer) { return(null); } if (!taggableBufferIndicator.IsTaggable(buffer)) { return(null); } var tagger = Create(textView as IWpfTextView); return(tagger as ITagger <T>); }
public ITagger <T> CreateTagger <T>(ITextBuffer buffer) where T : ITag { if (buffer == null) { throw new ArgumentNullException(nameof(buffer)); } if (!taggableBufferIndicator.IsTaggable(buffer)) { return(null); } // Tip when debugging/developing: a buffer tagger won't be created until there is something that can consume the tags. In our case, // it means until one of our view tagger providers is created, because they create a tag aggregator that consumes the those // buffer tags. var tagger = Create(buffer); return(tagger as ITagger <T>); }
public ITagger <T> CreateTagger <T>(ITextBuffer buffer) where T : ITag { if (buffer == null) { throw new ArgumentNullException(nameof(buffer)); } if (!taggableBufferIndicator.IsTaggable(buffer)) { return(null); } // We only want one location tagger per buffer and we don't want it be disposed until // it is not being used by any tag aggregators, so we're wrapping it in a SingletonDisposableTaggerManager var taggerManager = buffer.Properties.GetOrCreateSingletonProperty(typeof(SingletonDisposableTaggerManager <IIssueLocationTag>), () => new SingletonDisposableTaggerManager <IIssueLocationTag>(InternalCreateTagger)); var tagger = taggerManager.CreateTagger(buffer); return(tagger as ITagger <T>); }