From 179a5224f609a2285457c08319b66acae41f58fe Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 24 Sep 2012 22:35:55 +0200 Subject: [PATCH 1/2] org-export: Signal an error when back-end isn't registered * contrib/lisp/org-export.el (org-export-barf-if-invalid-backend): New function. (org-export-as): Signal an error when back-end isn't registered. --- contrib/lisp/org-export.el | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/contrib/lisp/org-export.el b/contrib/lisp/org-export.el index 596917b13..6f885d18d 100644 --- a/contrib/lisp/org-export.el +++ b/contrib/lisp/org-export.el @@ -700,6 +700,15 @@ standard mode." ;;; Defining New Back-ends +;; +;; `org-export-define-backend' is the standard way to define an export +;; back-end. It allows to specify translators, filters, buffer +;; options and a menu entry. If the new back-end shares translators +;; with another back-end, `org-export-define-derived-backend' may be +;; used instead. +;; +;; Eventually `org-export-barf-if-invalid-backend' returns an error +;; when a given back-end hasn't been registered yet. (defmacro org-export-define-backend (backend translators &rest body) "Define a new back-end BACKEND. @@ -985,6 +994,11 @@ structure of the values." ;; Splice in the body, if any. ,@body))) +(defun org-export-barf-if-invalid-backend (backend) + "Signal an error if BACKEND isn't defined." + (unless (boundp (intern (format "org-%s-translate-alist" backend))) + (error "Unknown \"%s\" back-end: Aborting export" backend))) + ;;; The Communication Channel @@ -2527,6 +2541,8 @@ Optional argument NOEXPAND, when non-nil, prevents included files to be expanded and Babel code to be executed. Return code as a string." + ;; Barf if BACKEND isn't registered. + (org-export-barf-if-invalid-backend backend) (save-excursion (save-restriction ;; Narrow buffer to an appropriate region or subtree for From 31431aefbcfd0cab759b1292216fda4ef93f28b0 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 24 Sep 2012 22:46:56 +0200 Subject: [PATCH 2/2] org-e-publish: Require appropriate back-ends when publishing * contrib/lisp/org-e-publish.el (org-e-publish-org-to-latex, org-e-publish-org-to-pdf, org-e-publish-org-to-html, org-e-publish-org-to-ascii): Require appropriate back-ends. --- contrib/lisp/org-e-publish.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contrib/lisp/org-e-publish.el b/contrib/lisp/org-e-publish.el index 894ee076a..d31f81aab 100644 --- a/contrib/lisp/org-e-publish.el +++ b/contrib/lisp/org-e-publish.el @@ -579,6 +579,7 @@ is the property list for the given project. PUB-DIR is the publishing directory. Return output file name." + (require 'org-e-latex nil t) (org-e-publish-org-to 'e-latex filename ".tex" plist pub-dir)) (defun org-e-publish-org-to-pdf (plist filename pub-dir) @@ -589,6 +590,7 @@ is the property list for the given project. PUB-DIR is the publishing directory. Return output file name." + (require 'org-e-latex nil t) (org-e-latex-compile (org-e-publish-org-to 'e-latex filename ".tex" plist pub-dir))) @@ -600,6 +602,7 @@ is the property list for the given project. PUB-DIR is the publishing directory. Return output file name." + (require 'org-e-html nil t) (org-e-publish-org-to 'e-html filename ".html" plist pub-dir)) ;; TODO: Not implemented yet. @@ -621,6 +624,7 @@ is the property list for the given project. PUB-DIR is the publishing directory. Return output file name." + (require 'org-e-ascii nil t) (org-e-publish-org-to 'e-ascii filename ".txt" `(:ascii-charset ascii ,@plist) pub-dir))