Rich Text Editor in Themen bricht Leerzeichen auf verschiedene Arten

Hallo zusammen!

In diesem Thema werde ich auf andere Themen verweisen, aber ich glaube, ich werde ein größeres Problem beschreiben als in anderen Berichten erwähnt.

Meine Testumgebung

  • Betriebssystem: MacOS 15.6.1
  • Browser: Google Chrome 139.0.7258.140 (Offizieller Build) (arm64)

Die ursprüngliche Beobachtung

Mir ist aufgefallen, dass der Rich-Text-Editor im Composer Codeblöcke häufig beschädigt. Benutzer begannen, ihren Code und ihre Protokolle in einer einzigen Zeile zu posten, und ich dachte zunächst, sie hätten beim Kopieren ihres Inhalts in den Composer einen Fehler gemacht. Es gab keinerlei Leerzeichen zwischen den geposteten Zeilen, nicht nur Zeilenumbrüche.

Manchmal posteten Benutzer mehrere einzeilige Codes, wobei die Einrückung in YAML verloren ging. Manchmal wurde ein mehrzeiliger Code als einzelne Zeile hervorgehoben, manchmal war es eine einzelne Zeile in einem Codeblock. Es passierte zu häufig, also habe ich gestern den Rich-Text-Modus getestet, aber mit der Berichterstattung gewartet. Heute konnte ich dieses Problem nicht reproduzieren, aber ich fand einen anderen Weg im Rich-Text-Editor, Zeilenumbrüche in Code zu beschädigen.

Ich war mir nicht sicher, ob das ein Fehler war, also habe ich das Problem nur mit unseren Moderatoren besprochen und auf die Bestätigung gewartet, dass der Fehler behoben wurde. Dann stellte sich heraus, dass wir nicht einmal das gleiche Verhalten fanden, aber alle Probleme hingen mit Leerzeichen zusammen. Außer, dass ich das von einem anderen Moderator erwähnte Problem nicht reproduzieren konnte, aber ich erkannte, dass es daran lag, dass er den Text aus einem Code-Editor oder Terminal kopierte, und ich ihn aus meinem eigenen früheren Codeblock aus dem Forum kopierte, sodass das Leerzeichenproblem anders auftrat.

Verschiedene Möglichkeiten, Leerzeichen in Codeblöcken zu beschädigen

Erster Weg

  • Kopieren Sie eine Ausgabe aus einem Terminal
  • Fügen Sie die Ausgabe in den Composer im Rich-Text-Modus ein, wie hier (Teil der Ausgabe von runc ohne Argumente)
COMMANDS:
   checkpoint  checkpoint a running container
   create      create a container
   delete      delete any resources held by the container often used with detached
  • Sie sehen eine mehrzeilige Ausgabe, aber die Einrückung ist entfernt
  • Erkennen Sie nun, dass Sie einen Codeblock wünschen, und machen Sie ihn zu einem, indem Sie den Text auswählen und auf die Schaltfläche “Code” klicken.
  • Jetzt ist der Code ein wenig seltsam, weil er wie Code aussieht, aber nicht wie ein Codeblock. Wechseln Sie zurück zu Markdown, um zu sehen, warum, und bemerken Sie Folgendes:
`COMMANDS:`
`checkpoint  checkpoint a running container`
`create      create a container`
`delete      delete any resources held by the container often used with detached container`

Kopieren Sie Code aus einem anderen Thema oder einem anderen Beitrag im selben Thema

Vorhandenes Thema, das ich gefunden habe: `white-space` CSS property of clipboard data not respected when pasting in rich text editor

Natürlich ist dies nicht der richtige Weg, um in Discourse zu kopieren, da Sie eine “Zitat”-Schaltfläche für ausgewählte Texte haben, die normalerweise auch mit Teilen eines Codeblocks funktioniert, und Sie haben auch eine Kopierschaltfläche in der Ecke jedes Codeblocks, aber so habe ich das Problem bemerkt, und die Kopierschaltfläche funktionierte auch nicht.

  • Kopieren Sie einen mehrzeiligen Code von einer HTML-Seite
  • Fügen Sie ihn in den Composer im Rich-Text-Modus ein
  • Beachten Sie, dass die Zeilenumbrüche verschwunden sind
  • An diesem Punkt könnten Sie denken, es ist nur in HTML, also machen Sie es zu Code
  • Zeilenumbrüche kamen nicht zurück

Verwenden Sie die Schaltfläche “Kopieren” in der oberen rechten Ecke eines Codeblocks in einem anderen Beitrag

  • Bewegen Sie den Mauszeiger über einen vorhandenen Codeblock
  • Beachten Sie, dass die kleine Schaltfläche “Kopieren” in der oberen rechten Ecke erschienen ist
  • Klicken Sie auf diese Schaltfläche, um den Code zu kopieren
  • Fügen Sie ihn in den Composer im Rich-Text-Modus ein
  • Zeilenumbrüche bleiben erhalten, aber die Einrückung geht auf die gleiche Weise verloren wie beim direkten Kopieren aus HTML.
  • Machen Sie es zu einem Codeblock und erhalten Sie mehrere einzeilige Codes ohne Einrückung

