// 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))); } }