]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Amend f441590c
[lyx.git] / src / Buffer.cpp
index f7f12c812727bd84f6d2ec790d98603e5123ef4b..847b0292afab5f955f68ce07974cc697c30d462b 100644 (file)
@@ -1586,10 +1586,10 @@ bool Buffer::makeLaTeXFile(FileName const & fname,
 {
        OutputParams runparams = runparams_in;
 
-       // This is necessary for LuaTeX/XeTeX with tex fonts.
-       // See FIXME in BufferParams::encoding()
-       if (runparams.isFullUnicode())
-               runparams.encoding = encodings.fromLyXName("utf8-plain");
+       // XeTeX with TeX fonts is only safe with ASCII encoding,
+       // See #9740 and FIXME in BufferParams::encoding()
+       if (!params().useNonTeXFonts && (runparams.flavor == OutputParams::XETEX))
+               runparams.encoding = encodings.fromLyXName("ascii");
 
        string const encoding = runparams.encoding->iconvName();
        LYXERR(Debug::LATEX, "makeLaTeXFile encoding: " << encoding << ", fname=" << fname.realPath());
@@ -1673,10 +1673,12 @@ void Buffer::writeLaTeXSource(otexstream & os,
 
        OutputParams runparams = runparams_in;
 
-       // This is necessary for LuaTeX/XeTeX with tex fonts.
-       // See FIXME in BufferParams::encoding()
-       if (runparams.isFullUnicode())
-               runparams.encoding = encodings.fromLyXName("utf8-plain");
+       // XeTeX with TeX fonts is only safe with ASCII encoding,
+       // See #9740 and FIXME in BufferParams::encoding()
+       // FIXME: when only the current paragraph is shown, this seems to be ignored:
+       //   characters encodable in the current encoding are not converted to ASCII-representation.
+       if (!params().useNonTeXFonts && (runparams.flavor == OutputParams::XETEX))
+               runparams.encoding = encodings.fromLyXName("ascii");
 
        // If we are compiling a file standalone, even if this is the
        // child of some other buffer, let's cut the link here, so the
@@ -2440,7 +2442,7 @@ bool Buffer::getStatus(FuncRequest const & cmd, FuncStatus & flag)
 
        case LFUN_BUFFER_VIEW_CACHE:
                (d->preview_file_).refresh();
-               enable = (d->preview_file_).exists();
+               enable = (d->preview_file_).exists() && !(d->preview_file_).isFileEmpty();
                break;
 
        default:
@@ -3435,7 +3437,7 @@ Buffer::References & Buffer::getReferenceCache(docstring const & label)
                return it->second.second;
 
        static InsetLabel const * dummy_il = 0;
-       static References const dummy_refs;
+       static References const dummy_refs = References();
        it = d->ref_cache_.insert(
                make_pair(label, make_pair(dummy_il, dummy_refs))).first;
        return it->second.second;