On_save évènement déclenché AVANT le save?

Je suis en train de travailler sur une méthode appelée depuis une macro sur l’évènement on_save.
Le problème que je rencontre est que l’évènement semble déclenche AVANT la sauvegarde effective de la méthode.
Si j’utilise un LIRE PARAMÈTRE MACRO ou un MÉTHODE LIRE CODE dans la méthode
, le texte que je récupère ne contient pas les modifications faites entre les deux derniers save.
Comment récupérer le code de la méthode APRES le save ?

Merci,

Pascal

Bonjour,
Le on save est bien appelé avant la sauvegarde effective, il te faux donc temporiser quelques secondes pour pouvoir lire nouveau code

Bonjour,

Merci Paul,

Cela veut il dire qu’il faut le faire dans un autre process/Methode ?

Pascal

Je me demandais :
« La commande http://livedoc.4d.com/4D-Langage-15.5/Outils/LIRE-PARAMETRE-MACRO.301-3576780.fr.htmlLIRE PARAMETRE MACRO> retourne dans paramTexte une partie ou la totalité du texte de la méthode depuis laquelle elle a été appelée. »
Ça ne renvoie pas la méthode telle qu’à l’écran ???

Bonjour Arnaud,

Effectivement, je viens de le tester, et LIRE PARAMETRE MACRO retourne bien ce qui est à l’écran.
On peut donc disposer du contenu Avant (METHODE LIRE CODE) et apres (LIRE PARAMETRE MACRO).

Merci,

Pascal

J’avoue, j’ai triché : j’ai regardé le source de 4d pop macro avant de répondre. :mrgreen:

C’est ça la confiance professionnelle :slight_smile:

bonjour,

Vous pouvez aussi, et ceci depuis bien avant que la commande METHODE LIRE CODE existe (v13.6), utiliser LIRE PARAMETRE MACRO (v11) dans une macro déclenchée dans l’événement on_open.

C’est ce que j’aime dans le source ouvert : on peut pomper, avouer qu’on pompe, inviter les autres à pomper, et on n’a même pas honte.

Bonjour,

j’utilise également la commande LIRE PARAMÈTRE MACRO pour récupérer le code d’une méthode fraichement modifié, mais je rencontre un problème. Contrairement à MÉTHODE LIRE CODE, le code de LIRE PARAMÈTRE MACRO n’est pas indenté.

Du coup, difficile de faire des diff entre le référentiel qui a été exporté par MÉTHODE LIRE CODE, et une méthode qui vient d’être modifiée.

Et je ne souhaite pas perdre l’indentation ! Trop pratique.

Y a t’il une astuce pour que LIRE PARAMÈTRE MACRO renvoie du code indenté ?

Stef

Bonjour,

Les deux commandes ne sont pas destinées au même usage, il n’est donc pas étonnant que le résultat soit différent.

Il n’y a pas d’astuce pour retourner du code indenté avec LIRE PARAMÈTRE MACRO. Cette commande ne retourne pas non plus la première ligne contenant les attributs qui se trouve dans le texte de MÉTHODE LIRE CODE. Les tokens ne sont pas non plus disponibles avec LIRE PARAMÈTRE MACRO. De telle sorte que faire un DIFF sera, à mon sens, toujours positif, en tout cas avec des outils classiques.

Il est possible de réindenter le texte, comme 4D, par programmation. Vous trouverez le code dans la macro “Copy with indentation” du composant 4DPop Macros. Mais je vous le déconseille car à chaque nouvelle structure ajoutée dans le language de 4D, il faudra reprendre le code. (je ne maintient plus cette macro car la copie depuis l’éditeur de méthode est maintenant indentée)

Peut-être pouvez vous essayer, lorsque vous recevez l’événement on_save de démarrer un process qui recevra le pathanme de la méthode puis utilisera MÉTHODE LIRE CODE une fois la sauvegarde effectuée. Là vous pourrez faire un DIFF entre deux chose comparables.