On 01/12/2012 07:52 PM, for...@lyx.org wrote:
Author: forenr
Date: Fri Jan 13 01:52:03 2012
New Revision: 40607
URL: http://www.lyx.org/trac/changeset/40607

Log:
Refine fix for bug #7800. Don't use \inputencoding with unicode backends.
Fine for branch, too.

rh

Modified:
    lyx-devel/trunk/src/LaTeXFeatures.cpp
    lyx-devel/trunk/src/Layout.cpp
    lyx-devel/trunk/src/Layout.h

Modified: lyx-devel/trunk/src/LaTeXFeatures.cpp
==============================================================================
--- lyx-devel/trunk/src/LaTeXFeatures.cpp       Thu Jan 12 21:12:03 2012        
(r40606)
+++ lyx-devel/trunk/src/LaTeXFeatures.cpp       Fri Jan 13 01:52:03 2012        
(r40607)
@@ -1153,7 +1153,8 @@
  namespace {
  docstring const getFloatI18nPreamble(docstring const&  type,
                        docstring const&  name, Language const * lang,
-                       Encoding const&  enc, bool const polyglossia)
+                       Encoding const&  enc, bool const polyglossia,
+                       bool const unicode)
  {
        docstring const language = polyglossia ? from_ascii(lang->polyglossia())
                                               : from_ascii(lang->babel());
@@ -1162,7 +1163,7 @@
        docstring const bufenc = from_ascii(enc.iconvName());
        docstring const s1 = docstring(1, 0xF0000);
        docstring const s2 = docstring(1, 0xF0001);
-       docstring const translated = (langenc == bufenc) ? name
+       docstring const translated = (unicode || langenc == bufenc) ? name
                : from_ascii("\\inputencoding{") + texenc + from_ascii("}")
                        + s1 + langenc + s2 + name + s1 + bufenc + s2;

@@ -1189,18 +1190,21 @@
                // language dependent commands (once per document)
                snippets.insert(tclass[*cit].langpreamble(buffer().language(),
                                                buffer().params().encoding(),
-                                               use_polyglossia));
+                                               use_polyglossia,
+                                               runparams().isFullUnicode()));
                // commands for language changing (for multilanguage documents)
                if ((use_babel || use_polyglossia)&&  !UsedLanguages_.empty()) {
                        snippets.insert(tclass[*cit].babelpreamble(
                                                buffer().language(),
                                                buffer().params().encoding(),
-                                               use_polyglossia));
+                                               use_polyglossia,
+                                               runparams().isFullUnicode()));
                        for (lang_it lit = lbeg; lit != lend; ++lit)
                                snippets.insert(tclass[*cit].babelpreamble(
                                                *lit,
                                                buffer().params().encoding(),
-                                               use_polyglossia));
+                                               use_polyglossia,
+                                               runparams().isFullUnicode()));
                }
        }
        if ((use_babel || use_polyglossia)&&  !UsedLanguages_.empty()) {
@@ -1221,7 +1225,8 @@
                                snippets.insert(getFloatI18nPreamble(
                                                type, name, buffer().language(),
                                                buffer().params().encoding(),
-                                               use_polyglossia));
+                                               use_polyglossia,
+                                               runparams().isFullUnicode()));
                        for (lang_it lit = lbeg; lit != lend; ++lit) {
                                string const code = (*lit)->code();
                                name = (*lit)->translateLayout(fl.name());
@@ -1236,7 +1241,8 @@
                                        snippets.insert(getFloatI18nPreamble(
                                                type, name, *lit,
                                                buffer().params().encoding(),
-                                               use_polyglossia));
+                                               use_polyglossia,
+                                               runparams().isFullUnicode()));
                        }
                }
        }

Modified: lyx-devel/trunk/src/Layout.cpp
==============================================================================
--- lyx-devel/trunk/src/Layout.cpp      Thu Jan 12 21:12:03 2012        (r40606)
+++ lyx-devel/trunk/src/Layout.cpp      Fri Jan 13 01:52:03 2012        (r40607)
@@ -862,7 +862,8 @@
  namespace {

  docstring const i18npreamble(Language const * lang, Encoding const&  enc,
-                            docstring const&  templ, bool const polyglossia)
+                            docstring const&  templ, bool const polyglossia,
+                            bool const unicode)
  {
        if (templ.empty())
                return templ;
@@ -890,7 +891,7 @@
        while (regex_search(preamble, sub, reg)) {
                string const key = sub.str(1);
                string translated = to_utf8(lang->translateLayout(key));
-               if (langenc != bufenc)
+               if (!unicode&&  langenc != bufenc)
                        translated = "\\inputencoding{" + texenc + "}"
                                + s1 + langenc + s2 + translated
                                + s1 + bufenc + s2;
@@ -904,16 +905,18 @@


  docstring const Layout::langpreamble(Language const * lang,
-                       Encoding const&  enc, bool const polyglossia) const
+                       Encoding const&  enc, bool const polyglossia,
+                       bool const unicode) const
  {
-       return i18npreamble(lang, enc, langpreamble_, polyglossia);
+       return i18npreamble(lang, enc, langpreamble_, polyglossia, unicode);
  }


  docstring const Layout::babelpreamble(Language const * lang,
-                       Encoding const&  enc, bool const polyglossia) const
+                       Encoding const&  enc, bool const polyglossia,
+                       bool const unicode) const
  {
-       return i18npreamble(lang, enc, babelpreamble_, polyglossia);
+       return i18npreamble(lang, enc, babelpreamble_, polyglossia, unicode);
  }



Modified: lyx-devel/trunk/src/Layout.h
==============================================================================
--- lyx-devel/trunk/src/Layout.h        Thu Jan 12 21:12:03 2012        (r40606)
+++ lyx-devel/trunk/src/Layout.h        Fri Jan 13 01:52:03 2012        (r40607)
@@ -96,10 +96,10 @@
        docstring const&  preamble() const { return preamble_; }
        /// Get language dependent macro definitions needed for this layout
        /// for language \p lang
-       docstring const langpreamble(Language const * lang, Encoding const&  
enc, bool const polyglossia) const;
+       docstring const langpreamble(Language const * lang, Encoding const&  
enc, bool const polyglossia, bool const unicode) const;
        /// Get language and babel dependent macro definitions needed for
        /// this layout for language \p lang
-       docstring const babelpreamble(Language const * lang, Encoding const&  
enc, bool const polyglossia) const;
+       docstring const babelpreamble(Language const * lang, Encoding const&  
enc, bool const polyglossia, bool const unicode) const;
        ///
        std::set<std::string>  const&  requires() const { return requires_; }
        ///

Reply via email to