]> git.lyx.org Git - lyx.git/commitdiff
Allow argument definitions in layout files to modify existing ones.
authorRichard Kimberly Heck <rikiheck@lyx.org>
Tue, 29 Sep 2020 02:06:11 +0000 (22:06 -0400)
committerRichard Kimberly Heck <rikiheck@lyx.org>
Tue, 29 Sep 2020 02:06:11 +0000 (22:06 -0400)
This is what layout re-definitions do in all other cases.

src/Layout.cpp

index 6b591ec13ff8a74c5b5b4071c50f59ddce83f28e..1f5a8982e061d023518ef9374f8c0abd0aaaaaea 100644 (file)
@@ -1148,17 +1148,22 @@ void Layout::readSpacing(Lexer & lex)
 }
 
 
-void Layout::readArgument(Lexer & lex)
+void Layout::readArgument(Lexer & lex, bool validating)
 {
-       latexarg arg;
-       bool error = false;
-       bool finished = false;
        string id;
        lex >> id;
        bool const itemarg = prefixIs(id, "item:");
        bool const postcmd = prefixIs(id, "post:");
        bool const listpreamble = prefixIs(id, "listpreamble:");
 
+       LaTeXArgMap & lam = itemarg ? itemargs_ :
+                       (postcmd ? postcommandargs_ :
+                       (listpreamble ? listpreamble_ :
+                       latexargs_));
+       latexarg & arg = lam[id];
+
+       bool error = false;
+       bool finished = false;
        while (!finished && lex.isOK() && !error) {
                lex.next();
                string const tok = ascii_lowercase(lex.getString());
@@ -1239,16 +1244,9 @@ void Layout::readArgument(Lexer & lex)
        }
        if (arg.labelstring.empty())
                LYXERR0("Incomplete Argument definition!");
-       else if (itemarg)
-               itemargs_[id] = arg;
-       else if (postcmd)
-               postcommandargs_[id] = arg;
-       else if (listpreamble) {
-               // list preamble has no delimiters by default
-               arg.nodelims = true;
-               listpreamble_[id] = arg;
-       } else
-               latexargs_[id] = arg;
+               // remove invalid definition
+               lam.erase(id);
+       }
 }