Formatação de texto "pré-formatado" em linha usada quando a seleção de várias linhas não contém quebra de linha

Prioridade/Gravidade:

Média

Plataforma

Sistema Operacional

Windows 11

Navegador

Google Chrome 141.0.7390.123

Discourse

ad36231adab58a8a249bfe8139aade2bde2134d3

Descrição:

Existem dois estilos de formatação de “texto pré-formatado”:

  • Em linha: para uso com conteúdo que não seja prosa dentro de uma passagem de prosa (por exemplo, “chame a função foo”), ou uma única linha curta de conteúdo que não seja prosa.
  • Bloco: para uso com várias linhas de conteúdo que não seja prosa.

O usuário pode adotar uma das duas abordagens para aplicar a formatação ao usar o composer:

  • Proativa: o modo de formatação é alternado antes de adicionar o conteúdo a ser formatado.
  • Retroativa: o conteúdo é adicionado em forma não formatada, depois selecionado e a formatação é aplicada a essa seleção.

:bug: Aplicar formatação de “texto pré-formatado” a uma seleção de várias linhas usa o estilo “em linha” inadequado nas seguintes condições:

  • O composer está no modo “editor de rich text”.
  • A formatação é aplicada retroativamente.
  • Uma quebra de linha rígida não está presente no conteúdo selecionado.

Isso resulta em uma postagem difícil de ler e no conteúdo que não é prosa difícil de copiar (um requisito comum para código compartilhado).

Passos para Reproduzir:

  1. Abra o composer.
  2. Coloque o switch do modo do editor na posição “editor de rich text”.
  3. Digite foo no composer.
  4. Pressione o atalho de teclado Shift+Enter para adicionar uma “quebra de linha suave”.
  5. Digite bar no composer.
    :red_exclamation_mark: Não adicione uma quebra de linha.
  6. Pressione o atalho de teclado Ctrl+Shift+Home para selecionar todo o conteúdo da linha 2 até o início da postagem.
  7. Clique no botão </> na barra de ferramentas do composer.

:bug: Cada uma das linhas selecionadas foi formatada individualmente no estilo em linha:

foo
bar

O comportamento correto teria sido colocar o conteúdo em um único bloco de código:

foo
bar

Contexto Adicional

Escolhi a abordagem de inserir manualmente o conteúdo para a demonstração, a fim de evitar a complicação desnecessária de considerar a formatação que pode estar presente no conteúdo copiado, dependendo da fonte de onde é copiado. No entanto, a falha também ocorre com conteúdo colado e as condições de conteúdo não conter uma quebra de linha serão mais prováveis de ocorrer com tal conteúdo (já que o usuário provavelmente usará Enter ao digitar, mesmo que não quisesse realmente uma quebra de linha).


A falha não ocorre se você usar “Selecionar Tudo” / Ctrl+A para selecionar o conteúdo.


O editor Markdown tem o comportamento correto de sempre colocar o conteúdo selecionado em um bloco de código quando a formatação de “texto pré-formatado” é aplicada retroativamente a uma seleção de várias linhas.


Consigo reproduzir a falha em try.discourse.org no “modo seguro”.


Originalmente relatado em Why did the Forum functions change? - #37 by sterretje - Website and Forum - Arduino Forum

Parece que não acontece ao selecionar manualmente também.

Olá @NateDhaliwal. O que você quer dizer com “selecionando manualmente”?

Você está se referindo a selecionar raspando com o mouse? Se sim, a falha ainda ocorre com esse método de seleção:

manual-select

Ou com a tecla de seta \u003ckbd\u003eShift\u003c/kbd\u003e? Se sim, a falha ainda ocorre com esse método de seleção:

manual-select2

Não tenho certeza sobre isso, esta foi uma exceção intencional, porque você ainda tem um único parágrafo com uma quebra de linha neste caso, e a adição de marcação de código inline deve ser possível nesta situação.

Podemos até considerar uma mudança nesse comportamento, mas não é realmente um bug. /cc @lindsey

1 curtida

Sim, ser consistente entre os modos de texto rico e Markdown faz sentido para mim.

1 curtida