internal static bool IsCompatibleScope(StackMatchExpression expr, ScopeStack scope, ref string matchingKey, ref int depth) { depth = 0; if (scope.Count == 1) { var result = expr.MatchesStack(scope, ref matchingKey); if (result.Item1) { return(true); } depth = 1; } else { depth = 0; while (!scope.IsEmpty) { var result = expr.MatchesStack(scope, ref matchingKey); if (result.Item1) { return(true); } scope = scope.Pop(); depth++; } } return(false); }
internal static TmSnippet ReadSnippet(Stream stream) { var dict = PDictionary.FromStream(stream); string name = null; string content = null; string tabTrigger = null; var scopes = new List <StackMatchExpression> (); PObject val; if (dict.TryGetValue("name", out val)) { name = ((PString)val).Value; } if (dict.TryGetValue("content", out val)) { content = ((PString)val).Value; } if (dict.TryGetValue("tabTrigger", out val)) { tabTrigger = ((PString)val).Value; } if (dict.TryGetValue("scope", out val)) { foreach (var scope in ((PString)val).Value.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { scopes.Add(StackMatchExpression.Parse(scope)); } } return(new TmSnippet(name, scopes, content, tabTrigger)); }
internal static TmSetting ReadPreferences(PDictionary dict) { string name = null; var scopes = new List <StackMatchExpression> (); var settings = new Dictionary <string, PObject> (); PObject val; if (dict.TryGetValue("name", out val)) { name = ((PString)val).Value; } if (dict.TryGetValue("scope", out val)) { foreach (var scope in ((PString)val).Value.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { scopes.Add(StackMatchExpression.Parse(scope)); } } if (dict.TryGetValue("settings", out val)) { var settingsDictionary = val as PDictionary; foreach (var setting in settingsDictionary) { settings.Add(setting.Key, setting.Value); } } return(new TmSetting(name, scopes, settings)); }
internal static bool IsSettingMatch(ScopeStack scopes, StackMatchExpression expr) { string cs = null; int d = 0; if (EditorTheme.IsCompatibleScope(expr, scopes, ref cs, ref d)) { return(true); } return(false); }
internal ThemeSetting(string name, IReadOnlyList <string> scopes, IReadOnlyDictionary <string, string> settings) { Name = name; var s = new List <StackMatchExpression> (); if (scopes != null) { foreach (var str in scopes) { s.Add(StackMatchExpression.Parse(str)); } } this.scopes = s; this.settings = settings ?? new Dictionary <string, string> (); }
internal static TmSnippet ReadSnippet(Stream stream) { string name = null; string content = null; string tabTrigger = null; var scopes = new List <StackMatchExpression> (); using (var reader = XmlReader.Create(stream)) { while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element) { continue; } switch (reader.LocalName) { case "content": if (reader.Read()) { content = reader.Value; } break; case "tabTrigger": if (reader.Read()) { tabTrigger = reader.Value; } break; case "scope": if (reader.Read()) { scopes.Add(StackMatchExpression.Parse(reader.Value)); } break; case "description": if (reader.Read()) { name = reader.Value; } break; } } } return(new TmSnippet(name, scopes, content, tabTrigger)); }
public ContinueExpression(StackMatchExpression left, StackMatchExpression right) { this.left = left; this.right = right; }
public MinusExpression(StackMatchExpression left) : base(left) { }
public OrExpression(StackMatchExpression left) : base(left) { }
public void SetRightSide(StackMatchExpression right) { this.right = right; }
public BinaryExpression(StackMatchExpression left) { this.left = left; }