indent

Posté le dim 25 septembre 2016 dans devtools

Que vous codiez comme un cochon, que vous récupériez le code d'un autre développeur ou que votre supérieur vous impose un style particulier, fini de perdre du temps à réaligner du code.

Voici un petit programme cochonné pour illustrer la suite :

#include <stdio.h>
#define TXT "Hello Wolrd!\n"
void hello(char    *name  );
int main     (      int argc,char **argv) {/*A comment*/
hello(argv[1]); return 0;}
void hello( char *name){if(name){ printf("Hello %s\ni", name);}else {
printf("Hello Wolrd!\n");}}

indent propose 3 styles prédéfinis.

Le style GNU (le style par défaut) : indent demo.c ou indent -gnu demo.c

#include <stdio.h>
void hello (char *name);
int
main (int argc, char **argv)
{
  /*A comment */
  hello (argv[1]);
  return 0;
}

void
hello (char *name)
{
  if (name)
    {
      printf ("Hello %s\ni", name);
    }
  else
    {
      printf ("Hello Wolrd!\n");
    }
}

Le style Kernighan & Ritchie (ou style k&r, les concepteurs du C) : indent -kr demo.c

#include <stdio.h>
void hello(char *name);
int main(int argc, char **argv)
{
    /*A comment */
    hello(argv[1]);
    return 0;
}

void hello(char *name)
{
    if (name) {
      printf("Hello %s\ni", name);
    } else {
      printf("Hello Wolrd!\n");
    }
}

Le style Berkeley (le style d'origine) : indent -orig demo.c

#include <stdio.h>
int             hello(char *name);
int
main(int argc, char **argv)
{
    /*
     * A comment 
     */
    hello(argv[1]);
    return 0;
}

void
hello(char *name)
{
    if (name) {
      printf("Hello %s\ni", name);
    } else {
      printf("Hello Wolrd!\n");
    }
}

Ces styles définissent chacun un ensemble d'options. Vous pouvez alors ajouter et/ou redéfinir quelques options, ou même sélectionner vous-même les options que vous souhaitez.

Pour ne pas indiquer 15 options à chaque appel d'indent, vous pouvez :

  • soit définir la variable d'environnement INDENT_PROFILE qui indique le nom du fichier contenant les options ;
  • soit placer un fichier .indent.pro dans le dossier contenant votre code source (la commande devra être lancé depuis ce dossier) ;
  • soit placer un fichier .indent.pro à la racine de votre dossier personnel.

Pour activer le style k&r par défaut : echo -kr > $HOME/.indent.pro.

Pour utiliser le style GNU sans le retrait des accolades : echo -gnu -bli0 > $HOME/.indent.pro.

Une lecture de la page de man indent sera nécessaire pour découvrir les options, elles sont trop nombreuses pour les décrire ici.