[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ebdb 4cce4c8 096/350: Simplify role field adoption proc
From: |
Eric Abrahamsen |
Subject: |
[elpa] externals/ebdb 4cce4c8 096/350: Simplify role field adoption process |
Date: |
Mon, 14 Aug 2017 11:46:14 -0400 (EDT) |
branch: externals/ebdb
commit 4cce4c84832a38f7d02c5ad23d0ae96a1386c203
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>
Simplify role field adoption process
* ebdb.el (ebdb-record-insert-field): Essentially the same function
had been written three times.
(ebdb-record-adopt-role-fields): Use this existing function in all
cases.
---
ebdb.el | 87 ++++++++++++++++++++++++++---------------------------------------
1 file changed, 35 insertions(+), 52 deletions(-)
diff --git a/ebdb.el b/ebdb.el
index e6bdd93..ad7bceb 100644
--- a/ebdb.el
+++ b/ebdb.el
@@ -2387,27 +2387,6 @@ priority."
(setf (slot-value (ebdb-record-cache record) 'name-string) (ebdb-string
new-name))
(cl-call-next-method record new-name)))
-(cl-defmethod ebdb-record-adopt-role-fields ((record ebdb-record-person)
&optional _prompt)
- "Go through all of RECORDs fields and see if any of them should
-be moved to an organization role.
-
-Currently only works for mail fields."
- (let ((roles (slot-value record 'organizations))
- org domain)
- (dolist (r roles)
- (setq org (ebdb-gethash (slot-value r 'org-uuid) 'uuid))
- (dolist (m (ebdb-record-mail record))
- (setq domain (cadr (split-string (slot-value m 'mail) "@")))
- (when (and domain
- (string-match-p domain
- (slot-value org 'domain))
- (yes-or-no-p (format "Move mail %s to organization %s? "
- (ebdb-string m)
- (ebdb-string org))))
- (setf (slot-value r 'mail) m)
- (ebdb-record-delete-field record 'mail m)
- (ebdb-init-field m record))))))
-
(cl-defmethod ebdb-record-related ((_record ebdb-record-person)
(field ebdb-field-relation))
(ebdb-gethash (slot-value field 'rel-uuid) 'uuid))
@@ -2596,27 +2575,45 @@ Currently only works for mail fields."
(or (and domain (string-match-p regexp (ebdb-string domain)))
(cl-call-next-method))))
+(cl-defmethod ebdb-record-adopt-role-fields ((record ebdb-record-person)
+ (org ebdb-record-organization)
+ &optional _prompt)
+ "Go through all of RECORDs fields and see if any of them should
+be moved to a role at ORG.
+
+Currently only works for mail fields."
+ (let ((roles (slot-value record 'organizations))
+ (org-domain (slot-value org 'domain))
+ org mail-domain)
+ (dolist (r roles)
+ (when (and (string= (slot-value r 'org-uuid) (ebdb-record-uuid org))
+ org-domain)
+ (dolist (m (ebdb-record-mail record))
+ (setq mail-domain (cadr (split-string (slot-value m 'mail) "@")))
+ (when (and mail-domain
+ (string-match-p mail-domain
+ (ebdb-string org-domain))
+ (yes-or-no-p (format "Move %s's address %s to role at %s? "
+ (ebdb-string record)
+ (ebdb-string m)
+ (ebdb-string org))))
+ (setf (slot-value r 'mail) m)
+ (ebdb-record-delete-field
+ record
+ (car (ebdb-record-field-slot-query
+ (eieio-object-class record)
+ `(nil . ,(eieio-object-class m))))
+ m)
+ (ebdb-init-field r record)))))))
+
(cl-defmethod ebdb-record-insert-field :after ((org ebdb-record-organization)
_slot
- (field ebdb-field-domain))
+ (_field ebdb-field-domain))
(let ((roles (gethash (ebdb-record-uuid org) ebdb-org-hashtable))
- (domain (slot-value field 'domain))
rec)
(dolist (r roles)
(setq rec (ebdb-gethash (car r) 'uuid))
- (dolist (m (ebdb-record-mail rec))
- (when (and (string-match-p domain (slot-value m 'mail))
- (yes-or-no-p (format "Move address %s of %s to %s role? "
- (ebdb-string m)
- (ebdb-string rec)
- (ebdb-string org))))
- (setf (slot-value (cdr r) 'mail) m)
- (ebdb-record-delete-field
- rec
- (car (ebdb-record-field-slot-query
- (eieio-object-class rec)
- `(nil . ,(eieio-object-class m))))
- m))))))
+ (ebdb-record-adopt-role-fields rec org t))))
(cl-defmethod ebdb-record-change-field ((_record ebdb-record-organization)
(old-field ebdb-field-role)
@@ -2638,22 +2635,8 @@ appropriate person record."
(cl-defmethod ebdb-record-insert-field :after ((record ebdb-record-person)
_slot
(field ebdb-field-role))
- (let* ((org-uuid (slot-value field 'org-uuid))
- (org (ebdb-gethash org-uuid 'uuid))
- (org-domain (slot-value org 'domain))
- (role-mail (slot-value field 'mail)))
- (when (and org-domain (not role-mail))
- (dolist (m (ebdb-record-mail record t))
- (when (and (string-match-p (slot-value org-domain 'domain) (ebdb-string
m))
- (yes-or-no-p (format "Move address %s to %s role? "
- (ebdb-string m) (ebdb-string org))))
- (setf (slot-value field 'mail) m)
- (ebdb-record-delete-field
- record
- (car (ebdb-record-field-slot-query
- (eieio-object-class record)
- `(nil . ,(eieio-object-class m))))
- m))))))
+ (let ((org (ebdb-gethash (slot-value field 'org-uuid) 'uuid)))
+ (ebdb-record-adopt-role-fields record org t)))
(cl-defmethod ebdb-record-change-name ((org ebdb-record-organization)
&optional name)
(let ((new-name (or name (ebdb-read ebdb-field-name-simple nil (slot-value
org 'name)))))
- [elpa] externals/ebdb 6c267e9 159/350: Fix pop-up mouse menus in EBDB buffers, (continued)
- [elpa] externals/ebdb 6c267e9 159/350: Fix pop-up mouse menus in EBDB buffers, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 55b3f82 160/350: Fixup with fix popup menus, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb abdb8cd 158/350: Update copyright years to 2017, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 5fdf286 166/350: Feeding incorrect args to ebdb-snarf, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 9b6c88d 167/350: Fix incorrect variable name, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb dd13813 171/350: Bah, fixups to a19ff0a, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb f1448f4 174/350: Remove this empty file, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 6479c87 173/350: Remove unused code, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb db930f6 163/350: Compiler-inspired fixes, and removal of old-code references, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 281c61e 154/350: Don't ((lambda ()), Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 4cce4c8 096/350: Simplify role field adoption process,
Eric Abrahamsen <=
- [elpa] externals/ebdb 0910ddd 105/350: Change default of ebdb-default-user-field, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb b495e29 083/350: Omnibus changes to display and redisplay, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 29bf304 101/350: Rework MUA window popups, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 81e23c3 134/350: Simplify record mail citing, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb b661aac 124/350: First generalized version of snarfing, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb aae57ff 139/350: Ensure that extra name field instances go in 'aka slot, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 057c4c0 144/350: Have ebdb-snarf accept optional records argument, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 8d81a19 132/350: Add EBDB record citation, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 7662133 140/350: Simplify ebdb-dwim-mail, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 0cfe1ec 164/350: Provide keybinding for ebdb-format-all-records, Eric Abrahamsen, 2017/08/14