Configurez les langages de programmation disponibles pour la coloration syntaxique

:bookmark: Ce guide explique comment configurer les langages de programmation disponibles pour la coloration syntaxique dans Discourse.

:person_raising_hand: Niveau d’utilisateur requis : Administrateur

La coloration syntaxique améliore la lisibilité des blocs de code en appliquant un formatage basé sur le langage de programmation. Vous pouvez personnaliser les langages disponibles pour la coloration syntaxique dans Discourse.

Configuration du paramètre du site highlighted_languages

Pour configurer la liste des langages de programmation pour la coloration syntaxique :

  1. Accédez au panneau d’administration.
  2. Allez dans ConfigContentPosts and Topics.
  3. Trouvez le paramètre du site highlighted_languages.

Dans ce paramètre, vous pouvez définir les langages qui seront disponibles pour la coloration syntaxique. Saisissez les noms des langages que vous souhaitez prendre en charge, séparés par des virgules.

Paramètres associés

Il existe deux autres paramètres du site liés à la coloration syntaxique, situés dans la même section :

  • default_code_lang — Le langage par défaut appliqué aux blocs de code lorsqu’aucun langage n’est spécifié. La valeur par défaut est auto, qui tente de détecter automatiquement le langage.
  • autohighlight_all_code — Lorsqu’il est activé, applique la coloration syntaxique à tous les blocs <code>, même ceux sans classe de langage spécifiée. La valeur par défaut est désactivée.

Ajout de la prise en charge de langages supplémentaires

Si le langage souhaité n’est pas inclus dans highlight.js, vous pouvez l’ajouter via un composant de thème en utilisant l’API de plugin api.registerHighlightJSLanguage(). Voici les étapes à suivre :

  1. Localiser un module pour votre langage : Trouvez une définition de langage highlight.js qui prend en charge le langage que vous souhaitez ajouter. Par exemple :
  • Solidity : https://github.com/highlightjs/highlightjs-solidity
  • Supercollider : https://github.com/highlightjs/highlightjs-supercollider
  1. Intégrer le module à l’aide d’un composant de thème :
7 « J'aime »

Je souhaite ajouter Solidity, un langage qui n’est pas inclus avec highlight.js. Il est fourni dans ce package : GitHub - highlightjs/highlightjs-solidity

Je ne suis pas sûr de la manière de procéder. Je l’ai ajouté aux paramètres de Discourse. Va-t-il trouver le package pour moi et s’occuper de tout, ou dois-je placer ce package JavaScript supplémentaire quelque part ? J’apprécierais quelques conseils :slight_smile:

1 « J'aime »

Je suis également intéressé par cela, pour prendre en charge la coloration syntaxique du langage supercollider via GitHub - highlightjs/highlightjs-supercollider

1 « J'aime »

Relever. Si nous voulons ajouter la prise en charge de la coloration syntaxique pour des langues qui ne sont pas déjà dans highlight.js, y a-t-il un moyen de l’ajouter directement, par exemple via un composant de thème, ou devons-nous demander aux personnes en amont de highlight.js d’accepter une PR avec la syntaxe supplémentaire ?

Je demande car il existe une paire de langues assez ésotériques, Archetype Description Language (ADL) et Archetype Query Language (AQL), que les propriétaires de discourse.openehr.org aimeraient pouvoir colorer syntaxiquement. Ils ont la capacité technique de créer un analyseur/colorateur, ils ont juste besoin de savoir comment le faire fonctionner dans un Discourse.

3 « J'aime »

C’est tout à fait réalisable en tant que composant de thème ! Une fois que vous aurez préparé le script HighlightJS, faites-moi signe ici et je pourrai vous aider à construire le Theme component.

3 « J'aime »

Merci @Falco ! Je vais créer le script et je reviendrai lorsque tout sera prêt.

3 « J'aime »

Au cours des une ou deux dernières semaines, j’ai remarqué que la coloration syntaxique ne semble pas s’activer comme elle le devrait. Voir ici un exemple. Lorsque je spécifie une langue (java dans le cas ci-dessus), les couleurs s’appliquent.

Voici un autre exemple pour XML :
https://developer.sailpoint.com/discuss/t/get-application-roles-as-well-as-search-for-the-roles/78194?u=derek_putnam

Nous avons des dizaines de langues à détecter. Je vois que le sous-texte sous ce paramètre indique qu’un trop grand nombre d’entre elles peut nuire aux performances, mais je ne pense pas que nous en ayons ajouté récemment.