diff --git a/src/Models/DiffResult.cs b/src/Models/DiffResult.cs index ec2da9477..68327ca27 100644 --- a/src/Models/DiffResult.cs +++ b/src/Models/DiffResult.cs @@ -176,7 +176,7 @@ public void GenerateNewPatchFromSelection(Change change, string fileBlobGuid, Te var line = Lines[i]; if (line.Type != TextDiffLineType.Added) continue; - writer.WriteLine($"+{line.Content}"); + WriteLine(writer, '+', line); } } @@ -257,16 +257,16 @@ public void GeneratePatchFromSelection(Change change, string fileTreeGuid, TextD else if (line.Type == TextDiffLineType.Added) { if (revert) - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else if (line.Type == TextDiffLineType.Deleted) { if (!revert) - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else if (line.Type == TextDiffLineType.Normal) { - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } } } @@ -282,15 +282,15 @@ public void GeneratePatchFromSelection(Change change, string fileTreeGuid, TextD } else if (line.Type == TextDiffLineType.Normal) { - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else if (line.Type == TextDiffLineType.Added) { - writer.WriteLine($"+{line.Content}"); + WriteLine(writer, '+', line); } else if (line.Type == TextDiffLineType.Deleted) { - writer.WriteLine($"-{line.Content}"); + WriteLine(writer, '-', line); } } @@ -380,16 +380,16 @@ public void GeneratePatchFromSelectionSingleSide(Change change, string fileTreeG else if (line.Type == TextDiffLineType.Added) { if (revert) - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else if (line.Type == TextDiffLineType.Deleted) { if (!revert) - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else if (line.Type == TextDiffLineType.Normal) { - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } } } @@ -405,7 +405,7 @@ public void GeneratePatchFromSelectionSingleSide(Change change, string fileTreeG } else if (line.Type == TextDiffLineType.Normal) { - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else if (line.Type == TextDiffLineType.Added) { @@ -413,7 +413,7 @@ public void GeneratePatchFromSelectionSingleSide(Change change, string fileTreeG { if (revert) { - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else { @@ -422,20 +422,20 @@ public void GeneratePatchFromSelectionSingleSide(Change change, string fileTreeG } else { - writer.WriteLine($"+{line.Content}"); + WriteLine(writer, '+', line); } } else if (line.Type == TextDiffLineType.Deleted) { if (isOldSide) { - writer.WriteLine($"-{line.Content}"); + WriteLine(writer, '-', line); } else { if (!revert) { - writer.WriteLine($" {line.Content}"); + WriteLine(writer, ' ', line); } else { @@ -598,6 +598,14 @@ private bool ProcessIndicatorForPatchSingleSide(StreamWriter writer, TextDiffLin return true; } + private static void WriteLine(StreamWriter writer, char prefix, TextDiffLine line) + { + writer.WriteLine($"{prefix}{line.Content}"); + + if (line.NoNewLineEndOfFile) + writer.WriteLine("\\ No newline at end of file"); + } + [GeneratedRegex(@"^@@ \-(\d+),?\d* \+(\d+),?\d* @@")] private static partial Regex REG_INDICATOR(); }