]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.cpp
Do not use \&@#^_~$ as lstinline delimiter, as suggested by Herbert
[lyx.git] / src / Buffer.cpp
index 3e60932d7ef1c13a9db2276cf970293ee08477ef..d4f1f9d77d408ec75ac1eed3e57fa251cb7f853b 100644 (file)
@@ -3,7 +3,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -34,6 +34,7 @@
 #include "LyXAction.h"
 #include "Lexer.h"
 #include "Text.h"
+#include "LyX.h"
 #include "LyXRC.h"
 #include "LyXVC.h"
 #include "Messages.h"
@@ -426,6 +427,7 @@ int Buffer::readHeader(Lexer & lex)
        params().headheight.erase();
        params().headsep.erase();
        params().footskip.erase();
+       params().listings_params.clear();
        for (int i = 0; i < 4; ++i) {
                params().user_defined_bullet(i) = ITEMIZE_DEFAULTS[i];
                params().temp_bullet(i) = ITEMIZE_DEFAULTS[i];
@@ -888,26 +890,36 @@ bool Buffer::makeLaTeXFile(FileName const & fname,
        if (!openFileWrite(ofs, fname))
                return false;
 
+       bool failed_export = false;
        try {
                writeLaTeXSource(ofs, original_path,
                      runparams, output_preamble, output_body);
        }
-       catch (iconv_codecvt_facet_exception &) {
-               Alert::error(_("Encoding error"),
-                       _("Some characters of your document are not "
-                         "representable in the chosen encoding.\n"
-                         "Changing the document encoding to utf8 could help."));
-               return false;
+       catch (iconv_codecvt_facet_exception & e) {
+               lyxerr << "Caught iconv exception: " << e.what() << endl;
+               failed_export = true;
+       }
+       catch (std::exception  const & e) {
+               lyxerr << "Caught \"normal\" exception: " << e.what() << endl;
+               failed_export = true;
+       }
+       catch (...) {
+               lyxerr << "Caught some really weird exception..." << endl;
+               LyX::cref().emergencyCleanup();
+               abort();
        }
 
        ofs.close();
        if (ofs.fail()) {
+               failed_export = true;
                lyxerr << "File '" << fname << "' was not closed properly." << endl;
-               Alert::error(_("Error closing file"),
-                       _("The output file could not be closed properly.\n"
-                         " Probably some characters of your document are not "
-                         "representable in the chosen encoding.\n"
-                         "Changing the document encoding to utf8 could help."));
+       }
+
+       if (failed_export) {
+               Alert::error(_("Encoding error"),
+                       _("Some characters of your document are probably not "
+                       "representable in the chosen encoding.\n"
+                       "Changing the document encoding to utf8 could help."));
                return false;
        }
        return true;
@@ -1610,7 +1622,10 @@ Buffer const * Buffer::getMasterBuffer() const
        if (!params().parentname.empty()
            && theBufferList().exists(params().parentname)) {
                Buffer const * buf = theBufferList().getBuffer(params().parentname);
-               if (buf)
+               //We need to check if the parent is us...
+               //FIXME RECURSIVE INCLUDE
+               //This is not sufficient, since recursive includes could be downstream.
+               if (buf && buf != this)
                        return buf->getMasterBuffer();
        }
 
@@ -1725,7 +1740,7 @@ void Buffer::getSourceCode(odocstream & os, pit_type par_begin,
        runparams.dryrun = true;
 
        if (full_source) {
-               os << "% Preview source code\n\n";
+               os << "% " << _("Preview source code") << "\n\n";
                if (isLatex())
                        writeLaTeXSource(os, filePath(), runparams, true, true);
                else {
@@ -1735,10 +1750,15 @@ void Buffer::getSourceCode(odocstream & os, pit_type par_begin,
                runparams.par_begin = par_begin;
                runparams.par_end = par_end;
                if (par_begin + 1 == par_end)
-                       os << "% Preview source code for paragraph " << par_begin << "\n\n";
+                       os << "% "
+                          << bformat(_("Preview source code for paragraph %1$s"), par_begin)
+                          << "\n\n";
                else
-                       os << "% Preview source code from paragraph " << par_begin
-                          << " to " << par_end - 1 << "\n\n";
+                       os << "% "
+                          << bformat(_("Preview source code from paragraph %1$s to %2$s"),
+                                       convert<docstring>(par_begin),
+                                       convert<docstring>(par_end - 1))
+                          << "\n\n";
                // output paragraphs
                if (isLatex()) {
                        texrow().reset();