Resaltado automático de código roto en vista de código a pantalla completa

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:

  1. Cree un tema con un bloque de código, sin especificar el idioma
System.out.println("hello world");
  1. Vea el tema y observe que hljs detectó un idioma y aplicó el resaltado.
  2. Haga clic en el botón de pantalla completa en la parte superior derecha del bloque de código.
  3. 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 :confused:.

3 Me gusta

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).

Nos encargaremos de solucionarlo pronto.

3 Me gusta

Creo que el problema está aquí :thinking: :

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

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)-(.+)$/);

1 me gusta

Encantado de revisar un PR si quieres enviar uno @Arkshine, ya has hecho una buena parte del trabajo :wink:.

3 Me gusta

Hice un PR :+1:. ¡Espero que las pruebas sean lo suficientemente buenas!

2 Me gusta

Gracias @Arkshine, la corrección se ve genial, la fusionaré una vez que las pruebas pasen en CI.

3 Me gusta

Este tema se cerró automáticamente después de 18 horas. Ya no se permiten nuevas respuestas.