From fd5edd35ae33ef9fbd15a8e4413455ce99f96007 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 11 Jan 2014 22:31:53 +0100 Subject: [PATCH] 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. --- lisp/org-element.el | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index fdcbf8de0..511468e96 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -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)