ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

ISXPlus : améliorations de l'intellisense   



L'auteur

Luc
France France
Membre Actif (personne physique)
# 0000000060
enregistré le 21/10/2004

http://www.limoog.net
Gilot Luc
01 700 Neyron
Fiche personnelle


Note des membres
pas de note

Contributions > 21 - Outils

ISXPlus : améliorations de l'intellisense
# 0000000789
ajouté le 30/03/2011 21:28:17 et modifié le 05/04/2011
consulté 3175 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0


Télécharger le ZIP (69.98 Ko)
Description

Comme promis aux rencontres AtoutFox, voice ma version de ISX (baptisée modestement ISXPlus, bon, il faut bien donner un nom). C'est censé augmenter la productivité, et chez moi ca marche tès très bien.

Cette amélioration à l’intellisense native de VFP a une longue histoire, depuis ses débuts (par Christpf Wollenhaupt d’après Francis, mais les commentaires dans le PRG mentionnent « This program has been written in 1999-2002 by Christof Lange ». [qq minutes après] : Merci Francis : Christof Lange et Christof Wollenhaupt sont une seule et même personne : voir commentaire + bas). Voici un petit historique.

11/2004 : Eddy Maue http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000104
Ces modifications sont contenues dans ma version

03/2006 : Luc http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000300
Ces modifications sont contenues dans ma version

05/2008 : Eddy Maue http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000563
Ces modifications NE SONT PAS REPRISES dans ma version

03/2010 : Christof Wollenhaupt http://www.foxpert.com/downloads.htm
Je n’ai absolument pas connaissance de cette version à ce jour (merci Francis de me l’avoir signalée), et on peut imaginer qu’elle est aussi évoluée que la mienne ?

On peut citer aussi VariSense 2.0, écrit par Derek J. Kalweit (dkalweit@sensiblesoftware.com; http://www.sensiblesoftware.com/VariSense.aspx), dont certains codes ont été incorporés dans ISXPlus.

Les fonctionnalités :

Ce qu’on voit

  • La frappe « m. (point)» propose la liste des variables définies en Local, Global, Parameter, lParameter (mais pas les paramètres définis dans une déclaration du type « MaFonction(MonParamètre) »)

m.

  • La frappe « This. (point)» propose la liste des membres de This, définies dans la classe ou héritées des classes parentes, qu’elles soient PRG ou VCX.

This.

  • La Frappe « This. (point)» amène la liste des membres de la propriété si c’est un objet (par exemple défini avec « Protected iPropBidon1HiddenAsMyForm AS myformtest OF "testeisx.vcx" »).

This..

  • La Frappe « Ctrl + UpArrow » amène la liste des #Define applicables au programme courant : ceux qui y sont définis directement, ou ceux qui sont inclus dans les fichiers .h #included.

Define

  • La Frappe « . (point) » amène la liste des champs de l’alias .
  • La Frappe « Ctrl + Espace » après le début d’une saisie amène la liste de :
    • Si le mot commence par « m. » : liste des variables
    • Si le mot commence par « This. » : liste des membres ou des membres du membre, etc.
    • Si le mot avant le point est le nom d’un alias ouvert, la liste des champs de cet alias
    • S’il n’y a pas de point, la liste des variables, plus des #Define, plus des tables
    • La Frappe « Alt+ UpArrow » à la fin d’une saisie (même vide) amène la liste des fonctions définies dans le projet actif, plus toutes les fonctions et instructions VFP (on peut optionnellement enlever l’affichage de ces instructions VFP).

Fonctions

  • La Frappe « Alt+ DnArrow » à la fin d’une saisie d’un nom de fonction existant dans le projet amène le msgbox ci-dessous, qui permet de choisir entre atteindre la définition de la fonction, et insérer dans le PRG les commentaires correspondant aux paramètres de la fonction..

DescFonction

La fonction une fois commentée

CommFonction

  • La Frappe « Ctrl+F12 » duplique le texte et le met en commentaire avec les initiales du programmeur et la date (la première fois, elle demande les initiales).

Commentaires

  • La Frappe « Alt+S » monte en Set Procedure le PRG actif.
  • La Frappe « Ctrl+Q » Active ou désactive ISX.

Ce qu’on ne voit pas

Une grosse différence est que ISX stocke ses données sous forme de table, ce qui est important pour la vitesse dans le cas des affichages de listes de procédures/fonctions/membres/#Define : ils n’ont pas besoin d’être lus à chaque lancement d’ISX : si le fichier n’a pas été modifié depuis la dernière lecture par ISX, les informations sont prises directement dans la table.

ISX est déjà la compilation du travail de plein de personnes. Chez moi j’y ai fait travailler des stagiaires et c’était sans doutes une erreur : merci de ne pas trop regarder la qualité du code…

Attention

La version actuelle pose un Set Deleted On à l’instanciation de ISX (Do ISXPlus.PRG ou Ctrl+Q), et remet la config initiale lors de la destruction (Clear all, _Screen.oIXS = Null ou Ctrl+Q). Ca ne me gèene pas puisque je suis toujours en set deleted on, mais ce n’est pas le cas de tout le monde …

ISX ne sait lire les membres des classes définies dans ces VCX que par AMembers après avoir instancié la classe par CreateObject : ca peut être gênant pour des classes qui ne peuvent pas s’instancier « A vide », et qui affichent un message d’alerte dans ce cas. On peut désactiver cette fonctionnalité par la propriété « lIgnoreVCXClasses » de la classe cMyISX.

Installation et personnalisation

Installer : Il suffit de placer le contenu du Zip dans un répertoire (NB : les images vont normalement dans un sous-répertoire "Graphics" mais je ne sais pas comment faire pour inclure l'info dans WinZip sans que toute l'architecture soit sauvegardée depuis la racine).

Lancer : "Do ISXPlus.PRG". On peut aussi mettre cette commande dans le config.fpw.

Interrompre : "Ctrl+Q

Relancer : Ctrl+Q

Il vaut mieux ne pas toucher à la classe de base cISX pour faire ses personnalisations. Le mieux est d’utiliser la classe héritière cMyISX (dans MyISX.PRG) :

  • Pour changer les options
  • Pour surcharger la méthode Install, qui permet de définir les combinaisons de touches associées aux fonctions
  • Pour définir de nouvelles fonctionnalités

Complément

En code VFP, je donne aussi qq PRG à insérer dans le gestionnaire d'intellisense VFP (Outils/Gestionnaire d'intellisense/Custom), qui correspond à la table _FoxCode montrée par Ken Levy lors des rencontres de Montpellier.

