L'éditeur Rich Text dans les sujets casse les caractères d'espacement de plusieurs manières

Salut à tous !

Dans ce sujet, je ferai référence à d’autres sujets, mais je pense que je décrirai un problème plus important que ceux mentionnés dans d’autres rapports.

Mon environnement de test

  • OS : MacOS 15.6.1
  • Navigateur : Google Chrome 139.0.7258.140 (Build officiel) (arm64)

L’observation initiale

J’ai remarqué que l’éditeur de texte enrichi dans le compositeur casse fréquemment les blocs de code. Les utilisateurs ont commencé à poster leur code et leurs journaux sur une seule ligne, et j’ai d’abord pensé qu’ils avaient fait une erreur en copiant leur contenu dans le compositeur. Il n’y avait aucun caractère d’espacement entre les lignes postées, pas seulement les sauts de ligne.

Parfois, les utilisateurs postaient plusieurs codes sur une seule ligne, perdant l’indentation dans un YAML. Parfois, il s’agissait d’un code multiligne mis en évidence comme une seule ligne, parfois il s’agissait d’une seule ligne dans un bloc de code. Cela arrivait trop fréquemment, j’ai donc testé le mode texte enrichi hier, mais j’ai attendu avant de signaler. Aujourd’hui, je n’ai pas pu reproduire ce problème, mais j’ai trouvé une autre façon dans l’éditeur de texte enrichi de casser les sauts de ligne dans le code.

Je n’étais pas sûr s’il s’agissait d’un bug, j’ai donc discuté du problème avec nos modérateurs, en attendant la confirmation que le bug était corrigé. Puis il s’est avéré que nous n’avons même pas trouvé le même comportement, mais tous les problèmes étaient liés aux espaces blancs. Sauf que je n’ai pas pu reproduire le problème mentionné par un autre modérateur, mais j’ai réalisé que c’était parce qu’il copiait le texte d’un éditeur de code ou d’un terminal, et moi, je le copiais de mon propre bloc de code précédent du forum, donc le problème des espaces blancs venait différemment.

Différentes façons de casser les espaces blancs dans les blocs de code

Première façon

  • Copiez une sortie d’un terminal
  • Collez la sortie dans le compositeur en mode texte enrichi comme ceci (partie de la sortie de runc sans arguments)
COMMANDS:
   checkpoint  checkpoint a running container
   create      create a container
   delete      delete any resources held by the container often used with detached
  • Vous verrez une sortie multiligne, mais l’indentation est supprimée
  • Réalisez maintenant que vous voulez un bloc de code et transformez-le en un en sélectionnant le texte et en cliquant sur le bouton Code.
  • Maintenant, le code est un peu étrange, car il ressemble à du code, mais pas à un bloc de code. Revenez au markdown pour voir pourquoi et remarquez ceci :
`COMMANDS:`
`checkpoint  checkpoint a running container`
`create      create a container`
`delete      delete any resources held by the container often used with detached container`

Copier un code d’un autre sujet ou d’un autre message dans le même sujet

Sujet existant que j’ai trouvé : `white-space` CSS property of clipboard data not respected when pasting in rich text editor

Bien sûr, ce n’est pas la bonne façon de copier dans Discourse, car vous avez un bouton “Citer” pour les textes sélectionnés qui fonctionne généralement aussi avec des parties d’un bloc de code, et vous avez également un bouton de copie dans le coin de chaque bloc de code, mais c’est ainsi que j’ai remarqué le problème, et le bouton de copie n’a pas non plus fonctionné.

  • Copiez un code multiligne d’une page HTML
  • Collez-le dans le compositeur en mode texte enrichi
  • Remarquez que les sauts de ligne ont disparu
  • À ce stade, vous pourriez penser que c’est juste en HTML, alors transformez-le en code
  • Les sauts de ligne ne sont pas revenus

