X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetCitation.cpp;h=8571a28643b5c14e93c22eedbe47a0110cf7c55b;hb=cf6ff2cac79d09adafa63e3a1ec02dfb09f707b9;hp=6f238f964d4a592ec6e9629fc780744b2f8e0ef8;hpb=c59375d67915077a2dbf7e8bb29768dc379fb797;p=lyx.git diff --git a/src/insets/InsetCitation.cpp b/src/insets/InsetCitation.cpp index 6f238f964d..8571a28643 100644 --- a/src/insets/InsetCitation.cpp +++ b/src/insets/InsetCitation.cpp @@ -55,7 +55,10 @@ InsetCitation::InsetCitation(Buffer * buf, InsetCommandParams const & p) InsetCitation::~InsetCitation() { if (isBufferLoaded()) - buffer().removeBiblioTempFiles(); + /* We do not use buffer() because Coverity believes that this + * may throw an exception. Actually this code path is not + * taken when buffer_ == 0 */ + buffer_->removeBiblioTempFiles(); } @@ -66,11 +69,16 @@ ParamInfo const & InsetCitation::findInfo(string const & /* cmdName */) // we have to allow both here. InsetCitation takes care that // LaTeX output is nevertheless correct. if (param_info_.empty()) { - param_info_.add("after", ParamInfo::LATEX_OPTIONAL); - param_info_.add("before", ParamInfo::LATEX_OPTIONAL); + param_info_.add("after", ParamInfo::LATEX_OPTIONAL, + ParamInfo::HANDLING_LATEXIFY); + param_info_.add("before", ParamInfo::LATEX_OPTIONAL, + ParamInfo::HANDLING_LATEXIFY); param_info_.add("key", ParamInfo::LATEX_REQUIRED); - param_info_.add("pretextlist", ParamInfo::LATEX_OPTIONAL); - param_info_.add("posttextlist", ParamInfo::LATEX_OPTIONAL); + param_info_.add("pretextlist", ParamInfo::LATEX_OPTIONAL, + ParamInfo::HANDLING_LATEXIFY); + param_info_.add("posttextlist", ParamInfo::LATEX_OPTIONAL, + ParamInfo::HANDLING_LATEXIFY); + param_info_.add("literal", ParamInfo::LYX_INTERNAL); } return param_info_; } @@ -144,6 +152,7 @@ void InsetCitation::doDispatch(Cursor & cur, FuncRequest & cmd) cmd = FuncRequest(LFUN_INSET_MODIFY, "changetype " + newcmdname); } } + // fall through default: InsetCommand::doDispatch(cur, cmd); } @@ -451,7 +460,7 @@ void InsetCitation::addToToc(DocIterator const & cpit, bool output_active, UpdateType, TocBackend & backend) const { // NOTE - // BiblioInfo::collectCitedEntries() uses the TOC to collect the citations + // BiblioInfo::collectCitedEntries() uses the TOC to collect the citations // from the document. It is used indirectly, via BiblioInfo::makeCitationLables, // by both XHTML and plaintext output. So, if we change what goes into the TOC, // then we will also need to change that routine. @@ -568,8 +577,10 @@ void InsetCitation::latex(otexstream & os, OutputParams const & runparams) const if (qualified) os << "s"; - docstring before = getParam("before"); - docstring after = getParam("after"); + docstring before = params().prepareCommand(runparams, getParam("before"), + param_info_["before"].handling()); + docstring after = params().prepareCommand(runparams, getParam("after"), + param_info_["after"].handling()); if (!before.empty() && cs.textBefore) { if (qualified) os << '(' << protectArgument(before, '(', ')') @@ -592,8 +603,10 @@ void InsetCitation::latex(otexstream & os, OutputParams const & runparams) const map pres = getQualifiedLists(getParam("pretextlist")); map posts = getQualifiedLists(getParam("posttextlist")); for (docstring const & k: keys) { - docstring bef = pres[k]; - docstring aft = posts[k]; + docstring bef = params().prepareCommand(runparams, pres[k], + param_info_["pretextlist"].handling()); + docstring aft = params().prepareCommand(runparams, posts[k], + param_info_["posttextlist"].handling()); if (!bef.empty()) os << '[' << protectArgument(bef) << "][" << protectArgument(aft) << ']';