Пример #1
0
        // 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)));
            }
        }