From b6b217681a728fefc8a29606bc4fde071020dfa1 Mon Sep 17 00:00:00 2001 From: David Rosa Date: Tue, 14 Mar 2023 19:33:58 -0600 Subject: [PATCH] help: Improve emoji and emoticon documentation. --- help/configure-emoticon-translations.md | 12 +++-- help/custom-emoji.md | 2 +- help/emoji-and-emoticons.md | 51 +++++++++++++------ help/format-your-message-using-markdown.md | 10 +--- help/include/emoji-and-emoticons-examples.md | 9 ++++ help/include/emoji-and-emoticons-intro.md | 15 ++++++ static/images/help/markdown-emoji.png | Bin 2734 -> 10025 bytes 7 files changed, 71 insertions(+), 28 deletions(-) create mode 100644 help/include/emoji-and-emoticons-examples.md create mode 100644 help/include/emoji-and-emoticons-intro.md diff --git a/help/configure-emoticon-translations.md b/help/configure-emoticon-translations.md index d1bacf5b3e..bb2559a125 100644 --- a/help/configure-emoticon-translations.md +++ b/help/configure-emoticon-translations.md @@ -1,6 +1,6 @@ # Configure emoticon translations -If you use emoticons like `:)` or `:/`, you can configure whether to have them +You can configure whether emoticons like `:)` or `:(` will be automatically translated into emoji equivalents like slight_frown -automatically by Zulip. +by Zulip. ## Configure emoticon translations @@ -25,6 +25,12 @@ automatically by Zulip. {end_tabs} -## Current emoticon translations +## List of emoticon translations {emoticon_translations} + +## Related articles + +* [Emoji and emoticons](/help/emoji-and-emoticons) +* [Add custom emoji](/help/custom-emoji) +* [Emoji reactions](/help/emoji-reactions) diff --git a/help/custom-emoji.md b/help/custom-emoji.md index 65ebc439c2..fb97ffcce8 100644 --- a/help/custom-emoji.md +++ b/help/custom-emoji.md @@ -42,7 +42,7 @@ emoji. Using REST API endpoints requires some technical expertise; You can replace a default emoji by adding a custom emoji of the same name. If an emoji has several names, you must use the emoji's primary name to replace it. You can find the primary name of an emoji by hovering over it -in the [emoji picker](/help/emoji-and-emoticons#select-from-the-emoji-picker), +in the [emoji picker](/help/emoji-and-emoticons#select-an-emoji-from-the-emoji-picker), while the search box is empty (you may have to scroll down a bit to find it). ## Deactivate custom emoji diff --git a/help/emoji-and-emoticons.md b/help/emoji-and-emoticons.md index f1200650cb..5c645ab162 100644 --- a/help/emoji-and-emoticons.md +++ b/help/emoji-and-emoticons.md @@ -1,27 +1,34 @@ # Emoji and emoticons -## Add emoji to a message +{!emoji-and-emoticons-intro.md!} -There are several ways to add emoji to a message: typing emoji codes, -selecting from an emoji picker, using emoticons, or pasting from another -site. +!!! tip "" -### Type an emoji code + You can also quickly respond to a message by using [emoji reactions](/help/emoji-reactions). + +## Use an emoji in your message + +### Enter an emoji name {start_tabs} {!start-composing.md!} -1. Type `:` followed by a few letters to open the emoji autocomplete. The - letters don't have to be at the beginning of the emoji name; `:ppl` will - match `:apple:` +1. Type `:`, followed by a few letters from the emoji name, to see autocomplete + suggestions. The letters don't have to be at the beginning of the emoji name. + For example, `:app` will match both `:apple:` and `:pineapple:`. + +1. Type the full emoji name followed by `:`, or select an emoji from the list of + suggestions. {end_tabs} -If you don't know the code for an emoji, you can see what it's called in the -emoji picker, or hover over the emoji in a message. +!!! tip "" -### Select from the emoji picker + You can hover over an emoji in the emoji picker, a message, or an [emoji + reaction](/help/emoji-reactions) to learn its name. + +### Select an emoji from the emoji picker {start_tabs} @@ -35,9 +42,16 @@ emoji picker, or hover over the emoji in a message. {end_tabs} -### Use emoticons +### Use an emoticon -Use `:)` and `:/` instead of typing `:smile:` and `:confused:`. +You can configure Zulip to convert emoticons into emoji, so that, e.g., `:)` +will be displayed as +smile +. {start_tabs} @@ -50,10 +64,14 @@ Use `:)` and `:/` instead of typing `:smile:` and `:confused:`. The list of supported emoticons is available [here](/help/configure-emoticon-translations). -### Paste from another site +### Paste an emoji -Copying and pasting emoji from other sites generally works. -[Contact us](/help/contact-support) if you find a site where it doesn't! +You can paste an emoji copied from outside of Zulip directly into the compose +box. + +## Examples + +{!emoji-and-emoticons-examples.md!} ## Change your emoji set @@ -80,3 +98,4 @@ you send. Zulip emoji are compatible with screen readers and other accessibility * [Add custom emoji](/help/custom-emoji) * [Emoji reactions](/help/emoji-reactions) +* [Configure emoticon translations](/help/configure-emoticon-translations) diff --git a/help/format-your-message-using-markdown.md b/help/format-your-message-using-markdown.md index 0f577769a9..e72e10c967 100644 --- a/help/format-your-message-using-markdown.md +++ b/help/format-your-message-using-markdown.md @@ -82,15 +82,9 @@ whenever you need a reminder of the formatting syntax below. ## Emoji and emoticons -To translate emoticons into emoji, you'll need to -[enable emoticon translations](/help/configure-emoticon-translations). -You can also [add custom emoji](/help/custom-emoji). +{!emoji-and-emoticons-intro.md!} -``` -:octopus: :heart: :zulip: :) -``` - -![Markdown emoji](/static/images/help/markdown-emoji.png) +{!emoji-and-emoticons-examples.md!} ## Mentions diff --git a/help/include/emoji-and-emoticons-examples.md b/help/include/emoji-and-emoticons-examples.md new file mode 100644 index 0000000000..b538d21908 --- /dev/null +++ b/help/include/emoji-and-emoticons-examples.md @@ -0,0 +1,9 @@ +### What you type + +``` +:octopus: :heart: :zulip: :) +``` + +### What it looks like + +![Markdown emoji](/static/images/help/markdown-emoji.png) diff --git a/help/include/emoji-and-emoticons-intro.md b/help/include/emoji-and-emoticons-intro.md new file mode 100644 index 0000000000..c1b2f2d38d --- /dev/null +++ b/help/include/emoji-and-emoticons-intro.md @@ -0,0 +1,15 @@ +There are several ways to use an emoji in your message: + +- [Enter an emoji name](/help/emoji-and-emoticons#enter-an-emoji-name) + surrounded by `:`, with help from autocomplete suggestions. + +- [Select an emoji from the emoji + picker](/help/emoji-and-emoticons#select-an-emoji-from-the-emoji-picker) + +- [Use an emoticon](/help/emoji-and-emoticons#use-an-emoticon) + +- [Paste an emoji](/help/emoji-and-emoticons#paste-an-emoji) + +You can [add custom emoji](/help/custom-emoji) for your organization. Like +default emoji, custom emoji can be entered into the compose box by name, or +selected from the emoji picker. diff --git a/static/images/help/markdown-emoji.png b/static/images/help/markdown-emoji.png index 89208b8e5b622a756317592c8aa7a8e72af224dd..84a27990e0d8b195673f219399b8b85c9ea0f662 100644 GIT binary patch literal 10025 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 literal 2734 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