]> git.lyx.org Git - lyx.git/blobdiff - src/buffer.C
Remove the XOpenIM test as lyxlookup.C has been buried.
[lyx.git] / src / buffer.C
index ac3d0e35f7e575c8dd64589b87bc8a231c0cbb5d..31dd511ea82498cc36963b029ee4c02b06d29b8a 100644 (file)
 
 #include <boost/bind.hpp>
 #include <boost/tuple/tuple.hpp>
+#include "BoostFormat.h"
 
 #include <fstream>
 #include <iomanip>
@@ -199,7 +200,7 @@ string const Buffer::getLatexName(bool no_path) const
 }
 
 
-pair<Buffer::LogType, string> const Buffer::getLogName(void) const
+pair<Buffer::LogType, string> const Buffer::getLogName() const
 {
        string const filename = getLatexName(false);
 
@@ -338,7 +339,7 @@ bool Buffer::readLyXformat2(LyXLex & lex, Paragraph * par)
                if (token.empty()) continue;
 
                lyxerr[Debug::PARSER] << "Handling token: `"
-                                     << token << "'" << endl;
+                                     << token << '\'' << endl;
 
                the_end_read =
                        parseSingleLyXformat2Token(lex, par, first_par,
@@ -359,8 +360,13 @@ bool Buffer::readLyXformat2(LyXLex & lex, Paragraph * par)
                        s += tostr(unknown_layouts);
                        s += _(" paragraphs");
                }
+#if USE_BOOST_FORMAT
                Alert::alert(_("Textclass Loading Error!"), s,
-                          _("When reading " + fileName()));
+                          boost::io::str(boost::format(_("When reading %1$s")) % fileName()));
+#else
+               Alert::alert(_("Textclass Loading Error!"), s,
+                            _("When reading ") + fileName());
+#endif
        }
 
        if (unknown_tokens > 0) {
@@ -371,8 +377,13 @@ bool Buffer::readLyXformat2(LyXLex & lex, Paragraph * par)
                        s += tostr(unknown_tokens);
                        s += _(" unknown tokens");
                }
+#if USE_BOOST_FORMAT
+               Alert::alert(_("Textclass Loading Error!"), s,
+                          boost::io::str(boost::format(_("When reading %1$s")) % fileName()));
+#else
                Alert::alert(_("Textclass Loading Error!"), s,
-                          _("When reading " + fileName()));
+                            _("When reading ") +  fileName());
+#endif
        }
 
        return the_end_read;
