private static void RegisterTagger(string locale, string tagName, ITagger tagger) { if (IsTagRegistered(locale, tagName)) { throw new Exception(String.Format("{0} and {1} taggers for locale \"{2}\" share common tag name {3}", tagger.GetType().Name, s_taggers[locale][tagName].GetType().Name, locale, tagName)); } locale = locale.ToLower(); tagName = tagName.ToLower(); if (!s_taggers.ContainsKey(locale)) { s_taggers.Add(locale, new Dictionary <string, ITagger>()); } s_taggers[locale].Add(tagName, tagger); }
public ITagger <TTagType> CreateTagger(ITextBuffer buffer) { if (taggerAdapters.Count == 0) { Singleton = createTagger(buffer); Debug.WriteLine($"SLVS SingletonDisposableTaggerManager ({this.GetHashCode()}): Created new singleton tagger: {Singleton.GetType().Name}"); } var tagger = new FlyweightTaggerWrapper(Singleton, RemoveTagger); taggerAdapters.Add(tagger); Debug.WriteLine($"SLVS SingletonDisposableTaggerManager ({this.GetHashCode()}): Created new flyweight tagger. New count: {taggerAdapters.Count}. Singleton: {Singleton.GetType().Name}, hash code: {Singleton.GetHashCode()}"); return(tagger); }