]> git.lyx.org Git - lyx.git/blobdiff - src/vspace.C
prepare for 1.1.6pre2
[lyx.git] / src / vspace.C
index e065ab83ce0a77c5fabb12012149d2f6f318ed1a..d12ecb820a497080a57fba93f34d1ffd60d2b6c5 100644 (file)
@@ -87,32 +87,57 @@ char nextToken(string & data)
                lyx_advance(data, 5);
                return '-';
        } else {
-               string::size_type i;
+               string::size_type i = data.find_first_not_of("0123456789.");
+
+               if (i != 0) {
+                       if (number_index > 3) return 'E';
+
+                       string buffer;
+               
+                       // we have found some number
+                       if (i == string::npos) {
+                               buffer = data;
+                               i = data.size() + 1;
+                       } else
+                               buffer = data.substr(0, i);
+
+                       lyx_advance(data, i);
 
-               // I really mean assignment ("=") below, not equality!
-               if ((i = data.find_last_of("0123456789.")) != string::npos) {
-                       if (number_index > 3) return 'E';  // Error
-                        string buffer = data.substr(0, i + 1);
                        if (isStrDbl(buffer)) {
                                number[number_index] = strToDbl(buffer);
-                               lyx_advance(data, i + 1);
                                ++number_index;
                                return 'n';
-                       } else 
-                               return 'E';  // Error
-               } else if ((i = data.find_last_of("abcdefghijklmnopqrstuvwxyz"))
-                          != string::npos) {
-                       if (unit_index > 3) return 'E';  // Error
-                       string buffer = data.substr(0, i + 1);
-                       unit[unit_index] = unitFromString(buffer);
+                       } else return 'E';
+               }
+               
+               i = data.find_first_not_of("abcdefghijklmnopqrstuvwxyz");
+               if (i != 0) {
+                       if (unit_index > 3) return 'E';
+
+                       string buffer;
+               
+                       // we have found some alphabetical string
+                       if (i == string::npos) {
+                               buffer = data;
+                               i = data.size() + 1;
+                       } else
+                               buffer = data.substr(0, i);
+
+                       // possibly we have "mmplus" string or similar
+                       if (buffer.size() > 5 && (buffer.substr(2,4) == string("plus") || buffer.substr(2,5) == string("minus"))) {
+                               lyx_advance(data, 2);
+                               unit[unit_index] = unitFromString(buffer.substr(0, 2));
+                       } else {
+                               lyx_advance(data, i);
+                               unit[unit_index] = unitFromString(buffer);
+                       }
+
                        if (unit[unit_index] != LyXLength::UNIT_NONE) {
-                               lyx_advance(data, i + 1);
                                ++unit_index;
                                return 'u';
-                       } else
-                               return 'E';  // Error
-               } else
-                       return 'E';  // Error
+                       } else return 'E';  // Error
+               }
+               return 'E';  // Error
        }
 }
 
@@ -168,7 +193,7 @@ bool isValidGlueLength (string const & data, LyXGlueLength * result)
        // To make isValidGlueLength recognize negative values as
        // the first number this little hack is needed:
        short val_sign = 1; // positive as default
-       switch(buffer[0]) {
+       switch (buffer[0]) {
        case '-':
                lyx_advance(buffer, 1);
                val_sign = -1;
@@ -232,7 +257,7 @@ bool isValidLength(string const & data, LyXLength * result)
        // To make isValidLength recognize negative values
        // this little hack is needed:
        short val_sign = 1; // positive as default
-       switch(buffer[0]) {
+       switch (buffer[0]) {
        case '-':
                lyx_advance(buffer, 1);
                val_sign = -1;