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)

Répondre à