summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJambunathan K <kjambunathan@gmail.com>2012-09-05 01:08:30 +0530
committerJambunathan K <kjambunathan@gmail.com>2012-09-05 01:08:30 +0530
commit602ef336a7482a4084a6a8d3f09edfbb4195b559 (patch)
treed78cb7ef3c06bead6d289129e644eeb5dfcc4148
parent14442acde26ad1ec58729b818f8899b830767777 (diff)
downloadorg-mode-602ef336a7482a4084a6a8d3f09edfbb4195b559.tar.gz
org-e-odt.el: Don't use `org-e-odt--translate-description-lists'
-rw-r--r--contrib/lisp/org-e-odt.el75
1 files changed, 40 insertions, 35 deletions
diff --git a/contrib/lisp/org-e-odt.el b/contrib/lisp/org-e-odt.el
index a9a518c..84f81dd 100644
--- a/contrib/lisp/org-e-odt.el
+++ b/contrib/lisp/org-e-odt.el
@@ -83,7 +83,9 @@
(verbatim . org-e-odt-verbatim)
(verse-block . org-e-odt-verse-block))
:export-block "ODT"
- :filters-alist ((:filter-parse-tree . org-e-odt--translate-description-lists))
+ :filters-alist ((:filter-parse-tree
+ . (org-e-odt--translate-description-lists
+ org-e-odt--translate-list-tables)))
:options-alist
((:odt-styles-file "ODT_STYLES_FILE" nil nil t)
(:LaTeX-fragments nil "LaTeX" org-export-with-LaTeX-fragments)))
@@ -2886,7 +2888,7 @@ and prefix with \"OrgSrc\". For example,
(" " "<text:s/>")
(" " "<text:tab/>")))
(hfy-face-to-css 'org-e-odt-hfy-face-to-css)
- (hfy-optimisations-1 (copy-seq hfy-optimisations))
+ (hfy-optimisations-1 (copy-sequence hfy-optimisations))
(hfy-optimisations (add-to-list 'hfy-optimisations-1
'body-text-only))
(hfy-begin-span-handler
@@ -3589,40 +3591,43 @@ contextual information."
;; Translate lists to tables
-(add-to-list 'org-export-filter-parse-tree-functions
- 'org-e-odt--translate-list-tables)
-
(defun org-e-odt--translate-list-tables (tree backend info)
- (when (eq backend 'e-odt)
- (org-element-map
- tree 'plain-list
- (lambda (plain-list-1)
- (when (org-export-read-attribute :attr_odt plain-list-1 :list-table)
- (org-element-set-element
- plain-list-1
- (apply 'org-element-adopt-elements
- (list 'table nil)
- (org-element-map
- plain-list-1
- 'item
- (lambda (level-1-item)
- (apply 'org-element-adopt-elements
- (list 'table-row (list :type 'standard))
- (org-element-adopt-elements
- (list 'table-cell nil)
- (car (org-element-contents level-1-item)))
- (let ((plain-list-2 (assq 'plain-list level-1-item)))
- (org-element-map
- plain-list-2
- 'item
- (lambda (item)
- (apply 'org-element-adopt-elements
- (list 'table-cell nil)
- (org-element-contents item)))
- info nil 'item))))
- info nil 'item))))
- nil)
- info))
+ (org-element-map
+ tree 'plain-list
+ (lambda (level-1-list)
+ (when (org-export-read-attribute :attr_odt level-1-list :list-table)
+ ;; Replace list with table.
+ (org-element-set-element
+ level-1-list
+ ;; Build replacement table.
+ (apply 'org-element-adopt-elements
+ (list 'table nil)
+ (org-element-map
+ level-1-list
+ 'item
+ (lambda (level-1-item)
+ ;; Level-1 items start a table row.
+ (apply 'org-element-adopt-elements
+ (list 'table-row (list :type 'standard))
+ ;; Contents of level-1 item define the first
+ ;; table-cell.
+ (apply 'org-element-adopt-elements
+ (list 'table-cell nil)
+ (org-element-contents level-1-item))
+ ;; Level-2 items define subsequent
+ ;; table-cells of the row.
+ (let ((level-2-list (assq 'plain-list level-1-item)))
+ (org-element-map
+ level-2-list
+ 'item
+ (lambda (level-2-item)
+ (apply 'org-element-adopt-elements
+ (list 'table-cell nil)
+ (org-element-contents level-2-item)))
+ info nil 'item))))
+ info nil 'item))))
+ nil)
+ info)
tree)