incapaz
(sjr04)
1
「絵文字ショートカットを有効にする」設定がオンになっていると、:) のような絵文字記号が実際の絵文字(
)に変換されます。ただし、これを単純にバックスラッシュでエスケープ(\\:))することはできません。これはエスケープが機能する他の機能と一貫性がなく、Discord には同様の設定があります。

ただし、Discord では強制されていません。:-) をそのまま表示したい場合は、その前にバックスラッシュを入力するだけで、目的の通り表示されます。
回避するには、間にゼロ幅文字を使用するか、中央の文字を角括弧で囲むなどの方法が必要です(これらはレンダリングされません)。例:
:\u003cg\u003e), :)
これにより、絵文字の書き方に少し自由度を持たせたいユーザーにとって、UX が悪化してしまいます。
「いいね!」 8
sam
(Sam Saffron)
2
これは単なるショートカットではなく、すべて絵文字です。おそらく、先行する \ がある場合に絵文字化を停止するように変更することには反対しません。
つまり:
\:thinking: は \`thinking` および \*thinking* と同等です
は `thinking` および *thinking* と同等です
「いいね!」 5
Roblox の開発者フォーラム(Discourse を採用)にこの件について投稿しましたが、同意します。常に空文字や何かしらの工夫をしないと絵文字が使えないのは少し面倒ですよね。絵文字は投稿を少しプロフェッショナルではなくなる印象を与えますが、時には「:g)」のような絵文字は使いたくても、単純な「:)」は使いたくないという場合もあります。
この仕様が変更されることを願っています(「オープンソースであるため、更新されないかもしれませんね」)。
実は、私も同じ疑問にぶつかったので、このトピックを見つけました(スマイリーをエスケープしようとしたのですが、残念ながら絵文字になってしまい、さらにエスケープ文字まで飲み込んでしまいました…なんて大胆な、あはは)
これについては、バッククォートによる既存の回避策があります。例えば :-) や :) です。さらにコードブロックもあります。同じ目的を達成するために、これ以上の方法が必要だとは思えません。
incapaz
(sjr04)
7
私の言いたいことは、実際の会話で絵文字を使うことについてです。絵文字の前にバックスラッシュがあれば、それを描画せずに絵文字のまま(アスキーアート的な表現として)残すのは単にレンダリングを回避するだけのことではないでしょうか?
`` はインラインコード用です。プログラミングの議論をしていない場合、コードブロックを使うのは意味がありません。仮にプログラミングの議論だとしても、インラインコードは通常、単一行のコードやクラス名・メンバ名などを強調するために使われるものであり、それでも意味をなさないでしょう。
「いいね!」 1
そうではありません。例えば <a> と入力すると、HTML がレンダリングを試みます。そのため、そのような場合はインラインコードブロックを使用するのが一般的な方法です。
すでに解決策があるものを、貴重なエンジニアリングリソースを使って対応する必要があるか、私は少し迷っています。
sam
(Sam Saffron)
9
このissueにPR歓迎のラベルを付けました。15分ほど確認しましたが、簡単な修正はありません。
当社のパーサーはエスケープコードを消費してしまうため、手元に来る頃にはエスケープが存在したかどうかの情報が失われています。
ここで存在する修正策は、markdown.it をハックし、パッチをアップストリームに提出することを伴うでしょう。非常に非常に複雑です… @Vitaly にも cc
https://markdown-it.github.io/ でも同様の問題が発生しています。
アップストリームにチケットを立てることをお勧めしますが、その場合、テキストトークンに「テキストトークンの元の生データ」という注釈を付ける必要があるかもしれません。
このissueの難易度は約95です。
「いいね!」 4
Vitaly
10
このバグは「アンダースコアが自動リンクを壊す」と似たデザイン上の欠点がありますが、特定の回避策が可能かもしれません。何ができるか見てみます。
作成されたissue: Postpone escape info drop · Issue #840 · markdown-it/markdown-it · GitHub
「いいね!」 2
全く同意できません。「:)」は「:\u003cg\u003e)」とは全く同じではありません。
とはいえ、これは時間を無駄にするようなものではないという点には同意します。腹立たしいですが、理解できます。
sam
(Sam Saffron)
12
v13で@Vitalyが修正したようです。v13にアップグレードします。
「いいね!」 2
フォーラムのユーザーがこのフォーマットの問題について苦情を言っていました。ユースケースの修正として絵文字の自動補完を無効にしましたが、Discourse がしばらく前に markdown-it v13 にアップグレードされて以来、問題は持続しているようです。一方、バックスラッシュエスケープは https://markdown-it.github.io/ で機能するようになりました。
これは、Ember.js が Multisite build error: #<MiniRacer::RuntimeError: Error: Parser rule not found: fragments_join> - #6 by david で示されているように、markdown v12 にまだ依存しているためでしょうか?
sam
(Sam Saffron)
14
確認したところ、現在13です。@david さん、問題は残っています。
david
(David Taylor)
15
独自の絵文字実装があるようです。markdown-it のものは使用していません。
(ショートカットはこちらで定義され、こちらで参照されています。置換ロジックはこちらにあります。)
「いいね!」 3
sam
(Sam Saffron)
16
まあ、これはかなり簡単に修正できるはずです(有名な最後の言葉ですが)。