優先度/重大度:
中
プラットフォーム
オペレーティングシステム
Windows 11
ブラウザ
Google Chrome 141.0.7390.123
Discourse
ad36231adab58a8a249bfe8139aade2bde2134d3
説明:
「整形済みテキスト」フォーマットには2つのスタイルがあります。
- インライン:文章の途中に含まれる本文以外のコンテンツ(例:「
foo関数を呼び出す」)や、本文以外の短い1行に使用します。 - ブロック:複数行の本文以外のコンテンツに使用します。
コンポーザーでフォーマットを適用する際に、ユーザーは次のいずれかのアプローチを取ることができます。
- プロアクティブ:フォーマットするコンテンツを追加する前にフォーマットモードを切り替えます。
- レトロアクティブ:コンテンツをフォーマットされていない状態で追加し、その後選択してフォーマットを適用します。
複数行の選択範囲に「整形済みテキスト」フォーマットを適用すると、以下の条件下で不適切な「インライン」スタイルが使用されます。
- コンポーザーが「リッチテキストエディター」モードの場合
- フォーマットがレトロアクティブに適用される場合
- 選択したコンテンツにハード改行が含まれていない場合
これにより、投稿が読みにくくなり、本文以外のコンテンツ(コードの共有など、よくある要件)のコピーが困難になります。
再現手順:
- コンポーザーを開きます。
- エディターモードスイッチを「リッチテキストエディター」の位置に設定します。
- コンポーザーに
fooと入力します。 - 「ソフトブレーク」を追加するために、Shift+Enter キーボードショートカットを押します。
- コンポーザーに
barと入力します。
改行は追加しないでください。 - 2行目の終わりから投稿の開始まで、すべてのコンテンツを選択するために、Ctrl+Shift+Home キーボードショートカットを押します。
- コンポーザーのツールバーにある </> ボタンをクリックします。
選択された各行は、インラインスタイルで個別にフォーマットされました。
foo
bar
正しい動作は、コンテンツを単一のコードブロックに入れることでした。
foo
bar
追加コンテキスト
デモのためにコンテンツを手動で入力するアプローチを選択したのは、コピー元のコンテンツによってフォーマットが異なるという、不必要な複雑さを考慮しないようにするためです。ただし、このバグは貼り付けたコンテンツでも発生し、ハードブレークを含まないコンテンツの条件は、そのようなコンテンツで発生する可能性が高くなります(ユーザーはハードブレークを意図していなくても、入力中にEnter を使用する可能性が高いため)。
「すべて選択」/Ctrl+A を使用してコンテンツを選択した場合、このバグは発生しません。
Markdownエディターでは、「整形済みテキスト」フォーマットが複数行の選択範囲にレトロアクティブに適用される場合、常に選択したコンテンツをコードブロックに配置するという正しい動作をします。
try.discourse.org の「セーフモード」でバグを再現できます。
元々は Why did the Forum functions change? - #37 by sterretje - Website and Forum - Arduino Forum で報告されました。

