Olá a todos!
Neste tópico, farei referência a outros tópicos, mas acredito que descreverei um problema maior do que os outros relatórios mencionados.
Meu ambiente de teste
- SO: MacOS 15.6.1
- Navegador: Google Chrome 139.0.7258.140 (Build oficial) (arm64)
A observação original
Notei que o editor Rich Text no composer frequentemente quebra blocos de código. Os usuários começaram a postar seus códigos e logs em uma única linha, e eu pensei que eles cometeram um erro ao copiar seu conteúdo para o composer. Não havia caracteres de espaço em branco entre as linhas postadas, não apenas as quebras de linha.
Às vezes, os usuários postavam vários códigos de linha única, perdendo a indentação em um YAML. Às vezes, era um código multilinha destacado como uma única linha, às vezes era uma única linha em um bloco de código. Isso acontecia com muita frequência, então testei o modo Rich Text ontem, mas esperei para relatar. Hoje, não consegui reproduzir esse problema, mas encontrei outra maneira no editor Rich Text de quebrar as quebras de linha no código.
Não tinha certeza se era um bug, então discuti o problema com nossos moderadores, esperando a confirmação de que o bug foi corrigido. Então, descobriu-se que nem sequer encontramos o mesmo comportamento, mas todos os problemas estavam relacionados a espaços em branco. Exceto que não consegui reproduzir o problema mencionado por outro moderador, mas percebi que foi porque ele copiou o texto de um editor de código ou terminal, e eu copiei do meu próprio bloco de código anterior do fórum, então o problema de espaço em branco veio de forma diferente.
Diferentes maneiras de quebrar os espaços em branco em blocos de código
Primeira maneira
- Copie uma saída de um terminal
- Cole a saída no composer no modo Rich Text como este (parte da saída de
runcsem argumentos)COMMANDS: checkpoint checkpoint a running container create create a container delete delete any resources held by the container often used with detached - Você verá uma saída multilinha, mas a indentação é removida
- Agora perceba que você quer um bloco de código e o transforme em um, selecionando o texto e clicando no botão Código.
- Agora o código está um pouco estranho, porque parece código, mas não como um bloco de código. Mude para markdown para ver por quê e note isto:
`COMMANDS:` `checkpoint checkpoint a running container` `create create a container` `delete delete any resources held by the container often used with detached container` - Como você pode ver acima, cada linha do texto se tornou um código de linha única.
(Obrigado @per1234 por vincular o relatório de bug relacionado abaixo Rich Text editor in topics breaks white-space characters in multiple ways - #2 by per1234)
Copie um código de outro tópico ou de outra postagem no mesmo tópico
Tópico existente que encontrei: `white-space` CSS property of clipboard data not respected when pasting in rich text editor
Claro, esta não é a maneira correta de copiar no Discourse, pois você tem um botão “Citar” para textos selecionados que geralmente funciona com partes de um bloco de código também, e você também tem um botão de cópia no canto de cada bloco de código, mas foi assim que notei o problema, e o botão de cópia também não funcionou.
- Copie um código multilinha de uma página HTML
- Cole-o no composer no modo Rich Text
- Note que as quebras de linha sumiram
- Neste ponto, você pode pensar que é apenas em HTML, então o transforme em código
- As quebras de linha não voltaram
Use o botão Copiar no canto superior direito de um bloco de código em outra postagem
- Mova o ponteiro do mouse sobre um bloco de código existente
- Note que o pequeno botão “Copiar” apareceu no canto superior direito
- Clique nesse botão para copiar o código
- Cole-o no composer no modo Rich Text
- As quebras de linha são mantidas, mas a indentação desaparece da mesma forma que aconteceu ao copiar diretamente do HTML.
- Transforme-o em um bloco de código e obtenha vários códigos de linha única sem indentação
Problema provavelmente corrigido que aconteceu ao voltar para MarkDown
- Escreva um bloco de código no editor Rich Text
- Veja um bloco de código multilinha perfeitamente bom
- Volte para MarkDown
- Veja uma única linha em vez do bloco de código
- Note que não é mais um bloco de código, mas se o texto for longo, você pode não perceber que a indentação também desapareceu
- Transforme-o em um bloco de código
- Poste e obtenha um bloco de código que contém uma única linha onde as quebras de linha são completamente removidas, nem mesmo um espaço é mantido
Novamente, este é o que não consigo reproduzir hoje, e não procurei notas de lançamento para ver se foi corrigido, mas também não consegui encontrar este problema relatado em outros tópicos.
Conclusão
Portanto, parece que o modo Rich Text tem problemas com blocos de código de várias maneiras. Isso dificulta a moderação, pois muitas vezes assumimos que um usuário não formatou sua postagem corretamente, então vinculamos nosso guia de formatação, que não funcionaria no modo Rich Text, mas esse não é o problema, pois os guias podem ser modificados. No entanto, os usuários realmente tentam formatar sua postagem e falham devido ao editor Rich Text.
Como o problema original que notei foi o que provavelmente já foi corrigido, parece que alguns usuários começaram com o editor Rich Text, não gostaram, mudaram para Markdown, perceberam que quebraram os blocos de código, tentaram consertar, mas não conseguiram e não colaram tudo novamente.
Neste ponto, eu também mencionaria este tópico sobre desativar completamente o editor Rich Text: How can i set disable Markdown & Default to Rich Text
Eu o vinculo porque este foi um dos primeiros tópicos que encontrei ao procurar relatórios existentes ontem, e acabei de mudar o padrão de volta para MarkDown. Paro aqui para evitar que alguém reaja a esta parte, e provavelmente adicionarei algumas notas no outro tópico.
PS.: Usei o recurso de revisão neste post. É incrível!