Re encore,

Allez, comme promis, en attendant peut-être d'inclure du braille là-dedans, ce qui n'est pas forcément si utile au fond, voici ce que j'utilise pour connaître le niveau actuel d'indentation de la ligne courante. Perso je ne peux guère m'en passer, même lorsque j'ai du braille sous les doigts, mais je continue à tirer mon chapeau à ceux qui ne programment qu'à la synthèse... j'y arrive... parfois seulement.

Ce sont deux fonctions, l'une s'appuyant sur l'autre, parce qu'on pourrait imaginer de réutiliser "niveauIndentation" pour comparer l'indentation de deux lignes entre elles, par exemple...

J.-F.

# La fonction quelleIndentation utilise la fonction niveauIndentation,
# qui pourrait être utile dans d'autres cas: par exemple comparer des 
indentations
# en vue de déplacements par blocs.
# Le raccourci que j'ai choisi, Ctrl+F1, provient de Visu2Script.


def niveauIndentation():
        """Calcule le niveau d'indentation actuel, et retourne le résultat dans 
un tuple de deux éléments: nombre de tabs, nombre d'espaces."""

        edit = sixpad.window.curPage
        premiernonblanc = edit.lineSafeStartOffset(edit.curLine)
        espaces = 0
        tabs = 0
        if premiernonblanc != edit.lineStartOffset(edit.curLine):
                ligne=getLine()
                i = edit.lineStartOffset(edit.curLine)
                while i < premiernonblanc:
                        if edit.text[i] == " ": espaces += 1
                        if edit.text[i] == "\t": tabs += 1
                        i += 1
        return (espaces, tabs)

def quelleIndentation():
        (espaces, tabs) = niveauIndentation()
        s = "" # message à prononcer
        if espaces == tabs == 0:
                s = "Origine"
                sixpad.say(s)
                return
        if tabs > 0:
                s = "%stab" % str(tabs)
        if espaces > 0:  # il y a des espaces
                if s != "":
                        s += ", "
                s += "%sespaces" % str(espaces)
        sixpad.say(s)

sixpad.window.addAccelerator("Ctrl+F1", quelleIndentation)

Répondre à