commit f6f08f0c50706e2a6c50d43479df6ed5d5dbec4d
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Tue Apr 16 16:04:12 2019 +0200

    Revert "Make math autocorrrect work with more than 2 chars"
    
    This reverts commit 144e7d715938af7cadd9073f4afc30f3744a226a.
---
 src/mathed/InsetMathNest.cpp   |    2 +-
 src/mathed/MathAutoCorrect.cpp |   44 ++++++++++++++++-----------------------
 src/mathed/MathAutoCorrect.h   |    4 +-
 3 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index 85e4dd7..798ca89 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -1868,7 +1868,7 @@ bool InsetMathNest::interpretChar(Cursor & cur, char_type 
const c)
 
        // try auto-correction
        if (lyxrc.autocorrection_math && cur.autocorrect() && cur.pos() != 0
-                 && math_autocorrect(cur, c))
+                 && math_autocorrect(cur.prevAtom(), c))
                return true;
 
        // no special circumstances, so insert the character without any fuss
diff --git a/src/mathed/MathAutoCorrect.cpp b/src/mathed/MathAutoCorrect.cpp
index be5aeb4..fc4ad44 100644
--- a/src/mathed/MathAutoCorrect.cpp
+++ b/src/mathed/MathAutoCorrect.cpp
@@ -10,7 +10,6 @@
 
 #include <config.h>
 
-#include "Cursor.h"
 #include "MathAutoCorrect.h"
 #include "MathData.h"
 #include "InsetMath.h"
@@ -39,18 +38,18 @@ public:
        /// \brief Correction
        Correction() : from2_(0) {}
        ///
-       bool correct(Cursor & cur, char_type c) const;
+       bool correct(MathAtom & at, char_type c) const;
        ///
        bool read(idocstream & is);
        ///
        void write(odocstream & os) const;
 private:
        ///
-       MathData from1_;
+       MathAtom from1_;
        ///
        char_type from2_;
        ///
-       MathData to_;
+       MathAtom to_;
 };
 
 
@@ -65,35 +64,26 @@ bool Correction::read(idocstream & is)
        MathData ar1, ar3;
        mathed_parse_cell(ar1, s1);
        mathed_parse_cell(ar3, s3);
-       from1_ = ar1;
+       if (ar1.size() != 1 || ar3.size() != 1)
+               return false;
+       from1_ = ar1.front();
        from2_ = s2[0];
-       to_    = ar3;
+       to_    = ar3.front();
        return true;
 }
 
 
-bool Correction::correct(Cursor & cur, char_type c) const
+bool Correction::correct(MathAtom & at, char_type c) const
 {
        //LYXERR(Debug::MATHED,
        //      "trying to correct ar: " << at << " from: '" << from1_ << '\'');
        if (from2_ != c)
                return false;
-       pos_type n = from1_.size();
-       if (cur.pos() < pos_type(from1_.size())) // not enough to match
+       if (asString(at) != asString(from1_))
                return false;
-       pos_type start = cur.pos() - from1_.size();
-
-       for (pos_type i = 0; i < n; i++)
-               if (asString(cur.cell()[start + i]) != asString(from1_[i]))
-                       return false;
-
-       LYXERR(Debug::MATHED, "match found! subst in " << cur.cell()
+       LYXERR(Debug::MATHED, "match found! subst in " << at
                << " from: '" << from1_ << "' to '" << to_ << '\'');
-
-       cur.cell().erase(cur.pos() - n, cur.pos());
-       cur.pos() -= n;
-
-       cur.insert(to_);
+       at = to_;
        return true;
 }
 
@@ -131,17 +121,17 @@ public:
        ///
        void insert(const Correction & corr) { data_.push_back(corr); }
        ///
-       bool correct(Cursor & cur, char_type c) const;
+       bool correct(MathAtom & at, char_type c) const;
 private:
        ///
        vector<Correction> data_;
 };
 
 
-bool Corrections::correct(Cursor & cur, char_type c) const
+bool Corrections::correct(MathAtom & at, char_type c) const
 {
        for (const_iterator it = data_.begin(); it != data_.end(); ++it)
-               if (it->correct(cur, c))
+               if (it->correct(at, c))
                        return true;
        return false;
 }
@@ -182,7 +172,7 @@ void initAutoCorrect()
 } // namespace
 
 
-bool math_autocorrect(Cursor & cur, char_type c)
+bool math_autocorrect(MathAtom & at, char_type c)
 {
        static bool initialized = false;
 
@@ -191,6 +181,8 @@ bool math_autocorrect(Cursor & cur, char_type c)
                initialized = true;
        }
 
-       return theCorrections.correct(cur, c);
+       return theCorrections.correct(at, c);
 }
+
+
 } // namespace lyx
diff --git a/src/mathed/MathAutoCorrect.h b/src/mathed/MathAutoCorrect.h
index a782d67..679e837 100644
--- a/src/mathed/MathAutoCorrect.h
+++ b/src/mathed/MathAutoCorrect.h
@@ -16,10 +16,10 @@
 
 namespace lyx {
 
-class Cursor;
+class MathAtom;
 
 // make "corrections" according to file lib/autocorrect
-bool math_autocorrect(Cursor & cur, char_type c);
+bool math_autocorrect(MathAtom & at, char_type c);
 
 } // namespace lyx
 

Reply via email to