Coloration Syntaxique

Du code en couleur pour plus de 500 langages de programmation avec PrismJS

Pourquoi un nouveau plugin ?

L’objectif du plugin est d’ajouter très simplement la possibilité de partager des portions de codes informatique au sein de vos contenus éditoriaux (articles, rubriques, etc...).

Le plugin coloration_code permet lui aussi de coloriser vos portions de code mais il utilise la librairie HighlightJS alors que ce plugin utilise PrismJS. Vous avez donc maintenant le choix en fonction de vos besoins si vous préférez HighlightJS ou PrismJS.

Le but de ce plugin est de rester très minimaliste, selon le principe « KISS, Keep It Simple, Stupid ».

Il ne dépend d’aucun autre plugin et charge les css/javascript de coloration syntaxique uniquement si il y a des balises <code> dans la page pour optimiser et alléger le rendu des pages.

Fonctionnalités

  • Le plugin ajoute la coloration syntaxique à tous les langages de programmation supportés par la librairie PrismJS. Il inclut aussi la prise en charge des langages spip (pour la typographie SPIP) et spip-squelette (pour les squelettes SPIP) pour faciliter le partage au sein de la communauté SPIP 😊.
  • Une unification de l’utilisation des raccourcis typographiques <cadre>, <frame>, et <code> est faite
    pour afficher le même résultat quelque soit le raccourci utilisé.
  • Le raccourci <pre> est quant à lui échappé et sécurisé sans traitement des balises <code> qu’il peut contenir.
  • Le raccourci typographique backtick simple markdown (ex. `ligne de code...`) est maintenant traité lors de l’appel de la fonction typo(), permettant ainsi d’ajouter du code sur une ligne au fil du texte dans vos titres, sous-titres et autres champs apparentés.
  • Le plugin facilite le copier-coller des blocs de code. En survolant un bloc de code, un bouton « Copier » s’affiche et au clic le contenu est copié dans le presse-papier.
  • Le plugin corrige aussi un bug du core SPIP qui affiche parfois en base64 des parties d’une portion de code (par exemple : <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+dGVzdDwvY29kZT4="></span>).
  • Unification de la coloration syntaxique avec le squelette inclure/coloration_syntaxique.html pour pouvoir être utilisé directement depuis un squelette ou un raccourci typographique.
  • Chargement des css/javascript de coloration syntaxique uniquement si il y a des balises <code> dans la page pour optimiser et alléger le rendu des pages.
  • Un nouveau raccourci typographique SPIP <exemple_de_code> pour présenter proprement un exemple de code html ou spip.

Compatibilité et prérequis du plugin SPIP

Le plugin est compatible avec :

Utilisation

Le plugin utilise le plugin porte_plume pour ajouter des boutons à la barre d’édition de code informatique.

Code en ligne

`...votre portion de code...`

Le raccourci «backtick» simple, comme en Markdown [1], est utilisé pour afficher du code informatique au fil du texte. Cette portion de code informatique se trouve au sein d’un texte et reprend les caractéristiques typographiques de celui-ci tout en étant encadré.

Bloc de code

Pour afficher des portions de code informatique de plusieurs lignes, le triple «backtick» doit être utilisé (comme en Markdown [1]). Cela permet de bien restituer les indentations au début de chaque ligne.

Coloration syntaxique

Consultez la liste des langages de programmation supportés pour connaitre la référence d’un langage de programmation.

Il est possible de préciser un langage de programmation pour activer une coloration syntaxique du code. Pour cela, ajouter la référence du langage concerné juste après les 3 premiers «backtick». Par exemple pour du code HTML, commencez votre portion de code avec la référence : html.

Exemples

CSS

Le code suivant :

```css
.container {
	width: 900px;
}
.container div {
	display: inline-block;
	width: 300px;
}
```

Affichera :

HTML

Le code suivant :

```html
<div class="container">
	<div><p>Lorem Elsass ipsum bredele [...]</p></div>
	<div><p>Lorem Elsass ipsum bredele [...]</p></div>
	<div><p>Lorem Elsass ipsum bredele [...]</p></div>
</div>
```

Affichera :

Coloration syntaxique spécifique à SPIP

Pour faciliter le partage de portion de code SPIP et SQUELETTE, le plugin inclut la prise en charge des langages spip (pour la typographie SPIP) et spip-squelette (pour les squelettes SPIP).

Le code suivant :

```spip
{{{ Un intertitre }}}

Du texte avec {de l’italique} et {{du gras}} ou un {{ {mélange des deux} }}.
Un retour à la ligne avec [un lien externe->https://www.spip.net], [un lien interne->art2] et un lien interne avec un titre automatique [->rubrique2].

-* Une liste
-* Une liste
-** Sous élément de liste

-# Une liste ordonnée
-# Une liste ordonnée
-## Sous élément de liste ordonnée

Un séparateur
----
```

Affichera :

Le code suivant :

```spip-squelette
<footer class="footer clearfix" role="contentinfo">
	<p class="colophon">
		<BOUCLE_annee(ARTICLES){par date}{0,1}>[(#DATE|annee|!={#VAL{Y}|date}|oui)[(#DATE|annee)]]</BOUCLE_annee> - </B_annee>[(#DATE|annee) ]#NOM_SITE_SPIP
		<br /><a rel="contents" href="#URL_PAGE{plan}" class="first"><:plan_site:></a>[
		(#SESSION{id_auteur}|non) | <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow" class='login_modal'><:lien_connecter:></a>][
		(#AUTORISER{ecrire})| <a href="#CONST{_DIR_RESTREINT_ABS}"><:espace_prive:></a>][
		(#SESSION{id_auteur}|oui) | <a href="#URL_LOGOUT" rel="nofollow"><:icone_deconnecter:></a>] | 
		<a rel="nofollow" href="#URL_PAGE{contact}"><:contact:></a> |
		<a href="#URL_PAGE{backend}" rel="alternate" title="<:syndiquer_site:>" class="last">RSS&nbsp;2.0</a>
	</p>
	[<small class="generator"><a href="https://www.spip.net/" rel="generator" title="<:site_realise_avec_spip:>" class="generator spip_out">(#CHEMIN{spip.svg}|balise_svg{'',SPIP})</a></small>]
</footer>
```

Affichera :

Nouveau raccourci SPIP : <exemple_de_code>

Une fois activé, le plugin permet l’utilisation du raccourci <exemple_de_code>...</exemple_de_code> dans vos contenus éditoriaux. Ce raccourci permet de présenter proprement un exemple de code html ou spip qui affichera successivement le rendu puis le code source de l’exemple.

Paramètres

Comme pour les modèles SPIP des paramètres sont disponibles :

  • langage (spip par défaut)
  • titre (Exemple de code : $langage$ par défaut)

Exemples d’utilisations

Avec les paramètres par défaut :

<exemple_de_code>
	Du texte avec {de l’italique} et {{du gras}} ou un {{ {mélange des deux} }}.
</exemple_de_code>

Avec un titre personnalisé :

<exemple_de_code|titre=Titre personnalisé>
	Du texte avec {de l’italique} et {{du gras}} ou un {{ {mélange des deux} }}.
</exemple_de_code>

Avec du code HTML :

<exemple_de_code|html>
	<div class="container">
		<div><p>Lorem Elsass ipsum bredele [...]</p></div>
		<div><p>Lorem Elsass ipsum bredele [...]</p></div>
		<div><p>Lorem Elsass ipsum bredele [...]</p></div>
	</div>
</exemple_de_code>

2 nouveaux squelettes SPIP pour afficher des portions de code informatique

Vous trouverez une explication plus détaillée des paramètres d’inclusions directement dans le code source de chaque squelette.

inclure/coloration_syntaxique

#SET{code,#CHEMIN{demo/coloration_syntaxique_code.html}|spip_file_get_contents}
<INCLURE{
	fond=inclure/coloration_syntaxique,
	langage=html,
	code=#GET{code},
}>

inclure/exemple_de_code

#SET{code,#CHEMIN{demo/coloration_syntaxique_exemple_de_code.spip}|spip_file_get_contents}
<INCLURE{
	fond=inclure/exemple_de_code,
	code=#GET{code},
}>

Footnotes

[1Markdown : langage de balisage léger créé en 2004 par John Gruber, avec l’aide d’Aaron Swartz.

Discussion

One discussion

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom