Coloration syntaxique sur du PHP interactif

a marqué ce sujet comme résolu.

Bonjour à tous,

Je comprends bien que la balise de code PHP n'a pas forcément été prévue à cet effet, mais je n'ai pas la moindre couleur lorsque je mets du PHP entré en mode interactif dans une de ces balises :

1
2
3
4
5
6
```php
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !
`` ` (J'ai ajouté l'espace moi-même pour "imbriquer" les balises)

donne l'affichage suivant :

1
2
3
4
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !

Je m'attendais au moins à voir les noms de fonctions, de variables ou le commentaire se colorer ! :'(

Malheureusement, il ne semble pas y avoir de lexer pour PHP en mode console chez pygments. Il faut sans doutes voir avec eux pourquoi cet exemple ne fonctionne pas, mais en survolant la doc il semblerai qu'il manque les balises <?php

EDIT: c'est bien ça:

1
2
3
4
5
6
7
```php
<?php
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !
`` `
1
2
3
4
5
<?php
php > echo ($a + (int) $b)."\n";
5
php > echo gettype($a + (int) $b)."\n";
integer // Le résultat est un entier, maintenant !

Du coup c'est peut-être configurable en mettant startinline = True quelque part.

+1 -0

Pour rebondir là dessus, c'est pas un peu chiant de devoir placer un <? ou un <?php en tête de chaque code pour qu'il soit coloré ? Y'a pas moyen de le faire par défaut, à partir du moment où l'auteur a clairement précisé via ```php qu'il s'agit de code PHP ?

+2 -0

@Coyote : le problème c'est que le PHP peut se mélanger au HTML, donc un bout de code peut ne pas commencer par du PHP.

Exemple :

1
2
3
4
<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $toto: ?></title>

[EDIT] Bon, c'est vrai que la coloration du HTML saute (d'ailleurs c'est pas très normal), mais ça reste du code valide et courant…

Du coup, ça vous paraît pertinent de colorer automatiquement si l'auteur précise ```php, ou pas ?… :euh:

Coyote

C'est le but de l'option startinline=True qu'il faut passer au lexer, sans doutes depuis ZMarkdown.

Il faudrait peut-être aussi rajouter le lien vers les lexers pygments dans la doc Markdoqn de ZdS.

+0 -0

Si on écris ```php il paraît logique de ne pas avoir besoin de devoir repréciser <?php derrière.

La source

Oui et non.

Quand tu as un fichier PHP dans un éditeur de texte ou un IDE et que tu n'as pas utilisé <?php ton code n'est pas coloré car pas considéré comme du PHP (le marqueur permettant l'interprétation).

Justement. Si avec un fichier entier on doit mettre le marqueur pour avoir la coloration, ça me paraît logique qu'il faille le mettre pour une portion de fichier.

Après comme un a un marqueur html+php, on peut se passer de ce marqueur obligatoire, mais ça va à l'encontre du fonctionnement habituel des colorateurs syntaxiques. À voir s'il vaut mieux garder un comportement certes contraignant mais connu ou risquer de perturber les habitués.

Oui, je parlait bien de rajouter un paramètre.

Après je pense que la non coloration du code console PHP est plus a voir directement du coté de Pygments qui ne le propose pas (contrairement à la console Python). Cependant le problème se pose aussi, comme dis précédemment, si on à une portion de notre code qu'on veut poster sans forcément rajouter le <?php. Hors Pygments propose un paramètre réglable pour faire ça.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte