IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI/RAD Python Discussion :

[Notepad++] Indentation par espaces et tabulation


Sujet :

EDI/RAD Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut [Notepad++] Indentation par espaces et tabulation
    Bonjour,
    Pour info, et éventuellement vos avis, conseils éclairés.
    J'ai passé pas mal de temps à comprendre comment ce script pouvait marcher, car il marche. Il est fourni avec the GIMP 2.6.11 et il est essentiel pour l'écriture de plugins (greffons en français) en Python. On le trouve ici après l'installation C:\GIMP\gimp_2_6_11-2\lib\gimp\2.0\python\gimpfu.py.
    Voilà un extrait de ce script tel que me le montre Notepad++ (V5.9).

    Observez dans la fonction register la sous-fonction letterCheck et notamment le positionnement de l'instruction return 0 par rapport au reste. Le piège est bien sûr que cette instruction (et c'est la seule dans le script) est indentée avec 2 tabulations en tête. Pour Python, c'est équivalent à 16 (2 x 8) espaces et donc l'instruction est logiquement dans le bloc if et donc ça marche. Mais comme mes préférences Notepad++ mentionne une "taille" de tabulation à 2, l'instruction semble commencer en position 5.
    Ce qui me surprend, c'est que Notepad++ a bien détecté la bonne indentation (on le voit avec les + et - permettant de montrer ou masquer le contenu des blocs). Pourquoi n'aligne-t-il pas correctement cette instruction ?
    Y-a-t-il une option que j'ai loupée quelque part ?
    Gérard

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tu as mis le doigt sur un bug.

    Avec Gedit et avec Eric (donc Scintilla), il manque effectivement deux indentations à 'return 0'.

    Avec Eric le bug est marqué en marge.

    Ce n'est pas tout, les 'else:' et 'return 1' qui suivent sont aussi d'une indentation trop court.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut
    Bonjour,
    Ce n'est pas tout, les 'else:' et 'return 1' qui suivent sont aussi d'une indentation trop court.
    Non. Le else et donc le return 1 sont bien placés : Extrait de la doc officielle Python 2.6.
    for element in sequence:
    suite
    [else:
    suite]
    Se poursuit sur tous les éléments de la séquence, assignant chaque élément
    à « element ». Utilisez la fonction prédéfinie « range » pour poursuivre un
    certain nombre de fois. Le « else: suite » est exécuté à la fin sauf si la
    boucle se termine avec un “break”.
    Le problème est uniquement sur l'indentation avec tabulation

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Exact, j'ai été abusé par l'inutilité du else: qui ne se justifie pas dans ce cas puisque si la condition n'est pas remplie par un caractère la fonction retourne.


    Quand je l'ai corrigé, j'ai vu que le code était indenté avec des espaces (comme recommandé) mais j'ai eu l'impression que 'return 0' avait reçu une tabulation. Backspace lui a fait faire un saut de quatre caractères vers la gauche.

Discussions similaires

  1. [Batch] Remplacer le caractère tabulation par espaces
    Par TITOUMAX dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 30/09/2011, 13h41
  2. changer tabulation par espace
    Par FoxLeRenard dans le forum C
    Réponses: 3
    Dernier message: 28/02/2007, 17h17
  3. [AJAX] Methode post remplace + par espace
    Par dgedge dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/07/2006, 09h09
  4. [Config / Plugin]Transformer indentation en espaces
    Par Oliveuh dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/04/2005, 00h23
  5. espace ou tabulation?
    Par caribou_belle dans le forum Langages de programmation
    Réponses: 27
    Dernier message: 05/10/2003, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo