private void adjustDiffForEmptyLines(CodeEdit ce, Vector<String> lines) { int leadingRemovedEmptyLines = 0; int trailingRemovedEmptyLines = 0; int leadingAddedEmptyLines = 0; int trailingAddedEmptyLines = 0; Vector<String> deletedLines = new Vector<String>(); Vector<String> addedLines = new Vector<String>(); for (String s : lines) { if (s.startsWith("-")) deletedLines.add(s); else if (s.startsWith("+")) addedLines.add(s); } for (int i = 0; i < deletedLines.size(); i++) { if (deletedLines.get(i).trim().length() == 1) leadingRemovedEmptyLines++; else break; } for (int i = deletedLines.size() - 1; i > 0; i--) { if (deletedLines.get(i).trim().length() == 1) trailingRemovedEmptyLines++; else break; } for (int i = 0; i < addedLines.size(); i++) { if (addedLines.get(i).trim().length() == 1) leadingAddedEmptyLines++; else break; } for (int i = addedLines.size() - 1; i > 0; i--) { if (addedLines.get(i).trim().length() == 1) trailingAddedEmptyLines++; else break; } ce.setAdd_idx(ce.getAdd_idx() + leadingAddedEmptyLines); ce.setAdd_size(ce.getAdd_size() - trailingAddedEmptyLines - leadingAddedEmptyLines); ce.setRem_idx(ce.getRem_idx() + leadingRemovedEmptyLines); ce.setRem_size(ce.getRem_size() - trailingRemovedEmptyLines - leadingRemovedEmptyLines); }