unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: "Daniel Martín via Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 52605@debbugs.gnu.org
Subject: bug#52605: [PATCH] Add isearch-emoji-by-name
Date: Sun, 19 Dec 2021 01:48:31 +0100	[thread overview]
Message-ID: <m1czltv2qo.fsf@yahoo.es> (raw)
In-Reply-To: <83lf0hag05.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 18 Dec 2021 21:07:38 +0200")

[-- Attachment #1: Type: text/plain, Size: 1552 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> +@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.
>
> This should explain what kind of "emoji names" the feature accepts.
> It is entirely unclear from the text.
>
>> +*** 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.
>
> Likewise here.  The NEWS entry doesn't even mention that Emoji are
> specified by their names.
>
>> +(defun isearch-emoji-by-name (&optional count)
>> +  "Read an Emoji and add it to the search string.
>
>   "Read and Emoji name and add it to the search string."
>
> Likewise here, the doc string should clarify what kind of names are
> acceptable.  I would also mention that completion is provided while
> typing the name.

If I'm not mistaken, what the new emoji-search command accepts is
technically the CLDR short name of an Emoji.  As the term is a bit
obscure, I've added a few examples to the documentation.  I've also
updated the prompt in emoji-search, so now it explains in parenthesis
what you can type, in a similar way as classic 'C-x 8 RET'.

That is, 'C-x 8 RET' prompts with:

  Insert character (Unicode name or hex):

And now 'C-x 8 e s' prompts with:

  Insert emoji (CLDR short name):

Attached a new patch, I'm not sure if that's what you asked for.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Add-isearch-emoji-by-name.patch --]
[-- Type: text/x-patch, Size: 4971 bytes --]

From bee4f93018a15202769938f112bf76ecc8bfcd53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Mart=C3=ADn?= <mardani29@yahoo.es>
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. (Bug#52605)
(isearch-mode-map): Bind it to 'C-x 8 e RET'.
(isearch-menu-bar-map): Add it to the menu bar.
* lisp/international/emoji.el (emoji--choose-emoji): Expand the prompt
to say that the CLDR short name of an Emoji is expected.
* doc/emacs/search.texi (Special Isearch): Update the documentation to
mention the new command.
* etc/NEWS: And advertise it.
---
 doc/emacs/search.texi       |  8 ++++++++
 etc/NEWS                    |  7 +++++++
 lisp/international/emoji.el |  6 ++++--
 lisp/isearch.el             | 21 +++++++++++++++++++++
 4 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index fbbb1f6e68..6c15c33e21 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -443,6 +443,14 @@ 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 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
diff --git a/etc/NEWS b/etc/NEWS
index e3665b918a..b76de35958 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -341,6 +341,13 @@ 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.  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.
diff --git a/lisp/international/emoji.el b/lisp/international/emoji.el
index a4dec973fb..9d87c4febd 100644
--- a/lisp/international/emoji.el
+++ b/lisp/international/emoji.el
@@ -88,7 +88,9 @@ emoji-recent
 
 ;;;###autoload
 (defun emoji-search ()
-  "Choose and insert an emoji glyph by searching for an emoji name."
+  "Choose and insert an emoji glyph by searching for an emoji name.
+The command accepts CLDR short names like 'smiling face' or
+'heart with arrow' and completion is available."
   (interactive "*")
   (emoji--init)
   (emoji--choose-emoji))
@@ -612,7 +614,7 @@ emoji--choose-emoji
   ;; Use the list of names.
   (let ((name
          (completing-read
-          "Insert emoji: "
+          "Insert emoji (CLDR short name): "
           (lambda (string pred action)
 	    (if (eq action 'metadata)
 		(list 'metadata
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 8815cb4f2d..af4130a75e 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,24 @@ isearch-char-by-name
 					   (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
-- 
2.31.0


  reply	other threads:[~2021-12-19  0:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <m135mpyc8p.fsf.ref@yahoo.es>
2021-12-18 18:55 ` bug#52605: [PATCH] Add isearch-emoji-by-name Daniel Martín via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-12-18 19:07   ` Eli Zaretskii
2021-12-19  0:48     ` Daniel Martín via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2021-12-19  6:53       ` Eli Zaretskii
2021-12-19 11:47         ` Daniel Martín via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-12-19 11:10   ` Lars Ingebrigtsen
2022-01-09 21:56     ` Daniel Martín via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-01-10  8:07       ` Juri Linkov
2022-01-10 22:44         ` Daniel Martín via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-01-12  6:02           ` Lars Ingebrigtsen
2022-01-12 17:50             ` Juri Linkov
2022-01-13  6:05               ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m1czltv2qo.fsf@yahoo.es \
    --to=bug-gnu-emacs@gnu.org \
    --cc=52605@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=mardani29@yahoo.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).