mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-08-26 09:02:52 +00:00
Merge branch 'bugfix'
This commit is contained in:
commit
71a5f75bbb
|
@ -5295,6 +5295,7 @@ indentation removed from its contents."
|
|||
;; `org-element--cache-diagnostics-ring-size', `org-element--cache-map-statistics',
|
||||
;; `org-element--cache-map-statistics-threshold'.
|
||||
|
||||
;;;###autoload
|
||||
(defvar org-element-use-cache t
|
||||
"Non-nil when Org parser should cache its results.")
|
||||
|
||||
|
|
14
lisp/ox.el
14
lisp/ox.el
|
@ -4758,23 +4758,27 @@ objects of the same type."
|
|||
(let ((counter 0))
|
||||
;; Increment counter until ELEMENT is found again.
|
||||
(org-element-map (plist-get info :parse-tree)
|
||||
(or types (org-element-type element))
|
||||
(or (and types (cons (org-element-type element) types))
|
||||
(org-element-type element))
|
||||
(lambda (el)
|
||||
(let ((cached (org-element-property :org-export--counter el)))
|
||||
(cond
|
||||
((eq element el) (1+ counter))
|
||||
;; Use cached result.
|
||||
((and cached (equal predicate (car cached)))
|
||||
(cdr cached))
|
||||
((and cached
|
||||
(equal predicate (car cached))
|
||||
(equal types (cadr cached)))
|
||||
(setq counter (nth 2 cached))
|
||||
nil)
|
||||
((not predicate)
|
||||
(cl-incf counter)
|
||||
(org-element-put-property
|
||||
el :org-export--counter (cons predicate counter))
|
||||
el :org-export--counter (list predicate types counter))
|
||||
nil)
|
||||
((funcall predicate el info)
|
||||
(cl-incf counter)
|
||||
(org-element-put-property
|
||||
el :org-export--counter (cons predicate counter))
|
||||
el :org-export--counter (list predicate types counter))
|
||||
nil))))
|
||||
info 'first-match)))))
|
||||
|
||||
|
|
|
@ -405,6 +405,64 @@ Paragraph"
|
|||
(options (org-export-get-environment backend t)))
|
||||
(list (plist-get options :k1) (plist-get options :k2)))))))
|
||||
|
||||
(ert-deftest test-org-export/get-ordinal ()
|
||||
"Test specifications for `org-export-get-ordinal'."
|
||||
;; Table numbering with, without predicates, and with other types.
|
||||
(org-test-with-temp-text
|
||||
"#+title: Table numbering test
|
||||
#+options: author:nil toc:nil
|
||||
|
||||
#+caption: Should be Table 1
|
||||
| h1 | h2 | h3 |
|
||||
|----------+----------+----------|
|
||||
| abcdefgh | ijklmnop | qrstuvwx |
|
||||
|
||||
#+caption: Should be Table 2
|
||||
| h1 | h2 | h3 |
|
||||
|----------+----------+----------|
|
||||
| abcdefgh | ijklmnop | qrstuvwx |
|
||||
|
||||
#+caption: Should be Table 3
|
||||
| h1 | h2 | h3 |
|
||||
|----------+----------+----------|
|
||||
| abcdefgh | ijklmnop | qrstuvwx |
|
||||
|
||||
#+caption: Should be Table 4
|
||||
| h1 | h2 | h3 |
|
||||
|----------+----------+----------|
|
||||
| abcdefgh | ijklmnop | qrstuvwx |"
|
||||
(org-export-as
|
||||
(org-export-create-backend
|
||||
:parent 'org
|
||||
:transcoders
|
||||
'((table
|
||||
.
|
||||
(lambda (table contents info)
|
||||
(let ((from-third (lambda (table info)
|
||||
(<= 3 (org-export-get-ordinal table info)))))
|
||||
(pcase (org-element-interpret-data (org-export-get-caption table))
|
||||
("Should be Table 1"
|
||||
(should (= 1 (org-export-get-ordinal table info)))
|
||||
(should (= 2 (org-export-get-ordinal table info '(section))))
|
||||
(should (= 1 (org-export-get-ordinal table info nil #'org-ascii--has-caption-p)))
|
||||
(should (= 1 (org-export-get-ordinal table info nil from-third))))
|
||||
("Should be Table 2"
|
||||
(should (= 2 (org-export-get-ordinal table info)))
|
||||
(should (= 3 (org-export-get-ordinal table info '(section))))
|
||||
(should (= 2 (org-export-get-ordinal table info nil #'org-ascii--has-caption-p)))
|
||||
(should (= 1 (org-export-get-ordinal table info nil from-third))))
|
||||
("Should be Table 3"
|
||||
(should (= 3 (org-export-get-ordinal table info)))
|
||||
(should (= 4 (org-export-get-ordinal table info '(section))))
|
||||
(should (= 3 (org-export-get-ordinal table info nil #'org-ascii--has-caption-p)))
|
||||
(should (= 1 (org-export-get-ordinal table info nil from-third))))
|
||||
("Should be Table 4"
|
||||
(should (= 4 (org-export-get-ordinal table info)))
|
||||
(should (= 5 (org-export-get-ordinal table info '(section))))
|
||||
(should (= 4 (org-export-get-ordinal table info nil #'org-ascii--has-caption-p)))
|
||||
(should (= 2 (org-export-get-ordinal table info nil from-third))))))
|
||||
"")))))))
|
||||
|
||||
(ert-deftest test-org-export/set-title ()
|
||||
"Test title setting."
|
||||
;; Without TITLE keyword.
|
||||
|
|
Loading…
Reference in a new issue