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
runcohne 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`
- Wie Sie oben sehen können, wurde jede Zeile des Textes zu einem einzeiligen Code.
(Danke @per1234 für die Verlinkung des zugehörigen Fehlerberichts unten Rich Text editor in topics breaks white-space characters in multiple ways - #2 by per1234)
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!