コード例 #1
0
        public JadeClassifierProvider(IClassificationTypeRegistryService registryService,
                                      ITextBufferFactoryService bufferFact,
                                      IContentTypeRegistryService contentTypeService,
                                      [ImportMany(typeof(ITaggerProvider))] Lazy <ITaggerProvider, TaggerProviderMetadata>[] taggerProviders,
                                      [ImportMany(typeof(IClassifierProvider))] Lazy <IClassifierProvider, IClassifierProviderMetadata>[] classifierProviders)
        {
            this.ClassificationRegistryService = registryService;
            this.BufferFactoryService          = bufferFact;
            this.JsContentType  = contentTypeService.GetContentType(NodejsConstants.JavaScript);
            this.CssContentType = contentTypeService.GetContentType(NodejsConstants.CSS);

            var jsTagger = taggerProviders.Where(
                provider =>
                provider.Metadata.ContentTypes.Contains(NodejsConstants.JavaScript) &&
                provider.Metadata.TagTypes.Any(tagType => tagType.IsSubclassOf(typeof(ClassificationTag)))
                ).FirstOrDefault();

            if (this.JsTaggerProvider != null)
            {
                this.JsTaggerProvider = jsTagger.Value;
            }

            var cssTagger = classifierProviders.Where(
                provider => provider.Metadata.ContentTypes.Any(x => x.Equals("css", StringComparison.OrdinalIgnoreCase))
                ).FirstOrDefault();

            if (cssTagger != null)
            {
                this.CssClassifierProvider = cssTagger.Value;
            }
        }
コード例 #2
0
        public JadeClassifierProvider(IClassificationTypeRegistryService registryService,   
            ITextBufferFactoryService bufferFact,
            IContentTypeRegistryService contentTypeService,
            [ImportMany(typeof(ITaggerProvider))]Lazy<ITaggerProvider, TaggerProviderMetadata>[] taggerProviders,
            [ImportMany(typeof(IClassifierProvider))]Lazy<IClassifierProvider, IClassifierProviderMetadata>[] classifierProviders) {
            ClassificationRegistryService = registryService;
            BufferFactoryService = bufferFact;
            JsContentType = contentTypeService.GetContentType(NodejsConstants.JavaScript);
            CssContentType = contentTypeService.GetContentType(NodejsConstants.CSS);

            var jsTagger = taggerProviders.Where(
                provider =>
                    provider.Metadata.ContentTypes.Contains(NodejsConstants.JavaScript) &&
                    provider.Metadata.TagTypes.Any(tagType => tagType.IsSubclassOf(typeof(ClassificationTag)))
            ).FirstOrDefault();
            if (JsTaggerProvider != null) {
                JsTaggerProvider = jsTagger.Value;
            }

            var cssTagger = classifierProviders.Where(
                provider => provider.Metadata.ContentTypes.Any(x => x.Equals("css", StringComparison.OrdinalIgnoreCase))
            ).FirstOrDefault();
            if (cssTagger != null) {
                CssClassifierProvider = cssTagger.Value;
            }
        }
コード例 #3
0
            internal VersionInfo(ReSharperVersion version, IReSharperEditTagDetector editTagDetector, ITaggerProvider taggerProvider)
            {
                Contract.Assert(editTagDetector != null);

                Version = version;
                EditTagDetector = editTagDetector;
                TaggerProvider = taggerProvider;
            }
コード例 #4
0
            internal VersionInfo(ReSharperVersion version, IReSharperEditTagDetector editTagDetector, ITaggerProvider taggerProvider)
            {
                Contract.Assert(editTagDetector != null);

                Version         = version;
                EditTagDetector = editTagDetector;
                TaggerProvider  = taggerProvider;
            }
コード例 #5
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);
        }
コード例 #6
0
        public SmartIndentProvider(IEditorOptionsFactoryService editorOptionsFactory,
            [ImportMany(typeof(ITaggerProvider))]Lazy<ITaggerProvider, TaggerProviderMetadata>[] classifierProviders) {
            _editorOptionsFactory = editorOptionsFactory;

            // we use a tagger provider here instead of an IClassifierProvider because the 
            // JS language service doesn't actually implement IClassifierProvider and instead implemnets
            // ITaggerProvider<ClassificationTag> instead.  We can get those tags via IClassifierAggregatorService
            // but that merges together adjacent tokens of the same type, so we go straight to the
            // source here.
            _taggerProvider = classifierProviders.Where(
                provider =>
                    provider.Metadata.ContentTypes.Contains(NodejsConstants.JavaScript) &&
                    provider.Metadata.TagTypes.Any(tagType => tagType.IsSubclassOf(typeof(ClassificationTag)))
            ).First().Value;
        }
コード例 #7
0
        public SmartIndentProvider(IEditorOptionsFactoryService editorOptionsFactory,
                                   [ImportMany(typeof(ITaggerProvider))] Lazy <ITaggerProvider, TaggerProviderMetadata>[] classifierProviders)
        {
            _editorOptionsFactory = editorOptionsFactory;

            // we use a tagger provider here instead of an IClassifierProvider because the
            // JS language service doesn't actually implement IClassifierProvider and instead implemnets
            // ITaggerProvider<ClassificationTag> instead.  We can get those tags via IClassifierAggregatorService
            // but that merges together adjacent tokens of the same type, so we go straight to the
            // source here.
            _taggerProvider = classifierProviders.Where(
                provider =>
                provider.Metadata.ContentTypes.Contains(NodejsConstants.JavaScript) &&
                provider.Metadata.TagTypes.Any(tagType => tagType.IsSubclassOf(typeof(ClassificationTag)))
                ).First().Value;
        }
コード例 #8
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));
            }
        }
コード例 #9
0
        /// <summary>
        /// The Lazy(Of ITaggerProvider) value can throw on the Value property.  The call back
        /// is what invokes composition and that can fail.  Handle the exception here and ignore
        /// the individual property
        /// </summary>
        private IEnumerable <ITaggerProvider> GetTaggerProvidersSafe()
        {
            foreach (var lazy in TaggerProviders)
            {
                ITaggerProvider taggerProvider = null;
                try
                {
                    taggerProvider = lazy.Value;
                }
                catch
                {
                    // Ignore this lazy and move onto the next
                }

                if (taggerProvider != null)
                {
                    yield return(taggerProvider);
                }
            }
        }
コード例 #10
0
 internal void ResetForVersion(ReSharperVersion version, ITaggerProvider taggerProvider = null)
 {
     var editTagDetector = GetEditTagDetector(version);
     _versionInfo = new VersionInfo(version, editTagDetector, taggerProvider);
 }
コード例 #11
0
        internal void ResetForVersion(ReSharperVersion version, ITaggerProvider taggerProvider = null)
        {
            var editTagDetector = GetEditTagDetector(version);

            _versionInfo = new VersionInfo(version, editTagDetector, taggerProvider);
        }
コード例 #12
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));
        }