Utiliser le bouton Copier dans le coin supérieur droit d’un bloc de code dans un autre message

  • Déplacez le pointeur de la souris sur un bloc de code existant
  • Remarquez que le petit bouton “Copier” est apparu dans le coin supérieur droit
  • Cliquez sur ce bouton pour copier le code
  • Collez-le dans le compositeur en mode texte enrichi
  • Les sauts de ligne sont conservés, mais l’indentation a disparu de la même manière que lorsque vous copiez directement depuis HTML.
  • Transformez-le en bloc de code et obtenez plusieurs codes sur une seule ligne sans indentation

Problème probablement corrigé qui s’est produit lors du retour à MarkDown

  • Écrivez un bloc de code dans l’éditeur de texte enrichi
  • Voyez un bloc de code multiligne parfait
  • Revenez à MarkDown
  • Voyez une seule ligne au lieu du bloc de code
  • Remarquez que ce n’est plus un bloc de code, mais si le texte est long, vous pourriez manquer que l’indentation a également disparu
  • Transformez-le en bloc de code
  • Postez-le et obtenez un bloc de code qui contient une seule ligne où les sauts de ligne sont complètement supprimés, pas même un espace conservé

Encore une fois, c’est celui que je ne peux pas reproduire aujourd’hui, et je n’ai pas cherché les notes de version pour voir s’il avait été corrigé, mais je n’ai pas non plus trouvé ce problème signalé dans d’autres sujets.

Conclusion

Il semble donc que le mode texte enrichi ait des problèmes avec les blocs de code de plusieurs manières. Cela rend la modération plus difficile car nous supposons souvent qu’un utilisateur n’a pas correctement formaté son message, nous lions donc notre guide de formatage, qui ne fonctionnerait pas en mode texte enrichi, mais ce n’est pas le problème car les guides peuvent être modifiés. Cependant, les utilisateurs essaient réellement de formater leur message et échouent en raison de l’éditeur de texte enrichi.

Étant donné que le problème initial que j’ai remarqué est celui qui est probablement corrigé maintenant, il me semble que certains utilisateurs ont commencé avec l’éditeur de texte enrichi, ne l’ont pas aimé, sont passés à Markdown, ont réalisé qu’ils avaient cassé les blocs de code, ont essayé de corriger, mais n’ont pas pu et n’ont pas tout collé à nouveau.

À ce stade, je mentionnerais également ce sujet sur la désactivation complète de l’éditeur de texte enrichi : How can i set disable Markdown & Default to Rich Text

Je le lie car c’était l’un des premiers sujets que j’ai trouvés en recherchant des rapports existants hier, et j’ai juste rétabli la valeur par défaut à MarkDown. Je m’arrête ici pour éviter que quelqu’un ne réagisse à cette partie, et j’ajouterai probablement quelques notes dans l’autre sujet.

PS : J’ai utilisé la fonction de relecture sur ce message. C’est incroyable !

Il y a un rapport de bug dédié ici :

1 « J'aime »

Merci ! Je pensais avoir passé assez de temps à chercher, mais je n’ai pas trouvé celui-ci.

Salut @rimelek merci pour le rapport détaillé, nous l’apprécions.

Nous l’avons ajouté à notre backlog (et une partie fait déjà l’objet de nos travaux) mais cela pourrait prendre quelques semaines avant que nous puissions nous y pencher.

3 « J'aime »

Nous avons apporté quelques améliorations depuis ce rapport, notamment l’action de la barre d’outils est plus consciente du contexte entre le mode inline/bloc et la prise en charge des allers-retours entre plusieurs paragraphes et un seul bloc de code.

Je pense que le « problème » restant est que si vous collez du texte brut dans le compositeur et qu’il n’y a aucune identification qu’il s’agit de texte préformaté, nous ne pouvons pas créer automatiquement un bloc de code – par exemple, en copiant depuis mon terminal, il n’ajoute qu’un presse-papiers plain/text, et nous aurions besoin d’un text/html avec un élément pre pour créer automatiquement un bloc de code actuellement.

Pouvez-vous vérifier si les choses se sont améliorées depuis, s’il vous plaît ? Et faites-nous savoir si vous pensez toujours que quelque chose ne se comporte pas correctement.

Merci !

2 « J'aime »