branch: externals/ebdb
commit dd4f251e3d81ee2c94c3b674e44a729da2b608f4
Author: Eric Abrahamsen <[email protected]>
Commit: Eric Abrahamsen <[email protected]>
Split off ebdb-record-field for field classes
* ebdb.el (ebdb-record-field): Move the cond branch checking if FIELD
is a field class into a separate method.
---
ebdb.el | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/ebdb.el b/ebdb.el
index 1a5b5ec..b781725 100644
--- a/ebdb.el
+++ b/ebdb.el
@@ -4288,12 +4288,6 @@ also be one of the special symbols below.
((eq field 'mail-aka) (ebdb-record-mail-aka record)) ; derived (cached)
field
((eq field 'aka-all) (append (ebdb-record-aka record) ; derived field
(ebdb-record-mail-aka record)))
- ;; It might be a class symbol.
- ((class-p field)
- (seq-filter
- (lambda (f)
- (object-of-class-p f field))
- (ebdb-record-user-fields record)))
;; Otherwise assume it is a valid slot name.
(t
(when (and (slot-exists-p record field)
@@ -4301,6 +4295,15 @@ also be one of the special symbols below.
(slot-value record field)))))
(cl-defmethod ebdb-record-field ((record ebdb-record)
+ (field (subclass ebdb-field-user)))
+ "If FIELD is a class name subclassing `ebdb-user-field', return
+ all instances of that field."
+ (seq-filter
+ (lambda (f)
+ (object-of-class-p f field))
+ (ebdb-record-user-fields record)))
+
+(cl-defmethod ebdb-record-field ((record ebdb-record)
(field string))
(let ((user-fields (ebdb-record-user-fields record)))
(catch 'found