Automatische Code-Hervorhebung in Vollbild-Codeansicht fehlerhaft

Priorität/Schweregrad:
Niedrig
Plattform:
Chrome 124, Ubuntu 22
Version:
Discourse v3.3.0.beta2-dev
Beschreibung:
Discourse führt eine automatische Codehervorhebung mit hljs durch, auch wenn keine Sprache angegeben wurde. Diese Funktion funktioniert in der normalen Themenansicht, aber nicht, wenn der Code im Vollbildmodus angezeigt wird.
Reproduzierbare Schritte:

  1. Erstellen Sie ein Thema mit einem Codeblock, ohne die Sprache anzugeben
System.out.println("hello world");
  1. Zeigen Sie das Thema an und sehen Sie, dass hljs eine Sprache erkannt und eine Hervorhebung angewendet hat.
  2. Klicken Sie auf die Schaltfläche Vollbild oben rechts im Codeblock.
  3. Sehen Sie, dass die hljs-Spracherkennung fehlgeschlagen ist und keine Hervorhebung angewendet wird

Hier sind einige Screenshots in einem großen Bild, wegen Einschränkungen für neue Benutzer :confused:.

3 „Gefällt mir“

Danke für den Bericht, @oskar1, ich kann diesen Fehler lokal bestätigen. (Es ist schwieriger, dies auf Meta zu reproduzieren, da wir text und nicht auto als default code lang auf Meta verwenden.)

Wir werden uns bald darum kümmern, dies zu beheben.

3 „Gefällt mir“

Ich glaube, das Problem liegt hier :thinking: :

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/highlight-syntax.js#L36-L52

Sie haben den Klassennamen lang-auto auf Markdown-Code angewendet, der hier automatisch entfernt wird, damit die Bibliothek die Sprache erraten kann.

Wenn Sie jedoch in den Vollbildmodus wechseln, ist lang-auto nicht mehr im Element vorhanden, und Sie haben nur den Klassennamen language-<detected-language-here>. Daher ist lang undefiniert.

Eine mögliche Lösung könnte hier sein – wenn lang-auto nicht gefunden wird, suchen Sie nach language-<..>

const m = className.match(/^lang-(.+)$/);

const m = className.match(/^`(?:lang|language)-(.+)$/);

1 „Gefällt mir“

Ich überprüfe gerne einen PR, wenn Sie einen einreichen möchten, @Arkshine, Sie haben bereits einen Großteil der Arbeit erledigt :zwinker:.

3 „Gefällt mir“

Ich habe einen PR erstellt :+1: . Hoffentlich sind die Tests gut genug!

2 „Gefällt mir“

Danke @Arkshine, die Korrektur sieht großartig aus, ich werde sie zusammenführen, sobald die Tests in CI erfolgreich sind.

3 „Gefällt mir“

Dieses Thema wurde nach 18 Stunden automatisch geschlossen. Neue Antworten sind nicht mehr möglich.