branch: externals/org-contacts
commit 3a592c71b5352f36d3584b393841b4c6a2adb638
Author: stardiviner <numbch...@gmail.com>
Commit: stardiviner <numbch...@gmail.com>
Contacts may be unintentionally excluded from the database
if a diary sexp calls `org-contacts-db' when a skip function is set.
---
org-contacts.el | 2 +-
test-org-contacts.el | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/org-contacts.el b/org-contacts.el
index fdc4130935..8c0e815ae5 100644
--- a/org-contacts.el
+++ b/org-contacts.el
@@ -268,7 +268,7 @@ buffer."
"Return the latest Org Contacts Database."
(let* ((org--matcher-tags-todo-only nil)
(contacts-matcher (cdr (org-make-tags-matcher org-contacts-matcher)))
- result)
+ result org-agenda-skip-function org-agenda-skip-function-global)
(when (org-contacts-db-need-update-p)
(let ((progress-reporter
(make-progress-reporter "Updating Org Contacts Database..." 0
(length (org-contacts-files))))
diff --git a/test-org-contacts.el b/test-org-contacts.el
index a2de7493c2..7d59906781 100644
--- a/test-org-contacts.el
+++ b/test-org-contacts.el
@@ -63,6 +63,43 @@
;; (match-string 1 pvalue)
;; pvalue))
+(ert-deftest ert-test-org-contacts-do-not-skip-during-update ()
+ "The value of `org-agenda-skip-function-global' should not cause
+org-contacts to skip contacts while updating the database."
+ (let ((org-contacts-files (list (make-temp-file "ert-test-org-contacts" nil
".org")))
+ (org-agenda-skip-function-global
+ (lambda ()
+ (org-agenda-skip-entry-if 'regexp "Smith")))
+ (org-agenda-skip-function
+ (lambda ()
+ (org-agenda-skip-entry-if 'regexp "Henry"))))
+ (with-temp-file (car org-contacts-files)
+ (insert "\
+* John Doe
+:PROPERTIES:
+:EMAIL: j...@example.com
+:END:\n")
+ (insert "\
+* John Smith
+:PROPERTIES:
+:EMAIL: jsm...@example.com
+:END:\n")
+ (insert "\
+* Jon Henry
+:PROPERTIES:
+:EMAIL: jhe...@example.com
+:END:\n"))
+ (should
+ (seq-some (lambda (contact)
+ (string= "John Smith"
+ (car contact)))
+ (org-contacts-db)))
+ (should
+ (seq-some (lambda (contact)
+ (string= "Jon Henry"
+ (car contact)))
+ (org-contacts-db)))))
+
(provide 'test-org-contacts)