X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCompare.cpp;h=5831f2211114ef6c78e7a313f9e4d3dd1c2958cb;hb=f08f5821ec5d29232bccb342a5b1ff86600b0716;hp=590303e519408a2a9393bad8157d41dba85fc915;hpb=562f1da9c98f5617497a3d93e56b9b3ae90bd327;p=lyx.git diff --git a/src/Compare.cpp b/src/Compare.cpp index 590303e519..5831f22111 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" @@ -96,13 +97,15 @@ size_t DocRange::length() const class DocPair { public: - DocPair() {} + DocPair() + {} DocPair(DocIterator o_, DocIterator n_) : o(o_), n(n_) {} - bool operator!=(DocPair const & rhs) { + bool operator!=(DocPair const & rhs) + { // this might not be intuitive but correct for our purpose return o != rhs.o && n != rhs.n; } @@ -145,10 +148,16 @@ public: {} /// Returns the from pair - DocPair from() const { return DocPair(o.from, n.from); } + DocPair from() const + { + return DocPair(o.from, n.from); + } /// Returns the to pair - DocPair to() const { return DocPair(o.to, n.to); } + DocPair to() const + { + return DocPair(o.to, n.to); + } DocRange o; DocRange n; @@ -180,7 +189,8 @@ static DocRangePair stepIntoInset(DocPair const & inset_location) template class compl_vector { public: - compl_vector() {} + compl_vector() + {} void reset(T const & def) { @@ -222,7 +232,8 @@ public: {} /// - ~Impl() {} + ~Impl() + {} // Algorithm to find the shortest edit string. This algorithm // only needs a linear amount of memory (linear with the sum @@ -234,7 +245,8 @@ public: bool abort_; /// - QString status() { + QString status() + { QString status; status += toqstr("recursion level:") + " " + QString::number(recursion_level_) + " " + toqstr("differences:") + " " + QString::number(D_); @@ -271,7 +283,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); @@ -443,7 +455,8 @@ static bool equal(Inset const * i_o, Inset const * i_n) } -static bool equal(DocIterator & o, DocIterator & n) { +static bool equal(DocIterator & o, DocIterator & n) +{ // Explicitly check for this, so we won't call // Paragraph::getChar for the last pos. bool const o_lastpos = o.pos() == o.lastpos(); @@ -691,7 +704,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));