Browse Source

org-agenda: Fix regression when diary sexp timestamps are ignored

* lisp/org.el (org-at-timestamp-p): Return non-nil on sexp timestamps
when called with 'agenda argument.
* testing/examples/agenda-file.org (test sexp timestamp inside properties):
* testing/lisp/test-org-agenda.el (test-org-agenda/property-timestamp):
Add new test checking sexp timestamp inside properties drawer.
Ihor Radchenko 3 years ago
parent
commit
b1a570b3b4
3 changed files with 17 additions and 2 deletions
  1. 7 2
      lisp/org.el
  2. 4 0
      testing/examples/agenda-file.org
  3. 6 0
      testing/lisp/test-org-agenda.el

+ 7 - 2
lisp/org.el

@@ -15020,7 +15020,11 @@ When matching, the match groups are the following:
   group 4: day name
   group 5: hours, if any
   group 6: minutes, if any"
-  (let* ((regexp (if extended org-ts-regexp3 org-ts-regexp2))
+  (let* ((regexp (if extended
+                     (if (eq extended 'agenda)
+                         org-element--timestamp-regexp
+		       org-ts-regexp3)
+                   org-ts-regexp2))
 	 (pos (point))
 	 (match?
 	  (let ((boundaries (org-in-regexp regexp)))
@@ -15051,7 +15055,8 @@ When matching, the match groups are the following:
      ((org-pos-in-match-range pos 8)      'minute)
      ((or (org-pos-in-match-range pos 4)
 	  (org-pos-in-match-range pos 5)) 'day)
-     ((and (> pos (or (match-end 8) (match-end 5)))
+     ((and (or (match-end 8) (match-end 5))
+           (> pos (or (match-end 8) (match-end 5)))
 	   (< pos (match-end 0)))
       (- pos (or (match-end 8) (match-end 5))))
      (t                                   'day))))

+ 4 - 0
testing/examples/agenda-file.org

@@ -20,3 +20,7 @@ SCHEDULED: <2022-01-03 Mon>
 :PROPERTIES:
 :CREATED: <2022-03-22 Tue>
 :END:
+* test sexp timestamp inside properties
+:PROPERTIES:
+:CREATED: <%%(diary-date 03 25 2022)>
+:END:

+ 6 - 0
testing/lisp/test-org-agenda.el

@@ -130,6 +130,12 @@ See https://list.orgmode.org/06d301d83d9e$f8b44340$ea1cc9c0$@tomdavey.com"
     (org-agenda-list nil "<2022-03-22 Tue>")
     (set-buffer org-agenda-buffer-name)
     (should (= 3 (count-lines (point-min) (point-max))))
+    ;; NOTE: Be aware that `org-agenda-list' may or may not display
+    ;; past scheduled items depending whether the date is today
+    ;; `org-today' or not.
+    (org-agenda-list nil "<2022-03-25 Fri>")
+    (set-buffer org-agenda-buffer-name)
+    (should (= 3 (count-lines (point-min) (point-max)))))
   (org-test-agenda--kill-all-agendas))
 
 (ert-deftest test-org-agenda/set-priority ()