]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Shortcut for LyX HTML output. (Makes my life easier!)
[lyx.git] / src / Buffer.cpp
index 1bca5adbc9976522f1a9abbab9daa68aa4fadd26..9db7c6997f46976c38ca8f6e2362c332534c8663 100644 (file)
@@ -127,7 +127,7 @@ namespace {
 
 // Do not remove the comment below, so we get merge conflict in
 // independent branches. Instead add your own.
-int const LYX_FORMAT = 370; // uwestoehr: option to suppress default date
+int const LYX_FORMAT = 371; // uwestoehr: option to turn off mhchem
 
 typedef map<string, bool> DepClean;
 typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;
@@ -705,6 +705,7 @@ bool Buffer::readDocument(Lexer & lex)
        // read main text
        bool const res = text().read(lex, errorList, d->inset);
 
+       usermacros.clear();
        updateMacros();
        updateMacroInstances();
        return res;
@@ -1420,10 +1421,10 @@ void Buffer::writeLyXHTMLSource(odocstream & os,
        d->texrow.reset();
 
        if (!only_body) {
-               os << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"" <<
-                       " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+               os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+               os << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd\">\n";
                // FIXME Language should be set properly.
-               os << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
+               os << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
                // FIXME Header
                os << "<head>\n";
                // FIXME Presumably need to set this right
@@ -1444,8 +1445,9 @@ void Buffer::writeLyXHTMLSource(odocstream & os,
                os << "</head>\n<body>\n";
        }
 
+       XHTMLStream xs(os);
        params().documentClass().counters().reset();
-       xhtmlParagraphs(text(), *this, os, runparams);
+       xhtmlParagraphs(text(), *this, xs, runparams);
        if (!only_body)
                os << "</body>\n</html>\n";
 }
@@ -2963,6 +2965,15 @@ private:
 
 int AutoSaveBuffer::generateChild()
 {
+#if defined(__APPLE__)
+       /* FIXME fork() is not usable for autosave on Mac OS X 10.6 (snow leopard) 
+        *   We should use something else like threads.
+        *
+        * Since I do not know how to determine at run time what is the OS X
+        * version, I just disable forking altogether for now (JMarc)
+        */
+       pid_t const pid = -1;
+#else
        // tmp_ret will be located (usually) in /tmp
        // will that be a problem?
        // Note that this calls ForkedCalls::fork(), so it's
@@ -2972,6 +2983,7 @@ int AutoSaveBuffer::generateChild()
        // you should set pid to -1, and comment out the fork.
        if (pid != 0 && pid != -1)
                return pid;
+#endif
 
        // pid = -1 signifies that lyx was unable
        // to fork. But we will do the save
@@ -3134,8 +3146,10 @@ bool Buffer::doExport(string const & format, bool put_in_tempdir,
        updateMacroInstances();
 
        // Plain text backend
-       if (backend_format == "text")
+       if (backend_format == "text") {
+               runparams.flavor = OutputParams::TEXT;
                writePlaintextFile(*this, FileName(filename), runparams);
+       }
        // HTML backend
        else if (backend_format == "xhtml") {
                runparams.flavor = OutputParams::HTML;
@@ -3252,7 +3266,7 @@ bool Buffer::isExportable(string const & format) const
 
 vector<Format const *> Buffer::exportableFormats(bool only_viewable) const
 {
-       vector<string> backs = backends();
+       vector<string> const backs = backends();
        vector<Format const *> result =
                theConverters().getReachable(backs[0], only_viewable, true);
        for (vector<string>::const_iterator it = backs.begin() + 1;
@@ -3268,14 +3282,12 @@ vector<Format const *> Buffer::exportableFormats(bool only_viewable) const
 vector<string> Buffer::backends() const
 {
        vector<string> v;
-       if (params().baseClass()->isTeXClassAvailable()) {
-               v.push_back(bufferFormat());
-               // FIXME: Don't hardcode format names here, but use a flag
-               if (v.back() == "latex")
-                       v.push_back("pdflatex");
-       }
-       v.push_back("text");
+       v.push_back(bufferFormat());
+       // FIXME: Don't hardcode format names here, but use a flag
+       if (v.back() == "latex")
+               v.push_back("pdflatex");
        v.push_back("xhtml");
+       v.push_back("text");
        v.push_back("lyx");
        return v;
 }
@@ -3553,9 +3565,9 @@ static bool needEnumCounterReset(ParIterator const & it)
 
 
 // set the label of a paragraph. This includes the counters.
-static void setLabel(Buffer const & buf, ParIterator & it)
+void Buffer::setLabel(ParIterator & it) const
 {
-       BufferParams const & bp = buf.masterBuffer()->params();
+       BufferParams const & bp = this->masterBuffer()->params();
        DocumentClass const & textclass = bp.documentClass();
        Paragraph & par = it.paragraph();
        Layout const & layout = par.layout();
@@ -3651,9 +3663,9 @@ static void setLabel(Buffer const & buf, ParIterator & it)
                string const & type = counters.current_float();
                docstring full_label;
                if (type.empty())
-                       full_label = buf.B_("Senseless!!! ");
+                       full_label = this->B_("Senseless!!! ");
                else {
-                       docstring name = buf.B_(textclass.floats().getType(type).name());
+                       docstring name = this->B_(textclass.floats().getType(type).name());
                        if (counters.hasCounter(from_utf8(type))) {
                                string const & lang = par.getParLanguage(bp)->code();
                                counters.step(from_utf8(type));
@@ -3700,7 +3712,7 @@ void Buffer::updateLabels(ParIterator & parit) const
                maxdepth = parit->getMaxDepthAfter();
 
                // set the counter for this paragraph
-               setLabel(*this, parit);
+               setLabel(parit);
 
                // Now the insets
                InsetList::const_iterator iit = parit->insetList().begin();