diff --git a/src/main/java/uk/ac/cam/cl/dtg/teaching/chime/app/SideBySideDiffFormatter.java b/src/main/java/uk/ac/cam/cl/dtg/teaching/chime/app/SideBySideDiffFormatter.java
index 926c69cc8ecbb39084dfbd086e54f5287779de46..e2e59a923ec3a49d4a8f0ca881cfb63eed1c3d53 100644
--- a/src/main/java/uk/ac/cam/cl/dtg/teaching/chime/app/SideBySideDiffFormatter.java
+++ b/src/main/java/uk/ac/cam/cl/dtg/teaching/chime/app/SideBySideDiffFormatter.java
@@ -7,7 +7,9 @@ import com.google.common.collect.ImmutableSet;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import org.eclipse.jgit.diff.DiffEntry;
 import org.eclipse.jgit.diff.DiffFormatter;
 import org.eclipse.jgit.diff.RawText;
@@ -95,7 +97,7 @@ public class SideBySideDiffFormatter extends DiffFormatter {
   }
 
   private ImmutableSet<Integer> markLinesInScope(List<DiffRow> rows) {
-    ImmutableSet.Builder<Integer> indices = ImmutableSet.builder();
+    Set<Integer> indices = new HashSet<>();
     int i = 0;
     for (DiffRow row : rows) {
       if (!row.getOldLine().equals(row.getNewLine())) {
@@ -105,7 +107,14 @@ public class SideBySideDiffFormatter extends DiffFormatter {
       }
       i++;
     }
-    return indices.build();
+    // If a line is skipped and the lines either side of it are included then we might as well
+    // include this line since it will take that much space just to show it.
+    for (int j = 0; j < i; j++) {
+      if (!indices.contains(j) && indices.contains(j - 1) && indices.contains(j + 1)) {
+        indices.add(j);
+      }
+    }
+    return ImmutableSet.copyOf(indices);
   }
 
   private static ImmutableList<String> lines(RawText a) {