HandCoder : extension Nvu pour Tidy et PHP
Modérateur : chinon37
Quels autres utilisateurs ? Franchement, à part Ymai, chinon et toi...
La 0.3.2 est bien buggée : la détection des fichiers modifiés ne fonctionne pas, impossible d'enregistrer en UTF-8, et dans certains cas on perdait du PHP. Je commence à recevoir pas mal de mails d'utilisateurs qui constatent les bugs de la 0.3.2 ; la 0.3.3 ne peut qu'être meilleure...
De toutes façons, ça n'est qu'une version intermédiaire, puisqu'il faut encore que je modifie la gestion des prologues et que j'implémente le support des balises courtes <% %>, ce qui suppose des modifs assez lourdes ; donc il faut que je fige l'état courant avant de trafiquer le code.
La 0.3.2 est bien buggée : la détection des fichiers modifiés ne fonctionne pas, impossible d'enregistrer en UTF-8, et dans certains cas on perdait du PHP. Je commence à recevoir pas mal de mails d'utilisateurs qui constatent les bugs de la 0.3.2 ; la 0.3.3 ne peut qu'être meilleure...
De toutes façons, ça n'est qu'une version intermédiaire, puisqu'il faut encore que je modifie la gestion des prologues et que j'implémente le support des balises courtes <% %>, ce qui suppose des modifs assez lourdes ; donc il faut que je fige l'état courant avant de trafiquer le code.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
J'attaque la 0.3.4. Le premier objectif serait de supporter ce prologue : J'ai modifié hc pour qu'il puisse accepter plusieurs blocs comme prologue. Ca marchouille.
Par contre, avec Tidy on a un gros problème : la ligne plante Tidy lamentablement. Comme Nvu (et la plupart des parsers html/xml), Tidy s'arrête au premier ?> qu'il trouve, ce qui détruit le document...
On ne peut pas non plus (semble-t'il) utiliser un prologue plus simple, du style :car le parser PHP interprète le <?xml comme un début d'instruction PHP. C'est parfaitement idiot mais ça explique pourquoi la ligne echo "<?xml version=\"1.0\"?>" est si courante. Ca n'est probablement plus vrai avec PHP5, puisque la forme courte <? ... ?> n'est plus autorisée.
Alternatives pour contourner ce bug :
Code : Tout sélectionner
<?php echo "<?xml version=\"1.0\"?>"; ?>
<?php defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); ?>
Par contre, avec Tidy on a un gros problème : la ligne
Code : Tout sélectionner
<?php echo "<?xml version=\"1.0\"?>"; ?>
On ne peut pas non plus (semble-t'il) utiliser un prologue plus simple, du style :
Code : Tout sélectionner
<?xml version="1.0"?>
<?php defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); ?>
Alternatives pour contourner ce bug :
- <?php echo "<?xml version=\"1.0\"?" . ">"; ?>
- <?php include('xmlprolog.txt'); ?>
- utiliser hc030, qui stocke le prologue dans un fichier texte séparé (ce qui ralentit sensiblement chaque sauvegarde)
- ne pas utiliser Tidy (mais franchement, un fichier PHP édité par Nvu et pas reformatté par Tidy, ça doit pas être simple à éditer...)

Dernière modification par Kazé le 19 mai 2006, 19:01, modifié 2 fois.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Dans tous tes codes il manque un " après le echo. (ca fait des parse error dans ma tête)Kaze a écrit :<?php echo <?xml version="1.0"?>"; ?>
La première solution me semble être la moins compliqué (quoi que).
On récupère la chaîne à afficher qui commence après le echo et qui se termine par ; "<?xml version="1.0"?>"
on isole les ? (il faut détecter le type de guillemet)
"<"."?"."xml version="1.0""."?".">"
'<'.'?'.'xml version="1.0"'.'?'.'>'
ou on remplace les ? par %c et on met la chaîne dans un sprintf
sprintf("<%cxml version="1.0"%c>", 63)
ce qui donne
<?php echo sprintf("<%cxml version="1.0"%c>", 63); ?>
Jamais utilisé, ca reste de la pure théorie. Je connais cette fonction depuis 1 minute. En html ça devrait afficher
<?xml version="1.0"?>
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
J'ai corrigé les echo
Il suffit de scinder les chaînes ?> qui suivent les echo et de laisser les autres tranquilles.
Pour la détection du guillemet, on doit pouvoir considérer que c'est celui qui suit le echo qui est utilisé sur toute la ligne. Evidemment c'est plantable avec une ligne du type :mais de toutes façons, aucun parser html ou xml ne sera jamais 100% sûr pour éditer du PHP, donc on peut se cantonner aux cas les plus fréquents.
Sinon, je viens de déterrer TidyLib. Il y a peut-être une solution en bricolant de ce coté-là, car je pourrais reformatter le code en mémoire vive plutôt que sur le disque dur. Du coup je pourrais reformatter le code sans le prologue, puis ajouter le prologue et sauvegarder...
Le problème, c'est que j'ai déjà perdu pas mal de pages avec TidyLib, sans comprendre pourquoi. C'était peut-être lié aux problèmes d'encodage des versions < 0.3.3, ça mérite quelques tests supplémentaires.
PS: TidyLib transforme le HTML 4.01 Strict en Transitional...

