Configura los lenguajes de programación disponibles para el resaltado de sintaxis

:bookmark: Esta guía explica cómo configurar qué lenguajes de programación están disponibles para el resaltado de sintaxis en Discourse.

:person_raising_hand: Nivel de usuario requerido: Administrador

El resaltado de sintaxis mejora la legibilidad en los bloques de código aplicando formato según el lenguaje de programación. Puedes personalizar los lenguajes disponibles para el resaltado de sintaxis en Discourse.

Configuración de la opción del sitio highlighted_languages

Para configurar la lista de lenguajes de programación para el resaltado de sintaxis:

  1. Navega al panel de Administración.
  2. Ve a ConfigContentPosts and Topics.
  3. Busca la opción del sitio highlighted_languages.

En esta configuración, puedes definir qué lenguajes estarán disponibles para el resaltado de sintaxis. Ingresa los nombres de los lenguajes que deseas admitir, separados por comas.

Configuraciones relacionadas

Hay dos opciones del sitio adicionales relacionadas con el resaltado de sintaxis, que se encuentran en la misma área:

  • default_code_lang — El lenguaje predeterminado aplicado a los bloques de código cuando no se especifica ningún lenguaje. El valor predeterminado es auto, que intenta detectar el lenguaje automáticamente.
  • autohighlight_all_code — Cuando está activado, aplica el resaltado de sintaxis a todos los bloques <code>, incluso aquellos sin una clase de lenguaje especificada. El valor predeterminado es desactivado.

Agregar soporte para lenguajes adicionales

Si el lenguaje deseado no viene incluido con highlight.js, puedes agregarlo mediante un componente de tema utilizando la API de plugins api.registerHighlightJSLanguage(). A continuación se muestran los pasos para lograrlo:

  1. Localiza un módulo para tu lenguaje: Encuentra una definición de lenguaje de highlight.js que admita el lenguaje que deseas agregar. Por ejemplo:
  • Solidity: https://github.com/highlightjs/highlightjs-solidity
  • Supercollider: https://github.com/highlightjs/highlightjs-supercollider
  1. Integra el módulo usando un componente de tema:
7 Me gusta

Quiero añadir Solidity, un lenguaje que no viene incluido con highlight.js. Se proporciona en este paquete: GitHub - highlightjs/highlightjs-solidity

No estoy seguro de cómo hacerlo. Lo he añadido a la configuración de Discourse. ¿Lo encontrará el paquete por sí solo y se encargará de todo, o tengo que colocar este paquete de JavaScript adicional en algún lugar? Agradecería alguna orientación :slight_smile:

1 me gusta

También me interesa esto, para admitir el resaltado de sintaxis del lenguaje supercollider a través de GitHub - highlightjs/highlightjs-supercollider

1 me gusta

Bump. Si queremos agregar soporte de resaltado de sintaxis para idiomas que aún no están en highlight.js, ¿hay alguna forma de agregarlo directamente, por ejemplo, a través de un componente temático, o necesitamos que la gente de highlight.js acepte una PR con la sintaxis adicional?

Pregunto porque existe un par de idiomas bastante esotéricos, Archetype Description Language (ADL) y Archetype Query Language (AQL), que los propietarios de discourse.openehr.org les gustaría que fueran resaltables por sintaxis. Tienen la capacidad técnica para construir un analizador/resaltador, solo necesitan saber cómo hacerlo funcionar en un Discourse.

3 Me gusta

¡Es totalmente factible como un componente de tema! Una vez que tengas listo el script de HighlightJS, avísame aquí y podré ayudarte a construir el #componente-de-tema.

3 Me gusta

¡Gracias @Falco! Construiré el script y publicaré cuando esté listo.

3 Me gusta

En las últimas una o dos semanas, he notado que el resaltado de código no parece registrarse cuando debería. Ver aquí un ejemplo. Cuando especifico un idioma (java en el caso anterior), se aplican los colores.

Aquí hay otro ejemplo para XML:
https://developer.sailpoint.com/discuss/t/get-application-roles-as-well-as-search-for-the-roles/78194?u=derek_putnam

Tenemos docenas de idiomas para detectar. Veo que el subtexto debajo de esta configuración dice que demasiados pueden hacer que funcione mal, pero no creo que hayamos agregado nada recientemente.