diff options
| author | Eric Abrahamsen <eric@ericabrahamsen.net> | 2021-01-14 16:23:42 -0800 |
|---|---|---|
| committer | Eric Abrahamsen <eric@ericabrahamsen.net> | 2021-01-14 16:23:42 -0800 |
| commit | b8c1f7c21204bda9c130ce21a75d69358d1bc49a (patch) | |
| tree | 8b5314a2006b87f353b73c5637a7e5ee43f6e5f5 | |
| parent | 7bdd731d2dc5c84da4dc86926fdc212154251bfe (diff) | |
Remove uses of ebdb-(add-to|remove-from)-list, release version 1.3.2
* ebdb-i18n-chn.el (ebdb-china-handle-name): Do this more explicitly.
funcall'ing `ebdb-add-to-list' and `ebdb-remove-from-list' doesn't
work correctly because (ebdb-record-alt-names record) is not used as a
place.
| -rw-r--r-- | ebdb-i18n-chn.el | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/ebdb-i18n-chn.el b/ebdb-i18n-chn.el index 0b6e2d4..451fe87 100644 --- a/ebdb-i18n-chn.el +++ b/ebdb-i18n-chn.el @@ -4,7 +4,7 @@ ;; Author: Eric Abrahamsen <eric@ericabrahamsen.net> ;; Maintainer: Eric Abrahamsen <eric@ericabrahamsen.net> -;; Version: 1.3.1 +;; Version: 1.3.2 ;; Package-Requires: ((pyim "1.6.0") (ebdb "0.6.17")) ;; This program is free software; you can redistribute it and/or modify @@ -48,7 +48,7 @@ (format "X%d" extension) "")))) -(cl-defmethod ebdb-parse-i18n ((class (subclass ebdb-field-phone)) +(cl-defmethod ebdb-parse-i18n ((_class (subclass ebdb-field-phone)) (str string) (_cc (eql 86)) &optional slots) @@ -92,7 +92,7 @@ "A list of Chinese surnames that are longer than one character.") -(cl-defmethod ebdb-parse-i18n ((class (subclass ebdb-field-name-complex)) +(cl-defmethod ebdb-parse-i18n ((_class (subclass ebdb-field-name-complex)) (string string) (_script (eql han)) &optional _slots) @@ -137,20 +137,16 @@ searches via pinyin will find the record." (concat (ebdb-name-last field) " " (ebdb-name-given field t)))) - (name-string (ebdb-string field)) - hashfunc listfunc) + (name-string (ebdb-string field))) (if (eql add-or-del 'add) - (progn - (setq hashfunc #'ebdb-puthash - listfunc #'ebdb-add-to-list)) - (setq hashfunc #'ebdb-remhash - listfunc #'ebdb-remove-from-list)) - (funcall hashfunc fl-py record) - (funcall hashfunc lf-py record) - (funcall hashfunc name-string record) - (funcall listfunc (ebdb-record-alt-names record) fl-py) - (funcall listfunc (ebdb-record-alt-names record) name-string) - (funcall listfunc (ebdb-record-alt-names record) lf-py))) + (dolist (str (list fl-py name-string lf-py)) + (cl-pushnew str (ebdb-record-alt-names record) + :test #'equal) + (ebdb-puthash str record)) + (dolist (str (list fl-py name-string lf-py)) + (setf (ebdb-record-alt-names record) + (remove str (ebdb-record-alt-names record))) + (ebdb-remhash str record))))) (cl-defmethod ebdb-china-handle-name ((field ebdb-field-name-simple) (record ebdb-record) @@ -159,16 +155,15 @@ searches via pinyin will find the record." ;; We use `pyim-hanzi2pinyin-simple' because it's cheaper, and ;; because checking for multiple character pronunciations isn't ;; really helpful in people's names. - (let ((name-string (ebdb-string field)) - hashfunc listfunc) + (let ((name-string (ebdb-string field))) (if (eql add-or-del 'add) (progn - (setq hashfunc #'ebdb-puthash - listfunc #'ebdb-add-to-list)) - (setq hashfunc #'ebdb-remhash - listfunc #'ebdb-remove-from-list)) - (funcall hashfunc name-string record) - (funcall listfunc (ebdb-record-alt-names record) name-string))) + (cl-pushnew name-string (ebdb-record-alt-names record) + :test #'equal) + (ebdb-puthash name-string record)) + (setf (ebdb-record-alt-names record) + (remove name-string (ebdb-record-alt-names record))) + (ebdb-remhash name-string record)))) (cl-defmethod ebdb-init-field-i18n ((field ebdb-field-name) record |
