ox: Small fix to cell width caching mechanism

* lisp/ox.el (org-export-table-cell-width): Be sure to use cache even
  when stored value is nil.
This commit is contained in:
Nicolas Goaziou 2013-05-20 11:33:11 +02:00
parent aafb2d2b46
commit 4daf9d60d9
1 changed files with 20 additions and 20 deletions

View File

@ -4481,26 +4481,26 @@ same column as TABLE-CELL, or nil."
(plist-put info :table-cell-width-cache
(make-hash-table :test 'equal)))
:table-cell-width-cache)))
(key (cons table column)))
(or (let ((cached (gethash key cache 'no-result)))
(and (not (eq cached 'no-result)) cached))
(let (cookie-width)
(dolist (row (org-element-contents table)
(puthash key cookie-width cache))
(when (org-export-table-row-is-special-p row info)
;; In a special row, try to find a width cookie at COLUMN.
(let* ((value (org-element-contents
(elt (org-element-contents row) column)))
(cookie (car value)))
;; The following checks avoid expanding unnecessarily the
;; cell with `org-export-data'
(when (and value
(not (cdr value))
(stringp cookie)
(string-match "\\`<[lrc]?\\([0-9]+\\)?>\\'" cookie)
(match-string 1 cookie))
(setq cookie-width
(string-to-number (match-string 1 cookie)))))))))))
(key (cons table column))
(value (gethash key cache 'no-result)))
(if (not (eq value 'no-result)) value
(let (cookie-width)
(dolist (row (org-element-contents table)
(puthash key cookie-width cache))
(when (org-export-table-row-is-special-p row info)
;; In a special row, try to find a width cookie at COLUMN.
(let* ((value (org-element-contents
(elt (org-element-contents row) column)))
(cookie (car value)))
;; The following checks avoid expanding unnecessarily
;; the cell with `org-export-data'.
(when (and value
(not (cdr value))
(stringp cookie)
(string-match "\\`<[lrc]?\\([0-9]+\\)?>\\'" cookie)
(match-string 1 cookie))
(setq cookie-width
(string-to-number (match-string 1 cookie)))))))))))
(defun org-export-table-cell-alignment (table-cell info)
"Return TABLE-CELL contents alignment.