Exemplo n.º 1
0
 internal void Fire_FileParseMessagesAvailable(object sender, Protocol.Response.FileParseMessagesResponse response)
 {
     if (FileParseMessagesAvailable != null)
     {
         FileParseMessagesAvailable(sender, response);
     }
 }
Exemplo n.º 2
0
        void JavaEditor_FileParseMessagesAvailable(object sender, Protocol.Response.FileParseMessagesResponse e)
        {
            Task.Run(() =>
            {
                var parser            = sender as JavaParser;
                var newSquiggles      = from s in e.problems select new Tuple <SnapshotSpan, int>(new SnapshotSpan(parser.TextSnapshot, Span.FromBounds(s.scopeStart, s.scopeEnd)), s.id);
                var existingSquiggles = from s in CurrentProblems.Item2 select new Tuple <SnapshotSpan, int>(new SnapshotSpan(CurrentProblems.Item1.TextSnapshot, Span.FromBounds(s.scopeStart, s.scopeEnd)).TranslateTo(parser.TextSnapshot, SpanTrackingMode.EdgeExclusive), s.id);

                var lookupNewSquiggles = newSquiggles.ToLookup(x => x);
                var lookupOldSquiggles = existingSquiggles.ToLookup(x => x);
                var removedSquiggles   = from o in lookupOldSquiggles where lookupNewSquiggles[o.Key].Count() != o.Count() select o.Key;
                var addedSquiggles     = from n in lookupNewSquiggles where lookupOldSquiggles[n.Key].Count() != n.Count() select n.Key;

                if (removedSquiggles.Count() != 0 || addedSquiggles.Count() != 0)
                {
                    int changeStart = int.MaxValue;
                    int changeEnd   = -1;

                    foreach (var r in removedSquiggles)
                    {
                        changeStart = Math.Min(changeStart, r.Item1.Start);
                        changeEnd   = Math.Max(changeEnd, r.Item1.End);
                    }
                    foreach (var r in addedSquiggles)
                    {
                        changeStart = Math.Min(changeStart, r.Item1.Start);
                        changeEnd   = Math.Max(changeEnd, r.Item1.End);
                    }

                    this.CurrentProblems = new Tuple <JavaParser, List <Protocol.Response.FileParseMessagesResponse.Problem> >(parser, e.problems);

                    var trace = string.Format("Java Parser: Squiggles have changed. Removed: {0}, Added: {1}", removedSquiggles.Count(), addedSquiggles.Count());
                    Trace.WriteLine(trace);
                    Telemetry.Client.Get().TrackTrace(trace);

                    var temp = this.TagsChanged;
                    if (temp != null)
                    {
                        temp(this, new SnapshotSpanEventArgs(new SnapshotSpan(parser.TextSnapshot, Span.FromBounds(changeStart, changeEnd))));
                    }
                }
            });
        }