Ejemplo n.º 1
0
 public ISmartIndent CreateSmartIndent(ITextView textView)
 {
     return(new SmartIndent(
                textView,
                _editorOptionsFactory.GetOptions(textView),
                _taggerProvider == null ? null : _taggerProvider.CreateTagger <ClassificationTag>(textView.TextBuffer)));
 }
Ejemplo n.º 2
0
        internal IList <ITagger <T> > GatherTaggers(ITextBuffer textBuffer)
        {
            List <ITagger <T> > newTaggers = new List <ITagger <T> >();

            var bufferTaggerFactories = this.TagAggregatorFactoryService.GuardedOperations.FindEligibleFactories(this.TagAggregatorFactoryService.GetBufferTaggersForType(textBuffer.ContentType, typeof(T)),
                                                                                                                 textBuffer.ContentType,
                                                                                                                 this.TagAggregatorFactoryService.ContentTypeRegistryService);

            foreach (var factory in bufferTaggerFactories)
            {
                ITaggerProvider provider = null;
                ITagger <T>     tagger   = null;

                try
                {
                    provider = factory.Value;
                    tagger   = provider.CreateTagger <T>(textBuffer);
                }
                catch (Exception e)
                {
                    object errorSource = (provider != null) ? (object)provider : factory;
                    this.TagAggregatorFactoryService.GuardedOperations.HandleException(errorSource, e);
                }

                this.RegisterTagger(tagger, newTaggers);
            }

            if (this.textView != null)
            {
                var viewTaggerFactories = this.TagAggregatorFactoryService.GuardedOperations.FindEligibleFactories(this.TagAggregatorFactoryService.GetViewTaggersForType(textBuffer.ContentType, typeof(T)).Where(f =>
                                                                                                                                                                                                                   (f.Metadata.TextViewRoles == null) || this.textView.Roles.ContainsAny(f.Metadata.TextViewRoles)),
                                                                                                                   textBuffer.ContentType,
                                                                                                                   this.TagAggregatorFactoryService.ContentTypeRegistryService);

                foreach (var factory in viewTaggerFactories)
                {
                    IViewTaggerProvider provider = null;
                    ITagger <T>         tagger   = null;

                    try
                    {
                        provider = factory.Value;
                        tagger   = provider.CreateTagger <T>(this.textView, textBuffer);
                    }
                    catch (Exception e)
                    {
                        object errorSource = (provider != null) ? (object)provider : factory;
                        this.TagAggregatorFactoryService.GuardedOperations.HandleException(errorSource, e);
                    }

                    this.RegisterTagger(tagger, newTaggers);
                }
            }

            return(newTaggers);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creating an ITagger for an ITaggerProvider can fail in a number of ways.  Wrap them
        /// all up here
        /// </summary>
        public static Result <ITagger <T> > SafeCreateTagger <T>(this ITaggerProvider taggerProvider, ITextBuffer textbuffer)
            where T : ITag
        {
            try
            {
                var tagger = taggerProvider.CreateTagger <T>(textbuffer);
                if (tagger == null)
                {
                    return(Result.Error);
                }

                return(Result.CreateSuccess(tagger));
            }
            catch (Exception e)
            {
                return(Result.CreateError(e));
            }
        }
Ejemplo n.º 4
0
        private IEnumerable <ITagSpan <TTag> > GetVsTagSpans <TTag>(IWpfTextView textView, ITaggerProvider taggerProvider) where TTag : ITag
        {
            var tagger = taggerProvider.CreateTagger <TTag>(textView.TextBuffer);

            return(GetVsTagSpans <TTag, ITagger <TTag> >(textView, tagger));
        }