]> git.eshelyaron.com Git - emacs.git/commitdiff
Add isearch-emoji-by-name
authorDaniel Martín <mardani29@yahoo.es>
Wed, 12 Jan 2022 17:43:15 +0000 (19:43 +0200)
committerJuri Linkov <juri@linkov.net>
Wed, 12 Jan 2022 17:49:50 +0000 (19:49 +0200)
* lisp/isearch.el (isearch-emoji-by-name): Add a new command to insert
Emoji characters into incremental search strings. (Bug#52605)
(isearch-mode-map): Bind it to 'C-x 8 e RET'.
(isearch-menu-bar-map): Add it to the menu bar.
* doc/emacs/search.texi (Special Isearch): Update the documentation to
mention the new command.
* etc/NEWS: And advertise it.

doc/emacs/search.texi
etc/NEWS
lisp/isearch.el

index c12992c239a1ebcfd9c8f36c9eb714a971bd3087..e29c2c91af4904647cf2a9cdf1be64ce95a09c28 100644 (file)
@@ -443,6 +443,14 @@ a Unicode name or code-point in hex.  This adds the specified
 character into the search string, similar to the usual
 @code{insert-char} command (@pxref{Inserting Text}).
 
+@item
+@findex isearch-emoji-by-name
+@kindex C-x 8 e RET @r{(Incremental Search)}
+Type @kbd{C-x 8 e @key{RET}} (@code{isearch-emoji-by-name}), followed
+by the CLDR short name of an Emoji (for example, @samp{smiling face}
+or @samp{heart with arrow}).  This adds the specified Emoji into the
+search string.
+
 @item
 @kindex C-^ @r{(Incremental Search)}
 @findex isearch-toggle-input-method
index 9ad8354d119b4a8e775dbd9eb69762d048b1bdbf..04b22dbd511bc848da2010f20fca2f16021a35f7 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -392,6 +392,13 @@ the *Completions* buffer.
 +++
 *** New user option 'char-fold-override' disables default character equivalences.
 
++++
+*** New command 'isearch-emoji-by-name'.
+It is bound to 'C-x 8 e RET' during an incremental search.  The
+command accepts the CLDR short name of an Emoji (for example, "smiling
+face" or "heart with arrow"), with minibuffer completion, and inserts
+the Emoji character into the search string.
+
 ** New minor mode 'glyphless-display-mode'.
 This allows an easy way to toggle seeing all glyphless characters in
 the current buffer.
index 7593a0ec980eee2da4d03a91efbda3246d3af789..5bb11aab839a28bacbcbd207d8e1c41562e8023b 100644 (file)
@@ -668,6 +668,7 @@ This is like `describe-bindings', but displays only Isearch keys."
     ;; The key translations defined in the C-x 8 prefix should add
     ;; characters to the search string.  See iso-transl.el.
     (define-key map "\C-x8\r" 'isearch-char-by-name)
+    (define-key map "\C-x8e\r" 'isearch-emoji-by-name)
     map)
   "Keymap for `isearch-mode'.")
 
@@ -758,6 +759,8 @@ This is like `describe-bindings', but displays only Isearch keys."
      :help "Search for literal char"]
     ["Search for char by name" isearch-char-by-name
      :help "Search for character by name"]
+    ["Search for Emoji by name" isearch-emoji-by-name
+     :help "Search for Emoji by name"]
     "---"
     ["Toggle input method" isearch-toggle-input-method
      :help "Toggle input method for search"]
@@ -2747,6 +2750,24 @@ With argument, add COUNT copies of the character."
                                           (mapconcat 'isearch-text-char-description
                                                      string ""))))))))
 
+(defun isearch-emoji-by-name (&optional count)
+  "Read an Emoji name and add it to the search string.
+The command accepts CLDR short names like 'smiling face' or
+'heart with arrow' and completion is available.  With argument,
+add COUNT copies of the Emoji."
+  (interactive "p")
+  (with-isearch-suspended
+   (let ((emoji (with-temp-buffer
+                  (emoji-search)
+                  (if (and (integerp count) (> count 1))
+                      (apply 'concat (make-list count (buffer-string)))
+                    (buffer-string)))))
+     (when emoji
+       (setq isearch-new-string (concat isearch-string emoji)
+             isearch-new-message (concat isearch-message
+                                          (mapconcat 'isearch-text-char-description
+                                                     emoji "")))))))
+
 (defun isearch-search-and-update ()
   "Do the search and update the display."
   (when (or isearch-success