]> git.lyx.org Git - lyx.git/blobdiff - src/Layout.cpp
Support for the Malayalam language
[lyx.git] / src / Layout.cpp
index 7801e8fcb27f96c4f4b0dba7799e55c171290650..a109c1d931af9bee160823fc23ffaa486a6dd059 100644 (file)
@@ -377,6 +377,7 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                                latexargs_.clear();
                                itemargs_.clear();
                                postcommandargs_.clear();
+                               listpreamble_.clear();
                        }
                        break;
 
@@ -604,25 +605,25 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
                }
 
                case LT_AUTONESTS: {
-                       docstring const autonest =
-                               subst(subst(subst(lex.getLongString(from_ascii("EndAutoNests")),
-                                                 from_ascii("\n"), docstring()),
-                                           from_ascii(" "), docstring()),
-                                     from_ascii("\t"), docstring());
+                       docstring autonest = lex.getLongString(from_ascii("EndAutoNests"));
+                       autonest = subst(autonest, from_ascii("\n"), docstring());
+                       autonest = subst(autonest, from_ascii("\t"), docstring());
+                       autonest = subst(autonest, from_ascii("\""), docstring());
+                       autonest = subst(autonest, '_', ' ');
                        vector<docstring> const autonests =
-                               getVectorFromString(autonest);
+                               getVectorFromString(autonest, from_ascii(","), false, true);
                        autonests_.insert(autonests.begin(), autonests.end());
                        break;
                }
 
                case LT_AUTONESTEDBY: {
-                       docstring const autonest =
-                               subst(subst(subst(lex.getLongString(from_ascii("EndIsAutoNestedBy")),
-                                                 from_ascii("\n"), docstring()),
-                                           from_ascii(" "), docstring()),
-                                     from_ascii("\t"), docstring());
+                       docstring autonest = lex.getLongString(from_ascii("EndIsAutoNestedBy"));
+                       autonest = subst(autonest, from_ascii("\n"), docstring());
+                       autonest = subst(autonest, from_ascii("\t"), docstring());
+                       autonest = subst(autonest, from_ascii("\""), docstring());
+                       autonest = subst(autonest, '_', ' ');
                        vector<docstring> const autonests =
-                               getVectorFromString(autonest);
+                               getVectorFromString(autonest, from_ascii(","), false, true);
                        autonested_by_.insert(autonests.begin(), autonests.end());
                        break;
                }
@@ -1005,6 +1006,7 @@ void Layout::readArgument(Lexer & lex)
        latexarg arg;
        // writeArgument() makes use of these default values
        arg.mandatory = false;
+       arg.nodelims = false;
        arg.autoinsert = false;
        arg.insertcotext = false;
        bool error = false;
@@ -1017,6 +1019,7 @@ void Layout::readArgument(Lexer & lex)
        lex >> id;
        bool const itemarg = prefixIs(id, "item:");
        bool const postcmd = prefixIs(id, "post:");
+       bool const listpreamble = prefixIs(id, "listpreamble:");
 
        while (!finished && lex.isOK() && !error) {
                lex.next();
@@ -1096,7 +1099,11 @@ void Layout::readArgument(Lexer & lex)
                itemargs_[id] = arg;
        else if (postcmd)
                postcommandargs_[id] = arg;
-       else
+       else if (listpreamble) {
+               // list preamble has no delimiters by default
+               arg.nodelims = true;
+               listpreamble_[id] = arg;
+       } else
                latexargs_[id] = arg;
 }
 
@@ -1218,6 +1225,9 @@ void Layout::write(ostream & os) const
        for (LaTeXArgMap::const_iterator it = postcommandargs_.begin();
             it != postcommandargs_.end(); ++it)
                writeArgument(os, it->first, it->second);
+       for (LaTeXArgMap::const_iterator it = listpreamble_.begin();
+            it != listpreamble_.end(); ++it)
+               writeArgument(os, it->first, it->second);
        os << "\tNeedProtect " << needprotect << "\n"
              "\tNeedCProtect " << needcprotect << "\n"
              "\tKeepEmpty " << keepempty << '\n';
@@ -1434,14 +1444,14 @@ void Layout::write(ostream & os) const
                os << "\n\tEndAutoNests\n";
        }
        if (!autonested_by_.empty()) {
-               os << "\tIsAutoNestedBy\n\t";
+               os << "\tIsAutoNestedBy\n\t\t";
                for (set<docstring>::const_iterator it = autonested_by_.begin();
                     it != autonested_by_.end(); ++it) {
                        if (it != autonested_by_.begin())
                                os << ',';
                        os << to_utf8(*it);
                }
-               os << "\n\tIsAutoNestedBy\n";
+               os << "\n\tEndIsAutoNestedBy\n";
        }
        if (refprefix.empty())
                os << "\tRefPrefix OFF\n";
@@ -1479,7 +1489,7 @@ void Layout::write(ostream & os) const
 bool Layout::hasArgs() const
 {
        return !latexargs_.empty() || !postcommandargs_.empty() ||
-               !itemargs_.empty();
+               !itemargs_.empty() || !listpreamble_.empty();
 }
 
 
@@ -1488,6 +1498,8 @@ Layout::LaTeXArgMap Layout::args() const
        LaTeXArgMap args = latexargs_;
        if (!postcommandargs_.empty())
                args.insert(postcommandargs_.begin(), postcommandargs_.end());
+       if (!listpreamble_.empty())
+               args.insert(listpreamble_.begin(), listpreamble_.end());
        if (!itemargs_.empty())
                args.insert(itemargs_.begin(), itemargs_.end());
        return args;