This patch make further errorlist-related cleaning:

- eliminates BufferView::resetErrorList, making an automatic reset with
every dialog show.
- eliminates BufferView::setErrorList, making the callers use the parseError
signal (added a couple of buffer_funcs helpers).
- removed calls to bv->showErrorList out of Buffer and Exporter, making the
callers do it instead (lyxfunc basically)
- moved Exporter::BufferFormat to buffer_funcs
- moved Exporter::Backends to anon namespace

Please comment.

Alfredo


Index: BufferView.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView.C,v
retrieving revision 1.162
diff -u -p -u -r1.162 BufferView.C
--- BufferView.C        20 Jun 2003 23:03:40 -0000      1.162
+++ BufferView.C        24 Jun 2003 18:19:39 -0000
@@ -336,18 +336,6 @@ bool BufferView::insertLyXFile(string co
 }
 
 
-void BufferView::resetErrorList()
-{
-       pimpl_->errorlist_.clear();
-}
-
-
-void BufferView::setErrorList(ErrorList const & el)
-{
-       pimpl_->errorlist_ = el;
-}
-
-
 void BufferView::showErrorList(string const & action) const
 {
        if (getErrorList().size()) {
@@ -361,6 +349,7 @@ ErrorList const &
 BufferView::getErrorList() const
 {
        return pimpl_->errorlist_;
+       pimpl_->errorlist_.clear();
 }
 
 
Index: BufferView.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView.h,v
retrieving revision 1.127
diff -u -p -u -r1.127 BufferView.h
--- BufferView.h        20 Jun 2003 23:03:40 -0000      1.127
+++ BufferView.h        24 Jun 2003 18:19:39 -0000
@@ -157,10 +157,6 @@ public:
 
        /// get the stored error list
        ErrorList const & getErrorList() const;
-       /// clears the stored error list
-       void resetErrorList();
-       /// stored this  error list
-       void setErrorList(ErrorList const &);
        /// show the error list to the user
        void showErrorList(string const &) const;
        /// set the cursor based on the given TeX source row
Index: BufferView_pimpl.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView_pimpl.C,v
retrieving revision 1.378
diff -u -p -u -r1.378 BufferView_pimpl.C
--- BufferView_pimpl.C  20 Jun 2003 23:03:40 -0000      1.378
+++ BufferView_pimpl.C  24 Jun 2003 18:19:41 -0000
@@ -167,14 +167,13 @@ bool BufferView::Pimpl::loadLyXFile(stri
        }
        Buffer * b = bufferlist.newBuffer(s);
 
-       bv_->resetErrorList();
        //attach to the error signal in the buffer
        b->parseError.connect(boost::bind(&BufferView::Pimpl::addError, 
                                          this, _1));
 
-       bool loaded = true;
+       bool loaded = ::loadLyXFile(b, s);
 
-       if (! ::loadLyXFile(b, s)) {
+       if (! loaded) {
                bufferlist.release(b);
                string text = bformat(_("The document %1$s does "
                                        "not yet exist.\n\n"
@@ -187,8 +186,6 @@ bool BufferView::Pimpl::loadLyXFile(stri
                        bufferlist.close(buffer_, false);
                        buffer(newFile(s, string(), true));
                }
-
-               loaded = false;
        } 
 
        buffer(b);
Index: buffer.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer.C,v
retrieving revision 1.486
diff -u -p -u -r1.486 buffer.C
--- buffer.C    22 Jun 2003 18:08:49 -0000      1.486
+++ buffer.C    24 Jun 2003 18:19:45 -0000
@@ -11,6 +11,7 @@
 #include <config.h>
 
 #include "buffer.h"
+#include "buffer_funcs.h"
 #include "bufferlist.h"
 #include "LyXAction.h"
 #include "lyxrc.h"
@@ -1146,8 +1147,6 @@ void Buffer::makeLinuxDocFile(string con
        string item_name;
        vector<string> environment_stack(5);
 
-       users->resetErrorList();
-
        ParagraphList::iterator pit = paragraphs.begin();
        ParagraphList::iterator pend = paragraphs.end();
        for (; pit != pend; ++pit) {
@@ -1276,8 +1275,6 @@ void Buffer::makeLinuxDocFile(string con
 
        // we want this to be true outside previews (for insetexternal)
        niceFile = true;
-
-       users->showErrorList(_("LinuxDoc"));
 }
 
 
@@ -1594,8 +1591,6 @@ void Buffer::makeDocBookFile(string cons
        string item_name;
        string command_name;
 
-       users->resetErrorList();
-
        ParagraphList::iterator par = paragraphs.begin();
        ParagraphList::iterator pend = paragraphs.end();
 
@@ -1811,7 +1806,6 @@ void Buffer::makeDocBookFile(string cons
 
        // we want this to be true outside previews (for insetexternal)
        niceFile = true;
-       users->showErrorList(_("DocBook"));
 }
 
 
@@ -1937,9 +1931,7 @@ int Buffer::runChktex()
                             _("Could not run chktex successfully."));
        } else if (res > 0) {
                // Insert all errors as errors boxes
-               ErrorList el (*this, terr);
-               users->setErrorList(el);
-               users->showErrorList(_("ChkTeX"));
+               parseErrors(*this, terr);
        }
 
        users->owner()->busy(false);
Index: buffer_funcs.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer_funcs.C,v
retrieving revision 1.1
diff -u -p -u -r1.1 buffer_funcs.C
--- buffer_funcs.C      20 Jun 2003 12:46:24 -0000      1.1
+++ buffer_funcs.C      24 Jun 2003 18:19:45 -0000
@@ -15,9 +15,11 @@
 #include "buffer_funcs.h"
 #include "bufferlist.h"
 #include "buffer.h"
+#include "errorlist.h"
 #include "gettext.h"
 #include "vc-backend.h"
 #include "lyxlex.h"
+#include "LaTeX.h"
 #include "ParagraphList.h"
 #include "paragraph.h"
 
@@ -193,4 +195,46 @@ Buffer * newFile(string const & filename
        b->updateDocLang(b->params.language);
 
        return b;
+}
+
+
+void parseErrors(Buffer const & buf, TeXErrors const & terr) 
+{
+       TeXErrors::Errors::const_iterator cit = terr.begin();
+       TeXErrors::Errors::const_iterator end = terr.end();
+
+       for (; cit != end; ++cit) {
+               int par_id = -1;
+               int posstart = -1;
+               int const errorrow = cit->error_in_line;
+               buf.texrow.getIdFromRow(errorrow, par_id, posstart);
+               int posend = -1;
+               buf.texrow.getIdFromRow(errorrow + 1, par_id, posend);
+               buf.parseError(ErrorItem(cit->error_desc,
+                                        cit->error_text,
+                                        par_id, posstart, posend));
+       }
+}
+
+
+void parseErrors(Buffer const & buf, ErrorList const & el) 
+{
+       ErrorList::const_iterator it = el.begin();
+       ErrorList::const_iterator end = el.end();
+
+       for (; it != end; ++it) 
+               buf.parseError(*it);
+}
+
+
+string const BufferFormat(Buffer const & buffer)
+{
+       if (buffer.isLinuxDoc())
+               return "linuxdoc";
+       else if (buffer.isDocBook())
+               return "docbook";
+       else if (buffer.isLiterate())
+               return "literate";
+       else
+               return "latex";
 }
Index: buffer_funcs.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer_funcs.h,v
retrieving revision 1.1
diff -u -p -u -r1.1 buffer_funcs.h
--- buffer_funcs.h      20 Jun 2003 12:46:24 -0000      1.1
+++ buffer_funcs.h      24 Jun 2003 18:19:45 -0000
@@ -9,9 +9,14 @@
  * Full author contact details are available in file CREDITS
  */
 
+#ifndef BUFFER_FUNCS_H
+#define BUFFER_FUNCS_H
+
 #include "LString.h"
 
 class Buffer;
+class TeXErrors;
+class ErrorList;
 
 /**
  *  Loads a LyX file \c filename into \c Buffer 
@@ -24,3 +29,12 @@ bool loadLyXFile(Buffer *, string const 
  */
 Buffer * newFile(string const & filename, string const & templatename, 
                 bool isNamed = false);
+
+///return the format of the buffer on a string
+string const BufferFormat(Buffer const & buffer);
+
+void parseErrors(Buffer const &, TeXErrors const &);
+
+void parseErrors(Buffer const &, ErrorList const &);
+
+#endif // BUFFER_FUNCS_H
Index: converter.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/converter.C,v
retrieving revision 1.76
diff -u -p -u -r1.76 converter.C
--- converter.C 24 May 2003 11:54:09 -0000      1.76
+++ converter.C 24 Jun 2003 18:19:46 -0000
@@ -15,6 +15,7 @@
 #include "format.h"
 #include "lyxrc.h"
 #include "buffer.h"
+#include "buffer_funcs.h"
 #include "bufferview_funcs.h"
 #include "errorlist.h"
 #include "LaTeX.h"
@@ -476,11 +477,8 @@ bool Converters::scanLog(Buffer const * 
        TeXErrors terr;
        int result = latex.scanLogFile(terr);
 
-       if (bv && (result & LaTeX::ERRORS)) {
-               ErrorList el(*buffer, terr);
-               bv->setErrorList(el);
-               bv->showErrorList(_("LaTeX"));
-       }
+       if (bv && (result & LaTeX::ERRORS))
+               parseErrors(*buffer, terr);
 
        return true;
 }
@@ -507,12 +505,8 @@ bool Converters::runLaTeX(Buffer const *
        int result = latex.run(terr,
                               bv ? &bv->owner()->getLyXFunc() : 0);
 
-       if (bv && (result & LaTeX::ERRORS)) {
-               //show errors
-               ErrorList el(*buffer, terr);
-               bv->setErrorList(el);
-               bv->showErrorList(_("LaTeX"));
-       }
+       if (bv && (result & LaTeX::ERRORS))
+               parseErrors(*buffer, terr);
 
        // check return value from latex.run().
        if ((result & LaTeX::NO_LOGFILE)) {
Index: errorlist.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/errorlist.C,v
retrieving revision 1.1
diff -u -p -u -r1.1 errorlist.C
--- errorlist.C 20 May 2003 16:51:27 -0000      1.1
+++ errorlist.C 24 Jun 2003 18:19:46 -0000
@@ -12,7 +12,6 @@
 
 #include "errorlist.h"
 #include "buffer.h"
-#include "LaTeX.h"
 
 
 ErrorItem::ErrorItem(string const & error, string const & description,
@@ -27,21 +26,3 @@ ErrorItem::ErrorItem()
 {}
 
 
-ErrorList::ErrorList(Buffer const & buf, 
-                    TeXErrors const & terr) 
-{
-       TeXErrors::Errors::const_iterator cit = terr.begin();
-       TeXErrors::Errors::const_iterator end = terr.end();
-
-       for (; cit != end; ++cit) {
-               int par_id = -1;
-               int posstart = -1;
-               int const errorrow = cit->error_in_line;
-               buf.texrow.getIdFromRow(errorrow, par_id, posstart);
-               int posend = -1;
-               buf.texrow.getIdFromRow(errorrow + 1, par_id, posend);
-               push_back(ErrorItem(cit->error_desc,
-                                   cit->error_text,
-                                   par_id, posstart, posend));
-       }
-}
Index: errorlist.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/errorlist.h,v
retrieving revision 1.3
diff -u -p -u -r1.3 errorlist.h
--- errorlist.h 20 Jun 2003 23:03:41 -0000      1.3
+++ errorlist.h 24 Jun 2003 18:19:46 -0000
@@ -18,7 +18,6 @@
 #include <vector>
 
 class Buffer;
-class TeXErrors;
 
 /// A class to hold an error item
 struct ErrorItem {
@@ -36,7 +35,6 @@ class ErrorList : private std::vector<Er
 {
 public:        
        ErrorList() : std::vector<ErrorItem> () {};
-       ErrorList(Buffer const & buf, TeXErrors const &);
 
        using std::vector<ErrorItem>::push_back;
        using std::vector<ErrorItem>::end;
Index: exporter.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/exporter.C,v
retrieving revision 1.35
diff -u -p -u -r1.35 exporter.C
--- exporter.C  23 May 2003 09:50:38 -0000      1.35
+++ exporter.C  24 Jun 2003 18:19:47 -0000
@@ -12,6 +12,7 @@
 
 #include "exporter.h"
 #include "buffer.h"
+#include "buffer_funcs.h"
 #include "lyx_cb.h" //ShowMessage()
 #include "support/filetools.h"
 #include "lyxrc.h"
@@ -26,6 +27,21 @@
 using std::vector;
 using std::find;
 
+
+namespace {
+
+vector<string> const Backends(Buffer const * buffer)
+{
+       vector<string> v;
+       if (buffer->params.getLyXTextClass().isTeXClassAvailable())
+               v.push_back(BufferFormat(*buffer));
+       v.push_back("text");
+       return v;
+}
+
+} //namespace anon
+
+
 bool Exporter::Export(Buffer * buffer, string const & format,
                      bool put_in_tempdir, string & result_file)
 {
@@ -142,25 +158,3 @@ Exporter::GetExportableFormats(Buffer co
        return result;
 }
 
-
-string const Exporter::BufferFormat(Buffer const * buffer)
-{
-       if (buffer->isLinuxDoc())
-               return "linuxdoc";
-       else if (buffer->isDocBook())
-               return "docbook";
-       else if (buffer->isLiterate())
-               return "literate";
-       else
-               return "latex";
-}
-
-
-vector<string> const Exporter::Backends(Buffer const * buffer)
-{
-       vector<string> v;
-       if (buffer->params.getLyXTextClass().isTeXClassAvailable())
-               v.push_back(BufferFormat(buffer));
-       v.push_back("text");
-       return v;
-}
Index: exporter.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/exporter.h,v
retrieving revision 1.13
diff -u -p -u -r1.13 exporter.h
--- exporter.h  13 Feb 2003 16:52:27 -0000      1.13
+++ exporter.h  24 Jun 2003 18:19:47 -0000
@@ -39,11 +39,5 @@ public:
        std::vector<Format const *> const
        GetExportableFormats(Buffer const * buffer, bool only_viewable);
        ///
-private:
-       static
-       string const BufferFormat(Buffer const * buffer);
-       ///
-       static
-       std::vector<string> const Backends(Buffer const * buffer);
 };
 #endif
Index: lyxfunc.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxfunc.C,v
retrieving revision 1.456
diff -u -p -u -r1.456 lyxfunc.C
--- lyxfunc.C   20 Jun 2003 12:46:25 -0000      1.456
+++ lyxfunc.C   24 Jun 2003 18:19:49 -0000
@@ -1094,25 +1094,31 @@ void LyXFunc::dispatch(FuncRequest const
 
        case LFUN_UPDATE:
                Exporter::Export(owner->buffer(), argument, true);
+               view()->showErrorList(BufferFormat(*owner->buffer()));
                break;
 
        case LFUN_PREVIEW:
                Exporter::Preview(owner->buffer(), argument);
+               view()->showErrorList(BufferFormat(*owner->buffer()));
                break;
 
        case LFUN_BUILDPROG:
                Exporter::Export(owner->buffer(), "program", true);
+               view()->showErrorList(_("Build"));
                break;
 
        case LFUN_RUNCHKTEX:
                owner->buffer()->runChktex();
+               view()->showErrorList(_("ChkTeX"));
                break;
 
        case LFUN_EXPORT:
                if (argument == "custom")
                        owner->getDialogs().showSendto();
-               else
+               else {
                        Exporter::Export(owner->buffer(), argument, false);
+                       view()->showErrorList(BufferFormat(*owner->buffer()));
+               }
                break;
 
        case LFUN_IMPORT:
Index: text2.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
retrieving revision 1.372
diff -u -p -u -r1.372 text2.C
--- text2.C     18 Jun 2003 17:43:48 -0000      1.372
+++ text2.C     24 Jun 2003 18:19:53 -0000
@@ -18,6 +18,7 @@
 #include "frontends/LyXView.h"
 #include "undo_funcs.h"
 #include "buffer.h"
+#include "buffer_funcs.h"
 #include "bufferparams.h"
 #include "errorlist.h"
 #include "gettext.h"
@@ -1415,7 +1416,7 @@ void LyXText::pasteSelection(size_t sel_
                                            cursor.par(), cursor.pos(),
                                            bv()->buffer()->params.textclass,
                                            sel_index, el);
-       bv()->setErrorList(el);
+       parseErrors(*bv()->buffer(), el);
        bv()->showErrorList(_("Paste"));
 
        redoParagraphs(cursor, endpit);
Index: frontends/controllers/ControlDocument.C
===================================================================
RCS file:
/usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlDocument.C,v
retrieving revision 1.24
diff -u -p -u -r1.24 ControlDocument.C
--- frontends/controllers/ControlDocument.C     6 Jun 2003 14:47:43 -0000       1.24
+++ frontends/controllers/ControlDocument.C     24 Jun 2003 18:19:53 -0000
@@ -19,6 +19,7 @@
 #include "lyxfind.h"
 
 #include "buffer.h"
+#include "buffer_funcs.h"
 #include "errorlist.h"
 #include "language.h"
 #include "lyx_main.h"
@@ -126,8 +127,7 @@ void ControlDocument::classApply()
        CutAndPaste::SwitchLayoutsBetweenClasses(old_class, new_class,
                                                 lv_.buffer()->paragraphs,
                                                 el);
-
-       bufferview()->setErrorList(el);
+       parseErrors(*buffer(), el);
        bufferview()->showErrorList(_("Class switch"));
 }
 

Reply via email to