public Diffy(EditorFrame ef) { _ef = ef; InitializeComponent(); if (_ef != null) { chkCurrentDocument.IsChecked = true; edtXmlFile1.Text = _ef.XSDocument.Filename; } else { chkCurrentDocument.IsEnabled = false; } markerOne = new MarkBackgroundRenderer(edtOne); markerTwo = new MarkBackgroundRenderer(edtTwo); edtOne.TextArea.TextView.BackgroundRenderers.Add(markerOne); edtTwo.TextArea.TextView.BackgroundRenderers.Add(markerTwo); }
private void renderDiff(TextEditor textEditor, IEnumerable <DiffPiece> diff, MarkBackgroundRenderer marker) { foreach (var line in diff) { if (line.Position == null) { continue; } int offset = textEditor.Document.GetOffset((int)line.Position, 1); switch (line.Type) { case ChangeType.Deleted: { marker.AddOffsetToMark(new MarkBackgroundRenderer.Mark { Offset = offset, Length = line.Text.Length, Brush = new SolidColorBrush(Color.FromArgb(255, 255, 200, 100)) }); break; } case ChangeType.Inserted: { marker.AddOffsetToMark(new MarkBackgroundRenderer.Mark { Offset = offset, Length = line.Text.Length, Brush = new SolidColorBrush(Color.FromArgb(255, 255, 255, 0)) }); break; } case ChangeType.Unchanged: { continue; } case ChangeType.Modified: { marker.AddOffsetToMark(new MarkBackgroundRenderer.Mark { Offset = offset, Length = line.Text.Length, Brush = new SolidColorBrush(Color.FromArgb(255, 220, 220, 128)) }); break; //foreach (DiffPiece piece in line.SubPieces) //{ // Console.WriteLine(); //} } case ChangeType.Imaginary: { //deleted, shown as deleted in other pane //could insert imaginary line, but that's work... break; } } } }