]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetBibtex.cpp
Rename legacy input encoding settings.
[features.git] / src / insets / InsetBibtex.cpp
index c4bf8721c1f5960eb22daffaab9836cddc18c6ba..d20f67187cdaf652f9ecdda1d28590106eed60ef 100644 (file)
@@ -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<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."),
@@ -155,6 +155,8 @@ void InsetBibtex::editDatabases() const
        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));
@@ -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());
 }