Salut Yannick,
Tout d'abord, je tenais à te dire §Chapeau pour ce travail laborieux, qui a
du te demander beaucoup de temps et d'énergie.
Merci merci merci et je t'encourage à continuer à concrétiser ce que tu
envisages, c'est super.
En plus, j'ai l'impression que la programmation en Python est un domaine qui
te passionne, n'est-ce pas?
Lol !
Pour le forPython, tu n'as aucune raison de t'excuser, et puis c'est
peut-être bien aussi que ces nouveautés soient incluses dans une extension
séparée, en attendant...
Encore merci à toi...
Bien amicalement,
Abdel.
----- Original Message -----
From: "Yannick Youalé" <[email protected]>
To: <[email protected]>
Sent: Sunday, March 06, 2016 5:46 PM
Subject: [progliste] 6pad++ forPython- aperçu de nouvelles fonctionnalit és
Salut les mecs,
Tout d'abord, pour en profiter pour répondre aux contributeur suivant ma
dernière demande d'aide, je dois dire qu'après avoir appliqué la
suggestion d'Abdel, l'affichage de l'erreur a disparue.
Cependant, je n'ai pas retiré la ligne de décodage juste après le popen.
Ce qui à mon avis élimine les autres types d'erreurs d'encodage qui ont
fait la crainte de Quentin.
Maintenant ma proposition du jour.
Certes j'en suis toujours à la phase de complétion et d'expérimentation
des fonctionnalités que je vous ai annoncées ces dernières semaines,
mais je juge que je peux à présent vous en donner un aperçu.
Attention, je dis bien un aperçu car, c'est pas encore fini.
En pièce jointe, je vous ai mis l'extension temporaire dans laquel j'ai
travaillé tools.py et deux fichiers annexes qui doivent être mis dans le
même dossier.
Je demanderais pour commencer à Abdel de m'excuser car pour des raisons
pratique j'ai gardé le listage des versions de python dans cette
extension temporaire. Ce qui fait qu'il y aura doublons. On va dire
qu'on va tolérer cela uniquement pour les tests.
Cela se trouve toujours dans le menu outils et est nommé "Versions de
python". Ainsi, si vous voulez que certaines des fonctionnalités
décrites ci-dessous marchent, vous devrez cocher un élément de ce
sous-menu.
D'ailleurs si de quelconques menu il y a, vous les retrouverez dans le
menu outils.
A présent, rappel des nouvelles fonctionnalités proposées:
1. l'ajout et le retrait de balises de fin de bloc au code correctement
indenté. Idéal pour lire du code python plus aisément.
Dans le menu outils il sera créé un élément avec sous-menus nommé
"balises de fin de block, et les ajouts et retraits sont deux éléments
de ce sous-menu.
2. l'ajustement des indentations à partir de balises de fin de blocs.
Est également présent dans "outils", "balises de fin de bloc".
Attention, je dois encore perfectionner cette fonctionnalité.
Il y a notamment les cas des continuation d'instructions à la ligne
suivante, et certains cas de relance de l'indentation par des else
précédés de elif et autres subtilités de ce genre à prendre en compte.
Quoi que pour des codes simples/classiques, ça fonctionne plutôt bien.
3. la vérification de la syntaxe d'une ligne ayant été modifiée juste
après une tentative de déplacement à une autre ligne.
Il sera notamment affiché un message d'avertissement :
* si il y a un déséquilibre des parenthèses, guillemets, accolades,
crochets, etc...
* si le deux points obligatoire est manquant sur une ligne le requerant;
* si deux types de caractères d'indentation sont présents en début de
ligne;
La ligne sera par ailleurs automatiquement et imperceptiblement
rectifiée dans les cas suivants:
* si elle se termine par des espaces ou des tabulations (par leur
retrait)
Je suis toujours en train de réfléchir comment vérifier et synchroniser
l'écriture de mots clés et variables par la même fonctionnalité.
C'est plus complexe que je ne l'avais envisagé au départ.
Le but ici est d'avertir ou de corriger immédiatement des erreurs
d'inattention.
Ce qui constitue un gain en temps considérable, au moins dores et déjà
dans mes développements à moi-même.
4. La complétion de code ou intellicence.
Par la combinaison ctrl+j, une liste déroulante apparaîtra pour vous
proposer une liste de mots clé, Cela qu'une expression ou non soit
détectée sous le curseur.
Par mots clés, j’entend les nom de variables, fonctions, classes,
objets, modules, et mots réservés du langage python.
Si aucune expression n'est détectée sous le curseur, c'est une liste de
mots clés généraux qui seront proposés, prenant en compte les imports et
déclarations qui auront été réalisés jusqu'à cet emplacement du code.
Si une expression sans point est détectée sous le curseur, la liste des
mots clés généraux est proposée et vous êtes positionnés sur celle qui
commence de la même façon que le mot sous le curseur.
Si une expression avec des points est détectée sous le curseur, il vous
sera proposé une liste de sous objets et mots clés possibles à insérer
juste après le dernier point.
Si la fonctionnalité détecte que vous êtes juste après le mot clé
"import", ce seront toutes les bibliothèques disponible dans
l'interpréteur que vous aurez coché qui seront proposés.
Attention, ici j'ai fait de gros effort d'optimisation, mais dans les
cas où on a beaucoup de bibliothèques installées ou beaucoup de
sous-mots clés à un objet, ça peut encore prendre un peu de temps avant
d'afficher la liste de propositions.
Certaines listes ont plus de 3000 éléments, qu'il faut trier sans
respect de la cass avant.
5. L'aide au mot clé sous le curseur.
Elle a la même base que la complétion de code.
Mais au lieu d'afficher une liste de mots clés insérables, elle ouvre la
console pour vous afficher l'aide pour le mot clé sous le curseur.
Le raccourci clavier est ctrl+I.
Donc cela évite de passer par la console pour taper des help. Vous
pouvez simplement parcourir un code, vous placer sur un mot clé et
faire ctrl+i.
Au cas où le mot clé n'a pas d'aide, vous entendrez un beep d'échec.
L'astuce ici a été de retrouver toutes les déclarations liées à
l'élément sous le curseur, avant de tenter une exécution pour capter le
texte d'aide en background.
Mais cependant Ici aussi, il y a encore des cas que je dois prendre en
compte. Notamment certaines déclarations implicites faite dans les
boucles for, certaines déclarations multiples sur une même ligne, ou les
déclarations entre les parenthèses de paramètres à une fonction.
Voilà !
Tout ça n'a fait que 1850 lignes de codes.
Bon allez, avec un bon nombre de lignes de commentaires comme balises de
fin de bloc... que vous pourrez d'ailleurs enlever d'un click grace à
une fonctionnalité de qui, de qui ????
Hé oui, hé oui !
Au delà de ça, je continue d'avoir d'autres idées en réserve, mais me
mets un point d'honneur à terminer celle que j'ai entamer.
Il y a par exemple:
* L'augmentation ou la réduction de la sélection au blocs parent ou
enfant;
* le chargement de fichiers chm présent dans les dossier doc de toutes
les version de python et leur affichage comme sous élément du menu aide
lors du chargement des versions de python;
* la refonte du collage de texte dans l'éditeur pour une meilleure prise
en compte des indentations;
* l'interdiction du caractère tabulation si on n'est pas en début de
ligne;
* l'interdiction d'une indentation supérieure à un niveau par rapport à
la ligne précédente;
* un déplacement uniquement de classes en classes par CTRL+F2 et
CTRL+SHIFT+F2 parce que cela
m'est paru évident en ouvrant des fichiers python volumineux dans
lesquels de nombreuses classes avaient été mises;
* un élément de menu pour la création d'un exécutable via le py2exe (un
rappel).
Je m'arrête là.
J'attends vos retours avisés.
Amicalement,
Yannick Daniel Youalé
La programmation est une religion. Aimez-la ou quittez-la.
www.visuweb.net
Progliste :
Pour se d�sinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je
vous r�pondrez en priv�.