org-element: Fix cache bug

* lisp/org-element.el (org-element-cache-get): Return correct cached
  element when point is at the beginning of an item.
This commit is contained in:
Nicolas Goaziou 2014-01-11 22:31:53 +01:00
parent a4b1fa7ca1
commit fd5edd35ae
1 changed files with 12 additions and 7 deletions

View File

@ -5602,14 +5602,19 @@ cache, unless optional argument IGNORE-CHANGES is non-nil."
(cond
((< key beg)
(setq node (avl-tree--node-left node)))
((= key beg)
(if (memq (org-element-type element) '(item table-row))
(setq last (avl-tree--node-data node)
node (avl-tree--node-left node))
(throw 'found (avl-tree--node-data node))))
(t
((> key beg)
(setq last (avl-tree--node-data node)
node (avl-tree--node-right node))))))
node (avl-tree--node-right node)))
;; When KEY is at the beginning of a table or list,
;; make sure to return it instead of the first row or
;; item.
((and (memq (org-element-type element) '(item table-row))
(= (org-element-property
:contents-begin (org-element-property :parent element))
beg))
(setq last (avl-tree--node-data node)
node (avl-tree--node-left node)))
(t (throw 'found (avl-tree--node-data node))))))
last)))))
(defun org-element-cache-put (data &optional element)