|
6 | 6 | ;; Maintainer: Shen, Jen-Chieh <[email protected]>
|
7 | 7 | ;; URL: https://github.com/emacs-sideline/sideline-emoji
|
8 | 8 | ;; Version: 0.1.0
|
9 |
| -;; Package-Requires: ((emacs "27.1") (sideline "0.1.0") (emojify "1.2.1")) |
| 9 | +;; Package-Requires: ((emacs "27.1") (sideline "0.1.0") (emojify "1.2.1") (ht "2.4")) |
10 | 10 | ;; Keywords: convenience sideline emoji
|
11 | 11 |
|
12 | 12 | ;; This file is not part of GNU Emacs.
|
|
40 | 40 | ;;; Code:
|
41 | 41 |
|
42 | 42 | (require 'emojify)
|
| 43 | +(require 'ht) |
43 | 44 | (require 'sideline)
|
44 | 45 |
|
45 | 46 | (defgroup sideline-emoji nil
|
|
48 | 49 | :group 'tool
|
49 | 50 | :link '(url-link :tag "Repository" "https://github.com/emacs-sideline/sideline-emoji"))
|
50 | 51 |
|
| 52 | +(defface sideline-emoji |
| 53 | + '((t :foreground "#828282" |
| 54 | + :background unspecified |
| 55 | + :italic t)) |
| 56 | + "Face for emoji info." |
| 57 | + :group 'sideline-emoji) |
| 58 | + |
51 | 59 | ;;;###autoload
|
52 | 60 | (defun sideline-emoji (command)
|
53 | 61 | "Backend for sideline.
|
54 | 62 |
|
55 | 63 | Argument COMMAND is required in sideline backend."
|
56 | 64 | (cl-case command
|
57 |
| - (`candidates (cons :async #'sideline-emoji--show)))) |
| 65 | + (`candidates (cons :async #'sideline-emoji--show)) |
| 66 | + (`face 'sideline-emoji))) |
| 67 | + |
| 68 | +(defun sideline-emoji--display (emoji) |
| 69 | + "Return the display text for EMOJI." |
| 70 | + (when-let* ((data (ignore-errors (emojify-get-emoji emoji))) |
| 71 | + (name (ht-get (emojify-get-emoji emoji) "name")) |
| 72 | + (emo (ht-get (emojify-get-emoji emoji) "emoji")) |
| 73 | + (style (ht-get (emojify-get-emoji emoji) "style"))) |
| 74 | + (format "%s %s (%s)" emo name style))) |
| 75 | + |
| 76 | +(defun sideline-emoji--display-char (ch) |
| 77 | + "Return the display text for character (CH)." |
| 78 | + (when-let* ((emoji (ignore-errors (string ch)))) |
| 79 | + (sideline-emoji--display emoji))) |
58 | 80 |
|
59 | 81 | (defun sideline-emoji--show (callback &rest _)
|
60 | 82 | "Execute CALLBACK to display with sideline."
|
61 |
| - (when-let* ((text (sideline-color--thing-at-point 'symbol t)) |
62 |
| - (color (color-values text)) |
63 |
| - (display (concat (propertize sideline-color-text 'font-lock-face `(:foreground ,text)) " " text))) |
| 83 | + (emojify-create-emojify-emojis) |
| 84 | + (when-let* ((display (or (sideline-emoji--display-char (char-after)) |
| 85 | + (sideline-emoji--display-char (char-before))))) |
64 | 86 | (funcall callback (list display))))
|
65 | 87 |
|
66 | 88 | (provide 'sideline-emoji)
|
|
0 commit comments