[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] scratch/org-contacts-rebased 5be58f1 075/118: contrib/lisp/org-co

From: Stefan Monnier
Subject: [elpa] scratch/org-contacts-rebased 5be58f1 075/118: contrib/lisp/org-contacts.el: Factorize the construction of the database
Date: Fri, 12 Nov 2021 15:37:07 -0500 (EST)

branch: scratch/org-contacts-rebased
commit 5be58f146fbf4b5dcbefb611a8f00e3ecd223f33
Author: Grégoire Jadi <gregoire.jadi@gmail.com>
Commit: Grégoire Jadi <gregoire.jadi@gmail.com>

    contrib/lisp/org-contacts.el: Factorize the construction of the database
    * contrib/lisp/org-contacts.el (org-contacts-at-point): New function
      used to return the contact at point.
    (org-contacts-db): Factorize the construction of the database using
    `org-contacts-at-point' and fix a small typo.
 org-contacts.el | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/org-contacts.el b/org-contacts.el
index ac43f9d..a7559f7 100644
--- a/org-contacts.el
+++ b/org-contacts.el
@@ -250,7 +250,7 @@ to dead or no buffer."
   (let* (todo-only
          (cdr (org-make-tags-matcher org-contacts-matcher)))
-        markers result)
+        result)
     (when (org-contacts-db-need-update-p)
       (let ((progress-reporter
             (make-progress-reporter "Updating Org Contacts Database..." 0 
(length org-contacts-files)))
@@ -259,21 +259,26 @@ to dead or no buffer."
          (org-check-agenda-file file)
          (with-current-buffer (org-get-agenda-file-buffer file)
            (unless (eq major-mode 'org-mode)
-             (error "File %s is no in `org-mode'" file))
-           (org-scan-tags
-            '(add-to-list 'markers (set-marker (make-marker) (point)))
-            contacts-matcher
-            todo-only))
+             (error "File %s is not in `org-mode'" file))
+           (setf result
+                 (append result
+                         (org-scan-tags
+                          'org-contacts-at-point
+                          contacts-matcher
+                          todo-only))))
          (progress-reporter-update progress-reporter (setq i (1+ i))))
-       (dolist (marker markers result)
-         (org-with-point-at marker
-           (add-to-list 'result
-                        (list (org-get-heading t) marker (org-entry-properties 
marker 'all)))))
        (setf org-contacts-db result
              org-contacts-last-update (current-time))
-      (progress-reporter-done progress-reporter)))
+       (progress-reporter-done progress-reporter)))
+(defun org-contacts-at-point (&optional pom)
+  "Return the contacts at point-or-marker POM or current position
+if nil."
+  (setq pom (or pom (point)))
+  (org-with-point-at pom
+    (list (org-get-heading t) (set-marker (make-marker) pom) 
(org-entry-properties pom 'all))))
 (defun org-contacts-filter (&optional name-match tags-match prop-match)
   "Search for a contact matching any of NAME-MATCH, TAGS-MATCH, PROP-MATCH.
 If all match values are nil, return all contacts.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]