// todo: move to version control backend
IEnumerable <Conflict> Conflicts(Mono.TextEditor.TextDocument doc)
{
int mergeStart = 0;
while ((mergeStart = doc.IndexOf("<<<<<<<", mergeStart, doc.TextLength - mergeStart, StringComparison.Ordinal)) >= 0)
{
DocumentLine start = doc.GetLineByOffset(mergeStart);
if (start.Offset != mergeStart)
{
continue;
}
int dividerOffset = doc.IndexOf("=======", mergeStart, doc.TextLength - mergeStart, StringComparison.Ordinal);
DocumentLine divider = doc.GetLineByOffset(dividerOffset);
int endOffset = doc.IndexOf(">>>>>>>", dividerOffset, doc.TextLength - dividerOffset, StringComparison.Ordinal);
DocumentLine end = doc.GetLineByOffset(endOffset);
mergeStart = dividerOffset + 1;
yield return(new Conflict(new TextSegment(start.EndOffsetIncludingDelimiter, divider.Offset - start.EndOffsetIncludingDelimiter),
new TextSegment(divider.EndOffsetIncludingDelimiter, end.Offset - divider.EndOffsetIncludingDelimiter),
start,
divider,
end));
}
}