@@ -563,7 +574,7 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
                if (layout->free_spacing || par->isFreeSpacing()) {
                        if (lex.isOK()) {
                                lex.next();
-                               string next_token = lex.getString();
+                               string const next_token = lex.getString();
                                if (next_token == "\\-") {
                                        par->insertChar(pos, '-', font);
                                } else if (next_token == "~") {
@@ -607,10 +618,17 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
                if (pp.first) {
                        params.textclass = pp.second;
                } else {
-                       Alert::alert(string(_("Textclass error")),
-                               string(_("The document uses an unknown textclass \"")) +
-                               lex.getString() + string("\"."),
-                               string(_("LyX will not be able to produce output correctly.")));
+#if USE_BOOST_FORMAT
+                       Alert::alert(_("Textclass error"),
+                               boost::io::str(boost::format(_("The document uses an unknown textclass \"%1$s\".")) % lex.getString()),
+                               _("LyX will not be able to produce output correctly."));
+#else
+                       Alert::alert(
+                               _("Textclass error"),
+                               _("The document uses an unknown textclass ")
+                               + lex.getString(),
+                               _("LyX will not be able to produce output correctly."));
+#endif
                        params.textclass = 0;
                }
                if (!params.getLyXTextClass().load()) {
@@ -619,10 +637,17 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
                        // or stop loading the file.
                        // I can substitute but I don't see how I can
                        // stop loading... ideas??  ARRae980418
+#if USE_BOOST_FORMAT
                        Alert::alert(_("Textclass Loading Error!"),
-                                  string(_("Can't load textclass ")) +
-                                  params.getLyXTextClass().name(),
+                                  boost::io::str(boost::format(_("Can't load textclass %1$s")) %
+                                  params.getLyXTextClass().name()),
                                   _("-- substituting default"));
+#else
+                       Alert::alert(_("Textclass Loading Error!"),
+                                    _("Can't load textclass ")
+                                    + params.getLyXTextClass().name(),
+                                    _("-- substituting default"));
+#endif
                        params.textclass = 0;
                }
        } else if (token == "\\options") {
@@ -926,8 +951,14 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
                // This should be insurance for the future: (Asger)
                ++unknown_tokens;
                lex.eatLine();
+#if USE_BOOST_FORMAT
+               boost::format fmt(_("Unknown token: %1$s %2$s\n"));
+               fmt % token % lex.text();
+               string const s = fmt.str();
+#else
                string const s = _("Unknown token: ") + token
-                       + " " + lex.text()  + "\n";
+                       + ' ' + lex.text() + '\n';
+#endif
                // we can do this here this way because we're actually reading
                // the buffer and don't care about LyXText right now.
                InsetError * new_inset = new InsetError(s);
@@ -939,6 +970,7 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
        return the_end_read;
 }
 
+
 // needed to insert the selection
 void Buffer::insertStringAsLines(Paragraph *& par, pos_type & pos,
                                 LyXFont const & fn,string const & str) const
@@ -1137,7 +1169,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename, Paragraph * par)
                if (token == "\\lyxformat") { // the first token _must_ be...
                        lex.eatLine();
                        string tmp_format = lex.getString();
-                       //lyxerr << "LyX Format: `" << tmp_format << "'" << endl;
+                       //lyxerr << "LyX Format: `" << tmp_format << '\'' << endl;
                        // if present remove ".," from string.
                        string::size_type dot = tmp_format.find_first_of(".,");
                        //lyxerr << "           dot found at " << dot << endl;
@@ -1169,10 +1201,11 @@ bool Buffer::readFile(LyXLex & lex, string const & filename, Paragraph * par)
                                                return false;
                                        }
                                        command += " -t"
-                                               +tostr(LYX_FORMAT)+" "
+                                               +tostr(LYX_FORMAT) + ' '
                                                + QuoteName(filename);
                                        lyxerr[Debug::INFO] << "Running '"
-                                                           << command << "'" << endl;
+                                                           << command << '\''
+                                                           << endl;
                                        cmd_ret const ret = RunCommand(command);
                                        if (ret.first) {
                                                Alert::alert(_("ERROR!"),
@@ -1180,7 +1213,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename, Paragraph * par)
                                                               "running the conversion script."));
                                                return false;
                                        }
-                                       istringstream is(ret.second);
+                                       istringstream is(STRCONV(ret.second));
                                        LyXLex tmplex(0, 0);
                                        tmplex.setStream(is);
                                        return readFile(tmplex, string());
@@ -1493,7 +1526,7 @@ string const Buffer::asciiParagraph(Paragraph const & par,
                default:
                {
                        string const parlab = par.params().labelString();
-                       buffer << parlab << " ";
+                       buffer << parlab << ' ';
                        currlinelen += parlab.length() + 1;
                }
                break;
@@ -1588,7 +1621,7 @@ string const Buffer::asciiParagraph(Paragraph const & par,
                }
        }
        buffer << word;
-       return buffer.str().c_str();
+       return STRCONV(buffer.str());
 }
 
 
@@ -1775,7 +1808,7 @@ void Buffer::makeLaTeXFile(ostream & os,
                        options << params.options << ',';
                }
 
