Salut les mecs,
J'ai apporté une touche finale à une fonction sensée prendre en paramètre le
texte de l'erreur, le parser afin d'y repérer le chemin du fichier de l'erreur
et la position de la ligne éronnée, avant de s'y déplacer dans l'onglet courant
ou dans un nouvel onglet.
Je précise que j'ai fait face à un problème d'expression régulière que je juge
incompréhensible avec la fonction re.match.
En effet, la ligne suivante me renvoit None alors que dans le texte il y a bien
l'expression "error":
re.match("error", errorMessage, re.I)
Je l'ai trituré dans tous les sens, ce test échouait à chaque fois.
Finalement j'ai dû passer par la fonction re.finditer qui elle trouve bien
l'expression bien que ça ait été plutôt bancale.
Bref, l'essentiel était d'abord que ça marche. Pour les
puriste/linguistes/académiciens du python, ils repasserons après moi.
Attention, voici la fonction:
Début du code python
def goToLineOfError(errorMessage):
"""Amène le focus sur une ligne d'erreur
après l'avoir reconnue en parsant le message d'erreur
Renvoi True en cas de succès de déplacement"""
found=re.finditer("error", errorMessage, re.I)
i =0
for e in found: i=i+1
if i==0: return False
file=""
line=0
found=re.finditer('file[ \\t]+"([^"]+)"[ \\t]*,[ \\t]+line[ \\t]+(\\d+)',
errorMessage, re.I)
for e in found: file, line= e.group(1), int(e.group(2))
if line>0 and os.path.isfile(file):
page=sp.window.curPage # par défaut
# si le fichier pointé n'est pas le fichier de la page courante
if os.path.samefile(file, sp.window.curPage.file)==False:
# on vérifie s'il n'est pas déjà ouvert dans les onglets inactifs
flag=False
for p in sp.window.pages:
if os.path.samefile(file, p.file)==True:
page=p
flag=True
break
# end if
# end for
if flag==False: page=sp.window.open(file)
# end if
# positionnement à la ligne de l'erreur
page.position=page.lineStartOffset(line-1)
page.focus()
return True
else:
return False
# end if
# end def
Fin du code python
Ma proposition est que cette fonction pourrait être appelée dans la fonction
d'exécution du module courant, après qu'un texte de renvoi ait été recueilli,
et avant que ce texte ne soit envoyé à la pseudo console de 6pad++.
Pour vous servir,
Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.
www.visuweb.net