Wenn ich Text auf einer einzelnen Zeile auswähle und über den Composer-Button einen Wrap anwende, wird ein Inline-Wrap angewendet. Das funktioniert zwar, aber der letzte Buchstabe des ausgewählten Textes wird teilweise abgeschnitten:
![]()
Dies ist eine Möglichkeit, Inline-Wraps zu erstellen, und sie wird automatisch in einen Block-Wrap umgewandelt, wenn auf derselben Zeile kein weiterer Inhalt steht.
Die andere Möglichkeit ist <span data-attribute>, die im Rich-Editor nicht unterstützt wird (data-attribute wird entfernt), im Markdown-Editor jedoch vollständig funktioniert. Interessanterweise ist diese erlaubte Syntax nicht in discourse/frontend/pretty-text/addon/allow-lister.js at 3b13aaa003332e7bf056a6cbb2c0da0cf107a0fd · discourse/discourse · GitHub aufgeführt, sondern in discourse/frontend/discourse-markdown-it/src/features/d-wrap.js at 3b13aaa003332e7bf056a6cbb2c0da0cf107a0fd · discourse/discourse · GitHub ![]()
<span data-attribute> ist auf Meta dokumentiert und wird wahrscheinlich außerhalb meines Forums verwendet. Der Vorteil ist, dass es nie in ein Block-Element umgewandelt wird, selbst wenn auf derselben Zeile kein weiterer Inhalt steht.
Ein normaler Wrap allein auf einer Zeile wie dieser:
[wrap="fish"]text[/wrap]
wird als Block gerendert:
<div class="d-wrap" data-wrap="fish">
<p>text</p>
</div>
Soweit ich weiß, gibt es nur folgende Möglichkeiten, dieses Verhalten zu vermeiden:
-
Verwendung von
<span data-attribute>:<span data-fish>text</span>wird gerendert als:
<span data-fish="">text</span> -
Hinzufügen eines nicht abgeschnittenen (idealerweise breitenlosen) Leerzeichens wie
​am Anfang oder Ende der Zeile.​[wrap=fish]Fishyfishy[/wrap]wird gerendert als:
​<span class="d-wrap" data-wrap="fish">Fishyfishy</span>
Letzteres ist etwas umständlich.
Ich würde es bevorzugen, die erste Lösung im Rich-Editor nutzen zu können. Allgemeiner wäre jede einfache Möglichkeit, einen Inline-Wrap zu erstellen, wünschenswert.