forked from mirrors/org-mode
ox-ascii: Improve speed wrt table export
* lisp/ox-ascii.el (org-ascii--table-cell-width): Cache results of this internal function since it is called at each cell, though its value only change column wise.
This commit is contained in:
parent
62296ceb88
commit
c22f5f632b
|
@ -1672,25 +1672,35 @@ column.
|
|||
|
||||
When `org-ascii-table-widen-columns' is non-nil, width cookies
|
||||
are ignored."
|
||||
(or (and (not org-ascii-table-widen-columns)
|
||||
(org-export-table-cell-width table-cell info))
|
||||
(let* ((max-width 0)
|
||||
(table (org-export-get-parent-table table-cell))
|
||||
(specialp (org-export-table-has-special-column-p table))
|
||||
(col (cdr (org-export-table-cell-address table-cell info))))
|
||||
(org-element-map table 'table-row
|
||||
(lambda (row)
|
||||
(setq max-width
|
||||
(max (length
|
||||
(org-export-data
|
||||
(org-element-contents
|
||||
(elt (if specialp (cdr (org-element-contents row))
|
||||
(org-element-contents row))
|
||||
col))
|
||||
info))
|
||||
max-width)))
|
||||
info)
|
||||
max-width)))
|
||||
(let* ((row (org-export-get-parent table-cell))
|
||||
(table (org-export-get-parent row))
|
||||
(col (let ((cells (org-element-contents row)))
|
||||
(- (length cells) (length (memq table-cell cells)))))
|
||||
(cache
|
||||
(or (plist-get info :ascii-table-cell-width-cache)
|
||||
(plist-get (setq info
|
||||
(plist-put info :ascii-table-cell-width-cache
|
||||
(make-hash-table :test 'equal)))
|
||||
:ascii-table-cell-width-cache)))
|
||||
(key (cons table col)))
|
||||
(or (gethash key cache)
|
||||
(puthash
|
||||
key
|
||||
(or (and (not org-ascii-table-widen-columns)
|
||||
(org-export-table-cell-width table-cell info))
|
||||
(let* ((max-width 0))
|
||||
(org-element-map table 'table-row
|
||||
(lambda (row)
|
||||
(setq max-width
|
||||
(max (length
|
||||
(org-export-data
|
||||
(org-element-contents
|
||||
(elt (org-element-contents row) col))
|
||||
info))
|
||||
max-width)))
|
||||
info)
|
||||
max-width))
|
||||
cache))))
|
||||
|
||||
(defun org-ascii-table-cell (table-cell contents info)
|
||||
"Transcode a TABLE-CELL object from Org to ASCII.
|
||||
|
|
Loading…
Reference in New Issue