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; } }
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; } }
internal VersionInfo(ReSharperVersion version, IReSharperEditTagDetector editTagDetector, ITaggerProvider taggerProvider) { Contract.Assert(editTagDetector != null); Version = version; EditTagDetector = editTagDetector; TaggerProvider = taggerProvider; }
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); }
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; }
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; }
/// <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)); } }
/// <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); } } }
internal void ResetForVersion(ReSharperVersion version, ITaggerProvider taggerProvider = null) { var editTagDetector = GetEditTagDetector(version); _versionInfo = new VersionInfo(version, editTagDetector, taggerProvider); }
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)); }