From: Nicolas Goaziou Date: Tue, 25 Feb 2014 19:48:15 +0000 (+0100) Subject: org-element: Fix timestamps parsing in planning lines X-Git-Tag: release_8.2.6~112 X-Git-Url: https://repo.or.cz/w/org-mode.git/commitdiff_plain/7f8c1226e860b34a5260b7a39e00e65cd81be926 org-element: Fix timestamps parsing in planning lines * lisp/org-element.el (org-element-context): Fix timestamps parsing. * testing/lisp/test-org-element.el (test-org-element/context): Add test. --- diff --git a/lisp/org-element.el b/lisp/org-element.el index b6ebd3341..68b830eec 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -4891,6 +4891,16 @@ Providing it allows for quicker computation." (if (and (>= origin (point)) (< origin (line-end-position))) (narrow-to-region (point) (line-end-position)) (throw 'objects-forbidden element)))) + ;; At a planning line, if point is at a timestamp, return it, + ;; otherwise, return element. + ((eq type 'planning) + (dolist (p '(:closed :deadline :scheduled)) + (let ((timestamp (org-element-property p element))) + (when (and timestamp + (<= (org-element-property :begin timestamp) origin) + (> (org-element-property :end timestamp) origin)) + (throw 'objects-forbidden timestamp)))) + (throw 'objects-forbidden element)) (t (throw 'objects-forbidden element))) (goto-char (point-min)) (let ((restriction (org-element-restriction type)) diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index ede5e027c..7cc8dd820 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -3022,6 +3022,17 @@ Paragraph \\alpha." (org-test-with-temp-text "| a | b {{{macro}}} |" (progn (search-forward "b") (org-element-type (org-element-context)))))) + ;; Find objects in planning lines. + (should + (eq 'timestamp + (org-test-with-temp-text "* H\n SCHEDULED: <2012-03-29 thu.>" + (search-forward "2012") + (org-element-type (org-element-context))))) + (should-not + (eq 'timestamp + (org-test-with-temp-text "* H\n SCHEDULED: <2012-03-29 thu.>" + (search-forward "SCHEDULED") + (org-element-type (org-element-context))))) ;; Find objects in document keywords. (should (eq 'macro