Wahrscheinlich behobenes Problem, das beim Zurückwechseln zu Markdown auftrat

  • Schreiben Sie einen Codeblock im Rich-Text-Editor
  • Sehen Sie einen perfekt guten mehrzeiligen Codeblock
  • Wechseln Sie zurück zu Markdown
  • Sehen Sie eine einzelne Zeile anstelle des Codeblocks
  • Beachten Sie, dass es kein Codeblock mehr ist, aber wenn der Text lang ist, könnten Sie verpassen, dass auch die Einrückung verloren gegangen ist
  • Machen Sie es zu einem Codeblock
  • Posten Sie es und erhalten Sie einen Codeblock, der eine einzelne Zeile enthält, in der Zeilenumbrüche vollständig entfernt wurden, nicht einmal ein Leerzeichen blieb

Auch dies ist das Problem, das ich heute nicht reproduzieren kann, und ich habe die Versionshinweise nicht durchsucht, um zu sehen, ob es behoben wurde, aber ich konnte dieses Problem auch in anderen Themen nicht finden.

Schlussfolgerung

Es scheint also, dass der Rich-Text-Modus Codeblöcke auf vielfältige Weise problematisch behandelt. Er erschwert die Moderation, da wir oft davon ausgehen, dass ein Benutzer seinen Beitrag nicht richtig formatiert hat, sodass wir auf unseren Formatierungsleitfaden verweisen, der im Rich-Text-Modus nicht funktionieren würde, aber das ist nicht das Problem, da Leitfäden geändert werden können. Tatsächlich versuchen Benutzer jedoch, ihren Beitrag zu formatieren, und scheitern aufgrund des Rich-Text-Editors.

Da das ursprüngliche Problem, das ich bemerkt habe, wahrscheinlich inzwischen behoben ist, scheint es mir, dass einige Benutzer mit dem Rich-Text-Editor begonnen haben, ihn nicht mochten, zu Markdown wechselten, feststellten, dass sie die Codeblöcke beschädigt hatten, versuchten, sie zu reparieren, aber nicht konnten und nicht alles erneut einfügten.

An dieser Stelle würde ich auch auf dieses Thema zum vollständigen Deaktivieren des Rich-Text-Editors verweisen: How can i set disable Markdown & Default to Rich Text

Ich verlinke es, weil dies eines der ersten Themen war, das ich gestern bei der Suche nach vorhandenen Berichten gefunden habe, und ich habe gerade den Standard wieder auf Markdown zurückgestellt. Ich höre hier auf, um zu vermeiden, dass jemand auf diesen Teil reagiert, und ich werde wahrscheinlich einige Notizen in dem anderen Thema hinzufügen.

PS: Ich habe die Korrekturlesefunktion für diesen Beitrag verwendet. Sie ist erstaunlich!

Es gibt hier einen dedizierten Fehlerbericht:

1 „Gefällt mir“

Danke! Ich dachte, ich hätte genug Zeit mit der Suche verbracht, aber ich habe diese nicht gefunden.

Hallo @rimelek, vielen Dank für den detaillierten Bericht, wir wissen ihn zu schätzen.

Wir haben dies in unsere Backlog aufgenommen (und ein Teil davon sind Themen, an denen wir bereits zu arbeiten begonnen haben), aber es könnte einige Wochen dauern, bis wir uns damit befassen.

3 „Gefällt mir“

Wir haben seit diesem Bericht einige Verbesserungen vorgenommen, hauptsächlich ist die Toolbar-Aktion kontextbezogener zwischen Inline/Block und die Unterstützung für das Hin- und Herwechseln zwischen mehreren Absätzen und einem einzelnen Codeblock.

Ich denke, das verbleibende „Problem“ ist, dass wir, wenn Sie einfachen Text in den Composer einfügen und keine Identifizierung vorhanden ist, dass es sich um vorformatierten Text handelt, keinen Codeblock automatisch erstellen können – zum Beispiel beim Kopieren aus meinem Terminal wird nur eine plain/text-Zwischenablage hinzugefügt, und wir bräuchten derzeit ein text/html mit einem pre-Element, um einen Codeblock automatisch zu erstellen.

Können Sie bitte prüfen, ob sich die Dinge seitdem verbessert haben? Und lassen Sie uns wissen, ob es Ihrer Meinung nach immer noch etwas gibt, das sich nicht korrekt verhält.

Vielen Dank!

2 „Gefällt mir“