* [PATCH] Add new smiley-style emoji to Gnus
@ 2020-10-06 17:22 Adam Sjøgren
2020-10-07 0:45 ` 황병희
2020-10-07 16:12 ` Eric Abrahamsen
0 siblings, 2 replies; 3+ messages in thread
From: Adam Sjøgren @ 2020-10-06 17:22 UTC (permalink / raw)
To: ding
The new smiley-style called emoji takes advantage of the harfbuzz glyph
rendering to represent smileys as colorful unicode emoji rather than
images.
* lisp/gnus/smiley.el (smiley-style): Add emoji
tag. (smiley-emoji-regexp-alist): New defcustom. (smiley-update-cache,
smiley-region): Support emoji (non-image) replacement.
---
How about an option to use emoji for smileys in Gnus?
lisp/gnus/smiley.el | 76 +++++++++++++++++++++++++++++++++------------
1 file changed, 56 insertions(+), 20 deletions(-)
diff --git a/lisp/gnus/smiley.el b/lisp/gnus/smiley.el
index 5504a52078..7d6efacfe0 100644
--- a/lisp/gnus/smiley.el
+++ b/lisp/gnus/smiley.el
@@ -44,6 +44,7 @@
;; cry ;-(
;; dead X-)
;; grin :-D
+;; halo O:-)
;;; Code:
@@ -64,7 +65,8 @@ smiley-style
"Smiley style."
:type '(choice (const :tag "small, 3 colors" low-color) ;; 13x14
(const :tag "medium, ~10 colors" medium) ;; 16x16
- (const :tag "dull, grayscale" grayscale)) ;; 14x14
+ (const :tag "dull, grayscale" grayscale) ;; 14x14
+ (const :tag "emoji, full color" emoji))
:set (lambda (symbol value)
(set-default symbol value)
(setq smiley-data-directory (smiley-directory))
@@ -96,6 +98,35 @@ smiley-data-directory
:type 'directory
:group 'smiley)
+(defcustom smiley-emoji-regexp-alist
+ '(("\\(;-)\\)\\W" 1 "😉")
+ ("[^;]\\(;)\\)\\W" 1 "😉")
+ ("\\(:-]\\)\\W" 1 "😬")
+ ("\\(8-)\\)\\W" 1 "🥴")
+ ("\\(:-|\\)\\W" 1 "😐")
+ ("\\(:-[/\\]\\)\\W" 1 "😕")
+ ("\\(:-(\\)\\W" 1 "😠")
+ ("\\(X-)\\)\\W" 1 "😵") ; 💀
+ ("\\(:-{\\)\\W" 1 "😦")
+ ("\\(>:-)\\)\\W" 1 "😈")
+ ("\\(;-(\\)\\W" 1 "😢")
+ ("\\(:-D\\)\\W" 1 "😀")
+ ("\\(O:-)\\)\\W" 1 "😇")
+ ;; "smile" must be come after "evil"
+ ("\\(\\^?:-?)\\)\\W" 1 "🙂"))
+ "A list of regexps to map smilies to emoji.
+The elements are (REGEXP MATCH EMOJI), where MATCH is the submatch in
+regexp to replace with EMOJI."
+ :version "28.1"
+ :type '(repeat (list regexp
+ (integer :tag "Regexp match number")
+ (string :tag "Emoji")))
+ :set (lambda (symbol value)
+ (set-default symbol value)
+ (smiley-update-cache))
+ :initialize 'custom-initialize-default
+ :group 'smiley)
+
;; The XEmacs version has a baroque, if not rococo, set of these.
(defcustom smiley-regexp-alist
'(("\\(;-)\\)\\W" 1 "blink")
@@ -142,23 +173,25 @@ smiley-cached-regexp-alist
(defun smiley-update-cache ()
(setq smiley-cached-regexp-alist nil)
- (dolist (elt (if (symbolp smiley-regexp-alist)
- (symbol-value smiley-regexp-alist)
- smiley-regexp-alist))
- (let ((types gnus-smiley-file-types)
- file type)
- (while (and (not file)
- (setq type (pop types)))
- (unless (file-exists-p
- (setq file (expand-file-name (concat (nth 2 elt) "." type)
- smiley-data-directory)))
- (setq file nil)))
- (when type
- (let ((image (gnus-create-image file (intern type) nil
- :ascent 'center)))
- (when image
- (push (list (car elt) (cadr elt) image)
- smiley-cached-regexp-alist)))))))
+ (if (eq smiley-style 'emoji)
+ (setq smiley-cached-regexp-alist smiley-emoji-regexp-alist)
+ (dolist (elt (if (symbolp smiley-regexp-alist)
+ (symbol-value smiley-regexp-alist)
+ smiley-regexp-alist))
+ (let ((types gnus-smiley-file-types)
+ file type)
+ (while (and (not file)
+ (setq type (pop types)))
+ (unless (file-exists-p
+ (setq file (expand-file-name (concat (nth 2 elt) "." type)
+ smiley-data-directory)))
+ (setq file nil)))
+ (when type
+ (let ((image (gnus-create-image file (intern type) nil
+ :ascent 'center)))
+ (when image
+ (push (list (car elt) (cadr elt) image)
+ smiley-cached-regexp-alist))))))))
;; Not implemented:
;; (defvar smiley-mouse-map
@@ -190,8 +223,11 @@ smiley-region
(when image
(push image images)
(gnus-add-wash-type 'smiley)
- (gnus-add-image 'smiley image)
- (gnus-put-image image string 'smiley))))
+ (if (symbolp image)
+ (progn
+ (gnus-add-image 'smiley image)
+ (gnus-put-image image string 'smiley))
+ (insert image)))))
images))))
;;;###autoload
--
2.28.0
--
"I'm sorry I sound calm. I assure you that Adam Sjøgren
I am hysterical." asjo@koldfront.dk
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Add new smiley-style emoji to Gnus
2020-10-06 17:22 [PATCH] Add new smiley-style emoji to Gnus Adam Sjøgren
@ 2020-10-07 0:45 ` 황병희
2020-10-07 16:12 ` Eric Abrahamsen
1 sibling, 0 replies; 3+ messages in thread
From: 황병희 @ 2020-10-07 0:45 UTC (permalink / raw)
To: The Gnus
Adam Sjøgren <asjo@koldfront.dk> writes:
> The new smiley-style called emoji takes advantage of the harfbuzz glyph
> rendering to represent smileys as colorful unicode emoji rather than
> images.
Wow! I like this image-like features for Gnus^^^
Thank You Thank You Adam^^^
Sincerely, Gnus fan Byung-Hee
--
^고맙습니다 _地平天成_ 감사합니다_^))//
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Add new smiley-style emoji to Gnus
2020-10-06 17:22 [PATCH] Add new smiley-style emoji to Gnus Adam Sjøgren
2020-10-07 0:45 ` 황병희
@ 2020-10-07 16:12 ` Eric Abrahamsen
1 sibling, 0 replies; 3+ messages in thread
From: Eric Abrahamsen @ 2020-10-07 16:12 UTC (permalink / raw)
To: ding
Adam Sjøgren <asjo@koldfront.dk> writes:
> The new smiley-style called emoji takes advantage of the harfbuzz glyph
> rendering to represent smileys as colorful unicode emoji rather than
> images.
>
> * lisp/gnus/smiley.el (smiley-style): Add emoji
> tag. (smiley-emoji-regexp-alist): New defcustom. (smiley-update-cache,
> smiley-region): Support emoji (non-image) replacement.
> ---
>
> How about an option to use emoji for smileys in Gnus?
I don't know nothing about no emojis -- you should report an Emacs bug
and attach your patch!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-10-07 16:13 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-06 17:22 [PATCH] Add new smiley-style emoji to Gnus Adam Sjøgren
2020-10-07 0:45 ` 황병희
2020-10-07 16:12 ` Eric Abrahamsen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).