From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Kroos Subject: [PATCH] org-e-latex--collect-errors Date: Sat, 15 Sep 2012 13:34:29 +0200 Message-ID: <20120915113429.GA6236@desktop> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([208.118.235.92]:43227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCqd7-0000et-Ds for emacs-orgmode@gnu.org; Sat, 15 Sep 2012 07:33:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TCqd5-0001QR-Tg for emacs-orgmode@gnu.org; Sat, 15 Sep 2012 07:33:45 -0400 Received: from mailout03.t-online.de ([194.25.134.81]:41658) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCqd5-0001Q8-JM for emacs-orgmode@gnu.org; Sat, 15 Sep 2012 07:33:43 -0400 Content-Disposition: inline List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: orgmode Hi, the attached patch tries to solve two issues: - Currently, org-e-latex--collect-errors only finds errors in=20 pdf.*latex-logs. I removed the `pdf`, cause most of the time I'm using=20 xelatex which wouldn't match. I don't know if this is generic enough=20 for all engines though. - Occasionally, I'm running into errors currently not matched (Like=20 'Runaway argument'). What about the customizable=20 org-e-latex-known-errors introduced in the patch that would allow the=20 user to adjust the matcher to his needs and the used engine? This also makes the code more concise. What do you think about this? (The first customizable I ever wrote, I think it's correct like this, is=20 it?) Thanks, Philipp =46rom 0ea78f6ffa3a53e0e07b3df6d532e48cf1b2df7c Mon Sep 17 00:00:00 2001 =46rom: Philipp Kroos Date: Sat, 15 Sep 2012 13:11:58 +0200 Subject: [PATCH] org-e-latex: Introduced org-e-latex-known-errors * contrib/lisp/org-e-latex.el: new customizable org-e-latex-known-errors is an alist of possible errors, taken from org-e-latex--collect-errors * contrib/lisp/org-e-latex.el (org-e-latex--collect-errors): More concise code. The previous explicit search for errors is replaced by an iteration over the alist org-e-latex-known-errors. --- contrib/lisp/org-e-latex.el | 42 ++++++++++++++++++++++++++---------------- 1 Datei ge=E4ndert, 26 Zeilen hinzugef=FCgt(+), 16 Zeilen entfernt(-) diff --git a/contrib/lisp/org-e-latex.el b/contrib/lisp/org-e-latex.el index 458579c..2e0604f 100644 --- a/contrib/lisp/org-e-latex.el +++ b/contrib/lisp/org-e-latex.el @@ -2698,6 +2698,26 @@ Return PDF file name or an error if it couldn't be p= roduced." pdffile)) (set-window-configuration wconfig)))) =20 + +(defcustom org-e-latex-known-errors + '(("Reference.*?undefined" . "[undefined reference]") + ("Citation.*?undefined" . "[undefined citation]") + ("Undefined control sequence" . "[undefined control sequence]") + ("^! LaTeX.*?Error" . "[LaTeX error]") + ("^! Package.*?Error" . "[package error]") + ("Runaway argument" . "Runaway argument")) + "Alist of regular expressions and associated messages for the user. + The regular expressions are used to find possible errors in + the log of a latex-run." + =20 + :group 'org-export-e-latex + :type '(repeat + (cons + (string :tag "Regexp") + (string :tag "Message")))) + + =20 + (defun org-e-latex--collect-errors (buffer) "Collect some kind of errors from \"pdflatex\" command output. =20 @@ -2709,26 +2729,16 @@ none." (save-excursion (goto-char (point-max)) ;; Find final "pdflatex" run. - (when (re-search-backward "^[ \t]*This is pdf.*?TeX.*?Version" nil t) + (when (re-search-backward "^[ \t]*This is .*?TeX.*?Version" nil t) (let ((case-fold-search t) (errors "")) - (when (save-excursion - (re-search-forward "Reference.*?undefined" nil t)) - (setq errors (concat errors " [undefined reference]"))) - (when (save-excursion - (re-search-forward "Citation.*?undefined" nil t)) - (setq errors (concat errors " [undefined citation]"))) - (when (save-excursion - (re-search-forward "Undefined control sequence" nil t)) - (setq errors (concat errors " [undefined control sequence]"))) - (when (save-excursion - (re-search-forward "^! LaTeX.*?Error" nil t)) - (setq errors (concat errors " [LaTeX error]"))) - (when (save-excursion - (re-search-forward "^! Package.*?Error" nil t)) - (setq errors (concat errors " [package error]"))) + (dolist (latex-error org-e-latex-known-errors) + (when (save-excursion + (re-search-forward (car latex-error) nil t)) + (setq errors (concat errors " " (cdr latex-error))))) (and (org-string-nw-p errors) (org-trim errors))))))) =20 =20 + (provide 'org-e-latex) ;;; org-e-latex.el ends here --=20 1.7.12