INDENT(1) General Commands Manual INDENT(1) NOM indent -- Modification de l'apparence d'un programme en C en inserant ou en supprimant des blancs SYNOPSIS indent [options] [fichiers_entree] indent [options] [fichier_entree_unique] [-o fichier_sortie] indent --version DESCRIPTION Cette page de manuel est generee a partir du fichier indent.texinfo. Il s'agit de l'edition de << The indent Manual >> pour la derniere mise a jour de la version d'Indent. Le programme indent permet d'ameliorer la lisibilite du code. Il permet aussi de convertir un programme d'un style d'ecriture en C a un autre. indent comprend une grande partie de la syntaxe du C, mais il peut aussi traiter des fichiers dont la syntaxe est incomplete ou erronee. A partir de la version 1.2, le style d'indentation par defaut est le style GNU. OPTIONS -as, --align-with-spaces Si l'indentation utilise des tabulations, utiliser des espaces pour l'alignement. Voir la section INDENTATION. -bad, --blank-lines-after-declarations Inserer une ligne vide apres chaque declaration. Voir la section LIGNES VIDES. -bap, --blank-lines-after-procedures Inserer une ligne vide apres un corps de fonction. Voir la section LIGNES VIDES. -bbb, --blank-lines-before-block-comments Inserer une ligne vide avant un commentaire multiligne. Voir la section LIGNES VIDES. -bbo, --break-before-boolean-operator De preference, couper les longues lignes avant un operateur booleen. Voir la section COUPURE DES LONGUES LIGNES. -bc, --blank-lines-after-commas Passer a la ligne apres une virgule dans une declaration. Voir la section DECLARATIONS. -bl, --braces-after-if-line Mettre l'accolade ouvrante sur la ligne suivant un if, etc. Voir la section INSTRUCTIONS. -blf, --braces-after-func-def-line Mettre l'accolade ouvrante sur la ligne suivant la ligne de definition d'une fonction. Voir la section DECLARATIONS. -blin, --brace-indentn Indenter les accolades de n espaces. Voir la section INSTRUCTIONS. -bls, --braces-after-struct-decl-line Mettre l'accolade ouvrante sur la ligne suivant la ligne contenant struct. Voir la section DECLARATIONS. -br, --braces-on-if-line Mettre l'accolade ouvrante sur la ligne contenant if, etc. Voir la section INSTRUCTIONS. -brf, --braces-on-func-def-line Mettre l'accolade ouvrante sur la ligne de definition d'une fonction. Voir la section DECLARATIONS. -brs, --braces-on-struct-decl-line Mettre l'accolade ouvrante sur la ligne contenant struct. Voir la section DECLARATIONS. -bs, --Bill-Shannon, --blank-before-sizeof Mettre une espace entre sizeof et son argument. Voir la section INSTRUCTIONS. -cn, --comment-indentationn Mettre les commentaires a droite du code a la colonne n. Voir la section COMMENTAIRES. -cbin, --case-brace-indentationn Indenter l'accolade de n espaces apres une etiquette case. Voir la section INSTRUCTIONS. -cdn, --declaration-comment-columnn Mettre les commentaires a droite des declarations a la colonne n. Voir la section COMMENTAIRES. -cdb, --comment-delimiters-on-blank-lines Mettre les delimiteurs de commentaire sur des lignes vides. Voir la section COMMENTAIRES. -cdw, --cuddle-do-while Rapprocher le while du << } >> precedent dans une boucle do {} while;. Voir la section COMMENTAIRES. -ce, --cuddle-else Reunir sur une meme ligne le else et le << } >> precedent. Voir la section COMMENTAIRES. -cin, --continuation-indentationn Indentation des lignes de continuation de n espaces. Voir la section INSTRUCTIONS. -clin, --case-indentationn Indenter l'etiquette case de n espaces. Voir la section INSTRUCTIONS. -cpn, --else-endif-columnn Mettre les commentaires a droite des directives #else et #endif a la colonne n. Voir la section COMMENTAIRES. -cs, --space-after-cast Mettre une espace apres un operateur de transtypage. Voir la section INSTRUCTIONS. -dn, --line-comments-indentationn Definir l'indentation des commentaires qui ne sont pas a droite du code a n espaces. Voir la section COMMENTAIRES. -bfda, --break-function-decl-args Passer a la ligne avant chaque argument d'une declaration de fonction. Voir la section DECLARATIONS. -bfde, --break-function-decl-args-end Passer a la ligne apres le dernier argument d'une declaration de fonction. Voir la section DECLARATIONS. -dj, --left-justify-declarations Si -cd0 est specifie, les commentaires situes apres les declarations seront alignes a gauche. Voir la section DECLARATIONS. -din, --declaration-indentationn Placer les variables a la colonne n. Voir la section DECLARATIONS. -fc1, --format-first-column-comments Commencer les commentaires a la premiere colonne. Voir la section COMMENTAIRES. -fca, --format-all-comments Ne pas desactiver le formatage des commentaires. Voir la section COMMENTAIRES. -fnc, --fix-nested-comments Suppression de l'imbrication des commentaires. Voir la section COMMENTAIRES. -gnu, --gnu-style Utiliser le style de code GNU. C'est le comportement par defaut. Voir la section STYLES COURANTS. -gts, --gettext-strings Traiter les macros _("...") et N_("...") de gettext comme des chaines, pas comme des fonctions. Voir la section COUPURE DES LONGUES LIGNES. -hnl, --honour-newlines Preferer la coupure des longues lignes a la position des caracteres nouvelle ligne dans le fichier d'entree. Voir la section COUPURE DES LONGUES LIGNES. -in, --indent-leveln Definir la valeur de l'indentation a n espaces. Voir la section INDENTATION. -iln, --indent-labeln Definir l'indentation des etiquettes a la colonne n. Voir la section INDENTATION. -ipn, --parameter-indentationn Indenter les types des parametres dans le vieux style d'ecriture des fonctions de n espaces. Voir la section INDENTATION. -kr, --k-and-r-style Utiliser le style de code de Kernighan & Ritchie. Voir la section STYLES COURANTS. -ln, --line-lengthn Fixer la longueur maximale des lignes autres que les commentaires a n. Voir la section COUPURE DES LONGUES LIGNES. -lcn, --comment-line-lengthn Fixer la longueur maximale des lignes de commentaire a n. Voir la section COMMENTAIRES. -linux, --linux-style Utiliser le style de code de Linux. Voir la section STYLES COURANTS. -lp, --continue-at-parentheses Aligner les lignes coupees sur les parentheses. Voir la section INDENTATION. -lps, --leave-preprocessor-space Conserver l'espace entre le << # >> et une directive du preprocesseur. Voir la section INDENTATION. -nlps, --remove-preprocessor-space Supprimer l'espace entre le << # >> et une directive du preprocesseur. Voir la section INDENTATION. -nbad, --no-blank-lines-after-declarations Ne pas inserer de lignes vides apres les declarations. Voir la section LIGNES VIDES. -nbap, --no-blank-lines-after-procedures Ne pas inserer de lignes vides apres les corps de fonction. Voir la section LIGNES VIDES. -nbbo, --break-after-boolean-operator Preferer ne pas couper les longues lignes avant un operateur booleen. Voir la section COUPURE DES LONGUES LIGNES. -nbc, --no-blank-lines-after-commas Ne pas passer a la ligne apres une virgule dans les declarations. Voir la section DECLARATIONS. -nbfda, --dont-break-function-decl-args Ne pas placer chaque argument d'une fonction sur une ligne separee lors de sa declaration. Voir la section DECLARATIONS. -ncdb, --no-comment-delimiters-on-blank-lines Ne pas mettre les delimiteurs de commentaires << /* >> et << */ >> sur les lignes vides. Voir la section COMMENTAIRES. -ncdw, --dont-cuddle-do-while Ne pas rapprocher le while du << } >> precedent dans une boucle do {} while;. Voir la section INSTRUCTIONS. -nce, --dont-cuddle-else Ne pas reunir sur une meme ligne } et else. Voir la section INSTRUCTIONS. -ncs, --no-space-after-casts Ne pas inserer d'espace apres un operateur de transtypage. Voir la section INSTRUCTIONS. -ndjn, --dont-left-justify-declarations Traiter les commentaires situes apres une declaration comme ceux situes apres les autres instructions. Voir la section DECLARATIONS. -nfc1, --dont-format-first-column-comments Ne pas debuter les commentaires a la premiere colonne (comportement par defaut). Voir la section COMMENTAIRES. -nfca, --dont-format-comments Ne formater aucun commentaire. Voir la section COMMENTAIRES. -ngts, --no-gettext-strings Traiter les macros _("...") et N_("...") de gettext comme des fonctions normales (comportement par defaut). Voir la section COUPURE DES LONGUES LIGNES. -nhnl, --ignore-newlines Preferer ne pas couper les longues lignes a la position des caracteres nouvelle ligne dans le fichier d'entree. Voir la section COUPURE DES LONGUES LIGNES. -nip, --no-parameter-indentation Pas d'indentation pour les parametres. Voir la section INDENTATION. -nlp, --dont-line-up-parentheses Ne pas aligner les parentheses. Voir la section INSTRUCTIONS. -npcs, --no-space-after-function-call-names Ne pas inserer d'espace apres le nom de fonction lors des appels de fonction. Voir la section INSTRUCTIONS. -nprs, --no-space-after-parentheses Ne pas inserer d'espace apres un << ( >> ou avant un << ) >>. Voir la section INSTRUCTIONS. -npsl, --dont-break-procedure-type Mettre le type d'une fonction sur la meme ligne que son nom. Voir la section DECLARATIONS. -nsaf, --no-space-after-for Ne pas inserer d'espace apres for. Voir la section INSTRUCTIONS. -nsai, --no-space-after-if Ne pas inserer d'espace apres if. Voir la section INSTRUCTIONS. -nsaw, --no-space-after-while Ne pas inserer d'espace apres while. Voir la section INSTRUCTIONS. -nsc, --dont-star-comments Ne pas mettre de << * >> a gauche de chaque ligne d'un commentaire multiligne. Voir la section COMMENTAIRES. -nsob, --leave-optional-blank-lines Ne pas supprimer les lignes vides facultatives. Voir la section LIGNES VIDES. -nss, --dont-space-special-semicolon Ne pas inserer d'espace avant le point-virgule apres certaines instructions. Desactive -ss. Voir la section INSTRUCTIONS. -ntac, --dont-tab-align-comments Ne pas aligner les commentaires avec le taquet de tabulation le plus proche. Voir la section COMMENTAIRES. -nut, --no-tabs Utiliser des espaces a la place des tabulations. Voir la section INDENTATION. -nv, --no-verbosity Desactiver le mode prolixe. Voir la section OPTIONS DIVERSES. -orig, --original Utiliser le style de code original de Berkeley. Voir la section STYLES COURANTS. -npro, --ignore-profile Ignorer les fichiers .indent.pro. Voir la section INVOQUER INDENT. -pal, --pointer-align-left Dans une declaration de pointeur, mettre une espace apres l'asterisque et accoler ce dernier au type, comme dans char* p. -par, --pointer-align-right Dans une declaration de pointeur, mettre une espace avant l'asterisque et accoler ce dernier au nom de la variable, comme dans char * p. -pcs, --space-after-procedure-calls Inserer une espace entre le nom d'une fonction appelee et << ( >>. Voir la section INSTRUCTIONS. -pin, --paren-indentationn Specifier l'indentation supplementaire pour chaque parenthese ouvrante quand une instruction est coupee sur plusieurs lignes. Voir la section INSTRUCTIONS. -pmt, --preserve-mtime Conserver les dates d'acces et de modification dans les fichiers de sortie. Voir la section OPTIONS DIVERSES. -ppin, --preprocessor-indentationn Specifier l'indentation pour les directives conditionnelles du preprocesseur. Voir la section INDENTATION. -prs, --space-after-parentheses Inserer une espace apres chaque << ( >> et avant chaque << ) >>. Voir la section INSTRUCTIONS. -psl, --procnames-start-lines Mettre le type d'une fonction sur la ligne au-dessus de son nom. Voir la section DECLARATIONS. -saf, --space-after-for Inserer une espace apres chaque for. Voir la section INSTRUCTIONS. -sai, --space-after-if Inserer une espace apres chaque if. Voir la section INSTRUCTIONS. -sar, --spaces-around-initializers Inserer une espace apres le << { >> et avant le << } >> dans les initialiseurs. Voir la section DECLARATIONS. -saw, --space-after-while Inserer une espace apres chaque while. Voir la section INSTRUCTIONS. -sbin, --struct-brace-indentationn Specifier l'indentation des accolades pour struct, union et enum. Voir la section INSTRUCTIONS. -sc, --start-left-side-of-comments Ajouter le caractere << * >> au debut de chaque ligne d'un commentaire multi-lignes. Voir la section COMMENTAIRES. -slc, --single-line-conditionals Permettre aux structures conditionnelles (if, else, etc.) sans accolades d'avoir leur bloc d'instructions sur la meme ligne. Voir la section INSTRUCTIONS. -sob, --swallow-optional-blank-lines Supprimer les lignes vides facultatives. Voir la section LIGNES VIDES. -ss, --space-special-semicolon Pour les boucles for et while sur une seule ligne, inserer une espace avant le point virgule. Voir la section INSTRUCTIONS. -st, --standard-output Ecrire sur la sortie standard. Voir la section INVOQUER INDENT. -T Indiquer a indent le nom des types definis a l'aide de typedef (voir la section DECLARATIONS). Voir la section DECLARATIONS. -tsn, --tab-sizen Definir la taille d'une tabulation a n espaces. Voir la section INDENTATION. -ut, --use-tabs Utiliser les tabulations. C'est le comportement par defaut. Voir la section INDENTATION. -v, --verbose Activer le mode prolixe. Voir la section OPTIONS DIVERSES. -version Afficher le numero de version d'indent. Voir la section OPTIONS DIVERSES. INVOQUER INDENT Depuis la version 1.3, le format de la commande d'invocation d'indent est : indent [options] [fichiers_entree] indent [options] [fichier_entree_unique] [-o fichier_sortie] Ce format est different de celui des versions plus anciennes et d'autres versions d'indent. Sous sa premiere forme, un ou plusieurs fichiers d'entree sont specifies. indent fait une copie de sauvegarde de chaque fichier et l'original est remplace par sa version indentee. Voir la section FICHIERS DE SAUVEGARDE pour une explication de la maniere dont les sauvegardes sont effectuees. Sous sa seconde forme, un seul fichier d'entree est specifie. Dans ce cas, ou lorsque l'entree standard est utilisee, il est possible de specifier le nom du fichier de sortie a l'aide de l'option -o. Pour qu'indent ecrive sur la sortie standard, utiliser l'option -st. Cela n'est permis que si un seul fichier d'entree est specifie ou si l'entree standard est utilisee. Si aucun fichier d'entree n'est specifie, c'est l'entree standard qui sera utilisee comme entree. De meme, si un fichier d'entree nomme - est specifie, c'est l'entree standard qui sera lue. A titre d'exemple, chacune des commandes suivantes prend en entree le fichier slithy_toves.c et ecrit sa version indentee dans slithy_toves.out. indent slithy_toves.c -o slithy_toves.out indent -st slithy_toves.c > slithy_toves.out cat slithy_toves.c | indent -o slithy_toves.out La plupart des autres options d'indent permettent de controler la maniere dont les programmes sont formates. A partir de la version 1.2, indent reconnait aussi les options a nom long. Les options a nom long sont prefixees de << -- >> ou << + >>. [<< + >> est en cours de remplacement par << -- >> pour conserver une compatibilite avec la norme POSIX]. Dans un souci de concision, on utilisera le plus souvent les noms courts traditionnels dans ce document. Voir la section OPTIONS pour une liste des options avec leurs noms courts et leurs noms longs. Voici un autre exemple : indent -br test/metabolisme.c -l85 Cet exemple indente le fichier test/metabolisme.c en utilisant les options -br et -l85, ecrit sa sortie dans test/metabolisme.c et conserve le contenu originel du fichier test/metabolisme.c dans un fichier de sauvegarde dans le repertoire test. Les commandes equivalentes utilisant les noms d'option longs pour cet exemple seraient : indent --braces-on-if-line --line-length185 test/metabolisme.c indent +braces-on-if-line +line-length185 test/metabolisme.c Si vous estimez que vous utilisez souvent indent avec le meme ensemble d'options, vous pouvez placer ces dernieres dans un fichier nomme .indent.pro. indent recherche le fichier de profil dans trois emplacements. Il va tout d'abord consulter la variable d'environnement INDENT_PROFILE. Si elle est definie, son contenu sera considere comme le nom du fichier de profil a utiliser. Si elle n'est pas definie, indent recherche le fichier .indent.pro dans le repertoire actuel ; s'il existe, il utilisera son contenu comme nom du fichier de profil a utiliser ; s'il n'existe pas, indent recherche le fichier .indent.pro dans le repertoire personnel de l'utilisateur et s'il existe, utilisera son contenu comme nom du fichier de profil a utiliser. Ce comportement est different avec les autres versions d'indent qui chargent les deux fichiers s'ils existent tous les deux. Le format du fichier de profil est une simple liste d'options separees par des blancs (tabulations, espaces et nouvelles lignes), telle qu'elle apparaitrait sur la ligne de commande. Ces options peuvent etre entourees de commentaires de style C ou C++, auquel cas elles seront ignorees. Command line switches are handled after processing ` ?.indent.pro'. Options specified later override arguments specified earlier, with one exception: Explicitly specified options always override background options (See COMMON STYLES). You can prevent indent from reading an `.indent.pro' file by specifying the `-npro' option. FICHIERS DE SAUVEGARDE A partir de la version 1.3, GNU indent genere des fichiers de sauvegarde dans le style GNU, comme le fait GNU emacs(1). Autrement dit, il est possible de faire des sauvegardes simples ou numerotees. Les noms de fichier de sauvegarde simple sont generes en ajoutant un suffixe au nom de fichier originel, par defaut un tilde (<< ~ >>). Ainsi, le fichier de sauvegarde pour python.c sera python.c~. Pour definir un suffixe different du suffixe par defaut, il suffit de definir la variable d'environnement SIMPLE_BACKUP_SUFFIX avec le suffixe souhaite. Les sauvegardes numerotees du fichier python.c ressembleront a python.c.~23~, ou 23 est le numero de version de cette sauvegarde. Lorsqu'on effectue une sauvegarde numerotee de src/python.c, elle est nommee src/python.c.~V~, ou V est superieur de 1 a la plus haute version qui existe dans le repertoire src. La variable d'environnement VERSION_WIDTH permet d'indiquer le nombre de chiffres que comporte le numero de version ; des zeros seront inseres a gauche pour completer si necessaire. Si cette variable a pour valeur 2, par exemple, les fichiers ressembleront a python.c.~04~. Le type de fichier de sauvegarde est controle par la valeur de la variable d'environnement VERSION_CONTROL. Si cette derniere contient la chaine << simple >>, seules des sauvegardes simples seront effectuees. Si elle contient la chaine << numbered >>, des sauvegardes numerotees seront effectuees. Si elle contient la chaine << numbered-existing >>, des sauvegardes numerotees seront effectuees s'il existe deja des sauvegardes numerotees pour le fichier en cours d'indentation ; dans le cas contraire, une sauvegarde simple sera effectuee. Si VERSION_CONTROL n'est pas definie, indent se comporte comme si elle contenait la chaine << numbered-existing >>. Les autres versions d'indent utilisent le suffixe << .BAK >> pour nommer les fichiers de sauvegarde. Ce comportement peut etre adopte en donnant a la variable d'environnement SIMPLE_BACKUP_SUFFIX la valeur << .BAK >>. Notez aussi que les autres versions d'indent effectuent les sauvegardes dans le repertoire actuel, au lieu de les effectuer dans le repertoire qui contient le fichier source, comme le fait la version actuelle de GNU indent. STYLES COURANTS Il existe plusieurs styles courants de code en C, dont le style GNU, le style Kernighan & Ritchie et le style Berkeley. Un style peut etre defini par une seule option << globale >> qui specifie un ensemble de valeurs pour toutes les autres options. Cependant, les options explicites priment toujours sur celles definies par l'option globale. A partir de la version 1.2, le style par defaut de GNU indent est le style GNU. Il n'est donc plus necessaire de specifier l'option -gnu pour utiliser ce style, bien que cela ne causerait pas d'erreur. Les options qui correspondent au style GNU sont : -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -nprs -psl -saf -sai -saw -nsc -nsob Le style GNU est le style prefere du projet GNU. C'est celui que GNU Emacs encourage a utiliser pour son mode C, et qui est utilise dans les portions en C de GNU Emacs (les personnes interessees par le developpement de programmes pour le projet GNU peuvent obtenir une copie de << The GNU Coding Standards >>, qui traite aussi les problemes de semantique et de portabilite, comme les questions touchant a l'utilisation de la memoire, la taille des entiers, etc.). Le style Kernighan & Ritchie est utilise tout au long de leur fameux livre << The C Programming Language >>. Il est active a l'aide de l'option -kr et correspond a l'ensemble d'options suivant : -nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -nprs -npsl -saf -sai -saw -nsc -nsob -nss -par Le style Kernighan & Ritchie ne place pas systematiquement les commentaires a droite du code a la meme colonne (de meme, il n'insere pas une espace unique a la droite du code). La colonne 33 a donc ete arbitrairement choisie. Le style de la version originelle de Berkeley indent peut etre specifie a l'aide de l'option -orig (ou --original dans son format long). Il correspond aux options suivantes : -nbad -nbap -bbo -bc -br -brs -c33 -cd33 -cdb -ce -ci4 -cli0 -cp33 -di16 -fc1 -fca -hnl -i4 -ip4 -l75 -lp -npcs -nprs -psl -saf -sai -saw -sc -nsob -nss -ts8 Le style Linux est utilise dans le code du noyau et les pilotes de Linux. Pour etre accepte, le code doit en general respecter le style de code de Linux. Ce style correspond aux options suivantes : -nbad -bap -nbc -bbo -hnl -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -d0 -di1 -nfc1 -i8 -ip0 -l80 -lp -npcs -nprs -npsl -sai -saf -saw -ncs -nsc -sob -nfca -cp33 -ss -ts8 -il1 LIGNES VIDES Les differents styles de programmation inserent ca et la des lignes vides. indent possede plusieurs options permettant d'inserer ou supprimer des lignes vides a des emplacements specifiques. L'option -bad provoque l'ajout d'une ligne vide apres chaque bloc de declarations. Avec l'option -nbad, cet ajout n'est pas effectue. L'option -bap provoque l'ajout d'une ligne vide apres chaque corps de fonction. Avec l'option -nbap, cet ajout n'est pas effectue. L'option -bbb provoque l'ajout d'une ligne vide avant chaque bloc de commentaire (voir la section COMMENTAIRES). Avec l'option -nbbb, cet ajout n'est pas effectue. L'option -sob provoque la suppression de toutes les lignes vides facultatives (cela signifie que toute ligne vide facultative presente dans l'entree sera supprimee dans la sortie). Avec l'option -nsob, toutes les lignes vides presentes dans le fichier d'entree seront copiees dans le fichier de sortie. --blank-lines-after-declarations L'option -bad provoque l'ajout d'une ligne vide apres chaque bloc de declarations. Avec l'option -nbad, cet ajout n'est pas effectue. Par exemple, considerons l'entree char *toto; char *titi; /* Separation entre deux blocs de declarations. */ int baz; indent -bad produira char *toto; char *titi; /* Separation entre deux blocs de declarations. */ int baz; et indent -nbad produira char *toto; char *titi; /* Separation entre deux blocs de declarations. */ int baz; --blank-lines-after-procedures L'option -bap provoque l'ajout d'une ligne vide apres chaque corps de fonction. Par exemple, considerons l'entree int toto () { puts("Salut"); } /* La fonction titi est encore moins interessante. */ char * titi () { puts("Bonjour"); } indent -bap produira int toto () { puts ("Salut"); } /* La fonction titi est encore moins interessante. */ char * titi () { puts ("Bonjour"); } et indent -nbap produira int toto () { puts ("Salut"); } /* La fonction titi est encore moins interessante. */ char * titi () { puts ("Bonjour"); } Aucune ligne vide ne sera ajoutee apres la fonction toto. COMMENTAIRES indent formate les commentaires C et C++. Les commentaires C commencent par << /* >>, se terminent par << */ >>, et peuvent contenir des caracteres nouvelle ligne. Les commentaires C++ commencent par le delimiteur << // >> et se terminent au caractere nouvelle ligne. indent traite les commentaires en fonction de leur contexte. Il s'efforce de distinguer les commentaires qui suivent une instruction, une declaration ou une directive du preprocesseur, et les commentaires qui ne sont precedes d'aucun code, c'est-a-dire qui commencent au debut d'une ligne (et pas necessairement en colonne 1). indent fait aussi la difference entre les commentaires situes a l'interieur de fonctions et de blocs et ceux qui ne le sont pas. En particulier, ceux qui commencent une ligne a l'interieur d'une fonction seront indentes a la colonne ou le code est actuellement indente. Une exception est faite si un commentaire commence a la colonne la plus a gauche, auquel cas il restera a la meme place. indent s'efforce de laisser les commentaires sous forme de boite inchanges. Ce type de commentaire est entoure d'un rectangle (ou << boite >>) delimite par des asterisques ou par des tirets pour l'isoler et le mettre en valeur. Plus precisement, les commentaires sous forme de boite sont ceux dont le delimiteur initial << /* >> est suivi immediatement de caracteres << * >>, << = >>, << _ >> ou << - >>, ou ceux dont le delimiteur initial << /* >> occupe une ligne a lui seul et dont les lignes suivantes commencent par un asterisque sur la meme colonne que le delimiteur initial. Exemples de commentaires sous forme de boite : /********************************* * Commentaire dans une boite !! * *********************************/ /* * Une presentation differente, * pour une autre sorte de commentaire. */ indent s'efforce de garder intacte la forme qu'ont les commentaires sous forme de boite dans le fichier source. Ainsi, leur indentation reste inchangee et leur longueur n'est pas verifiee. La seule modification qu'ils peuvent subir est la conversion des tabulations qu'ils pourraient contenir en un nombre approprie d'espaces. Si l'option -bbb est specifiee, tout commentaire sous forme de boite sera precede d'une ligne vide, sauf si du code le precede. Les commentaires qui n'ont pas cette forme seront formates, c'est-a-dire que la ligne est brisee pour s'aligner sur la marge de droite et remplie d'espaces a gauche. Un simple saut de ligne sera considere comme une espace, mais une ligne vide (deux caracteres nouvelle ligne ou plus dans une ligne) sera consideree comme un changement de paragraphe. Le formatage des commentaires qui commencent apres la premiere colonne est active a l'aide de l'option -fca. Pour formater ceux qui commencent a la premiere colonne, utiliser l'option -fc1. Ces formatages sont desactives par defaut. La marge de droite pour le formatage est par defaut a la colonne 78, mais peut etre modifiee a l'aide de l'option -lc. Si celle-ci ne permet pas l'affichage d'un commentaire, elle sera modifiee en consequence et uniquement pour ce commentaire. La marge n'est pas respectee si le commentaire n'est pas formate. Si l'option -fnc est specifiee, tous les commentaires contenant la sequence de caracteres << /* >> verront cette derniere remplacee par une espace suivie d'un asterisque, eliminant de ce fait l'imbrication de commentaires. Si un commentaire commence une ligne (c'est-a-dire s'il n'y a pas de code a sa gauche), il est indente a la colonne a laquelle il a ete trouve, sauf s'il se trouve a l'interieur d'un bloc de code, auquel cas il sera aligne avec le code indente de ce bloc (sauf s'il commence a la premiere colonne). Cet alignement peut etre modifie a l'aide de l'option -d qui specifie le nombre de colonnes dont le commentaire sera decale vers la gauche par rapport au code, ou << desindente >>. Par exemple, -d2 place les commentaires deux colonnes a gauche du code. Par defaut, les commentaires sont alignes avec le code, sauf s'ils commencent a la premiere colonne, auquel cas ils sont laisses a cette place ; pour forcer l'alignement des commentaires avec le code, utiliser l'option -fc1. Les commentaires situes a droite du code sont places par defaut a la colonne 33. Ce comportement peut etre modifie a l'aide d'une des trois options suivantes : -c specifie la colonne a laquelle seront places les commentaires qui suivent du code, -cd celle a laquelle seront places les commentaires qui suivent une declaration et -cp celle a laquelle seront places les commentaires qui suivent une directive du preprocesseur #else ou #endif. Pour supprimer l'alignement des commentaires a la droite des declarations et les placer a une tabulation de la fin de ces dernieres, utiliser les options -dj et -cd0 en combinaison. Normalement, -cd0 rend effective -c. Si le code a gauche d'un commentaire depasse la colonne a laquelle le commentaire commence, ce dernier sera deplace a la premiere tabulation apres le code, sauf si l'option -ntac a ete specifiee. Dans le cas d'une directive du preprocesseur, le commentaire sera place une espace apres la fin de cette directive. Ce deplacement n'est valable que pour ce type de commentaire. L'option -cdb place les delimiteurs de commentaire sur des lignes vides. Ainsi le commentaire sur une seule ligne /* Un calin affectueux */ deviendra : /* Un calin affectueux */ L'option -sc permet de placer des asterisques au debut de chaque ligne d'un commentaire multiligne. Le commentaire sur une seule ligne precedent devient alors (avec -cdb -sc) : /* * Un calin affectueux */ INSTRUCTIONS Les options -br et -bl specifient la maniere dont devront etre presentees les accolades. L'option -br les presente de la maniere suivante : if (x > 0) { x--; } L'option -bl les presente de la maniere suivante : if (x > 0) { x--; } La combinaison des options -bl et -bli permet de specifier le nombre d'espaces dont les accolades doivent etre indentees. La valeur par defaut est 2 et elle donne pour resultat l'exemple precedent. -bli0 donne le resultat suivant : if (x > 0) { x--; } La combinaison des options -br et -ce place le else d'une structure conditionnelle if-then-else une espace apres l'accolade fermante qui le precede. Par exemple, avec -br -ce, on obtient : if (x > 0) { x--; } else { fprintf (stderr, "... un probleme ?\n"); } Avec -br -nce, on obtiendra : if (x > 0) { x--; } else { fprintf (stderr, "... un probleme ?\n"); } La presence d'un commentaire entre l'accolade fermante et le else qui suit constitue un cas particulier : si l'option -br fait qu'une accolade ouvrante passe par dessus le commentaire, le else ne passera pas par dessus le commentaire pour l'entourer car il y a un forte probabilite qu'il modifie la signification de ce commentaire. L'option -cdw place le while d'une boucle do-while une espace apres l'accolade qui le precede ; par exemple, avec -cdw, on obtient : do { x--; } while (x); Avec -ncdw, on obtient : do { x--; } while (x); L'option -slc permet d'autoriser les structures conditionnelles sans accolade et de placer les instructions qu'elles contiennent sur la meme ligne. Par exemple : if (x) x--; else x++; Sans l'option -slc, on aurait obtenu : if (x) x--; else x++; L'option -cli permet de specifier le nombre d'espaces dont les etiquettes case doivent etre indentees vers la droite de l'instruction switch. Par defaut, le code se presente comme suit : switch (i) { case 0: break; case 1: { ++i; } default: break; } En utilisant l'option -cli2, il devient : switch (i) { case 0: break; case 1: { ++i; } default: break; } L'indentation des accolades englobant le code associe a une etiquette case peut etre definie a l'aide de l'option -cbin. Par exemple, avec les options -cli2 -cbi0, le code precedent devient : switch (i) { case 0: break; case 1: { ++i; } default: break; } Si un point-virgule est sur la meme ligne qu'une instruction for ou while, l'option -ss placera une espace avant ce point-virgule. Cela permet de mettre en evidence le point-virgule, et montre clairement que la boucle for ou while ne contient aucune instruction. L'option -nss desactive cette fonctionnalite. L'option -pcs permet de placer une espace entre le nom d'une fonction appelee et le << ( >> (par exemple, puts ("OK");). L'option -npcs supprime cette espace, si elle existe (par exemple, puts("OK");). L'option -cs permet de placer une espace entre un operateur de transtypage et l'objet de ce transtypage. L'option -ncs permet de supprimer cette espace, si elle existe. Gardez a l'esprit qu'indent ne connait que les types de donnees standards du C et ne reconnait donc pas les types definis par l'utilisateur dans les transtypages. Par exemple, (mon_type)var ne sera pas traite en tant que transtypage. L'option -bs permet de placer une espace entre sizeof et son argument. Dans certaines versions, cette option est appelee l'option de << Bill_Shannon >>. L'option -saf permet de placer une espace entre un for et la parenthese qui le suit. C'est le comportement par defaut. L'option -sai permet de placer une espace entre un if et la parenthese qui le suit. C'est le comportement par defaut. L'option -saw permet de placer une espace entre un while et la parenthese qui le suit. C'est le comportement par defaut. L'option -prs permet de placer une espace entre des parentheses et ce qu'elles entourent. Voici un exemple de code modifie par cette option : while ( ( e_code - s_code ) < ( dec_ind - 1 ) ) { set_buf_break ( bb_dec_ind ); *e_code++ = ' '; } DECLARATIONS Par defaut, indent aligne les identificateurs a la colonne specifiee par l'option -di. Par exemple, -di16 donnera : int un_entier; char *un_caractere; Pour que les identificateurs soient places a la premiere position disponible en partant de la gauche, il faut specifier une petite valeur pour l'option -di (un ou deux) ; par exemple : int un_entier; char *un_caractere; La valeur donnee a l'option -di affecte aussi les variables dont le nom est place sur une ligne differente de celle du type ; par exemple, -di2 donne : int un_entier; L'option -bc force un passage a la ligne apres chaque virgule dans une declaration, comme dans cet exemple : int a, b, c; Avec l'option -nbc l'exemple precedent devient : int a, b, c; L'option -bfda force un passage a la ligne apres chaque virgule separant les arguments dans la declaration d'une fonction. Ceux-ci apparaitront a une profondeur d'indentation immediatement superieure a celle de la declaration de la fonction. Cela s'avere utile pour les fonctions qui possedent de nombreux arguments. L'option -bfde force un passage a la ligne avant la parenthese fermante d'une declaration de fonction. Les options -nbdfa et -nbdfe sont les negations des options -bfda et -bfde ; elles correspondent au comportement par defaut. Par exemple, void une_fonction (int arg1, char arg2, int *arg3, long arg4, char arg5); apparaitra comme suit avec l'option -bfda : void une_fonction ( int arg1, char arg2, int *arg3, long arg4, char arg5); et si on ajoute l'option -bfde : void une_fonction ( int arg1, char arg2, int *arg3, long arg4, char arg5 ); Lors d'une declaration de fonction, l'option -psl place son type sur la ligne precedant son nom. Ce style est requis par le programme etags(1) pour qu'il puisse fonctionner correctement, ainsi que pour certaines fonctions du mode c-mode d'Emacs. L'option -T permet d'indiquer a indent les noms de tous les types definis par typedef dans votre programme. -T peut etre specifiee plusieurs fois, et tous les noms specifies sont utilises. Par exemple si votre programme contient : typedef unsigned long ADRESSE_CODE; typedef enum {rouge, bleu, vert} COULEUR; vous utiliserez les options -T ADRESSE_CODE -T COULEUR Les options -brs et -bls permettent de specifier la maniere de presenter les accolades dans une declaration de structure. L'option -brs les presente ainsi : struct ma_struct { int x; }; alors que l'option -bls les presente ainsi : struct ma_struct { int x; }; De maniere similaire, les options -brf et -blf permettent de specifier la maniere de presenter les accolades dans la definition d'une fonction. L'option -brf les presente ainsi : int renvoie_un(void) { return 1; }; alors que l'option -blf les presente ainsi : int renvoie_un(void) { return 1; }; L'option -sar affecte la maniere dont indent va presenter les listes d'initialiseurs. Sans l'option -sar, elles sont presentees comme ceci : int a[] = {1, 2, 3, 4}; struct s { const char *nom; int x; } a[] = { {"un_nom", 0}, {"autre_nom", 1} }; Avec l'option -sar, elles sont presentees comme ceci (avec des espaces entre les accolades et leur contenu) : int a[] = { 1, 2, 3, 4 }; struct s { const char *nom; int x; } a[] = { { "un_nom", 0 }, { "autre_nom", 1 } }; INDENTATION Le sujet le plus basique et le plus controverse a propos du formatage du code est precisement la maniere dont l'indentation doit etre effectuee. Heureusement, indent prend en charge plusieurs styles d'indentation differents. Le comportement par defaut, aussi defini a l'aide de l'option -ut, consiste a utiliser des tabulations pour l'indentation. En supposant qu'une tabulation equivaut a 8 espaces, le code ressemble a ceci : int a(int b) { return b; |------| 1 tab } Pour celles et ceux qui preferent les espaces aux tabulations, indent propose l'utilisation de l'option -nut. Le code ressemble alors a ceci : int a(int b) { return b; |------| 8 espaces } Un autre sujet a propos du formatage du code est le nombre de colonnes dont chaque ligne doit etre indentee par rapport a la marge de gauche. Lorsque le debut d'une instruction telle que if ou for est rencontre, le niveau d'indentation est augmente selon un pas determine par la valeur specifiee a l'aide de l'option -i. Par exemple, specifier -i8 definit un pas d'indentation de 8 caracteres pour chaque niveau. Quand une instruction est repartie sur deux lignes, la seconde ligne est indentee d'un nombre d'espaces supplementaires specifie a l'aide de l'option -ci dont la valeur par defaut est 0. Cependant, si l'option -lp est specifiee et si une ligne contient une parenthese ouvrante mais pas la parenthese fermante correspondante, les lignes suivantes seront alignees avec le caractere situe juste apres la parenthese ouvrante. Cette regle s'applique aussi aux crochets << [ >> et aux accolades << { >> (au sein des listes d'initialisation dans ce dernier cas). Par exemple, une portion de code peut ressembler a ceci si les options -nlp et -ci3 sont specifiees : p1 = fonction1 (fonction2 (p2, p3), fonction3 (p4, p5)); Avec l'option -lp, le code semble plus clair : p1 = fonction1 (fonction2 (p2, p3), fonction3 (p4, p5)); Lorsqu'une instruction est coupee entre deux paires de parentheses ou plus (...), chaque paire supplementaire implique un niveau d'indentation supplementaire : if ((((i < 2 && k > 0) || p == 0) && q == 1) || n = 0) L'option -ipN permet de specifier l'indentation supplementaire par parenthese. Avec -ip0, le code precedent devient : if ((((i < 2 && k > 0) || p == 0) && q == 1) || n = 0) indent suppose que les tabulations sont placees a intervalles reguliers dans les flux d'entree et de sortie de caracteres. La valeur de ces intervalles est de 8 espaces par defaut, mais peut etre modifiee a l'aide de l'option -ts (depuis la version 1.2). Les tabulations sont traitees comme leur quantite equivalente d'espaces. Par defaut et autant que possible, indent utilise des tabulations pour l'indentation, et fait l'appoint avec des espaces jusqu'a ce que la position souhaitee soit atteinte. Cependant, si l'option -as est specifiee, des espaces seront utilisees pour l'alignement au dela du niveau d'indentation actuel. Par defaut, en supposant que l'option -lp a ete specifiee, le code sera indente de la maniere suivante (<< t >> represente une tabulation et << e >> une espace) : unsigned long nom_fonction_tres_long(unsigned long x, unsigned long y, int a) |------||-------||------||-------|___ t t t t eee { p1 = fonction_alpha (fonction_beta (p2, p3), fonction_gamma (p4, p5)); |------||------||------|_____ t t t eeeee } Cela est correct si l'on considere que tout lecteur de ce code utilise aussi des tabulations de 8 espaces. S'il utilise des tabulations de 5 espaces, le code ressemble a ceci : unsigned long nom_fonction_tres_long(unsigned long x, unsigned long y, int a) |---||---||---||---|___ t t t t eee { p1 = fonction_alpha (fonction_beta (p2, p3), fonction_gamma (p4, p5)); |---||---||---|_____ t t t eeeee } L'option -as permet de resoudre ce probleme en corrigeant le code de facon que le resultat soit correct quelle que soit la taille de tabulation utilisee pour lire le code. Ce dernier devient alors : unsigned long nom_fonction_tres_long(unsigned long x, unsigned long y, int a) _____________________________________ eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee { p1 = fonction_alpha (fonction_beta (p2, p3), fonction_gamma (p4, p5)); |------|_____________________ t eeeeeeeeeeeeeeeeeeeee } L'indentation des declarations de type dans l'ancien style des definitions de fonction est selectionnee a l'aide de l'option -ip. C'est une option possedant un argument numerique permettant de specifier le nombre d'espaces dont doivent etre indentees les declarations de type. Par exemple, l'option -ip5 (valeur par defaut) donne aux definitions l'aspect suivant : char * creer_le_monde (x, y, echelle) int x; int y; float echelle; { . . . } L'option -nip, equivalente a -ip0, est fournie a des fins de compatibilite avec les autres versions d'indent. ANSI C autorise l'insertion d'une espace dans les directives du preprocesseur entre le caractere << # >> et le nom de la directive. Par defaut, indent supprime cette espace, mais avec l'option -lps, il la conserve. L'option -ppi l'emporte sur -nlps et -lps. Cette option fait que les directives conditionnelles du preprocesseur sont indentees du nombre d'espaces donne ; par exemple, avec l'option -ppi3, #if X #if Y #define Z 1 #else #define Z 0 #endif #endif devient #if X # if Y # define Z 1 # else # define Z 0 # endif #endif Cette option permet de definir l'indentation des etiquettes (sauf les etiquettes case). Si elle a pour argument 0 ou un nombre positif, ce dernier indique a quelle distance de la marge de gauche devra etre indentee une etiquette. Si elle a pour argument un nombre negatif, ce dernier indique la valeur a retrancher du niveau d'indentation actuel pour placer l'etiquette. La valeur par defaut est -2, ce qui correspond au comportement des versions precedente d'indent. Notez que cette option n'affecte pas le placement des etiquettes case ; voir l'option -cli pour le placement de ces dernieres. Par exemple, avec l'option -il1, group fonction() { if (action1() == ERROR) goto nettoyage1; if (action2() == ERROR) goto nettoyage2; return SUCCESS; nettoyage2: do_nettoyage2(); nettoyage1: do_nettoyage1(); return ERROR; } devient group fonction() { if (action1() == ERROR) goto nettoyage1; if (action2() == ERROR) goto nettoyage2; return SUCCESS; nettoyage2: do_nettoyage2(); nettoyage1: do_nettoyage1(); return ERROR; } COUPURE DES LONGUES LIGNES L'option -ln (ou --line-lengthn) permet de specifier la longueur maximale d'une ligne de code C, les eventuels commentaires qui pourraient la suivre non compris. Si une ligne est plus longue que cette valeur limite, GNU indent essaie de couper la ligne a un endroit approprie. Cette fonctionnalite, qui n'est encore ni tres astucieuse ni tres flexible, est une nouveaute de la version 2.1. Trois options permettent pour l'instant d'interferer avec l'algorithme qui determine a quel endroit couper une ligne. Avec l'option -bbo, GNU indent prefere couper la ligne avant les operateurs booleens << && >> et << || >>. Avec l'option -nbbo il n'a pas cette preference. Par exemple, avec l'option par defaut -bbo (en combinaison avec les options --line-length60 et --ignore-newlines), le code ressemble a ceci : if (masque && ((masque[0] == '\0') || (masque[1] == '\0' && ((masque[0] == '0') || (masque[0] == '*'))))) Avec l'option -nbbo, il ressemble a ceci : if (masque && ((masque[0] == '\0') || (masque[1] == '\0' && ((masque[0] == '0') || (masque[0] == '*'))))) L'option par defaut -hnl, quant a elle, respecte les sauts de ligne du fichier d'entree en leur donnant la priorite la plus haute pour la coupure de ligne. Ainsi, si le fichier d'entree contient : if (masque && ((masque[0] == '\0') || (masque[1] == '\0' && ((masque[0] == '0') || (masque[0] == '*'))))) utiliser l'option -hnl ou --honour-newlines en combinaison avec les options -nbbo et --line-length60 deja mentionnees fait que la sortie ne correspond pas a ce que montre le dernier exemple, mais prefere couper la ligne aux endroits indiques dans le fichier d'entree : if (masque && ((masque[0] == '\0') || (masque[1] == '\0' && ((masque[0] == '0') || (masque[0] == '*'))))) L'idee derriere cette option est qu'une ligne trop longue, mais qui a deja ete coupee, ne sera pas modifiee par GNU indent. Un code d'aspect tres confus devrait tout de meme etre soumis a indent au moins une fois en utilisant l'option --ignore-newlines. L'option -gts affecte la maniere dont les macros standards de gettext(1) _() et N_() sont traitees. Le comportement par defaut (ou l'utilisation de l'option -ngts) consiste a les traiter comme le fait indent avec les autres fonctions ; ainsi, une longue chaine sera coupee comme dans l'exemple suivant : if (masque) { avertissement (_ ("Ceci est une longue chaine qui reste en un seul morceau.")); } Avec l'option -gts, le caractere de soulignement est traite comme associe a la chaine en le placant tout contre cette derniere et en respectant le fait que gettext(1) fournit discretement une chaine regionalisee. Cette option ne fonctionne que si << _(" >> est en un seul morceau en debut de chaine, ainsi que << ") >> a la fin de cette derniere. if (masque) { avertissement (_("Ceci est une longue chaine qui reste en un seul morceau.")); } DESACTIVATION DU FORMATAGE Le formatage du code C peut etre desactive pour certaines portions de programme en y placant des commentaires de controle. Pour desactiver le formatage d'une section de programme, placer le commentaire de controle de desactivation /* *INDENT-OFF* */ tout seul sur une ligne, juste avant la section concernee. Le texte du programme entre ce commentaire de controle et le prochain commentaire de controle d'activation sera envoye en sortie sans aucune modification. Le commentaire de controle d'activation est /* *INDENT-ON* */, et tout code qui suit ce commentaire sur la meme ligne sera encore envoye sur la sortie sans modification. Le formatage est reactive a partir de la ligne qui suit le commentaire de controle d'activation. Plus precisement, indent n'essaie pas de verifier le delimiteur fermant (<< */ >>) pour ces commentaires C, et tout espace sur la ligne est totalement transparent. Ces commentaires de controle fonctionnent aussi dans leur format C++, a savoir // *INDENT-OFF* et // *INDENT-ON*. Il est a noter que l'etat interne d'indent reste inchange lors du parcours d'une section pour laquelle le formatage est desactive. Ainsi par exemple, la desactivation du formatage au beau milieu d'une fonction et sa reactivation apres la fin de la fonction peut donner un resultat inattendu. Il est donc conseille de s'en tenir a une certaine modularite en selectionnant le code ne devant pas etre formate. A titre historique, notez que certaines versions anterieures d'indent generaient leurs messages d'erreur prefixes par *INDENT**. Ces versions d'indent ont ete concues pour ignorer toute ligne de texte en entree qui commencait par de tels messages d'erreur. J'ai supprime cette fonctionnalite incestueuse dans GNU indent. OPTIONS DIVERSES Pour obtenir la version d'indent installee, utilisez la commande indent -version. Elle vous indiquera le numero de version d'indent et n'effectuera aucun traitement. L'option -v permet d'activer le mode prolixe. Dans ce mode, indent genere une notification lorsqu'il coupe une ligne d'entree en deux lignes ou plus en sortie, et fournit certaines statistiques de taille en fin de traitement. Avec l'option -pmt, indent conserve les horodatages d'acces et de modification dans les fichiers de sortie. Utiliser cette option a pour avantage qu'executer indent sur tous les fichiers source et d'en-tete d'un projet ne necessitera pas pour make(1) de reconstruire toutes les cibles. Cette option n'est disponible que sur les systemes d'exploitation qui fournissent la fonction POSIX utime(2). BOGUES Veuillez envoyer tout rapport de bogue a bug-indent@gnu.org. Si indent est lance deux fois de suite sur le meme fichier avec le meme profil, il ne devrait jamais faire de modification lors du deuxieme passage. Avec la structure actuelle d'indent, cela ne peut pas etre garanti et n'a pas ete teste de maniere approfondie. indent ne comprend pas le C. Dans certains cas, cela peut l'empecher de relier des lignes, ce qui a pour consequence que l'effet d'indent sur un fichier est irreversible, meme si le fichier d'entree utilise est le resultat de l'execution d'indent avec un profil donne (.indent.pro). Bien qu'un effort ait ete fourni pour faire fonctionner indent avec C++, il ne fera pas du bon travail sur du code source en C++, sauf s'il est tres simple. indent ne tient pas compte de l'option --line-length quand il ecrit les commentaires dans le fichier de sortie. Les commentaires se retrouvent donc parfois tres decales vers la droite. Pour empecher indent de reunir des lignes coupees qui finissent par un commentaire, placez le commentaire sur la premiere ligne de la coupure. indent ne compte ni les lignes ni les commentaires (voir l'option -v) quand le formatage est desactive par la sequence /* *INDENT-OFF* */. Les commentaires de la forme /*CAPITALE*/ ne sont pas traites comme des commentaires mais comme des identifiants, et sont de ce fait reunis a la ligne suivante. Cela rend les commentaires de ce type inutiles, sauf s'ils sont integres en debut de code. COPYRIGHT La note de copyright suivante s'applique au programme indent. Les permissions de copie et le copyright pour ce manuel apparaissent vers le debut de indent.texinfo et indent.info et vers la fin de indent.1. Copyright (c) 2015 Tim Hentenaar. Copyright (c) 2001 David Ingamells. Copyright (c) 1999 Carlo Wood. Copyright (c) 1995, 1996 Joseph Arceneaux. Copyright (c) 1989, 1992, 1993, 1994, 1995, 1996, 2014 Free Software Foundation Copyright (c) 1985 Sun Microsystems, Inc. Copyright (c) 1980 The Regents of the University of California. Copyright (c) 1976 Board of Trustees of the University of Illinois. Tous droits reserves. La redistribution et l'utilisation en version source et binaire sont permises, a la condition que la note de copyright ci-avant et ce paragraphe soient copies sous ces deux versions et que toute documentation, materiels publicitaires et autres concernant cette distribution et cette utilisation mentionnent que le logiciel a ete developpe par l'Universite de Californie, Berkeley, l'Universite de l'Illinois, Urbana et Sun Microsystems, Inc. Les noms de ces Universites ou Sun Microsystems ne peuvent pas etre utilises pour approuver ou promouvoir des produits derives de ce logiciel sans autorisation ecrite prealable specifique. CE LOGICIEL EST FOURNI << TEL QUEL >> ET SANS AUCUNE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS, SANS LIMITATION, LES GARANTIES IMPLICITES DE QUALITE MARCHANDE ET D'ADEQUATION A UN USAGE PARTICULIER. Table de correspondance entre les deux formats d'option Voici une liste des options par ordre alphabetique des noms d'option longs, associes a leur version courte. --align-with-spaces -as --blank-lines-after-commas -bc --blank-lines-after-declarations -bad --blank-lines-after-procedures -bap --blank-lines-before-block-comments -bbb --braces-after-if-line -bl --braces-after-func-def-line -blf --brace-indent -bli --braces-after-struct-decl-line -bls --braces-on-if-line -br --braces-on-func-def-line -brf --braces-on-struct-decl-line -brs --break-after-boolean-operator -nbbo --break-before-boolean-operator -bbo --break-function-decl-args -bfda --break-function-decl-args-end -bfde --case-indentation -clin --case-brace-indentation -cbin --comment-delimiters-on-blank-lines -cdb --comment-indentation -cn --continuation-indentation -cin --continue-at-parentheses -lp --cuddle-do-while -cdw --cuddle-else -ce --declaration-comment-column -cdn --declaration-indentation -din --dont-break-function-decl-args -nbfda --dont-break-function-decl-args-end -nbfde --dont-break-procedure-type -npsl --dont-cuddle-do-while -ncdw --dont-cuddle-else -nce --dont-format-comments -nfca --dont-format-first-column-comments -nfc1 --dont-line-up-parentheses -nlp --dont-left-justify-declarations -ndj --dont-space-special-semicolon -nss --dont-star-comments -nsc --dont-tab-align-comments -ntac --else-endif-column -cpn --format-all-comments -fca --format-first-column-comments -fc1 --gnu-style -gnu --honour-newlines -hnl --ignore-newlines -nhnl --ignore-profile -npro --indent-label -iln --indent-level -in --k-and-r-style -kr --leave-optional-blank-lines -nsob --leave-preprocessor-space -lps --left-justify-declarations -dj --line-comments-indentation -dn --line-length -ln --linux-style -linux --no-blank-lines-after-commas -nbc --no-blank-lines-after-declarations -nbad --no-blank-lines-after-procedures -nbap --no-blank-lines-before-block-comments -nbbb --no-comment-delimiters-on-blank-lines -ncdb --no-space-after-casts -ncs --no-parameter-indentation -nip --no-space-after-for -nsaf --no-space-after-function-call-names -npcs --no-space-after-if -nsai --no-space-after-parentheses -nprs --no-space-after-while -nsaw --no-tabs -nut --no-verbosity -nv --original -orig --parameter-indentation -ipn --paren-indentation -pin --preserve-mtime -pmt --preprocessor-indentation -ppin --procnames-start-lines -psl --remove-preprocessor-space -nlps --single-line-conditionals -slc --space-after-cast -cs --space-after-for -saf --space-after-if -sai --space-after-parentheses -prs --space-after-procedure-calls -pcs --space-after-while -saw --space-special-semicolon -ss --spaces-around-initializers -sar --standard-output -st --start-left-side-of-comments -sc --struct-brace-indentation -sbin --swallow-optional-blank-lines -sob --tab-size -tsn --use-tabs -ut --verbose -v VALEUR RENVOYEE - 0 signifie qu'aucune erreur n'est survenue et qu'aucun avertissement n'a ete emis lors d'une invocation avec succes de ce programme. - 2 est renvoye si des erreurs sont survenues pendant le formatage sans empecher son achevement, mais qui sont probablement dues a du code incorrect (c'est-a-dire dont la compilation echouerait). - 3 est renvoye si le formatage d'un fichier est stoppe a cause d'une erreur avec le fichier qui empeche l'achevement du formatage. Si plusieurs fichiers d'entree ont ete specifies, indent continue son traitement avec le fichier suivant. - 4 est renvoye si un probleme interne serieux est survenu ; le processus indent est alors termine, meme si tous les fichiers specifies n'ont pas ete traites. - 64 est renvoye si un probleme d'invocation (comme une option non valable) empeche tout processus de formatage. FICHIERS $HOME/.indent.pro contient les options par defaut pour indent. AUTEURS Tim Hentenaar Carlo Wood Joseph Arceneaux Jim Kingdon David Ingamells HISTORIQUE Derive du programme indent de l'UCB. COPIE Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 2014, 2015 Free Software Foundation, Inc. Copyright (C) 1995, 1996 Joseph Arceneaux. Copyright (C) 1999 Carlo Wood. Copyright (C) 2001 David Ingamells. Copyright (C) 2013 Lukasz Stelmach. Copyright (C) 2015 Tim Hentenaar. Effectuer et distribuer des copies conformes de ce manuel est autorise a condition que la note de copyright et cette note de permission soient presentes dans chaque copie. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Lucien Gentis Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . INDENT(1)