X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetCommand.cpp;h=7693d08fd7c70010f323eddd24956697932d09fd;hb=71b8019d56142397994e0ef2d4244ada51f199d5;hp=dbbaed1253ed2f0cd6754bf49ce7c5b61bb60dc1;hpb=cea2d71e641e6a4023128a367d1cd5a593ed1706;p=lyx.git diff --git a/src/insets/InsetCommand.cpp b/src/insets/InsetCommand.cpp index dbbaed1253..7693d08fd7 100644 --- a/src/insets/InsetCommand.cpp +++ b/src/insets/InsetCommand.cpp @@ -14,6 +14,8 @@ #include "InsetCommand.h" #include "Buffer.h" +#include "BufferEncodings.h" +#include "BufferParams.h" #include "BufferView.h" #include "Cursor.h" #include "DispatchResult.h" @@ -21,6 +23,7 @@ #include "FuncStatus.h" #include "Lexer.h" #include "MetricsInfo.h" +#include "texstream.h" #include "insets/InsetBox.h" #include "insets/InsetBranch.h" @@ -41,12 +44,14 @@ #include "support/debug.h" #include "support/gettext.h" +#include "support/lstrings.h" #include "frontends/Application.h" #include using namespace std; +using namespace lyx::support; namespace lyx { @@ -94,7 +99,8 @@ InsetCommand::~InsetCommand() void InsetCommand::metrics(MetricsInfo & mi, Dimension & dim) const { - button_.update(screenLabel(), editable() || clickable(0, 0)); + button_.update(screenLabel(), editable() || clickable(*mi.base.bv, 0, 0), + inheritFont()); button_.metrics(mi, dim); } @@ -136,7 +142,11 @@ void InsetCommand::setParams(InsetCommandParams const & p) void InsetCommand::latex(otexstream & os, OutputParams const & runparams_in) const { OutputParams runparams = runparams_in; - os << getCommand(runparams); + docstring command = getCommand(runparams); + if (buffer().params().use_minted + && prefixIs(command, from_ascii("\\lstlistoflistings"))) + command.erase(1, 3); + os << command; } @@ -156,6 +166,26 @@ int InsetCommand::docbook(odocstream &, OutputParams const &) const } +void InsetCommand::validate(LaTeXFeatures & features) const +{ + if (params().info().hasParam("literal") + && params()["literal"] == "true") + return; + + ParamInfo::const_iterator it = params().info().begin(); + ParamInfo::const_iterator end = params().info().end(); + for (; it != end; ++it) { + if (it->handling() == ParamInfo::HANDLING_LATEXIFY) { + docstring const text = params()[it->name()]; + // Validate the contents (if we LaTeXify, specific + // macros might require packages) + for (pos_type i = 0; i < int(text.size()) ; ++i) + BufferEncodings::validate(text[i], features); + } + } +} + + void InsetCommand::doDispatch(Cursor & cur, FuncRequest & cmd) { switch (cmd.action()) { @@ -319,7 +349,7 @@ bool decodeInsetParam(string const & name, string & data, break; } case ERT_CODE: { - data = InsetERT::params2string(InsetCollapsable::Open); + data = InsetERT::params2string(InsetCollapsible::Open); break; } case EXTERNAL_CODE: {