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)