Bonsanmécébiensûr !Do-IT a écrit :qui commence après le echo et qui se termine par ;
Il suffit de scinder les chaînes ?> qui suivent les echo et de laisser les autres tranquilles.
Pour la détection du guillemet, on doit pouvoir considérer que c'est celui qui suit le echo qui est utilisé sur toute la ligne. Evidemment c'est plantable avec une ligne du type :
Code : Tout sélectionner
<?php echo '<?xml version=' . $xmlVersion . "?>"; ?>
Sinon, je viens de déterrer TidyLib. Il y a peut-être une solution en bricolant de ce coté-là, car je pourrais reformatter le code en mémoire vive plutôt que sur le disque dur. Du coup je pourrais reformatter le code sans le prologue, puis ajouter le prologue et sauvegarder...
Le problème, c'est que j'ai déjà perdu pas mal de pages avec TidyLib, sans comprendre pourquoi. C'était peut-être lié aux problèmes d'encodage des versions < 0.3.3, ça mérite quelques tests supplémentaires.
PS: TidyLib transforme le HTML 4.01 Strict en Transitional...

KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
D'où le quoi que. Mais on peut faire plus simple :Kaze a écrit :Evidemment c'est plantable avec une ligne du type :Code : Tout sélectionner
<?php echo '<?xml version=' . $xmlVersion . "?>"; ?>
Code : Tout sélectionner
<?php echo "<?xml version=".'"1.0"?>'; ?>
Le sprintf à l'air plus blindé
<?php echo sprintf('<?xml version="1.0"'."%c>", 63); ?> (Testé, ca fonctionne)
Pas besoin de détecter les guillemets.
Il y a sûrement une meilleure solution que d'ajouter une fonction php que ce soit sprintf ou une autre.
Autre solution dont je ne suis pas convaincu :
<?php echo "<?xml version="1.0"?".chr(62); ?>
hc0.3.9b. Onglet source me donne une fenetre d'alerte Prettyprint:trueKaze a écrit :Sinon, je viens de déterrer TidyLib
F7 aussi. Avec une preview de code source. On va dire que c'est normal.
Vu que j'ai toujours tidy de configurer il utilise pas tidylib, je pense. Idem

Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Le sprintf est une bonne idée. C'est clairement plus robuste, c'est même un peu plus simple à coder, mais j'ai peur que ça ne perturbe les utilisateurs ; alors qu'en scindant les ?>, je parie que la plupart ne verront pas la modification.
Tu noteras que ça préserve n'importe quel prologue...
"prettyPrint" correspond à l'état de la préférence Nvu "reformatter la source HTML". L'idée serait de ne lancer TidyLib que si "prettyPrint" est vrai...
Bah ça m'apprendra à stocker mes versions de travail sur mon site web ! (j'avais oublié ma clé USB...)Do-IT a écrit :hc0.3.9b.
Tu noteras que ça préserve n'importe quel prologue...
TidyLib est lancé lors de chaque sauvegarde, mais c'est presque trop rapide pour qu'on s'en rende compte.Do-IT a écrit :Vu que j'ai toujours tidy de configurer il utilise pas tidylib, je pense.
"prettyPrint" correspond à l'état de la préférence Nvu "reformatter la source HTML". L'idée serait de ne lancer TidyLib que si "prettyPrint" est vrai...
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Une site web c'est vaste, là c'était le dossier 'officiel'.
Donc j'ai installé la 0.3.3rc4, et là j'ai eu une crise cardiaque. Il y a eu une page intermediaire qui est resté affiché 1 seconde (avec des barres de progression qui défilent) puis ça. Ce qui est bizarre c'est que j'ai rien demandé, et j'ai jamais cliqué sur Mise à jour. On va dire que c'est normal. (Que le mise à jour se soit lancée toute seule)
Bon après ces moments chargés en émotions, on va repassé aux choses sérieuses.
Donc j'ai installé la 0.3.3rc4, et là j'ai eu une crise cardiaque. Il y a eu une page intermediaire qui est resté affiché 1 seconde (avec des barres de progression qui défilent) puis ça. Ce qui est bizarre c'est que j'ai rien demandé, et j'ai jamais cliqué sur Mise à jour. On va dire que c'est normal. (Que le mise à jour se soit lancée toute seule)
Bon après ces moments chargés en émotions, on va repassé aux choses sérieuses.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
La rc4 vient de devenir la version 0.3.3 'officielle'. Je mettrai mon site web à jour dans le week-end.
La 0.3.4 devrait arriver rapidement (nouvelle gestion des prologues + support ASP/JSP). Ca commence à devenir stable tout ça...
Ca me rappelle qu'il faudrait que j'implémente la mise à jour automatique pour mes extensions !
La 0.3.4 devrait arriver rapidement (nouvelle gestion des prologues + support ASP/JSP). Ca commence à devenir stable tout ça...
Je viens de mettre des "Deny all" dans les dossiers xpi 'officiels'.Do-IT a écrit :Une site web c'est vaste, là c'était le dossier 'officiel'.

