// todo: move to version control backend IEnumerable<Conflict> Conflicts (Mono.TextEditor.Document doc) { foreach (int mergeStart in doc.SearchForward ("<<<<<<<", 0)) { LineSegment start = doc.GetLineByOffset (mergeStart); if (start.Offset != mergeStart) continue; int dividerOffset = doc.SearchForward ("=======", mergeStart).First (); LineSegment divider = doc.GetLineByOffset (dividerOffset); int endOffset = doc.SearchForward (">>>>>>>", dividerOffset).First (); LineSegment end = doc.GetLineByOffset (endOffset); yield return new Conflict (new Mono.TextEditor.Segment (start.EndOffset, divider.Offset - start.EndOffset), new Mono.TextEditor.Segment (divider.EndOffset, end.Offset - divider.EndOffset), new Mono.TextEditor.Segment (start), new Mono.TextEditor.Segment (divider), new Mono.TextEditor.Segment (end)); } }