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>);
        }
示例#2
0
        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>);
        }