branch: externals/cape
commit cf0553114f51d8970837423f1b2da4f0980cb1e1
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    Better emoji normalization (Fix #143)
---
 cape-char.el | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/cape-char.el b/cape-char.el
index fc123e4049..c3017015f3 100644
--- a/cape-char.el
+++ b/cape-char.el
@@ -44,12 +44,17 @@ are not included. Hash values are either char or strings."
         (apply #'quail-use-package method (nthcdr 5 im))
         (quail-build-decode-map (list (quail-map)) "" dm 0)
         (pcase-dolist (`(,name . ,val) (cdr dm))
+          (when (equal method "emoji")
+            (setq name (replace-regexp-in-string
+                        ": " "-"
+                        (replace-regexp-in-string
+                         "[’“”!()]" ""
+                         (replace-regexp-in-string
+                          "[_ &.]+" "-" name))))
+            (when (string-match-p "\\`[[:alnum:]-]*\\'" name)
+              (setq name (format ":%s:" name))))
           (when (memq (aref name 0) prefix)
-            (puthash
-             (if (equal method "emoji")
-                 (string-replace "_" "-" name)
-               name)
-             (if (vectorp val) (aref val 0) val) hash)))
+            (puthash name (if (vectorp val) (aref val 0) val) hash)))
         (quail-deactivate)
         hash))))
 

Reply via email to