Code source :
* En plus du ZIP qui contient ISXPlus, aussi qq PRG à insérer dans le gestionnaire d'intellisense VFP (Outils/Gestionnaire d'intellisense/Custom), qui correspond à la table _FoxCode montrée par Ken Levy lors des rencontres de Montpellier.

* 1. Mettre en commentaire du code en placant la date et les initiales du développeur
* Chez moi, le raccourci (colonne 1 dans l'onglet "Custom" du Gestionnaire d'intellisense (Intellisense manager), ou champ "abbrev" dans la table (_FoxCode)) est "deac"
* Le code ci-dessous est placé dans la colonne "data" de la table (_FoxCode), et on peut aussi le modifier avec le bouton "Script" du Gestionnaire d'intellisense

LPARAMETER oFoxCode

set proc to "ISXPlus.prg" additive
Local lcDéveloppeur
m.lcDéveloppeur = ISX_RtvDéveloppeurEnCours()

*IF oFoxCode.Location = 1
   oFoxcode.valuetype = "V"
   TEXT TO lcComment TEXTMERGE NOSHOW
* <<m.lcDéveloppeur>> <<DTOC(Date(), 1)>> deac ~
   ENDTEXT
*ELSE
*   lcComment = oFoxCode.Abbrev
*ENDIF

RETURN lcComment

* 2. Préparer des balises de début et de fin de modification incluant la date et les initiales du développeur
* Chez moi, le raccourci est "début"

LPARAMETER oFoxCode

set proc to "ISXPlus.prg" additive
Local lcDéveloppeur
m.lcDéveloppeur = ISX_RtvDéveloppeurEnCours()

*IF oFoxCode.Location = 1
   oFoxcode.valuetype = "V"
   TEXT TO lcComment TEXTMERGE NOSHOW
* <<m.lcDéveloppeur>> <<DTOC(Date(), 1)>> début
~
* <<m.lcDéveloppeur>> <<DTOC(Date(), 1)>> fin
   ENDTEXT
*ELSE
*   lcComment = oFoxCode.Abbrev
*ENDIF

RETURN lcComment


Commentaires
le 30/03/2011, Francis Faure a écrit :
Un grand merci pour avoir présenté ton amélioration de ISX aux conférences et d'avoir posté cet article : effectivement cela permet un très grand gain de productivité !
Cordialement
Francis

le 01/04/2011, Cesar Ch a écrit :
Salutations,
Sorry for writing in english, I could never manage to express myself regarding this gem in French.
MERCI BEAUCUP for sharing this !
VERY NICE !!!
I've just played with it, and definitely you did an outstanding job.
Let me give you some suggestions...
Recently some brazilian foxers also applied some fixes and improvements to ISX. In our case, we called it ISX-BR :-)
It would be fantastic to merge all versions, and have an even more empowered version of ISX.
Apart from that, your idea of using icons and images to help the user interface of ISX is excellent as well.
I think the best option would be to compile ISXPLUS as an APP. This way, you'll have to distribute just one single file, that will contain all the ones needed.
Apart from that, this will provide lots of new possibilities, like creating a Setup form, allowing users to choose their configurations interactively.
Best regards,
Cesar

le 05/04/2011, Luc a écrit :
Le zip a été mis à jour pour tenir compte du bug signalé par eddyMaue : seul le fichier ISXPlus.PRG a été modifié

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2017.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0