コード例 #1
0
ファイル: ToDoMode.cs プロジェクト: m4dc4p/mg-todo
            void Reparse(object ignored)
            {
                if (bufferDirty)
                {
                    lock (l)
                        if (bufferDirty)
                            bufferDirty = false;

                    // Mostly stolen from DynamicParserLanguageServiceItem
                    ToDoErrorReporter reporter = new ToDoErrorReporter();
                    parser.Parse<object>(uri.ToString(), new TextSnapshotToTextReader(this.textBuffer.CurrentSnapshot),
                        reporter);

                    this.bufferView.Dispatcher.BeginInvoke(
                        DispatcherPriority.Normal, (Action)delegate {
                        CleanupOldToolTipPopups();
                        ProcessSquiggles(reporter);
                    });
                }
            }
コード例 #2
0
ファイル: ToDoMode.cs プロジェクト: m4dc4p/mg-todo
            // Mostly from DynamicParserLanguageServiceItem
            void ProcessSquiggles(ToDoErrorReporter reporter)
            {
                if (this.squiggleProvider == null)
                    return;

                foreach (ISquiggleAdornment squiggle in this.squiggles)
                    this.squiggleProvider.RemoveSquiggle(squiggle);

                this.squiggles.Clear();

                foreach (ErrorInfo error in reporter.Errors)
                {
                    if (error.Location != null && error.Location.Span.Length > 0)
                    {
                        SnapshotSpan convertedSpan = GetCurrentSpan((ITextSnapshot)this.textBuffer.CurrentSnapshot,
                            error.Location.Span);
                        ITrackingSpan trackingSpan = convertedSpan.Snapshot.CreateTrackingSpan(
                            convertedSpan.Span,
                            SpanTrackingMode.EdgeExclusive);
                        ISquiggleAdornment squiggle = this.squiggleProvider.AddSquiggle(trackingSpan,
                            String.Format(error.Info.Message, new List<object>(error.Info.Arguments).ToArray()));
                        this.squiggles.Add(squiggle);
                    }
                }
            }