多行选择不包含硬换行时使用的内联“预格式化文本”格式

优先级/严重性:

平台

操作系统

Windows 11

浏览器

Google Chrome 141.0.7390.123

Discourse

ad36231adab58a8a249bfe8139aade2bde2134d3

描述:

“预格式化文本”格式有两种样式:

  • 行内:用于在文本段落中使用非文本内容(例如,“调用 foo 函数”),或单行非文本内容。
  • 块:用于多行非文本内容。

用户在作曲家中使用格式时,可以选择以下两种方法之一:

  • 主动:在添加要格式化的内容之前切换格式模式。
  • 被动:以未格式化的形式添加内容,然后选择该内容并应用格式。

:bug: 在以下条件下,将“预格式化文本”格式应用于多行选择会使用不当的“行内”样式:

  • 作曲家处于“富文本编辑器”模式。
  • 格式被动应用。
  • 所选内容中不存在硬换行符。

这导致帖子难以阅读,并且非文本内容难以复制(这是共享代码的常见要求)。

可复现步骤:

  1. 打开作曲家。
  2. 将编辑器模式开关置于“富文本编辑器”位置。
  3. 在作曲家中键入 foo
  4. 按下 Shift+Enter 键盘快捷键添加“软换行”。
  5. 在作曲家中键入 bar
    :red_exclamation_mark: 不要添加换行符。
  6. 按下 Ctrl+Shift+Home 键盘快捷键,从第二行的末尾到帖子的开头选择所有内容。
  7. 点击作曲家工具栏上的 </> 按钮。

:bug: 所选的每一行都以行内样式单独格式化:

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

手动选择时似乎也不会发生这种情况。

你好 @NateDhaliwal。你说的“手动选择”是什么意思?

你是指用鼠标刮擦进行选择吗?如果是这样,该故障在使用该选择方法时仍然存在:

manual-select

或者使用 Shift 箭头键?如果是这样,该故障在使用该选择方法时仍然存在:

manual-select2

我不确定这一点,这是一个故意的例外,因为在这种情况下,你仍然有一个带有换行的单个段落,并且在这种情况下应该可以添加内联代码标记。

我们甚至可以考虑更改此行为,但这并不是一个真正的错误。/cc @lindsey

1 个赞

是的,在富文本和 Markdown 模式之间保持一致对我来说很有意义。

1 个赞