Включение настройки ярлыков эмодзи должно позволять экранирование обратными слэшами

Когда включена настройка включить сокращения для эмодзи, такие смайлики, как :), преобразуются в настоящие эмодзи (:slight_smile:). Однако обойти это простым обратным слэшем перед ними (\:)) нельзя. Это противоречит поведению других элементов, где экранирование работает, и в Discord есть аналогичная настройка:

image

Однако она не является принудительной — если я хочу увидеть :-) в исходном виде, я просто ставлю перед ним обратный слэш и получаю то, что хочу.

Чтобы обойти это, нужно использовать, например, символ нулевой ширины между символами или обернуть букву в угловые скобки посередине, так как они не отображаются и т. д., например:

:<g>), :​)

что создаёт плохой пользовательский опыт для тех, кто хочет большей свободы в написании эмодзи.

8 лайков

Это не просто сокращения, это все эмодзи. Я думаю, я не против изменить это, чтобы мы перестали использовать эмодзи, если перед ними есть \

Итак:

\:thinking: имеет паритет с \`thinking` и \*thinking*

:thinking: имеет паритет с `thinking` и *thinking*

5 лайков

Я написал об этом пост на форуме разработчиков Roblox, который использует Discourse, и я согласен: постоянно использовать пустые символы или что-то ещё, чтобы не использовать эмодзи, довольно раздражает. Эмодзи обычно делают ваш пост немного менее профессиональным, а иногда вы хотите поставить небольшую улыбку :), но не обычную :slight_smile:

Надеюсь, это изменят. («Наверное, это не обновится, так как проект с открытым исходным кодом и всё такое»)

На самом деле я наткнулся на эту тему, потому что сам столкнулся с этой проблемой (пытался экранировать смайлик, но увы, он превратился в эмодзи И поглотил мой экранирующий символ… Какая наглость, ахаха)

У нас уже есть обходной путь для этого в виде обратных кавычек, например, :-) и :) .. плюс блоки кода .. не совсем понятно, зачем нам нужны ещё какие-то методы для достижения той же цели?

Моя мысль касалась использования эмодзи в реальном общении: разве не достаточно просто не рендерить эмодзи, оставляя их как эмотики, если перед ними стоит обратный слэш?

`` предназначены для встроенного кода; если вы не ведете обсуждение программирования, использование блоков кода не имеет смысла. Даже если бы это было так, это всё равно не имело бы смысла, поскольку встроенный код обычно используется для выделения одной строки кода или имен классов/членов и тому подобного.

1 лайк

Не совсем — HTML попытается отрендерить, если вы, например, введете <a>. Поэтому для отображения таких элементов следует использовать встроенные блоки кода.

Просто не уверен, что стоит тратить ценное время инженеров на то, с чем мы уже умеем справляться.

Я пометил это как приветствующее PR, посмотрел на это 15 минут — тривиального исправления нет.

Наш парсер «съедает» escape-код, и к моменту, когда он у нас появляется, мы уже не знаем, что он там был.

Любое возможное исправление здесь потребует взлома markdown.it и отправки патча в основной репозиторий. Очень-очень сложно… cc @Vitaly

Та же проблема на https://markdown-it.github.io/

Рекомендую открыть тикет в основном репозитории, хотя это может означать, что нам нужно будет аннотировать текстовые токены как «оригинальный сырой текст для текстового токена».

Сложность задачи здесь — около 95.

4 лайка

Эта ошибка имеет схожий недостаток в дизайне, как и «нижние подчёркивания могут разрывать автоссылки», но, возможно, для неё существует специфичное решение. Я изучу, что можно сделать.

Создан issue: Postpone escape info drop · Issue #840 · markdown-it/markdown-it · GitHub

2 лайка

Я категорически не согласен. “:)” — это просто не то же самое, что “:”.

Тем не менее, я согласен, что это не стоит тратить время и деньги. Раздражает, но понятно.

Похоже, что @Vitaly исправил это в версии v13, мы обновимся до неё

2 лайка

Пользователь в моём форуме пожаловался на проблему с форматированием. Я отключил автодополнение эмодзи как решение для нашего случая, но после обновления Discourse до markdown-it v13 некоторое время назад проблема, похоже, сохранилась, тогда как экранирование обратным слэшем теперь работает на https://markdown-it.github.io/

Может ли это быть связано с тем, что ember.js всё ещё полагается на markdown v12, как указано здесь?

Насколько я знаю, сейчас у нас версия 13… cc @david, проблема сохраняется.

Похоже, у нас есть собственная реализация эмодзи — мы не используем вариант от markdown-it.

(сокращения определены здесь, ссылаются на них здесь. Логика замены находится здесь)

3 лайка

О, значит, это должно быть довольно просто исправить (последние слова знаменитостей)

Я уже приступаю к работе над этим. :slight_smile:

Редактирование: Это может оказаться сложнее, чем я думал. :upside_down_face:

2 лайка