From a899d6199d27ffefd01b764da9c7f37bb11466f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=ADn?= Date: Sat, 18 Dec 2021 19:29:50 +0100 Subject: [PATCH] Add isearch-emoji-by-name * lisp/isearch.el (isearch-emoji-by-name): Add a new command to insert Emoji characters into incremental search strings. (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 | 7 +++++++ etc/NEWS | 5 +++++ lisp/isearch.el | 19 +++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index fbbb1f6e68..59f6551815 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -443,6 +443,13 @@ Special Isearch 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 name of an Emoji. This adds the specified Emoji into the +search string. + @item @kindex C-^ @r{(Incremental Search)} @findex isearch-toggle-input-method diff --git a/etc/NEWS b/etc/NEWS index e3665b918a..07f498dab3 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -341,6 +341,11 @@ received. *** New user option 'char-fold-override' omits the default character-folding. ++++ +*** New command 'isearch-emoji-by-name'. +It is bound to 'C-x 8 e RET' during an incremental search and it +inserts an 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. diff --git a/lisp/isearch.el b/lisp/isearch.el index 8815cb4f2d..18ef101fc0 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -668,6 +668,7 @@ isearch-mode-map ;; 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 @@ isearch-menu-bar-map :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,22 @@ isearch-char-by-name (mapconcat 'isearch-text-char-description string "")))))))) +(defun isearch-emoji-by-name (&optional count) + "Read an Emoji and add it to the search string. +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 -- 2.31.0