-               string strOptions(options.str().c_str());
+               string strOptions(STRCONV(options.str()));
                if (!strOptions.empty()) {
                        strOptions = rtrim(strOptions, ",");
                        os << '[' << strOptions << ']';
@@ -2055,7 +2088,7 @@ void Buffer::makeLaTeXFile(ostream & os,
                        if (!lyxrc.language_global_options
                            && tmp == "\\usepackage{babel}")
                                tmp = string("\\usepackage[") +
-                                       language_options.str().c_str() +
+                                       STRCONV(language_options.str()) +
                                        "]{babel}";
                        preamble += tmp + "\n";
                        preamble += features.getBabelOptions();
@@ -2108,7 +2141,8 @@ void Buffer::makeLaTeXFile(ostream & os,
        texrow.newline();
 
        lyxerr[Debug::INFO] << "Finished making latex file." << endl;
-       lyxerr[Debug::INFO] << "Row count was " << texrow.rows()-1 << "." << endl;
+       lyxerr[Debug::INFO] << "Row count was " << texrow.rows() - 1
+                           << '.' << endl;
 
        // we want this to be true outside previews (for insetexternal)
        niceFile = true;
@@ -2201,38 +2235,6 @@ bool Buffer::isSGML() const
 }
 
 
-int Buffer::sgmlOpenTag(ostream & os, Paragraph::depth_type depth, bool mixcont,
-                        string const & latexname) const
-{
-       if (!latexname.empty() && latexname != "!-- --") {
-               if (!mixcont)
-                       os << string(" ",depth);
-               os << "<" << latexname << ">";
-       }
-
-       if (!mixcont)
-               os << endl;
-
-       return mixcont?0:1;
-}
-
-
-int Buffer::sgmlCloseTag(ostream & os, Paragraph::depth_type depth, bool mixcont,
-                         string const & latexname) const
-{
-       if (!latexname.empty() && latexname != "!-- --") {
-               if (!mixcont)
-                       os << endl << string(" ",depth);
-               os << "</" << latexname << ">";
-       }
-
-       if (!mixcont)
-               os << endl;
-
-       return mixcont?0:1;
-}
-
-
 void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
 {
        ofstream ofs(fname.c_str());
@@ -2269,12 +2271,12 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                ofs << ">\n\n";
 
                if (params.options.empty())
-                       sgmlOpenTag(ofs, 0, false, top_element);
+                       sgml::openTag(ofs, 0, false, top_element);
                else {
                        string top = top_element;
-                       top += " ";
+                       top += ' ';
                        top += params.options;
-                       sgmlOpenTag(ofs, 0, false, top);
+                       sgml::openTag(ofs, 0, false, top);
                }
        }
 
@@ -2295,7 +2297,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                        Inset::Code lyx_code = inset->lyxCode();
                        if (lyx_code == Inset::TOC_CODE) {
                                string const temp = "toc";
-                               sgmlOpenTag(ofs, depth, false, temp);
+                               sgml::openTag(ofs, depth, false, temp);
 
                                par = par->next();
                                continue;
@@ -2304,7 +2306,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
 
                // environment tag closing
                for (; depth > par->params().depth(); --depth) {
-                       sgmlCloseTag(ofs, depth, false, environment_stack[depth]);
+                       sgml::closeTag(ofs, depth, false, environment_stack[depth]);
                        environment_stack[depth].erase();
                }
 
@@ -2313,14 +2315,14 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                case LATEX_PARAGRAPH:
                        if (depth == par->params().depth()
                           && !environment_stack[depth].empty()) {
-                               sgmlCloseTag(ofs, depth, false, environment_stack[depth]);
+                               sgml::closeTag(ofs, depth, false, environment_stack[depth]);
                                environment_stack[depth].erase();
                                if (depth)
                                        --depth;
                                else
                                        ofs << "</p>";
                        }
-                       sgmlOpenTag(ofs, depth, false, style->latexname());
+                       sgml::openTag(ofs, depth, false, style->latexname());
                        break;
 
                case LATEX_COMMAND:
@@ -2330,12 +2332,12 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                                            " LatexType Command.\n"));
 
                        if (!environment_stack[depth].empty()) {
-                               sgmlCloseTag(ofs, depth, false, environment_stack[depth]);
+                               sgml::closeTag(ofs, depth, false, environment_stack[depth]);
                                ofs << "</p>";
                        }
 
                        environment_stack[depth].erase();
-                       sgmlOpenTag(ofs, depth, false, style->latexname());
+                       sgml::openTag(ofs, depth, false, style->latexname());
                        break;
 
                case LATEX_ENVIRONMENT:
@@ -2345,7 +2347,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
 
                        if (depth == par->params().depth()
                            && environment_stack[depth] != latexname) {
-                               sgmlCloseTag(ofs, depth, false,
+                               sgml::closeTag(ofs, depth, false,
                                             environment_stack[depth]);
                                environment_stack[depth].erase();
                        }
@@ -2355,9 +2357,9 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                        }
                        if (environment_stack[depth] != latexname) {
                                if (depth == 0) {
-                                       sgmlOpenTag(ofs, depth, false, "p");
+                                       sgml::openTag(ofs, depth, false, "p");
                                }
-                               sgmlOpenTag(ofs, depth, false, latexname);
+                               sgml::openTag(ofs, depth, false, latexname);
 
                                if (environment_stack.size() == depth + 1)
                                        environment_stack.push_back("!-- --");
@@ -2374,12 +2376,12 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                        else
                                item_name = "item";
 
-                       sgmlOpenTag(ofs, depth + 1, false, item_name);
+                       sgml::openTag(ofs, depth + 1, false, item_name);
                }
                break;
 
                default:
-                       sgmlOpenTag(ofs, depth, false, style->latexname());
+                       sgml::openTag(ofs, depth, false, style->latexname());
                        break;
                }
 
