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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mars 2008
    Messages : 16
    Points : 38
    Points
    38

    Par défaut Problème de formatage de code avec des tabs

    J'utilise principalement Netbeans (8.2) pour faire du C sur un projet en maintenance. Les sources sont formatées avec des tabs et depuis que j'édite du code avec cet IDE le résultat est très moyen au niveau du formatage.
    En me penchant un peu sur la question, j'ai trouvé que le comportement des tabs de Netbeans est différent de celui des autres éditeurs (testé avec Eclipse, IntelliJ et VI). Le tout avec une police monospaced.

    En configurant les IDE pour utiliser des vrai tabulation avec une taille de taille 4, puis de 8, j'ai pu constater un problème lorsque un 'paquet' de caractères est égal à la taille de la tabulation.

    Par exemple avec ce fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int T		= T;
    int TT		= T;
    int TIT		= T;
    int TOTO	= T;
    int TUTUT	= T;
    int TITITI	= T;
    int TZTZTZT	= T;
    Avec les caractères suivants dans le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $ od -oc toto2.pc
    0000000  067151  020164  004524  036411  052040  005073  067151  020164
              i   n   t       T  \t  \t   =       T   ;  \n   i   n   t
    0000020  052124  004411  020075  035524  064412  072156  052040  052111
              T   T  \t  \t   =       T   ;  \n   i   n   t       T   I   T
    0000040  004411  020075  035524  064412  072156  052040  052117  004517
             \t  \t   =       T   ;  \n   i   n   t       T   O   T   O  \t
    0000060  020075  035524  064412  072156  052040  052125  052125  036411
              =       T   ;  \n   i   n   t       T   U   T   U   T  \t   =
    0000100  052040  005073  067151  020164  044524  044524  044524  036411
                  T   ;  \n   i   n   t       T   I   T   I   T   I  \t   =
    0000120  052040  005073  067151  020164  055124  055124  055124  004524
                  T   ;  \n   i   n   t       T   Z   T   Z   T   Z   T  \t
    0000140  020075  035524  000012
              =       T   ;  \n
    0000145
    Le code s'affiche bien formatté dans vi:


    dans IntelliJ aussi (avec les symboles des tabs en vert):


    Par contre dans Netbeans, l'alignement est perdu:

    à la 4ème ligne la tabulation est perdue, à la place il y a une sorte de petit espace entre TOTO et =, espace qui n'est pas de la taille d'un espace normal. C'est en fait une tabulation mais qui ne s'affiche pas entièrement.
    Avec une taille de font plus élevée:


    Version intellij avec une taille de font plus élevée également:

    Ici on voit clairement que le caractère 'tab' occupe bien ses 4 espaces.

    J'ai pu le reproduire facilement sur la machine d'un collègue, mais je n'ai pas trouvé grand chose sur le net.
    Est-ce que ça fait pareil chez vous ? Est-ce que vous avez une idée de comment "réparer" ce comportement, pour qu'il soit conforme au rendu des autres éditeurs ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mars 2008
    Messages : 16
    Points : 38
    Points
    38

    Par défaut

    Je me répond tout seul... En fait c'est à cause d'un réglage idiot que j'ai du faire il y a longtemps: la taille de la police, pour les 'whitespace', était fixé en dur à 12.
    Alors que tout le reste du code avait une taille de 14. Une fois reconfiguré la police des 'whitespaces' pour qu'elle hérite de la configuration générale, le problème est résolu...

  3. #3
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    juillet 2008
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 312
    Points : 2 776
    Points
    2 776

    Par défaut

    Les tabs ne sont pas des caracteres d'alignement, mais des caracteres "logiques" qui exprime une indentation ou une colonne, et dont le rendu peut varier d'un outil a l'autre. Si tu veux indenter, utilise des tabs; si tu veux aligner, utilise des espaces.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Optimisation du code avec des boucles
    Par jiojioforever dans le forum Syntaxe
    Réponses: 3
    Dernier message: 15/06/2007, 16h02
  2. Problème d'utilisation d'Axis avec des WSDL
    Par Tino13 dans le forum Services Web
    Réponses: 2
    Dernier message: 31/03/2007, 10h09
  3. Formatage de code (respect des espaces pour l'alignement)
    Par Rodrigue dans le forum Mise en forme
    Réponses: 2
    Dernier message: 28/02/2007, 13h56
  4. Problème de chemin de fichier avec des espaces
    Par Akronyme dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/12/2006, 17h12
  5. probleme d'import de fichier txt avec des tab
    Par lecureuil dans le forum Access
    Réponses: 4
    Dernier message: 23/08/2005, 19h22

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