X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCompare.cpp;h=cd54e43bb4b938274276bd539b933af031e507c3;hb=b64d17e9dcaeb84a94095622c93a051e4d93eab7;hp=92c5cf20bb97e91b69de664d51c42137528d1ef0;hpb=ec96bbe42991290f3b0798808cfd8e3f7a9b4df9;p=lyx.git diff --git a/src/Compare.cpp b/src/Compare.cpp index 92c5cf20bb..cd54e43bb4 100644 --- a/src/Compare.cpp +++ b/src/Compare.cpp @@ -14,6 +14,7 @@ #include "BufferParams.h" #include "Changes.h" +#include "Font.h" #include "insets/InsetText.h" @@ -271,7 +272,7 @@ private: /// around the middle snake. void diff_i(DocRangePair const & rp); - /// Processes the splitted chunks. It either adds them as deleted, + /// Processes the split chunks. It either adds them as deleted, /// as added, or call diff_i for further processing. void diffPart(DocRangePair const & rp); @@ -525,6 +526,7 @@ void Compare::Impl::furthestDpathKdiagonal(int D, int k, // Where do we take the step from ? int const kk = vertical_step ? k + 1 : k - 1; DocPair p(op[kk], np[kk]); + DocPair const s(os[kk], ns[kk]); // If D==0 we simulate a vertical step from (0,-1) by doing nothing. if (D != 0) { @@ -546,8 +548,8 @@ void Compare::Impl::furthestDpathKdiagonal(int D, int k, ns[k] = p.n; } else { // Copy last snake from the previous step - os[k] = os[kk]; - ns[k] = ns[kk]; + os[k] = s.o; + ns[k] = s.n; } //Record new position @@ -690,7 +692,9 @@ bool Compare::Impl::diff(Buffer const * new_buf, Buffer const * old_buf, processSnake(snake); // Start the recursive algorithm - diff_i(rp); + DocRangePair rp_new(from, rp.to()); + if (!rp_new.o.empty() || !rp_new.n.empty()) + diff_i(rp_new); for (pit_type p = 0; p < (pit_type)dest_pars_->size(); ++p) { (*dest_pars_)[p].setBuffer(const_cast(*dest_buf));