From 6f643e52d43423dc85457158e3746b331115fe47 Mon Sep 17 00:00:00 2001 From: Richard Kimberly Heck Date: Mon, 28 Sep 2020 22:06:11 -0400 Subject: [PATCH] Allow argument definitions in layout files to modify existing ones. This is what layout re-definitions do in all other cases. --- src/Layout.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/Layout.cpp b/src/Layout.cpp index 6b591ec13f..1f5a8982e0 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -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); + } } -- 2.39.2