switch (cmd.action()) {
case LFUN_INSET_EDIT:
- editDatabases();
+ editDatabases(cmd.argument());
break;
case LFUN_INSET_MODIFY: {
}
-void InsetBibtex::editDatabases() const
+void InsetBibtex::editDatabases(docstring const db) const
{
vector<docstring> bibfilelist = getVectorFromString(getParam("bibfiles"));
if (bibfilelist.empty())
return;
- int nr_databases = bibfilelist.size();
- if (nr_databases > 1) {
+ size_t nr_databases = bibfilelist.size();
+ if (nr_databases > 1 && db.empty()) {
docstring const engine = usingBiblatex() ? _("Biblatex") : _("BibTeX");
docstring message = bformat(_("The %1$s[[BibTeX/Biblatex]] inset includes %2$s databases.\n"
"If you proceed, all of them will be opened."),
vector<docstring>::const_iterator it = bibfilelist.begin();
vector<docstring>::const_iterator en = bibfilelist.end();
for (; it != en; ++it) {
+ if (!db.empty() && db != *it)
+ continue;
FileName const bibfile = buffer().getBibfilePath(*it);
theFormats().edit(buffer(), bibfile,
theFormats().getFormatFromFile(bibfile));
// record that we check this.
checkedFiles.push_back(bibfile);
string encoding = buffer().masterParams().encoding().iconvName();
- string const ienc = to_ascii(params()["encoding"]);
- if (!ienc.empty() && ienc != "default" && encodings.fromLyXName(ienc))
+ string ienc = buffer().masterParams().bibFileEncoding(to_utf8(bf));
+ if (ienc.empty() || ienc == "general")
+ ienc = to_ascii(params()["encoding"]);
+
+ if (!ienc.empty() && ienc != "auto-legacy-plain" && ienc != "auto-legacy" && encodings.fromLyXName(ienc))
encoding = encodings.fromLyXName(ienc)->iconvName();
ifdocstream ifs(bibfile.toFilesystemEncoding().c_str(),
ios_base::in, encoding);
refoutput += bibinfo.getInfo(entry.key(), buffer(), ci) + "\n\n";
}
os << refoutput;
- return refoutput.size();
+ return int(refoutput.size());
}