]> git.lyx.org Git - features.git/blobdiff - src/paragraph.C
Dekel language/encoding patch + a few fixes
[features.git] / src / paragraph.C
index 2c99a748d2d854487138a8b7b28286bece7d51b0..6fb5e4bd27640a0f8c023d67329d8eb28ff298bb 100644 (file)
@@ -51,7 +51,7 @@ int tex_code_break_column = 72;  // needs non-zero initialization. set later.
 // this is a bad idea, but how can LyXParagraph find its buffer to get
 // parameters? (JMarc)
 extern BufferView * current_view;
-extern string bibitemWidest(BufferView *);
+extern string bibitemWidest(Buffer const *);
 
 // this is a minibuffer
 static char minibuffer_char;
@@ -242,7 +242,7 @@ void LyXParagraph::writeFile(Buffer const * buf, ostream & os,
        if (bibkey)
                bibkey->Write(buf, os);
 
-       LyXFont font1(LyXFont::ALL_INHERIT, params.language_info);
+       LyXFont font1(LyXFont::ALL_INHERIT, params.language);
 
        int column = 0;
        for (size_type i = 0; i < size(); ++i) {
@@ -342,7 +342,7 @@ void LyXParagraph::validate(LaTeXFeatures & features) const
        features.layout[GetLayout()] = true;
 
        // then the fonts
-       Language const * doc_language = params.language_info;
+       Language const * doc_language = params.language;
        
        for (FontList::const_iterator cit = fontlist.begin();
             cit != fontlist.end(); ++cit) {
@@ -368,10 +368,10 @@ void LyXParagraph::validate(LaTeXFeatures & features) const
                }
 
                Language const * language = (*cit).font.language();
-               if (language != doc_language) {
+               if (language->babel() != doc_language->babel()) {
                        features.UsedLanguages.insert(language);
                        lyxerr[Debug::LATEX] << "Found language "
-                                            << language->lang() << endl;
+                                            << language->babel() << endl;
                }
        }
 
@@ -410,7 +410,7 @@ void LyXParagraph::CopyIntoMinibuffer(BufferParams const & bparams,
        minibuffer_inset = 0;
        if (minibuffer_char == LyXParagraph::META_INSET) {
                if (GetInset(pos)) {
-                       minibuffer_inset = GetInset(pos)->Clone();
+                       minibuffer_inset = GetInset(pos)->Clone(*current_view->buffer());
                } else {
                        minibuffer_inset = 0;
                        minibuffer_char = ' ';
@@ -1610,7 +1610,8 @@ LyXParagraph * LyXParagraph::Clone() const
    
         // ale970302
        if (bibkey)
-               result->bibkey = static_cast<InsetBibKey *>(bibkey->Clone());
+               result->bibkey = static_cast<InsetBibKey *>
+                                (bibkey->Clone(*current_view->buffer()));
        else
                result->bibkey = 0;
     
@@ -1621,7 +1622,7 @@ LyXParagraph * LyXParagraph::Clone() const
        result->insetlist = insetlist;
        for (InsetList::iterator it = result->insetlist.begin();
             it != result->insetlist.end(); ++it)
-               (*it).inset = (*it).inset->Clone();
+               (*it).inset = (*it).inset->Clone(*current_view->buffer());
        return result;
 }
 
@@ -2261,12 +2262,13 @@ LyXParagraph * LyXParagraph::TeXOnePar(Buffer const * buf,
        }
 
        Language const * language = getParLanguage(bparams);
-       Language const * doc_language = bparams.language_info;
+       Language const * doc_language = bparams.language;
        Language const * previous_language = previous
                ? previous->getParLanguage(bparams) : doc_language;
-       if (language != doc_language && language != previous_language) {
+       if (language->babel() != doc_language->babel() &&
+           language->babel() != previous_language->babel()) {
                os << subst(lyxrc.language_command_begin, "$$lang",
-                           language->lang())
+                           language->babel())
                   << endl;
                texrow.newline();
        }
@@ -2374,15 +2376,15 @@ LyXParagraph * LyXParagraph::TeXOnePar(Buffer const * buf,
                os << "{\\" << font.latexSize() << " \\par}";
        }
 
-       if (language != doc_language &&
+       if (language->babel() != doc_language->babel() &&
            (!par
 #ifndef NEW_INSETS
             || (footnoteflag != NO_FOOTNOTE && par->footnoteflag != footnoteflag)
 #endif
-            || par->getParLanguage(bparams) != language)) {
+            || par->getParLanguage(bparams)->babel() != language->babel())) {
                os << endl 
                   << subst(lyxrc.language_command_end, "$$lang",
-                           doc_language->lang());
+                           doc_language->babel());
        }
        
        switch (style.latextype) {
@@ -2403,17 +2405,7 @@ LyXParagraph * LyXParagraph::TeXOnePar(Buffer const * buf,
                        break;
        default:
                // we don't need it for the last paragraph!!!
-               if (next
-#ifndef NEW_INSETS
-                       && !(    footnoteflag != LyXParagraph::NO_FOOTNOTE
-                     && footnotekind != LyXParagraph::FOOTNOTE
-                     && footnotekind != LyXParagraph::MARGIN)
-#endif
-                       ) {
-                       // don't insert this if we would be adding it
-                       // before or after a table in a float.  This 
-                       // little trick is needed in order to allow
-                       // use of tables in \subfigures or \subtables.
+               if (next) {
                        os << '\n';
                        texrow.newline();
                }
@@ -2556,7 +2548,7 @@ bool LyXParagraph::SimpleTeXOnePar(Buffer const * buf,
                        case LYX_ALIGN_SPECIAL:
                                break;
                        case LYX_ALIGN_LEFT:
-                               if (getParLanguage(bparams)->lang() != "hebrew") {
+                               if (getParLanguage(bparams)->babel() != "hebrew") {
                                        os << "\\raggedright ";
                                        column+= 13;
                                } else {
@@ -2565,7 +2557,7 @@ bool LyXParagraph::SimpleTeXOnePar(Buffer const * buf,
                                }
                                break;
                        case LYX_ALIGN_RIGHT:
-                               if (getParLanguage(bparams)->lang() != "hebrew") {
+                               if (getParLanguage(bparams)->babel() != "hebrew") {
                                        os << "\\raggedleft ";
                                        column+= 12;
                                } else {
@@ -3237,7 +3229,7 @@ LyXParagraph * LyXParagraph::TeXEnvironment(Buffer const * buf,
                } else if (style.labeltype == LABEL_BIBLIO) {
                        // ale970405
                        os << "\\begin{" << style.latexname() << "}{"
-                          <<  bibitemWidest(current_view)
+                          <<  bibitemWidest(buf)
                           << "}\n";
                } else if (style.latextype == LATEX_ITEM_ENVIRONMENT) {
 #ifdef FANCY_FOOTNOTE_CODE
@@ -3875,15 +3867,19 @@ LyXParagraph::getParLanguage(BufferParams const & bparams) const
        else
 #endif
        if (size() > 0) {
+#ifdef DO_USE_DEFAULT_LANGUAGE
                Language const * lang = GetFirstFontSettings().language();
 
-               if (lang->lang() == default_language->lang())
-                       return bparams.language_info;
+               if (lang->lang() == "default")
+                       return bparams.language;
                return lang;
+#else
+               return GetFirstFontSettings().language();
+#endif
        } else if (previous)
                return previous->getParLanguage(bparams);
-
-               return bparams.language_info;
+       else
+               return bparams.language;
 }
 
 
@@ -3909,7 +3905,7 @@ void LyXParagraph::ChangeLanguage(BufferParams const & bparams,
 
 bool LyXParagraph::isMultiLingual(BufferParams const & bparams)
 {
-       Language const * doc_language = bparams.language_info;
+       Language const * doc_language = bparams.language;
        for (FontList::const_iterator cit = fontlist.begin();
             cit != fontlist.end(); ++cit)
                if ((*cit).font.language() != doc_language)