Prioridad/Severidad:
Baja Plataforma:
Chrome 124, Ubuntu 22 Versión:
Discourse v3.3.0.beta2-dev Descripción:
Discourse realiza resaltado automático de código con hljs, incluso cuando no se especificó ningún idioma. Esta función funciona en la vista normal del tema, pero no al ver el código en pantalla completa. Pasos reproducibles:
Cree un tema con un bloque de código, sin especificar el idioma
System.out.println("hello world");
Vea el tema y observe que hljs detectó un idioma y aplicó el resaltado.
Haga clic en el botón de pantalla completa en la parte superior derecha del bloque de código.
Observe que la detección de idioma de hljs falló y no se aplicó ningún resaltado.
Aquí hay algunas capturas de pantalla en una sola imagen grande, debido a las restricciones para nuevos usuarios .
Gracias por el informe, @oskar1, puedo confirmar este error localmente. (Es más difícil reproducirlo en meta porque usamos text en lugar de auto como default code lang en meta).
Tienes el nombre de clase lang-auto aplicado con código markdown y eliminado automáticamente aquí para que la biblioteca pueda adivinar el idioma.
Sin embargo, cuando entras en pantalla completa, lang-auto ya no está en el elemento, y solo tienes el nombre de clase language-<detected-language-here>. Por lo tanto, lang no está definido.
Una posible solución podría estar aquí: si no se encuentra lang-auto, busca language-<..>
const m = className.match(/^lang-(.+)$/);
→ const m = className.match(/^`(?:lang|language)-(.+)$/);