Column-level text diffs respecting line boundaries