commit 464a0a3bd25e13581d4be75ec254df133347f1c1 parent 221e8d2b7dbd63b047c686a7758f5fde84c2c840 Author: Iqbal Ansari <iqbal.ansari@ignitesol.com> Date: Fri, 23 Oct 2015 10:57:36 +0530 Use imagemagick if available Diffstat:
M | emojify.el | | | 20 | ++++++++++++-------- |
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/emojify.el b/emojify.el @@ -1,15 +1,16 @@ ;; Another plugin to waste time in Emacs :sweat: :worried: :unamused: +;; :rocket: :star2: :strawberry: (require 'json) (require 'subr-x) -(defvar emoji-emoji-json (expand-file-name "images" (file-name-directory load-file-name))) -(defvar emoji-image-dir (expand-file-name "images" (file-name-directory load-file-name))) +(defvar emoji-emoji-json (expand-file-name "emoji.json" (if load-file-name (file-name-directory load-file-name) default-directory))) +(defvar emoji-image-dir (expand-file-name "images" (if load-file-name (file-name-directory load-file-name) default-directory))) (defvar emoji-parsed (let ((json-array-type 'list) (json-object-type 'hash-table)) (json-read-file emoji-emoji-json))) -(defun emoji-compose-symbol () +(defun emoji-setup-emoji-display () "Compose a sequence of characters into an emoji. Regexp match data 0 points to the chars." (let* ((start (match-beginning 0)) @@ -23,18 +24,21 @@ Regexp match data 0 points to the chars." (when emoji-one (add-text-properties start end (list 'display (create-image (expand-file-name (concat (gethash "unicode" emoji-one) ".png") emoji-image-dir) + ;; Use imagemagick if available (allows resizing images) + (when (fboundp 'imagemagick-types) + 'imagemagick) nil - nil - :ascent 'center))))) + :ascent 'center + ;; no-op if imagemagick is not available + :height (default-font-height)))))) + (remove-text-properties start end '(display)))) nil) - - (defun emoji-make-keywords () (let ((emojis (mapcar (lambda (word) (concat ":" word ":")) (hash-table-keys emoji-parsed)))) `((,(regexp-opt emojis) - (0 (emoji-compose-symbol)))))) + (0 (emoji-setup-emoji-display)))))) (font-lock-add-keywords nil (emoji-make-keywords)) (setq-local font-lock-extra-managed-props