diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2014-06-27 13:57:20 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2014-06-27 13:57:20 +0400 |
commit | 5aaf473ee8fb097fc88165097c8cede1e362768f (patch) | |
tree | cf1e9bdc27864ca7804b51e943f47076f425d36d /main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs | |
parent | 3a9df9bc6875aff7bb03f7736bee780b4f071d91 (diff) | |
parent | 29e49044b88eece48606cc128d779e7dbf2d622c (diff) |
Merge branch 'master' into retina-editor
Conflicts:
main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ExportCodeGenerator.cs
main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs
main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextEditorIndentation.cs
main/src/addins/CSharpBinding/MonoDevelop.CSharp.Parser/TypeSystemProvider.cs
main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringContext.cs
main/src/addins/CSharpBinding/MonoDevelop.CSharp/ExpandSelectionHandler.cs
main/src/addins/CSharpBinding/MonoDevelop.CSharp/PathedDocumentTextEditorExtension.cs
main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs
main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood/DocFoodTextEditorExtension.cs
main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/Gui/ResultMarker.cs
main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeAnalysisBatchRunner.cs
main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeIssuePanelWidget.cs
main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/FindDerivedSymbolsHandler.cs
main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringOptions.cs
main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringPreviewDialog.cs
main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskStrip.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/AbstractUsagesExtension.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/DebugValueTooltipProvider.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/DebugTextMarker.cs
main/src/addins/MonoDevelop.XmlEditor/MonoDevelop.XmlEditor.Gui/BaseXmlEditorExtension.cs
main/src/core/Mono.Texteditor/Mono.TextEditor/TextLineMarker.cs
main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Components/PathBar.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/TooltipInformationWindow.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextLinkModeEventArgs.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResult.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
main/tests/UnitTests/MonoDevelop.SourceEditor/DebugTooltipTests.cs
Diffstat (limited to 'main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs')
-rw-r--r-- | main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs index d71ca4efac..d4b2f04505 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs @@ -116,19 +116,29 @@ namespace MonoDevelop.VersionControl.Views } // todo: move to version control backend + const string conflictStart = "<<<<<<<"; + const string conflictDivider = "======="; + const string conflictEnd = ">>>>>>>"; + static IEnumerable<Conflict> Conflicts (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; + var startLines = new List<DocumentLine> (); + var dividerLines = new List<DocumentLine> (); + var endLines = new List<DocumentLine> (); + foreach (var line in doc.Lines) { + int len = Math.Min (7, line.Length); + if (doc.IndexOf (conflictStart, line.Offset, len, StringComparison.Ordinal) >= 0) + startLines.Add (line); + else if (doc.IndexOf (conflictDivider, line.Offset, len, StringComparison.Ordinal) >= 0) + dividerLines.Add (line); + else if (doc.IndexOf (conflictEnd, line.Offset, len, StringComparison.Ordinal) >= 0) + endLines.Add (line); + } + + for (int i = 0; i < startLines.Count; ++i) { + var start = startLines [i]; + var divider = dividerLines [i]; + var end = endLines [i]; yield return new Conflict (new TextSegment (start.EndOffsetIncludingDelimiter, divider.Offset - start.EndOffsetIncludingDelimiter), new TextSegment (divider.EndOffsetIncludingDelimiter, end.Offset - divider.EndOffsetIncludingDelimiter), |