From 52bb2f5ac541f87f8dfc70e4290a2191723634b2 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 22 Dec 2010 21:39:50 +0100 Subject: [PATCH] change marker now shows deletions --- .../AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs | 5 ++--- .../AvalonEdit.AddIn/Src/DefaultChangeWatcher.cs | 13 ++++++++++--- .../GitAddIn/Src/GitVersionProvider.cs | 5 ++++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs index 0c073abb80..afe7ca79d4 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs @@ -56,8 +56,7 @@ namespace ICSharpCode.AvalonEdit.AddIn throw new Exception("Invalid value for ChangeType"); } - // not needed currently - TODO we have no complete SVN/Git support - /*if (!string.IsNullOrEmpty(info.DeletedLinesAfterThisLine)) { + if (!string.IsNullOrEmpty(info.DeletedLinesAfterThisLine)) { Point pt1 = new Point(5, line.VisualTop + line.Height - textView.ScrollOffset.Y - 4); Point pt2 = new Point(10, line.VisualTop + line.Height - textView.ScrollOffset.Y); Point pt3 = new Point(5, line.VisualTop + line.Height - textView.ScrollOffset.Y + 4); @@ -76,7 +75,7 @@ namespace ICSharpCode.AvalonEdit.AddIn drawingContext.DrawGeometry(Brushes.Red, null, new PathGeometry(new List() { CreateNAngle(pt1, pt2, pt3) })); } - }*/ + } } } } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DefaultChangeWatcher.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DefaultChangeWatcher.cs index 79eabf5031..a83bb4988c 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DefaultChangeWatcher.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DefaultChangeWatcher.cs @@ -75,10 +75,17 @@ namespace ICSharpCode.AvalonEdit.AddIn changeList.Add(new LineChangeInfo(ChangeType.None, "")); int lastEndLine = 0; foreach (Edit edit in diff.GetEdits()) { + Console.WriteLine(edit); + int beginLine = textDocument.GetLineByOffset(edit.BeginB).LineNumber; int endLine = textDocument.GetLineByOffset(edit.EndB).LineNumber; changeList.InsertRange(changeList.Count, beginLine - lastEndLine, new LineChangeInfo(ChangeType.None, "")); - changeList.InsertRange(changeList.Count, endLine - beginLine, new LineChangeInfo(edit.EditType, "")); + if (edit.EditType == ChangeType.Deleted) { + LineChangeInfo change = changeList[beginLine]; + change.DeletedLinesAfterThisLine += baseFile.Substring(edit.BeginA, edit.EndA - edit.BeginA); + changeList[beginLine] = change; + } else + changeList.InsertRange(changeList.Count, endLine - beginLine, new LineChangeInfo(edit.EditType, "")); lastEndLine = endLine; } changeList.InsertRange(changeList.Count, textDocument.LineCount - lastEndLine, new LineChangeInfo(ChangeType.None, "")); @@ -109,8 +116,8 @@ namespace ICSharpCode.AvalonEdit.AddIn void UndoStackPropertyChanged(object sender, PropertyChangedEventArgs e) { -// if (textDocument.UndoStack.IsOriginalFile) -// SetupInitialFileState(); + if (textDocument.UndoStack.IsOriginalFile) + SetupInitialFileState(); } void ILineTracker.BeforeRemoveLine(DocumentLine line) diff --git a/src/AddIns/VersionControl/GitAddIn/Src/GitVersionProvider.cs b/src/AddIns/VersionControl/GitAddIn/Src/GitVersionProvider.cs index 04ec07f143..94b96f8e2f 100644 --- a/src/AddIns/VersionControl/GitAddIn/Src/GitVersionProvider.cs +++ b/src/AddIns/VersionControl/GitAddIn/Src/GitVersionProvider.cs @@ -107,8 +107,11 @@ namespace ICSharpCode.GitAddIn if (!CreateProcess(null, string.Format("cmd /c git cat-file blob {0}", blobHash), IntPtr.Zero, IntPtr.Zero, true, 0, IntPtr.Zero, Path.GetDirectoryName(fileName), ref startupInfo, - out procInfo)) + out procInfo)) { + pipe.DisposeLocalCopyOfClientHandle(); + pipe.Close(); return null; + } pipe.DisposeLocalCopyOfClientHandle();