public static SyntaxMode GetSyntaxMode(TextDocument doc, string mimeType) { if (string.IsNullOrEmpty(mimeType)) { return(null); } SyntaxMode result = null; if (syntaxModes.ContainsKey(mimeType)) { result = syntaxModes [mimeType].Create(doc); } else if (syntaxModeLookup.ContainsKey(mimeType)) { try { LoadSyntaxMode(mimeType); result = GetSyntaxMode(doc, mimeType); } catch (Exception e) { Console.WriteLine(e); } syntaxModeLookup.Remove(mimeType); } if (result != null) { foreach (var rule in semanticRules.Where(r => r.Item1 == mimeType)) { result.AddSemanticRule(rule.Item2, rule.Item3); } } return(result); }