From: Richard Kimberly Heck Date: Tue, 29 Sep 2020 02:06:11 +0000 (-0400) Subject: Allow argument definitions in layout files to modify existing ones. X-Git-Tag: lyx-2.4.0dev-acb2ca7b~154 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=6f643e52d434;p=features.git Allow argument definitions in layout files to modify existing ones. This is what layout re-definitions do in all other cases. --- 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); + } }