emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] define a new export backend


From: Nicolas Richard
Subject: Re: [O] define a new export backend
Date: Thu, 31 Jul 2014 11:17:08 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.92 (gnu/linux)

Nicolas Goaziou <address@hidden> writes:
> Good idea, as long as `org-export-define-backend' does the same.

Oops, I forgot to remove the verbosity (initially I had wrote it as a
(warn ...)). Here's an updated patch.

>From 117623cec251cd036b601e2481643296cc4e2c37 Mon Sep 17 00:00:00 2001
From: Nicolas Richard <address@hidden>
Date: Thu, 31 Jul 2014 10:48:54 +0200
Subject: [PATCH] Signal an error if keyword is unknown while defining backends

* lisp/ox.el (org-export-define-backend):
(org-export-define-derived-backend): Signal an error if keyword is unknown
---
 lisp/ox.el | 36 +++++++++++++++++++-----------------
 1 file changed, 19 insertions(+), 17 deletions(-)

diff --git a/lisp/ox.el b/lisp/ox.el
index 03bd8bb..e2965c4 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -1118,14 +1118,15 @@ keywords are understood:
   (declare (indent 1))
   (let (blocks filters menu-entry options contents)
     (while (keywordp (car body))
-      (case (pop body)
-        (:export-block (let ((names (pop body)))
-                        (setq blocks (if (consp names) (mapcar 'upcase names)
-                                       (list (upcase names))))))
-       (:filters-alist (setq filters (pop body)))
-       (:menu-entry (setq menu-entry (pop body)))
-        (:options-alist (setq options (pop body)))
-        (t (pop body))))
+      (let ((keyword (pop body)))
+       (case keyword
+         (:export-block (let ((names (pop body)))
+                          (setq blocks (if (consp names) (mapcar 'upcase names)
+                                         (list (upcase names))))))
+         (:filters-alist (setq filters (pop body)))
+         (:menu-entry (setq menu-entry (pop body)))
+         (:options-alist (setq options (pop body)))
+         (t (error "Unknown keyword: %s" keyword)))))
     (org-export-register-backend
      (org-export-create-backend :name backend
                                :transcoders transcoders
@@ -1189,15 +1190,16 @@ The back-end could then be called with, for example:
   (declare (indent 2))
   (let (blocks filters menu-entry options transcoders contents)
     (while (keywordp (car body))
-      (case (pop body)
-       (:export-block (let ((names (pop body)))
-                        (setq blocks (if (consp names) (mapcar 'upcase names)
-                                       (list (upcase names))))))
-        (:filters-alist (setq filters (pop body)))
-       (:menu-entry (setq menu-entry (pop body)))
-        (:options-alist (setq options (pop body)))
-        (:translate-alist (setq transcoders (pop body)))
-        (t (pop body))))
+      (let ((keyword (pop body)))
+       (case keyword
+         (:export-block (let ((names (pop body)))
+                          (setq blocks (if (consp names) (mapcar 'upcase names)
+                                         (list (upcase names))))))
+         (:filters-alist (setq filters (pop body)))
+         (:menu-entry (setq menu-entry (pop body)))
+         (:options-alist (setq options (pop body)))
+         (:translate-alist (setq transcoders (pop body)))
+         (t (error "Unknown keyword: %s" keyword)))))
     (org-export-register-backend
      (org-export-create-backend :name child
                                :parent parent
-- 
1.8.5.5

-- 
Nico.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]