branch: externals/ebdb commit d4dbf340137b04d4c8354e3a4f82e2c41e06d2c1 Author: Eric Abrahamsen <e...@ericabrahamsen.net> Commit: Eric Abrahamsen <e...@ericabrahamsen.net>
New ebdb-record-change-name methods for strings * ebdb.el (ebdb-record-change-name): One for people and organizations. I think I was failing this before because I was trying to call cl-call-next-method, when I should have been restarting the method call altogether. * ebdb-mua.el (ebdb-annotate-message): Now we don't need to know the record class. --- ebdb-mua.el | 12 +++--------- ebdb.el | 10 ++++++++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ebdb-mua.el b/ebdb-mua.el index 3746d37..33130d6 100644 --- a/ebdb-mua.el +++ b/ebdb-mua.el @@ -815,9 +815,6 @@ Return the records matching ADDRESS or nil." (record-class (if (eql (nth 3 address) 'organization) 'ebdb-record-organization ebdb-default-record-class)) - (name-class (if (eql record-class 'ebdb-record-organization) - 'ebdb-field-name-simple - ebdb-default-name-class)) (records (ebdb-message-search name mail)) created-p new-records) (if (and (not records) (functionp update-p)) @@ -855,8 +852,7 @@ Return the records matching ADDRESS or nil." ;; Analyze the name part of the record. (cond (created-p ; new record - (ebdb-record-change-name - record (ebdb-parse name-class name))) + (ebdb-record-change-name record name)) ((or (not name) ;; The following tests can differ for more complicated names @@ -887,8 +883,7 @@ Return the records matching ADDRESS or nil." (format "Keep name \"%s\" as an AKA? " old-name)) (ebdb-record-insert-field record (slot-value record 'name) 'aka))) - (ebdb-record-change-name - record (ebdb-parse name-class name)) + (ebdb-record-change-name record name) (setq change-p 'name)) ;; make new name an AKA? @@ -953,8 +948,7 @@ Return the records matching ADDRESS or nil." (progn (setq record (make-instance ebdb-default-record-class)) (ebdb-db-add-record (car ebdb-db-list) record) - (ebdb-record-change-name - record (ebdb-parse name-class name)) + (ebdb-record-change-name record name) (setq created-p t)))) (let ((mails (ebdb-record-mail record))) diff --git a/ebdb.el b/ebdb.el index f9a12a8..1c9249a 100644 --- a/ebdb.el +++ b/ebdb.el @@ -3147,6 +3147,11 @@ priority." (push `(organizations . ,o) f-list))) (cl-call-next-method record f-list all)) +(cl-defmethod ebdb-record-change-name ((record ebdb-record-person) + (name-string string)) + (let ((name (ebdb-parse ebdb-default-name-class name-string))) + (ebdb-record-change-name record name))) + (cl-defmethod ebdb-record-related ((_record ebdb-record-person) (field ebdb-field-relation)) (or @@ -3316,6 +3321,11 @@ priority." '((domain . ebdb-field-domain)) alist))) +(cl-defmethod ebdb-record-change-name ((record ebdb-record-organization) + (name-string string)) + (let ((name (ebdb-parse ebdb-field-name-simple name-string))) + (ebdb-record-change-name record name))) + (cl-defmethod ebdb-record-current-fields ((record ebdb-record-organization) &optional f-list all) (with-slots (name domain) record