org-agenda: Match timestamps inside node properties

* lisp/org-agenda.el (org-agenda-get-timestamps): Use
`org-at-timestamp-p' instead of org-element to check if at valid
timestamp.  Agenda should consider timestamps inside node properties
even though they are not parsed by org-element.

* testing/lisp/test-org-agenda.el (test-org-agenda/property-timestamp):
Add new test checking active timestamp inside property drawer.

* testing/examples/agenda-file.org (test timestamp inside properties):
Add heading for `test-org-agenda/property-timestamp'.

Reported in https://list.orgmode.org/06d301d83d9e$f8b44340$ea1cc9c0$@tomdavey.com
This commit is contained in:
Ihor Radchenko 2022-03-22 17:25:14 +08:00
parent 847e332301
commit d9bf64f064
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
3 changed files with 20 additions and 1 deletions

View File

@ -5732,7 +5732,7 @@ displayed in agenda view."
(org-before-first-heading-p)
(and org-agenda-include-inactive-timestamps
(org-at-clock-log-p))
(not (eq 'timestamp (org-element-type (org-element-context)))))
(not (org-at-timestamp-p 'agenda)))
(throw :skip nil))
(org-agenda-skip))
(let* ((pos (match-beginning 0))

View File

@ -16,3 +16,7 @@ SCHEDULED: <2022-01-03 Mon>
#+begin_example
SCHEDULED: <2022-01-03 Mon>
#+end_example
* test timestamp inside properties
:PROPERTIES:
:CREATED: <2022-03-22 Tue>
:END:

View File

@ -106,6 +106,21 @@ See https://list.orgmode.org/20220101200103.GB29829@itccanarias.org/T/#t."
(should (= 2 (count-lines (point-min) (point-max)))))
(org-test-agenda--kill-all-agendas))
(ert-deftest test-org-agenda/property-timestamp ()
"Match timestamps inside property drawer.
See https://list.orgmode.org/06d301d83d9e$f8b44340$ea1cc9c0$@tomdavey.com"
(cl-assert (not org-agenda-sticky) nil "precondition violation")
(cl-assert (not (org-test-agenda--agenda-buffers))
nil "precondition violation")
(let ((org-agenda-span 'day)
(org-agenda-files `(,(expand-file-name "examples/agenda-file.org"
org-test-dir))))
(org-agenda-list nil "<2022-03-22 Tue>")
(set-buffer org-agenda-buffer-name)
(message "%s" (buffer-string))
(should (= 4 (count-lines (point-min) (point-max)))))
(org-test-agenda--kill-all-agendas))
(ert-deftest test-org-agenda/set-priority ()
"One informative line in the agenda. Check that org-agenda-priority updates the agenda."
(cl-assert (not org-agenda-sticky) nil "precondition violation")