|
@@ -261,16 +261,37 @@ to dead or no buffer."
|
|
|
(make-progress-reporter "Updating Org Contacts Database..." 0 (length org-contacts-files)))
|
|
|
(i 0))
|
|
|
(dolist (file (org-contacts-files))
|
|
|
- (org-check-agenda-file file)
|
|
|
- (with-current-buffer (org-get-agenda-file-buffer file)
|
|
|
- (unless (eq major-mode 'org-mode)
|
|
|
- (error "File %s is not in `org-mode'" file))
|
|
|
- (setf result
|
|
|
- (append result
|
|
|
- (org-scan-tags
|
|
|
- 'org-contacts-at-point
|
|
|
- contacts-matcher
|
|
|
- todo-only))))
|
|
|
+ (if (catch 'nextfile
|
|
|
+ ;; if file doesn't exist and the user agrees to removing it
|
|
|
+ ;; from org-agendas-list, 'nextfile is thrown. Catch it here
|
|
|
+ ;; and skip processing the file.
|
|
|
+ ;;
|
|
|
+ ;; TODO: suppose that the user has set an org-contacts-files
|
|
|
+ ;; list that contains an element that doesn't exist in the
|
|
|
+ ;; file system: in that case, the org-agenda-files list could
|
|
|
+ ;; be updated (and saved to the customizations of the user) if
|
|
|
+ ;; it contained the same file even though the org-agenda-files
|
|
|
+ ;; list wasn't actually used. I don't think it is normal that
|
|
|
+ ;; org-contacts updates org-agenda-files in this case, but
|
|
|
+ ;; short of duplicating org-check-agenda-files and
|
|
|
+ ;; org-remove-files, I don't know how to avoid it.
|
|
|
+ ;;
|
|
|
+ ;; A side effect of the TODO is that the faulty
|
|
|
+ ;; org-contacts-files list never gets updated and thus the
|
|
|
+ ;; user is always queried about the missing files when
|
|
|
+ ;; org-contacts-db-need-update-p returns true.
|
|
|
+ (org-check-agenda-file file))
|
|
|
+ (message "Skipped %s removed from org-agenda-files list."
|
|
|
+ (abbreviate-file-name file))
|
|
|
+ (with-current-buffer (org-get-agenda-file-buffer file)
|
|
|
+ (unless (eq major-mode 'org-mode)
|
|
|
+ (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))))
|
|
|
(setf org-contacts-db result
|
|
|
org-contacts-last-update (current-time))
|