]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_mathmlstream.C
Fix math cursor positioning bug
[lyx.git] / src / mathed / math_mathmlstream.C
index a1f73f0e3f15e37480b45b9bf5e5192b799a128b..9f538ab799d20355821b370a6a4e178e2b5797d7 100644 (file)
@@ -1,15 +1,34 @@
+/**
+ * \file math_mathmlstream.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author André Pönitz
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
 #include <config.h>
 
 #include "math_mathmlstream.h"
 #include "math_inset.h"
+#include "math_data.h"
 #include "math_extern.h"
-#include "debug.h"
 #include "support/lyxalgo.h"
-#include "support/LOstream.h"
 
+using std::strlen;
 
 using std::ostream;
-using std::strlen;
+
+
+namespace {
+
+       bool isAlpha(char c)
+       {
+               return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z');
+       }
+
+}
 
 
 WriteStream::WriteStream(ostream & os, bool fragile, bool latex)
@@ -39,8 +58,6 @@ void WriteStream::addlines(unsigned int n)
 
 void WriteStream::pendingSpace(bool how)
 {
-       if (how)
-               os_ << ' ';
        pendingspace_ = how;
 }
 
@@ -61,9 +78,9 @@ WriteStream & operator<<(WriteStream & ws, MathArray const & ar)
 
 WriteStream & operator<<(WriteStream & ws, char const * s)
 {
-       if (ws.pendingSpace()) {
-               lyxerr << "writing a space in a string\n";
-               ws.os() << ' ';
+       if (ws.pendingSpace() && strlen(s) > 0) {
+               if (isAlpha(s[0]))
+                       ws.os() << ' ';
                ws.pendingSpace(false);
        }
        ws.os() << s;
@@ -75,12 +92,8 @@ WriteStream & operator<<(WriteStream & ws, char const * s)
 WriteStream & operator<<(WriteStream & ws, char c)
 {
        if (ws.pendingSpace()) {
-               //if (isalpha(c))
-               //      ws.os() << ' ';
-               if (!isalpha(c)) {
-                       lyxerr << "I'd like to suppress writing a space\n";
-               }
-               ws.os() << ' ';
+               if (isAlpha(c))
+                       ws.os() << ' ';
                ws.pendingSpace(false);
        }
        ws.os() << c;
@@ -167,20 +180,19 @@ void MathMLStream::cr()
 }
 
 
-
 //////////////////////////////////////////////////////////////////////
 
 
 MapleStream & operator<<(MapleStream & ms, MathAtom const & at)
 {
-       at->maplize(ms);
+       at->maple(ms);
        return ms;
 }
 
 
 MapleStream & operator<<(MapleStream & ms, MathArray const & ar)
 {
-       maplize(ar, ms);
+       maple(ar, ms);
        return ms;
 }
 
@@ -209,16 +221,54 @@ MapleStream & operator<<(MapleStream & ms, int i)
 //////////////////////////////////////////////////////////////////////
 
 
+MaximaStream & operator<<(MaximaStream & ms, MathAtom const & at)
+{
+       at->maxima(ms);
+       return ms;
+}
+
+
+MaximaStream & operator<<(MaximaStream & ms, MathArray const & ar)
+{
+       maxima(ar, ms);
+       return ms;
+}
+
+
+MaximaStream & operator<<(MaximaStream & ms, char const * s)
+{
+       ms.os() << s;
+       return ms;
+}
+
+
+MaximaStream & operator<<(MaximaStream & ms, char c)
+{
+       ms.os() << c;
+       return ms;
+}
+
+
+MaximaStream & operator<<(MaximaStream & ms, int i)
+{
+       ms.os() << i;
+       return ms;
+}
+
+
+//////////////////////////////////////////////////////////////////////
+
+
 MathematicaStream & operator<<(MathematicaStream & ms, MathAtom const & at)
 {
-       at->mathematicize(ms);
+       at->mathematica(ms);
        return ms;
 }
 
 
 MathematicaStream & operator<<(MathematicaStream & ms, MathArray const & ar)
 {
-       mathematicize(ar, ms);
+       mathematica(ar, ms);
        return ms;
 }
 
@@ -250,14 +300,14 @@ MathematicaStream & operator<<(MathematicaStream & ms, int i)
 
 OctaveStream & operator<<(OctaveStream & ns, MathAtom const & at)
 {
-       at->octavize(ns);
+       at->octave(ns);
        return ns;
 }
 
 
 OctaveStream & operator<<(OctaveStream & ns, MathArray const & ar)
 {
-       octavize(ar, ns);
+       octave(ar, ns);
        return ns;
 }
 
@@ -323,4 +373,3 @@ NormalStream & operator<<(NormalStream & ns, int i)
 
 
 //////////////////////////////////////////////////////////////////////
-