- (bbdb-create-internal name affix aka organization mail phone address xfields t))))
- (setq bbdb-allow-duplicates initial-duplicate-value)))
+ ;; we copy and subvert bbdb's duplicate detection instead of catching
+ ;; errors so that we don't interfere with other errors, and can print
+ ;; them nicely at the end.
+ (let (found-dupe)
+ (dolist (elt mail)
+ (when (bbdb-gethash elt '(mail))
+ (push elt dupes)
+ (setq found-dupe t)))
+ (when (or allow-dupes (not found-dupe))
+ (bbdb-create-internal name affix aka organization mail phone address xfields t))))))
+ (when dupes (if allow-dupes
+ (message "Warning, contacts with duplicate email addresses were imported:\n%s" dupes)
+ (message "Skipped contacts with duplicate email addresses:\n%s" dupes)))
+ (setq bbdb-allow-duplicates allow-dupes)))