JeuWeb - Crée ton jeu par navigateur
Afficher le numéro des lignes avec GeSHi via xajax - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Afficher le numéro des lignes avec GeSHi via xajax (/showthread.php?tid=1397)



Afficher le numéro des lignes avec GeSHi via xajax - Plume - 01-07-2007

Klemmth a écrit :Bonjour à tous !
Voilà, j'ai un petit problème avec geshi, comme le précise le titre. En effet, je m'en sers pour donner un aperçu coloré d'un code en passant par un bouton. Pour ne pas avoir à recharger la page, je me sers de xajax. Jusque là pas de problème.
Le problème maintenant c'est si je veux afficher les numéros de lignes ( $geshi->enable_line_numbers( GESHI_NORMAL_LINE_NUMBERS ); ). En effet ça ne marche pas. Je suppose que le problème vient de xajax et je ne connais pas assez le fonctionnement de geshi pour avoir une idée de comment résoudre le problème. Donc si quelqu'un s'y connait mieux que moi et aurait une idée de la solution, je suis preneur Wink
Voici la fonction qui s'occupe de tout ça :
Code PHP :
<?php 
/* AfficheCodeColore - Affiche le code demandé en couleur
. $Source (char): Code à colorer
. $Langage (char): Langage du code
. $AfficherLignes (bool) : Afficher ou non les numéros de ligne
. $Fichier (bool) : Le code provient de fichier ou non ( si oui $Code doit être égal au nom du fichier )
*/

function AfficheCodeColore( $Source, $Langage, $AfficherLignes = FALSE, $Fichier = FALSE )
{
$Reponse = new xajaxResponse();

(
$Fichier ) ? $Code = file_get_contents( $Source ) : $Code = $Source;
$geshi =& new GeSHi( $Code, $Langage );
if(
$AfficherLignes )
$geshi->enable_line_numbers( GESHI_NORMAL_LINE_NUMBERS );

$Reponse->addAssign( "code_colore", "innerHTML", $geshi->parse_code() );
return
$Reponse->getXML();
}
Merci d'avance Smile



RE: Afficher le numéro des lignes avec GeSHi via xajax - Nessper - 01-07-2007

Ouah je suis deg' de pas pouvoir t'aider car avec tous les gens que tu as débloqué, tu mérte qu'on te file le tuyau en 2 2. Je ne connais pas du tout Geshi donc je ne sais pas comment il réagit.
Si je trouves une pite je te fais signe


RE: Afficher le numéro des lignes avec GeSHi via xajax - Plume - 01-07-2007

Merci de cette réaction ^^
Même si personne ne trouve de solutions, on finira par trouver l'astuce Smile
Question de temps :roll:


RE: Afficher le numéro des lignes avec GeSHi via xajax - naholyr - 02-07-2007

Peut-être qu'il faut regarder du côté des caractères de saut de ligne. Ça se trouve GeShi ne prend que les \r\n (Windows), et vous lui donnez du \n (Linux), ou pire il attend du \n et vous lui donnez du \r (Mac). Mais en regardant la source je me dis que c'est vraiment improbable :/

Tu pourrais nous donner le code sorti par GeShi sans xajax ? Et aussi celui qu'il te sort avec (sélectionne la zone et fais clic droit > source de la sélection pour avoir la vraie source en temps réel modifs JS incluses) ?
Il y a peut-être une autre piste : ça se trouve GeShi génère du JS pour afficher les numéros de ligne, et dans ce cas forcément ça ne marchera pas (un tag <SCRIPT> rapatrié par Ajax n'est pas inteprété par le navigateur, sauf bidouille)


RE: Afficher le numéro des lignes avec GeSHi via xajax - carlou - 02-07-2007

quand tu active la numerotation, ca te sort quand meme le code sans la numerotation ou rien du tout?


RE: Afficher le numéro des lignes avec GeSHi via xajax - Plume - 02-07-2007

Tenez, faîtes vous plaisir : http://de-libre.org/modifier_site.php

@ Carlou : Il ne manque que la numérotation, le reste est correct.

Remarquez aussi la première ligne qui est tout le temps décalé vers la droite sans que je sache pourquoi :roll:

Merci de vos interventions Smile


RE: Afficher le numéro des lignes avec GeSHi via xajax - Roworll - 02-07-2007

Le décalage c'est à cause du TextArea.
En regardant le code HTML, tu as la balise TextArea, un retour à la ligne et des tabulations.
Textarea étant une truffe, il affiche ce qu'il contient tel quel.

Dans ton code source, vérifie bien que tu affiches le contenu qui doit apparaître dans le TextArea juste après la balise.

Pour les N° de ligne... Pas trop d'idées...

[edit]
J'ai trouvé ça sur un forum
Les numéros de ligne ne fonctionnent qu'avec la structure complète et non avec la fonction courte !
source de l'info ici
Je sais pas si ça peut aider mais bon...