@@ -2398,18 +2400,18 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
                                ofs << "]]>";
                        break;
                default:
-                       sgmlCloseTag(ofs, depth, false, style->latexname());
+                       sgml::closeTag(ofs, depth, false, style->latexname());
                        break;
                }
        }
 
        // Close open tags
        for (int i = depth; i >= 0; --i)
-               sgmlCloseTag(ofs, depth, false, environment_stack[i]);
+               sgml::closeTag(ofs, depth, false, environment_stack[i]);
 
        if (!body_only) {
                ofs << "\n\n";
-               sgmlCloseTag(ofs, 0, false, top_element);
+               sgml::closeTag(ofs, 0, false, top_element);
        }
 
        ofs.close();
@@ -2597,7 +2599,7 @@ void Buffer::simpleLinuxDocOnePar(ostream & os,
                while (!tag_state.empty() && tag_close) {
                        PAR_TAG k =  tag_state.top();
                        tag_state.pop();
-                       os << "</" << tag_name(k) << ">";
+                       os << "</" << tag_name(k) << '>';
                        if (tag_close & k)
                                reset(tag_close,k);
                        else
@@ -2607,13 +2609,13 @@ void Buffer::simpleLinuxDocOnePar(ostream & os,
                for(list< PAR_TAG >::const_iterator j = temp.begin();
                    j != temp.end(); ++j) {
                        tag_state.push(*j);
-                       os << "<" << tag_name(*j) << ">";
+                       os << '<' << tag_name(*j) << '>';
                }
 
                for(list< PAR_TAG >::const_iterator j = tag_open.begin();
                    j != tag_open.end(); ++j) {
                        tag_state.push(*j);
-                       os << "<" << tag_name(*j) << ">";
+                       os << '<' << tag_name(*j) << '>';
                }
 
                char c = par->getChar(i);
@@ -2656,7 +2658,7 @@ void Buffer::simpleLinuxDocOnePar(ostream & os,
        }
 
        while (!tag_state.empty()) {
-               os << "</" << tag_name(tag_state.top()) << ">";
+               os << "</" << tag_name(tag_state.top()) << '>';
                tag_state.pop();
        }
 
@@ -2729,13 +2731,13 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
        string top = top_element;
        top += " lang=\"";
        top += params.language->code();
-       top += "\"";
+       top += '"';
 
        if (!params.options.empty()) {
-               top += " ";
+               top += ' ';
                top += params.options;
        }
-       sgmlOpenTag(ofs, 0, false, top);
+       sgml::openTag(ofs, 0, false, top);
 
        ofs << "<!-- DocBook file was created by " << lyx_docversion
            << "\n  See http://www.lyx.org/ for more information -->\n";
@@ -2765,11 +2767,11 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                for (; depth > par->params().depth(); --depth) {
                        if (environment_inner[depth] != "!-- --") {
                                item_name = "listitem";
-                               sgmlCloseTag(ofs, command_depth + depth, false, item_name);
+                               sgml::closeTag(ofs, command_depth + depth, false, item_name);
                                if (environment_inner[depth] == "varlistentry")
-                                       sgmlCloseTag(ofs, depth+command_depth, false, environment_inner[depth]);
+                                       sgml::closeTag(ofs, depth+command_depth, false, environment_inner[depth]);
                        }
-                       sgmlCloseTag(ofs, depth + command_depth, false, environment_stack[depth]);
+                       sgml::closeTag(ofs, depth + command_depth, false, environment_stack[depth]);
                        environment_stack[depth].erase();
                        environment_inner[depth].erase();
                }
@@ -2779,12 +2781,12 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                   && !environment_stack[depth].empty()) {
                        if (environment_inner[depth] != "!-- --") {
                                item_name= "listitem";
-                               sgmlCloseTag(ofs, command_depth+depth, false, item_name);
+                               sgml::closeTag(ofs, command_depth+depth, false, item_name);
                                if (environment_inner[depth] == "varlistentry")
-                                       sgmlCloseTag(ofs, depth + command_depth, false, environment_inner[depth]);
+                                       sgml::closeTag(ofs, depth + command_depth, false, environment_inner[depth]);
                        }
 
-                       sgmlCloseTag(ofs, depth + command_depth, false, environment_stack[depth]);
+                       sgml::closeTag(ofs, depth + command_depth, false, environment_stack[depth]);
 
                        environment_stack[depth].erase();
                        environment_inner[depth].erase();
@@ -2793,7 +2795,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                // Write opening SGML tags.
                switch (style->latextype) {
                case LATEX_PARAGRAPH:
-                       sgmlOpenTag(ofs, depth + command_depth,
+                       sgml::openTag(ofs, depth + command_depth,
                                    false, style->latexname());
                        break;
 
@@ -2814,14 +2816,14 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                                if (cmd_depth < command_base) {
                                        for (Paragraph::depth_type j = command_depth;
                                             j >= command_base; --j) {
-                                               sgmlCloseTag(ofs, j, false, command_stack[j]);
+                                               sgml::closeTag(ofs, j, false, command_stack[j]);
                                                ofs << endl;
                                        }
                                        command_depth = command_base = cmd_depth;
                                } else if (cmd_depth <= command_depth) {
                                        for (int j = command_depth;
                                             j >= int(cmd_depth); --j) {
-                                               sgmlCloseTag(ofs, j, false, command_stack[j]);
+                                               sgml::closeTag(ofs, j, false, command_stack[j]);
                                                ofs << endl;
                                        }
                                        command_depth = cmd_depth;
@@ -2845,15 +2847,15 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                                if (lyx_code == Inset::LABEL_CODE) {
                                        command_name += " id=\"";
                                        command_name += (static_cast<InsetCommand *>(inset))->getContents();
-                                       command_name += "\"";
+                                       command_name += '"';
                                        desc_on = 3;
                                }
                        }
 
-                       sgmlOpenTag(ofs, depth + command_depth, false, command_name);
+                       sgml::openTag(ofs, depth + command_depth, false, command_name);
 
-                       item_name = c_params.empty()?"title":c_params;
-                       sgmlOpenTag(ofs, depth + 1 + command_depth, false, item_name);
+                       item_name = c_params.empty() ? "title" : c_params;
+                       sgml::openTag(ofs, depth + 1 + command_depth, false, item_name);
                        break;
 
                case LATEX_ENVIRONMENT:
@@ -2870,13 +2872,13 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                                }
                                environment_stack[depth] = style->latexname();
                                environment_inner[depth] = "!-- --";
-                               sgmlOpenTag(ofs, depth + command_depth, false, environment_stack[depth]);
+                               sgml::openTag(ofs, depth + command_depth, false, environment_stack[depth]);
                        } else {
                                if (environment_inner[depth] != "!-- --") {
                                        item_name= "listitem";
-                                       sgmlCloseTag(ofs, command_depth + depth, false, item_name);
+                                       sgml::closeTag(ofs, command_depth + depth, false, item_name);
                                        if (environment_inner[depth] == "varlistentry")
-                                               sgmlCloseTag(ofs, depth + command_depth, false, environment_inner[depth]);
+                                               sgml::closeTag(ofs, depth + command_depth, false, environment_inner[depth]);
                                }
                        }
 
@@ -2885,7 +2887,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                                        if (style->latexparam() == "CDATA")
                                                ofs << "<![CDATA[";
                                        else
-                                               sgmlOpenTag(ofs, depth + command_depth, false, style->latexparam());
+                                               sgml::openTag(ofs, depth + command_depth, false, style->latexparam());
                                }
                                break;
                        }
@@ -2893,15 +2895,15 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                        desc_on = (style->labeltype == LABEL_MANUAL);
 
                        environment_inner[depth] = desc_on ? "varlistentry" : "listitem";
-                       sgmlOpenTag(ofs, depth + 1 + command_depth,
+                       sgml::openTag(ofs, depth + 1 + command_depth,
                                    false, environment_inner[depth]);
 
                        item_name = desc_on ? "term" : "para";
-                       sgmlOpenTag(ofs, depth + 1 + command_depth,
+                       sgml::openTag(ofs, depth + 1 + command_depth,
                                    false, item_name);
                        break;
                default:
-                       sgmlOpenTag(ofs, depth + command_depth,
+                       sgml::openTag(ofs, depth + command_depth,
                                    false, style->latexname());
                        break;
                }
@@ -2915,7 +2917,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                switch (style->latextype) {
                case LATEX_COMMAND:
                        end_tag = c_params.empty() ? "title" : c_params;
-                       sgmlCloseTag(ofs, depth + command_depth,
+                       sgml::closeTag(ofs, depth + command_depth,
                                     false, end_tag);
                        break;
                case LATEX_ENVIRONMENT:
@@ -2923,19 +2925,19 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                                if (style->latexparam() == "CDATA")
                                        ofs << "]]>";
                                else
-                                       sgmlCloseTag(ofs, depth + command_depth, false, style->latexparam());
+                                       sgml::closeTag(ofs, depth + command_depth, false, style->latexparam());
                        }
                        break;
                case LATEX_ITEM_ENVIRONMENT:
                        if (desc_on == 1) break;
-                       end_tag= "para";
-                       sgmlCloseTag(ofs, depth + 1 + command_depth, false, end_tag);
+                       end_tag = "para";
+                       sgml::closeTag(ofs, depth + 1 + command_depth, false, end_tag);
                        break;
                case LATEX_PARAGRAPH:
-                       sgmlCloseTag(ofs, depth + command_depth, false, style->latexname());
+                       sgml::closeTag(ofs, depth + command_depth, false, style->latexname());
                        break;
                default:
-                       sgmlCloseTag(ofs, depth + command_depth, false, style->latexname());
+                       sgml::closeTag(ofs, depth + command_depth, false, style->latexname());
                        break;
                }
        }
@@ -2945,23 +2947,23 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
                if (!environment_stack[depth].empty()) {
                        if (environment_inner[depth] != "!-- --") {
                                item_name = "listitem";
-                               sgmlCloseTag(ofs, command_depth + depth, false, item_name);
+                               sgml::closeTag(ofs, command_depth + depth, false, item_name);
                               if (environment_inner[depth] == "varlistentry")
-                                      sgmlCloseTag(ofs, depth + command_depth, false, environment_inner[depth]);
+                                      sgml::closeTag(ofs, depth + command_depth, false, environment_inner[depth]);
                        }
 
-                       sgmlCloseTag(ofs, depth + command_depth, false, environment_stack[depth]);
+                       sgml::closeTag(ofs, depth + command_depth, false, environment_stack[depth]);
                }
        }
 
        for (int j = command_depth; j >= 0 ; --j)
                if (!command_stack[j].empty()) {
-                       sgmlCloseTag(ofs, j, false, command_stack[j]);
+                       sgml::closeTag(ofs, j, false, command_stack[j]);
                        ofs << endl;
                }
 
        ofs << "\n\n";
-       sgmlCloseTag(ofs, 0, false, top_element);
+       sgml::closeTag(ofs, 0, false, top_element);
 
        ofs.close();
        // How to check for successful close
@@ -3375,6 +3377,18 @@ ParIterator Buffer::par_iterator_end()
        return ParIterator();
 }
 
+ParConstIterator Buffer::par_iterator_begin() const
+{
+       return ParConstIterator(&*(paragraphs.begin()));
+}
+
+
+ParConstIterator Buffer::par_iterator_end() const
+{
+       return ParConstIterator();
+}
+
+
 
 void Buffer::addUser(BufferView * u)
 {