Priorité/Gravité :
Faible Plateforme :
Chrome 124, Ubuntu 22 Version :
Discourse v3.3.0.beta2-dev Description :
Discourse effectue la coloration syntaxique automatique avec hljs, même lorsqu’aucun langage n’a été spécifié. Cette fonctionnalité fonctionne dans la vue normale du sujet, mais pas lors de la visualisation du code en plein écran. Étapes reproductibles :
Créez un sujet avec un bloc de code, sans spécifier le langage
System.out.println("hello world");
Visualisez le sujet et constatez que hljs a détecté un langage et appliqué la coloration syntaxique.
Cliquez sur le bouton plein écran en haut à droite du bloc de code.
Voyez que la détection de langage hljs a échoué et qu’aucune coloration syntaxique n’est appliquée.
Voici quelques captures d’écran dans une grande image, en raison des restrictions sur les nouveaux utilisateurs .
Merci pour le rapport, @oskar1, je peux confirmer ce bug localement. (Il est plus difficile de le reproduire sur meta car nous utilisons text et non auto comme default code lang sur meta.)
Nous allons nous pencher sur la correction de ce problème bientôt.
Vous avez la classe lang-auto appliquée au code markdown et supprimée automatiquement ici pour que la bibliothèque puisse deviner la langue.
Cependant, lorsque vous passez en plein écran, lang-auto n’est plus dans l’élément, et vous n’avez que la classe language-<langue-détectée-ici>. Ainsi, lang est indéfini.
Une solution possible pourrait être ici – si lang-auto n’est pas trouvé, recherchez language-<...>.
const m = className.match(/^lang-(.+)$/);
→ const m = className.match(/^`(?:lang|language)-(.+)$/);