Nvu ne doit pas aimer quand on repasse à une version antérieure d'une extension. Bizarre.Do-IT a écrit :Donc j'ai installé la 0.3.3rc4, et là j'ai eu une crise cardiaque.
Ca me rappelle qu'il faudrait que j'implémente la mise à jour automatique pour mes extensions !
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
hc0.3.3
C'est des vieux bug, mais j'en reparle un peu :
- le code php subit 'toujours encore' un décalage lors de chaque lancement de tidy, à partir de la 2eme ligne de code php. (idem sous xp & linux)
- Si on faire une modif dans nvu dans l'onglet source, le code php se retrouve sur une ligne. (idem sous xp & linux). C'est pour ca que j'ai viré la barre d'outils Mode d'édition sur mon nvu de 'travail'.
C'est des vieux bug, mais j'en reparle un peu :
- le code php subit 'toujours encore' un décalage lors de chaque lancement de tidy, à partir de la 2eme ligne de code php. (idem sous xp & linux)
- Si on faire une modif dans nvu dans l'onglet source, le code php se retrouve sur une ligne. (idem sous xp & linux). C'est pour ca que j'ai viré la barre d'outils Mode d'édition sur mon nvu de 'travail'.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Ca avait été partiellement résolu avec la 0.3.2, mais ça créait d'autres bugs liés à la gestion du prologue (cf. le thread d'Ymai).Do-IT a écrit :le code php subit 'toujours encore' un décalage lors de chaque lancement de tidy, à partir de la 2eme ligne de code php. (idem sous xp & linux)
Si on lance Tidy plusieurs fois de suite, ça augmente le décalage des scripts PHP. Par contre, si on lance Tidy à la sauvegarde, le décalage reste stable.
En lançant TidyLib uniquement à la sauvegarde, ça résoudrait ce problème, celui des prologues, et plus généralement ça permettrait d'envisager le support de balises non HTML comme SPIP, MathML...
Oui, idem pour les balises <pre>, même sans HandCoder.Do-IT a écrit :Si on faire une modif dans nvu dans l'onglet source, le code php se retrouve sur une ligne. (idem sous xp & linux).
C'est pénible. C'est même dangereux quand on utilise des commentaires de fin de ligne (//) plutôt que des blocs (/* */).
J'ai essayé de corriger ça mais je n'y suis pas arrivé.

Là encore, en intégrant TidyLib il y a peut-être moyen de résoudre le problème.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
J'ai mis Tidy (pas lib) à la sauvegarde + nettoyeur, on va voir ce que ça donne.Kaze a écrit :En lançant TidyLib uniquement à la sauvegarde, ça résoudrait ce problème, ...
Le bouton éditeur n'est compatible avec aucun des 4 autres thèmes. Ça donne toujours une superposition de 3 boutons éditeur.

Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
les précédentes versions posaient le même probléme avec les autres thèmes...
Préferez Kompozer 0.8 à Nvu
Défendons nos valeurs, adhérons à l'APRIL
La Démocratie, c'est quand on frappe à votre porte à 6h00 du matin, et que c'est le laitier.
Défendons nos valeurs, adhérons à l'APRIL
La Démocratie, c'est quand on frappe à votre porte à 6h00 du matin, et que c'est le laitier.
On a sûrement déjà parlé de la forme courte des balises php ?Do-IT a écrit :Tiens j'ai encore un code php qui disparaît à 100%, merci nvu. (à suivre... dans l'autre sujet...)
Code : Tout sélectionner
<? print "bla"; ?>
Nvu seul n'apprécie pas, il supprime tout.
nvu+hc, pareil.
nvu+nsm, là c'est bizarre ça ouvre rien
Code : Tout sélectionner
Erreur : window.top.document.open is not a function
Fichier source : chrome://nsmcontext/content/sitemanagerOverlay.js
Ligne : 121
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Le bouton "Editeur" ne fonctionne bien qu'avec le thème par défaut. J'ai commencé à regarder pourquoi, mais je n'ai pas trouvé de solution simple pour l'instant.
A corriger. Il devrait y avoir une beta ces jours-ci avec un (petit) support ASP/JSP.
Effectivement, c'est une régression sur hc030. Bêtement, la forme <% %> est bien lue par hc033 (qui les transforme en <?php ?>)...Do-IT a écrit :On a sûrement déjà parlé de la forme courte des balises php ?
A corriger. Il devrait y avoir une beta ces jours-ci avec un (petit) support ASP/JSP.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Avec Tidylib et support des include ?Kaze a écrit :Il devrait y avoir une beta ces jours-ci avec un (petit) support ASP/JSP.
JSP je savais même pas que ça existait.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité