summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-12-19 19:53:04 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-12-19 19:53:08 +0100
commitdf3fde6fa5366d02fb41d98962df0b2e1148d5b2 (patch)
tree688d852e6574295ad1a4573560fafeb27fba8956
parent434c2cb2e9ac7705ee67a0a2493c29b1cbbcfa39 (diff)
downloademacs-df3fde6fa5366d02fb41d98962df0b2e1148d5b2.tar.gz
Further fixes for emojis in the "people" categories
* lisp/international/emoji.el (emoji--base-name): Get more derived categories right.
-rw-r--r--lisp/international/emoji.el32
1 files changed, 20 insertions, 12 deletions
diff --git a/lisp/international/emoji.el b/lisp/international/emoji.el
index d0e906848cb..4375a6344c5 100644
--- a/lisp/international/emoji.el
+++ b/lisp/international/emoji.el
@@ -412,18 +412,26 @@ the name is not known."
(write-region (point-min) (point-max) file)))
(defun emoji--base-name (name derivations)
- (let* ((base (replace-regexp-in-string ":.*" "" name))
- (non-binary (replace-regexp-in-string "\\`\\(man\\|woman\\) " ""
- base)))
- ;; If we have (for instance) "person golfing", and we're adding
- ;; "man golfing", make the latter a derivation of the former.
- (cond
- ((gethash (concat "person " non-binary) derivations)
- (concat "person " non-binary))
- ((gethash non-binary derivations)
- non-binary)
- (t
- base))))
+ (let* ((base (replace-regexp-in-string ":.*" "" name)))
+ (catch 'found
+ ;; If we have (for instance) "person golfing", and we're adding
+ ;; "man golfing", make the latter a derivation of the former.
+ (let ((non-binary (replace-regexp-in-string
+ "\\`\\(m[ae]n\\|wom[ae]n\\) " "" base)))
+ (dolist (prefix '("person " "people " ""))
+ (let ((key (concat prefix non-binary)))
+ (when (gethash key derivations)
+ (throw 'found key)))))
+ ;; We can also have the gender at the end of the string, like
+ ;; "merman" and "pregnant woman".
+ (let ((non-binary (replace-regexp-in-string
+ "\\(m[ae]n\\|wom[ae]n\\|maid\\)\\'" "" base)))
+ (dolist (suffix '(" person" "person" ""))
+ (let ((key (concat non-binary suffix)))
+ (when (gethash key derivations)
+ (throw 'found key)))))
+ ;; Just return the base.
+ base)))
(defun emoji--split-subgroup (subgroup)
(let ((prefixes '("face" "hand" "person" "animal" "plant"