]> git.lyx.org Git - lyx.git/blobdiff - src/buffer.C
add missing writeNormal() methods to some insets
[lyx.git] / src / buffer.C
index f16af67f98e2491950c46cefb9252948b21d3a8e..114cb02e3212a7a9efec0fa1e8b8b6a24e191d49 100644 (file)
@@ -1340,11 +1340,13 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
 
 // needed to insert the selection
 void Buffer::insertStringAsLines(Paragraph *& par, Paragraph::size_type & pos,
-                                LyXFont const & font, 
-                                string const & str) const
+                                 LyXFont const & fn,string const & str) const
 {
        LyXLayout const & layout = textclasslist.Style(params.textclass, 
-                                                    par->getLayout());
+                                                      par->getLayout());
+       LyXFont font = fn;
+       
+       (void)par->checkInsertChar(font);
        // insert the string, don't insert doublespace
        bool space_inserted = true;
        for(string::const_iterator cit = str.begin(); 
@@ -1352,7 +1354,7 @@ void Buffer::insertStringAsLines(Paragraph *& par, Paragraph::size_type & pos,
                if (*cit == '\n') {
                        if (par->size() || layout.keepempty) { 
                                par->breakParagraph(params, pos, 
-                                                   layout.isEnvironment());
+                                                   layout.isEnvironment());
                                par = par->next();
                                pos = 0;
                                space_inserted = true;
@@ -1360,8 +1362,9 @@ void Buffer::insertStringAsLines(Paragraph *& par, Paragraph::size_type & pos,
                                continue;
                        }
                        // do not insert consecutive spaces if !free_spacing
-               } else if ((*cit == ' ' || *cit == '\t')
-                          && space_inserted && !layout.free_spacing) {
+               } else if ((*cit == ' ' || *cit == '\t') &&
+                          space_inserted && !layout.free_spacing)
+               {
                        continue;
                } else if (*cit == '\t') {
                        if (!layout.free_spacing) {
@@ -1370,7 +1373,7 @@ void Buffer::insertStringAsLines(Paragraph *& par, Paragraph::size_type & pos,
                                ++pos;
                                space_inserted = true;
                        } else {
-                               const Paragraph::value_type nb = 8 - pos % 8;
+                               const Paragraph::size_type nb = 8 - pos % 8;
                                for (Paragraph::size_type a = 0; 
                                     a < nb ; ++a) {
                                        par->insertChar(pos, ' ', font);
@@ -1697,7 +1700,7 @@ bool Buffer::writeFile(string const & fname, bool flag) const
        // The top of the file should not be written by params.
 
        // write out a comment in the top of the file
-       ofs << '#' << LYX_DOCVERSION 
+       ofs << '#' << lyx_docversion 
            << " created this file. For more info see http://www.lyx.org/\n"
            << "\\lyxformat " << LYX_FORMAT << "\n";
 
@@ -1747,7 +1750,7 @@ string const Buffer::asciiParagraph(Paragraph const * par,
        Paragraph::depth_type depth = 0;
        int ltype = 0;
        Paragraph::depth_type ltype_depth = 0;
-       unsigned int currlinelen = 0;
+       string::size_type currlinelen = 0;
        bool ref_printed = false;
 
        int noparbreak = 0;
@@ -1971,7 +1974,7 @@ void Buffer::makeLaTeXFile(string const & fname,
        texrow.start(paragraph, 0);
 
        if (!only_body && nice) {
-               ofs << "%% " LYX_DOCVERSION " created this file.  "
+               ofs << "%% " << lyx_docversion << " created this file.  "
                        "For more info, see http://www.lyx.org/.\n"
                        "%% Do not edit unless you really know what "
                        "you are doing.\n";
@@ -2263,19 +2266,6 @@ void Buffer::makeLaTeXFile(string const & fname,
                        texrow.newline();
                }
 
-               // We try to load babel late, in case it interferes
-               // with other packages.
-               if (use_babel) {
-                       string tmp = lyxrc.language_package;
-                       if (!lyxrc.language_global_options
-                           && tmp == "\\usepackage{babel}")
-                               tmp = string("\\usepackage[") +
-                                       language_options.str().c_str() +
-                                       "]{babel}";
-                       ofs << tmp << "\n";
-                       texrow.newline();
-               }
-
                if (params.secnumdepth != tclass.secnumdepth()) {
                        ofs << "\\setcounter{secnumdepth}{"
                            << params.secnumdepth
@@ -2390,6 +2380,19 @@ void Buffer::makeLaTeXFile(string const & fname,
 
                ofs << preamble;
 
+               // We try to load babel late, in case it interferes
+               // with other packages.
+               if (use_babel) {
+                       string tmp = lyxrc.language_package;
+                       if (!lyxrc.language_global_options
+                           && tmp == "\\usepackage{babel}")
+                               tmp = string("\\usepackage[") +
+                                       language_options.str().c_str() +
+                                       "]{babel}";
+                       ofs << tmp << "\n";
+                       texrow.newline();
+               }
+
                // make the body.
                ofs << "\\begin{document}\n";
                texrow.newline();
@@ -2558,14 +2561,16 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
        string top_element = textclasslist.LatexnameOfClass(params.textclass);
 
        if (!body_only) {
-               string sgml_includedfiles=features.getIncludedFiles(fname);
+               ofs << "<!doctype linuxdoc system";
 
-               if (params.preamble.empty() && sgml_includedfiles.empty()) {
-                       ofs << "<!doctype linuxdoc system>\n\n";
-               } else {
-                       ofs << "<!doctype linuxdoc system [ "
-                           << params.preamble << sgml_includedfiles << " \n]>\n\n";
+               string preamble = params.preamble;
+               preamble += features.getIncludedFiles(fname);
+               preamble += features.getLyXSGMLEntities();
+
+               if (!preamble.empty()) {
+                       ofs << " [ " << preamble << " ]";
                }
+               ofs << ">\n\n";
 
                if (params.options.empty())
                        sgmlOpenTag(ofs, 0, top_element);
@@ -2577,7 +2582,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                }
        }
 
-       ofs << "<!-- "  << LYX_DOCVERSION 
+       ofs << "<!-- "  << lyx_docversion
            << " created this file. For more info see http://www.lyx.org/"
            << " -->\n";
 
@@ -2715,30 +2720,6 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
 }
 
 
-void Buffer::docbookHandleCaption(ostream & os, string & inner_tag,
-                                 Paragraph::depth_type depth, int desc_on,
-                                 Paragraph * & par)
-{
-       Paragraph * tpar = par;
-       while (tpar
-              && (tpar->layout != textclasslist.NumberOfLayout(params.textclass,
-                                                               "Caption").second))
-               tpar = tpar->next();
-
-       if (tpar &&
-           tpar->layout == textclasslist.NumberOfLayout(params.textclass,
-                                                        "Caption").second) {
-               sgmlOpenTag(os, depth + 1, inner_tag);
-               string extra_par;
-               simpleDocBookOnePar(os, extra_par, tpar,
-                                   desc_on, depth + 2);
-               sgmlCloseTag(os, depth+1, inner_tag);
-               if (!extra_par.empty())
-                       os << extra_par;
-       }
-}
-
-
 // checks, if newcol chars should be put into this line
 // writes newline, if necessary.
 namespace {
@@ -2794,8 +2775,6 @@ void reset(PAR_TAG & p1, PAR_TAG const & p2)
 } // namespace anon
 
 
-
-
 // Handle internal paragraph parsing -- layout already processed.
 void Buffer::simpleLinuxDocOnePar(ostream & os,
                                  Paragraph * par, 
@@ -3022,16 +3001,17 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
        string top_element = textclasslist.LatexnameOfClass(params.textclass);
 
        if (!only_body) {
-               string sgml_includedfiles = features.getIncludedFiles(fname);
+               ofs << "<!DOCTYPE " << top_element
+                   << "  PUBLIC \"-//OASIS//DTD DocBook V4.1//EN\"";
 
-               ofs << "<!doctype " << top_element
-                   << " public \"-//OASIS//DTD DocBook V3.1//EN\"";
+               string preamble = params.preamble;
+               preamble += features.getIncludedFiles(fname);
+               preamble += features.getLyXSGMLEntities();
 
-               if (params.preamble.empty() && sgml_includedfiles.empty())
-                       ofs << ">\n\n";
-               else
-                       ofs << "\n [ " << params.preamble 
-                           << sgml_includedfiles << " \n]>\n\n";
+               if (!preamble.empty()) {
+                       ofs << "\n [ " << preamble << " ]";
+               }
+               ofs << ">\n\n";
        }
 
        string top = top_element;       
@@ -3045,7 +3025,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
        }
        sgmlOpenTag(ofs, 0, top);
 
-       ofs << "<!-- DocBook file was created by " << LYX_DOCVERSION 
+       ofs << "<!-- DocBook file was created by " << lyx_docversion
            << "\n  See http://www.lyx.org/ for more information -->\n";
 
        vector<string> environment_stack(10);
@@ -3361,20 +3341,18 @@ void Buffer::simpleDocBookOnePar(ostream & os, string & extra,
                        }
                } else {
                        string sgml_string;
-                       if (par->linuxDocConvertChar(c, sgml_string)
-                           && !style.free_spacing) { // in freespacing
-                                                    // mode, spaces are
-                                                    // non-breaking characters
-                               // char is ' '
-                               if (desc_on == 1) {
-                                       ++char_line_count;
-                                       os << "\n</term><listitem><para>";
-                                       desc_on = 2;
-                               } else {
-                                       os << c;
-                               }
+                       par->linuxDocConvertChar(c, sgml_string);
+
+                       if (style.pass_thru) {
+                               os << c;
+                       } else if(style.free_spacing || c != ' ') {
+                                       os << sgml_string;
+                       } else if (desc_on ==1) {
+                               ++char_line_count;
+                               os << "\n</term><listitem><para>";
+                               desc_on = 2;
                        } else {
-                               os << sgml_string;
+                               os << ' ';
                        }
                }
                font_old = font;