Hola a todos:
En este tema, haré referencia a otros temas, pero creo que describiré un problema mayor que otros informes mencionados.
Mi entorno de prueba
- OS: MacOS 15.6.1
- Navegador: Google Chrome 139.0.7258.140 (Build oficial) (arm64)
La observación original
Noté que el editor de texto enriquecido en el compositor a menudo rompe los bloques de código. Los usuarios comenzaron a publicar su código y registros en una sola línea, y al principio pensé que habían cometido un error al copiar su contenido al compositor. No había caracteres de espacio en blanco entre las líneas publicadas, no solo las saltos de línea.
A veces, los usuarios publicaban múltiples códigos de una sola línea, perdiendo la sangría en un YAML. A veces, era un código multilínea resaltado como una sola línea, a veces era una sola línea en un bloque de código. Sucedía con demasiada frecuencia, así que probé el modo de texto enriquecido ayer, pero esperé para informar. Hoy, no pude reproducir ese problema, pero encontré otra forma en el editor de texto enriquecido de romper los saltos de línea en el código.
No estaba seguro de si era un error, así que lo discutí con nuestros moderadores, esperando la confirmación de que el error se había corregido. Luego resultó que ni siquiera encontramos el mismo comportamiento, pero todos los problemas estaban relacionados con los espacios en blanco. Excepto que no pude reproducir el problema mencionado por otro moderador, pero me di cuenta de que era porque copiaba el texto de un editor de código o terminal, y yo lo copiaba de mi propio bloque de código anterior del foro, por lo que el problema del espacio en blanco se presentaba de manera diferente.
Diferentes formas de romper los espacios en blanco en los bloques de código
Primera forma
- Copia una salida de una terminal
- Pega la salida en el compositor en modo de texto enriquecido como este (parte de la salida de
runcsin argumentos)
COMMANDS:
checkpoint checkpoint a running container
create create a container
delete delete any resources held by the container often used with detached
- Verás una salida multilínea, pero se elimina la sangría
- Ahora te das cuenta de que quieres un bloque de código y lo conviertes en uno seleccionando el texto y haciendo clic en el botón Código.
- Ahora el código es un poco extraño, porque parece código, pero no como un bloque de código. Vuelve a markdown para ver por qué y nota esto:
`COMMANDS:`
`checkpoint checkpoint a running container`
`create create a container`
`delete delete any resources held by the container often used with detached container`
- Como puedes ver arriba, cada línea del texto se convirtió en un código de una sola línea.
(Gracias @per1234 por enlazar el informe de error relacionado a continuación Rich Text editor in topics breaks white-space characters in multiple ways - #2 by per1234)
Copia un código de otro tema o de otra publicación en el mismo tema
Tema existente que encontré: `white-space` CSS property of clipboard data not respected when pasting in rich text editor
Por supuesto, esta no es la forma correcta de copiar en Discourse, ya que tienes un botón “Citar” para textos seleccionados que generalmente funciona también con partes de un bloque de código, y también tienes un botón de copiar en la esquina de cada bloque de código, pero así es como noté el problema, y el botón de copiar tampoco funcionó.
- Copia un código multilínea de una página HTML
- Pégalo en el compositor en modo de texto enriquecido
- Observa que los saltos de línea han desaparecido
- En este punto, podrías pensar que es solo en HTML, así que conviértelo en código
- Los saltos de línea no volvieron
Usa el botón Copiar en la esquina superior derecha de un bloque de código en otra publicación
- Mueve el puntero del ratón sobre un bloque de código existente
- Observa que apareció el pequeño botón “Copiar” en la esquina superior derecha
- Haz clic en ese botón para copiar el código
- Pégalo en el compositor en modo de texto enriquecido
- Los saltos de línea se conservan, pero la sangría se ha perdido de la misma manera que sucedió al copiar directamente desde HTML.
- Conviértelo en un bloque de código y obtendrás múltiples códigos de una sola línea sin sangría
Probablemente se corrigió el problema que ocurría al volver a cambiar a MarkDown
- Escribe un bloque de código en el editor de texto enriquecido
- Ve un bloque de código multilínea perfectamente bueno
- Cambia de nuevo a MarkDown
- Ve una sola línea en lugar del bloque de código
- Observa que ya no es un bloque de código, pero si el texto es largo, podrías pasar por alto que la sangría también ha desaparecido
- Conviértelo en un bloque de código
- Publícalo y obtendrás un bloque de código que contiene una sola línea donde los saltos de línea se eliminan por completo, ni siquiera se conserva un espacio
Nuevamente, este es el que no puedo reproducir hoy, y no he buscado notas de lanzamiento para ver si se corrigió, pero tampoco pude encontrar este problema reportado en otros temas.
Conclusión
Así que parece que el modo de texto enriquecido tiene problemas con los bloques de código de varias maneras. Dificulta la moderación, ya que a menudo asumimos que un usuario no formateó su publicación correctamente, por lo que enlazamos nuestra guía de formato, que no funcionaría en el modo de texto enriquecido, pero ese no es el problema, ya que las guías se pueden modificar. Sin embargo, los usuarios realmente intentan formatear su publicación y fallan debido al editor de texto enriquecido.
Dado que el problema original que noté es el que probablemente ya se corrigió, me parece que algunos usuarios comenzaron con el editor de texto enriquecido, no les gustó, cambiaron a Markdown, se dieron cuenta de que rompieron los bloques de código, intentaron arreglarlo, pero no pudieron y no volvieron a pegar todo.
Ahora, en este punto, también mencionaría este tema sobre la desactivación completa del editor de texto enriquecido: How can i set disable Markdown & Default to Rich Text
Lo enlazo porque este fue uno de los primeros temas que encontré mientras buscaba informes existentes ayer, y acabo de cambiar el valor predeterminado de nuevo a MarkDown. Me detengo aquí para evitar que alguien reaccione a esta parte, y probablemente agregaré algunas notas en el otro tema.
PD: ¡Usé la función de corrección de pruebas en esta publicación. Es asombroso!