Salut la ML,
J'ai découvert l'éditeur 6pad++, grâce aux mails de Quentin et de JF, et je
le trouve très pratique.
Bravo à son concepteur, Quentin je crois, pour ce super travail.
Il est très léger et facilite grandement la rédaction de codes, pour
n'importe quel langage...
Étant particulièrement intéressé par le Python, je suis agréablement surpris
par la possibilité d'enrichir les fonctionnalités de cet éditeur en créant
des plugins en Python.
Tiens, en parlant de Python, je vous joins le commencement d'un plugin, que
j'ai décidé d'appelé "forPython" tout simplement, qui devrait permettre dans
un premier temps, de faciliter la navigation parmi les fonctions d'un
module, avec "F2" et "SHIFT+F2", et parmi les classes, avec "F7" et
"SHIFT+F7".
Pour l'installer, vous devez certainement connaître la méthode, qui est
documentée en anglais dans le répertoire "doc".
1. Au même niveau hiérarchique que l'exécutable "6pad++.exe", créer un
répertoire intitulé "plugins".
2. Dans ce répertoire "plugins", coller le fichier "forPython.py" ci-joint.
3. Dans le fichier "6pad++.ini" situé au même niveau hiérarchique que
l'exécutable "6pad++.exe", ajouter la ligne suivante, sans les guillemets
bien entendu :
"extension=plugins/forPython.py".
Voila, si quelqu'un est intéressé d'enrichir cette extension avec moi, il
sera bien sûr le bienvenu.
Idées pour les prochaines mises à jour :
1. Créer une liste de choix avec "CTRL + L" et "CTRL + SHIFT + L" pour la
liste des fonctions et la liste des classes.
2. Reconnaître automatiquement le caractère d'indentation du fichier en
cours d'édition et s'il est absent, le laisser à 0, qui est le choix par
défaut, et qui équivaut à une tabulation.
3. Offrir la possibilité de connaître les numéros de lignes, les niveaux,
les numéros de lignes et les niveaux, ou rien du tout, avec un raccourci de
basculement, par exemple "CTRL + F8".
4. Offrir la possibilité, pour une ligne donnée, d'augmenter ou de diminuer
un niveau, par exemple, avec "CTRL + F9" pour diminuer, ou "CTRL + F10" pour
augmenter.
PS:
Le nom "forPython" est discutable, vous pouvez suggérer un nom plus parlant
si vous préférez.
Voilà, merci à vous et encore merci à Quentin.
Bien amicalement,
Abdel.
import re
sp=sixpad
regFunc = re.compile("^[ \t]*def.*?:*")
regClass = re.compile("^[ \t]*class.*?:*")
def nextClass():
if regClass.match(sp.window.curPage.line(sp.window.curPage.curLine)) and
sp.window.curPage.curLine < sp.window.curPage.lineCount:
i = sp.window.curPage.curLine + 1
else:
i = sp.window.curPage.curLine
while i < sp.window.curPage.lineCount and not
regClass.match(sp.window.curPage.line(i)):
i += 1
if i == sp.window.curPage.lineCount:
sp.window.messageBeep(0)
break
sp.window.curPage.curLine = i
sp.say(sp.window.curPage.line(sp.window.curPage.curLine), True)
sixpad.window.addAccelerator("F7", nextClass)
def previousClass():
if regClass.match(sp.window.curPage.line(sp.window.curPage.curLine)) and
sp.window.curPage.curLine > 0:
i = sp.window.curPage.curLine - 1
else:
i = sp.window.curPage.curLine
while i > -1 and not regClass.match(sp.window.curPage.line(i)):
i -= 1
if i == -1:
sp.window.messageBeep(0)
break
sp.window.curPage.curLine = i
sp.say(sp.window.curPage.line(sp.window.curPage.curLine), True)
sixpad.window.addAccelerator("SHIFT+F7", previousClass)
def nextFunction():
if regFunc.match(sp.window.curPage.line(sp.window.curPage.curLine)) and
sp.window.curPage.curLine < sp.window.curPage.lineCount:
i = sp.window.curPage.curLine + 1
else:
i = sp.window.curPage.curLine
while i < sp.window.curPage.lineCount and not
regFunc.match(sp.window.curPage.line(i)):
i += 1
if i == sp.window.curPage.lineCount:
sp.window.messageBeep(0)
break
sp.window.curPage.curLine = i
sp.say(sp.window.curPage.line(sp.window.curPage.curLine), True)
sixpad.window.addAccelerator("F2", nextFunction)
def previousFunction():
if regFunc.match(sp.window.curPage.line(sp.window.curPage.curLine)) and
sp.window.curPage.curLine > 0:
i = sp.window.curPage.curLine - 1
else:
i = sp.window.curPage.curLine
while i > -1 and not regFunc.match(sp.window.curPage.line(i)):
i -= 1
if i == -1:
sp.window.messageBeep(0)
break
sp.window.curPage.curLine = i
sp.say(sp.window.curPage.line(sp.window.curPage.curLine), True)
sixpad.window.addAccelerator("SHIFT+F2", previousFunction)