Configuração de atalhos de emoji deve permitir escape com barras invertidas

Quando a configuração ativar atalhos de emoji está habilitada, emoticons como :) são convertidos em emojis reais (:slight_smile:). No entanto, isso não pode ser contornado simplesmente colocando uma barra invertida antes (\:)). Isso é inconsistente com outras situações onde o escape funciona, e no Discord, você tem uma configuração semelhante:

image

No entanto, não é obrigatório — se eu quiser :-) cru, basta digitar uma barra invertida antes dele, e obtenho o que desejo.

Para contornar isso, é necessário usar algo como um caractere de largura zero no meio, ou envolver uma letra entre colchetes angulares no meio, já que eles não são renderizados, etc. Ou seja:

:<g>), :​)

o que causa uma experiência ruim para usuários que desejam um pouco mais de liberdade na forma como escrevem emojis.

8 curtidas

Isso não são apenas atalhos, são todos emojis. Acredito que não sou contra mudá-lo para que paremos de usar emojis se tivermos uma barra invertida antes.

Então:

\:thinking: tem equivalência com \`thinking` e \*thinking*

:thinking: tem equivalência com `thinking` e *thinking*

5 curtidas

Fiz um post sobre isso no fórum de desenvolvedores do Roblox, que usa o Discourse, e concordo: ter que sempre usar caracteres vazios, ou qualquer coisa, para NÃO usar um emoji é meio chato; Emojis geralmente deixam seu post um pouco menos profissional, e às vezes você quer um pouco de :) mas não quer um :slight_smile:

Espero que isso seja alterado (“Acho que não seria atualizado, já que é de código aberto e tudo mais;”)

Na verdade, encontrei esse tópico porque acabei me deparando com essa mesma dúvida (tentei escapar de um smiley, mas, infelizmente, ele virou um emoji E engoliu meu caractere de escape… a audácia, ahah)

Já temos uma solução alternativa para isso em aspas invertidas, por exemplo, :-) e :) .. além de blocos de código .. não temos certeza se precisamos de ainda mais métodos para alcançar o mesmo objetivo?

Meu ponto era mais sobre o uso de emojis em conversas reais, e não seria apenas uma questão de não renderizar o emoji, mantendo-o como um emoticon se houver uma barra invertida antes dele?

`` são para código em linha; se você não estiver tendo uma discussão sobre programação, usar blocos de código não faz sentido. Mesmo que fosse, ainda não faria sentido, pois códigos em linha são geralmente usados para destacar uma única linha de código ou para destacar nomes de classes/membros e coisas do tipo.

1 curtida

Não exatamente — o HTML tentará renderizar se você digitar <a>, por exemplo. Portanto, blocos de código inline são a maneira esperada de renderizar isso.

Só não tenho certeza se quero gastar tempo valioso de engenharia em algo que já temos uma maneira de lidar.

Estou marcando este PR como ‘bem-vindo’. Dedi 15 minutos a isso e não há uma correção trivial.

Nosso parser consome o código de escape, então, quando o recebemos, não temos mais ideia de que o escape estava lá.

Qualquer correção que exista aqui envolverá modificar o markdown.it e enviar um patch a montante. Muito, muito complicado… cc @Vitaly

O mesmo problema ocorre em https://markdown-it.github.io/

Recomendo abrir um ticket a montante, embora isso possa significar que precisemos anotar os tokens de texto com o “texto bruto original para o token de texto”.

O nível de dificuldade disso é cerca de 95.

4 curtidas

Este bug tem o mesmo problema de design semelhante a “underscores can break autolinks”, mas pode ser um “kludge” específico possível. Vou dar uma olhada no que pode ser feito.

Issue criada: Postpone escape info drop · Issue #840 · markdown-it/markdown-it · GitHub

2 curtidas

Discordo veementemente. “:)” simplesmente não é o mesmo que “:\u003cg\u003e)”.

Ainda assim, concordo que isso não é algo para se desperdiçar tempo/dinheiro. Irritante, mas compreensível.

Parece que @Vitaly corrigiu na v13, vamos atualizar para ela

2 curtidas

Um usuário no meu fórum reclamou sobre esse problema de formatação. Desabilitei o autocompletar de emoji como correção para o nosso caso de uso, mas como o Discourse foi atualizado para o markdown-it v13 há algum tempo, o problema parece persistir, enquanto a barra invertida agora funciona em https://markdown-it.github.io/\n\nIsso poderia ser porque o ember.js ainda está dependendo do markdown v12, como indicado aqui? \nMultisite build error: #<MiniRacer::RuntimeError: Error: Parser rule not found: fragments_join> - #6 by david

Estamos na 13 agora, pelo que sei… cc @david e o problema persiste.

Parece que temos nossa própria implementação de Emoji - não usamos a do markdown-it.

(atalhos definidos aqui, referenciados aqui. A lógica de substituição está aqui)

3 curtidas

Ah, então isso deve ser bem simples de consertar (famosas últimas palavras)

Estou começando a trabalhar nisso agora. :slight_smile:

Editar: Isso pode ser mais difícil do que eu pensava. :upside_down_face:

2 curtidas