#include "frontends/Application.h"
+#include "support/Changer.h"
#include "support/convert.h"
#include "support/debug.h"
#include "support/docstream.h"
getVectorFromString(file.fileContents("UTF-8"), from_ascii("\n"));
// Normalise paths like /foo//bar ==> /foo/bar
+ // No "auto const &" because doc is modified later
+ // coverity[auto_causes_copy]
for (auto doc : doclist) {
doc = subst(doc, from_ascii("\r"), docstring());
while (contains(doc, from_ascii("//")))
}
-void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted) {
+void InsetInfo::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+ const_cast<InsetInfo *>(this)->build();
+ InsetCollapsible::metrics(mi, dim);
+}
+
+
+void InsetInfo::draw(PainterInfo & pi, int x, int y) const
+{
+ Changer chg = changeVar(lyxrc.mark_foreign_language, false);
+ InsetCollapsible::draw(pi, x, y);
+}
+
+void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
+
+{
// If the Buffer is a clone, then we neither need nor want to do any
// of what follows. We want, rather, just to inherit how things were
// in the original Buffer. This is especially important for VCS.
// than in the Buffer we were exporting.
if (buffer().isClone())
return;
-
BufferParams const & bp = buffer().params();
params_.lang = it.paragraph().getFontSettings(bp, it.pos()).language();
+ InsetCollapsible::updateBuffer(it, utype, deleted);
+}
+
+
+void InsetInfo::build()
+{
+ // If the Buffer is a clone, then we neither need nor want to do any
+ // of what follows. We want, rather, just to inherit how things were
+ // in the original Buffer. This is especially important for VCS.
+ // Otherwise, we could in principle have different settings here
+ // than in the Buffer we were exporting.
+ if (buffer().isClone())
+ return;
+
Language const * tryguilang = languages.getFromCode(Messages::guiLanguage());
// Some info insets use the language of the GUI (if available)
Language const * guilang = tryguilang ? tryguilang : params_.lang;
if (initialized_)
break;
// check in packages.lst
- if (LaTeXFeatures::isAvailable(params_.name)) {
+ bool available;
+ // we also allow version check with version separated by blank
+ if (contains(params_.name, ' ')) {
+ string name;
+ string const version = split(params_.name, name, ' ');
+ int const y = convert<int>(version.substr(0,4));
+ int const m = convert<int>(version.substr(4,2));
+ int const d = convert<int>(version.substr(6,2));
+ available = LaTeXFeatures::isAvailableAtLeastFrom(name, y, m, d);
+ } else
+ available = LaTeXFeatures::isAvailable(params_.name);
+
+ if (available) {
gui = _("yes");
info(from_ascii("yes"), params_.lang);
} else {
else if (params_.name == "path")
setText(from_utf8(os::latex_path(buffer().filePath())), params_.lang);
else if (params_.name == "class")
- setText(from_utf8(bp.documentClass().name()), params_.lang);
+ setText(from_utf8(buffer().params().documentClass().name()), params_.lang);
break;
}
case InsetInfoParams::VCS_INFO: {
// Just to do something with that string
LYXERR(Debug::INFO, "info inset text: " << gui);
- InsetCollapsible::updateBuffer(it, utype, deleted);
+}
+
+
+void InsetInfo::validate(LaTeXFeatures & features) const
+{
+ const_cast<InsetInfo *>(this)->build();
+ InsetCollapsible::validate(features);
}