emacs-emojify

fork of https://github.com/iqbalansari/emacs-emojify
Log | Files | Refs | LICENSE

commit 0892bf759185e27bf1fc1fe4c29bb0a76cfcb5e8
parent ff9dd72c23a01dda7a39b3a077622a489e5fe4be
Author: Iqbal Ansari <iqbal.ansari@ignitesol.com>
Date:   Fri, 30 Oct 2015 13:14:23 +0530

Make 'unicode' and 'ascii' substitution styles functional :fireworks:

Diffstat:
Memojify.el | 24+++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/emojify.el b/emojify.el @@ -31,11 +31,13 @@ ;;; Code: +(require 'seq) (require 'ht) (require 'json) (require 'regexp-opt) (require 'jit-lock) +(require 'pcase) @@ -268,24 +270,24 @@ since our mechanisms do not work in it." :height (default-font-height))))) (defsubst emojify--get-unicode-display (data) - ;; TODO Handle multiple characters - (let* ((unicode (gethash "unicode" data)) - (character (when unicode (string-to-number data 16)))) - (when (and character - (char-displayable-p character)) - (make-string 1 character)))) + (let* ((unicode (ht-get data "unicode")) + (characters (when unicode + (seq-map (lambda (hex) + (string-to-number hex 16)) + (split-string unicode "-"))))) + (when (seq-every-p #'char-displayable-p characters) + (seq-mapcat #'char-to-string characters 'string)))) (defsubst emojify--get-ascii-display (data) - ;; TODO Handle multiple characters - (let ((aliases (gethash "aliases_ascii" data))) - (when aliases - (make-string 1 (car aliases))))) + (car (ht-get data "aliases_ascii"))) (defsubst emojify--get-text-props (name) (let* ((emoji-data (ht-get emojify--emojis name)) (display (when emoji-data (pcase emojify-substitution-style - (`image (emojify--get-image-display emoji-data)))))) + (`image (emojify--get-image-display emoji-data)) + (`unicode (emojify--get-unicode-display emoji-data)) + (`ascii (emojify--get-ascii-display emoji-data)))))) (when display (list 'display display))))