]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new commands to zoom emojis
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 30 Jun 2022 08:46:59 +0000 (10:46 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 30 Jun 2022 08:47:44 +0000 (10:47 +0200)
* lisp/international/emoji.el (emoji-zoom-map)
(emoji-zoom-increase, emoji-zoom-decrease): New commands.

* lisp/international/mule-cmds.el (ctl-x-map): Bind them.

etc/NEWS
lisp/international/emoji.el
lisp/international/mule-cmds.el

index ce325420289b67070539cad0e1df7a06f836ebfd..14747eaf92ee1f86c3129243b1b2be140eb4f348 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -607,6 +607,11 @@ inserted.
 This command will tell you the name of the Emoji at point.  (This
 command also works for non-Emoji characters.)
 
+---
+*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'.
+These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively.  They
+can be used on any character, but are mainly useful for emoji.
+
 ---
 *** New input method 'emoji'.
 This allows you to enter emoji using short strings, eg ':face_palm:'
index 8970a466b7c5c5ee83a491d2b03e370f1f277211..6a65bc43dc738b86933f9d23006ccd3abd2b260d 100644 (file)
@@ -700,6 +700,46 @@ We prefer the earliest unique letter."
              (emoji--define-transient
               (cons "Choose Emoji" (cons glyph derived))))))))))
 
+(defvar-keymap emoji-zoom-map
+  "+" #'emoji-zoom-increase
+  "-" #'emoji-zoom-decrease)
+
+;;;###autoload
+(defun emoji-zoom-increase (&optional factor)
+  "Increase the size of the character under point.
+FACTOR is the multiplication factor for the size.
+
+This command will be repeatable if `repeat-mode' is switched on."
+  (interactive)
+  (let* ((factor (or factor 1.1))
+         (old (get-text-property (point) 'face))
+         (height (or (and (consp old)
+                          (plist-get old :height))
+                     1.0))
+         (inhibit-read-only t))
+    (with-silent-modifications
+      (if (consp old)
+          (add-text-properties
+           (point) (1+ (point))
+           (list 'face (plist-put (copy-sequence old) :height (* height factor))
+                 'rear-nonsticky t))
+        (add-face-text-property (point) (1+ (point))
+                                (list :height (* height factor)))
+        (put-text-property (point) (1+ (point))
+                           'rear-nonsticky t)))))
+
+(put 'emoji-zoom-increase 'repeat-map 'emoji-zoom-map)
+
+;;;###autoload
+(defun emoji-zoom-decrease ()
+  "Decrease the size of the character under point.
+
+This command will be repeatable if `repeat-mode' is switched on."
+  (interactive)
+  (emoji-zoom-increase 0.9))
+
+(put 'emoji-zoom-decrease 'repeat-map 'emoji-zoom-map)
+
 (provide 'emoji)
 
 ;;; emoji.el ends here
index 27defef6480cd60f9c866756eb42b3603010c8dd..48c8d2b0818b06b6dfbf8b99e50aa63e15b4ff7f 100644 (file)
@@ -3257,7 +3257,9 @@ as names, not numbers."
               "s" #'emoji-search
               "d" #'emoji-describe
               "r" #'emoji-recent
-              "l" #'emoji-list))
+              "l" #'emoji-list
+              "+" #'emoji-zoom-increase
+              "-" #'emoji-zoom-decrease))
 
 (defface confusingly-reordered
   '((((supports :underline (:style wave)))