X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetBibtex.cpp;h=d20f67187cdaf652f9ecdda1d28590106eed60ef;hb=27ba6f282dc36b5cb500bbd51c2f87fd697d0626;hp=c4bf8721c1f5960eb22daffaab9836cddc18c6ba;hpb=f75b0815510f1beb07c219c42c9c866c4162fae6;p=features.git diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp index c4bf8721c1..d20f67187c 100644 --- a/src/insets/InsetBibtex.cpp +++ b/src/insets/InsetBibtex.cpp @@ -85,7 +85,7 @@ void InsetBibtex::doDispatch(Cursor & cur, FuncRequest & cmd) switch (cmd.action()) { case LFUN_INSET_EDIT: - editDatabases(); + editDatabases(cmd.argument()); break; case LFUN_INSET_MODIFY: { @@ -132,15 +132,15 @@ bool InsetBibtex::getStatus(Cursor & cur, FuncRequest const & cmd, } -void InsetBibtex::editDatabases() const +void InsetBibtex::editDatabases(docstring const db) const { vector 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."), @@ -155,6 +155,8 @@ void InsetBibtex::editDatabases() const vector::const_iterator it = bibfilelist.begin(); vector::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)); @@ -676,8 +678,11 @@ void InsetBibtex::parseBibTeXFiles(FileNameList & checkedFiles) const // 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); @@ -994,7 +999,7 @@ int InsetBibtex::plaintext(odocstringstream & os, refoutput += bibinfo.getInfo(entry.key(), buffer(), ci) + "\n\n"; } os << refoutput; - return refoutput.size(); + return int(refoutput.size()); }