マニュアルページ indent.1




名前

     indent - C プログラムのソースファイルのインデントと書式化


形式

     indent input-file [ output-file ] [ [ -bap | -nbap ]
     [ -bacc | -nbacc ] [ -bad | -nbad ] [ -bbb | -nbbb ]
     [ -bc | -nbc ] [ -bl ] [ -br ] [ -bs | -nbs ] [ -cn ]
     [ -cdn ] [ -cdb | -ncdb ] [ -ce | -nce ] [ -cin ]  [ -clin ]
     [ -dn ] [ -din ] [ -dj | -ndj ] [ -eei | -neei ]
     [ -ei | -nei ] [ -fc1 | -nfc1 ] [ -in ] [ -ip | -nip ]
     [ -ln ] [ -lcn ] [ -lp | -nlp ]  [ -pcs | -npcs ]  [ -npro ]
     [ -psl | -npsl ] [ -sc | -nsc ] [ -sob | -nsob ] [ -st ]
     [ -T typename ] [ -troff ] [ -v | -nv ]


機能説明

     indent は、C プログラムのフォーマッタです。 入 力 ファ イ ル
     input-file に含まれる C プログラムをオプションに従って書式化
     し直します。指定できるオプションについては後述します。 オ プ
     ションは、ファイル名の前でも後ろでも指定できます。

     注意 : input-file だけを指定すると、書式化された結果がファイ
     ル input-file に書き戻され、 input-file のバックアップがカレ
     ント・ディレクトリに書き込まれます。 input-file  の 名 前 が
     /blah/blah/file  の と き、 バッ ク アップ・ファイルの名前は
     file.BAK となります。

     output-file を指定すると、そのファイルが input-file と異なる
     かどうかがチェックされます。


オプション

     次に示すオプションは、 indent によって強制される書式を制御し
     ます。

     -bacc,-nbacc
               -bacc を指定すると、条件付きコンパイルブロックの前
               後 に そ れ ぞれブランク行が置かれます。たとえば、
               #ifdef の前と、 #endif の後ろには、必ずブランク 行
               が挿入されます。これらのブロックの前後の他のブラン
               ク行は削除します。デフォルトは -nbacc で、これらの
               処理は行われません。

     -bad,-nbad
               -bad を指定すると、各宣言ブロックの後ろにブラン ク
               行 が挿入されます。デフォルトは -nbad で、この処理
               は行われません。

     -bap,-nbap
               -bap を指定すると、各手続きの本体の後ろにブラン ク
               行 が挿入されます。デフォルトは -nbap で、この処理
               は行われません。

     -bbb,-nbbb
               -bbb を指定すると、各ブロックコメントの前にブラ ン
               ク 行が挿入されます。デフォルトは -nbbb で、この処
               理は行われません。

     -bc,-nbc  -bc を指定すると、宣言の各コンマの後ろで改行が行わ
               れ ま す。 -nbc を指定すると、この処理は行われませ
               ん。デフォルトは -bc です。

     -br,-bl   -bl を指定すると、複合文が次のように並べられます。
                    if (...)
                    {
                                   コード
                    }

               -br (デフォルト) を指定すると、複合文は次のよう に
               なります。
                    if (...) {
                                   コード
                    }

     -bs,-nbs
          -bs を指定すると、 sizeof の後ろにブランクが挿入され ま
          す。  sizeof  を手続き呼び出しのように指定するか ( -nbs
          を指定した場合 : デフォルト)、それとも、 sizeof は演 算
          子 であるため、他の演算子と同じようにその後ろにブランク
          を置くかは、プログラマによって意見が分かれると こ ろ で
          す。

     -cn  コードに関するコメントを開始するカラムを n に設定 し ま
          す。
          デフォルト値: -c33

     -cdn 宣言に関するコメントを開始するカラムを n に設定します。
          デ フォルトでは、コードに関するコメントと同じカラムから
          開始されます。

     -cdb,-ncdb
          を指定すると、コメントの区切り文字がブランク行に置か れ
          ます。たとえば、
          /* これはコメントです */
          は、次のようになります。

          /*
          *これはコメントです
          */
          -ncdb を指定すると、この処理は行われません。

          これらのオプションはブロックコメントだけを操作し、 コー
          ドの右側にあるコメントには影響を与えません。
          デフォルト値:  -cdb

     -ce,-nce
          を指定すると、 else とその直前にある `}' との間の空白が
          取 り除かれます。 -nce を指定すると、この処理は行われま
          せん。
          デフォルト値:  -ce

     -cin 継続行のインデントを n カラムに設定します。各継続行が同
          じ文の先頭行の先頭カラムから n カラムだけインデントされ
          ます。 -lp が有効なとき、入れ子を示すために括弧で囲まれ
          た式にはインデントが追加されます。 n を指定しないと、イ
          ンデントのカラム数が -i と同じ値に設定されます。

     -clin
          case のラベルを、それを含んでいる switch 文から、タブ n
          個 分インデントします。 -cli0.5 とすると、case のラベル
          はタブの半分だけインデントされます。
          デフォルト値:  -cli0

     -dn  コードの右側にあるコメント以外のコメントの配置を制御 し
          ます。デフォルトの -d1 では、各コメントがコードの先頭か
          ら 1 回インデントした位置に配置されます。 -d0 を指定 す
          る と、各コメントはコードと同じ位置に配置されます。後述
          の「コメントのインデント」を参照してください。

     -din 宣言のキーワードとそれに続く識別子の間を何文字あける か
          を指定します。
          デフォルト値:  -di16

     -dj,-ndj
          -dj を指定すると、宣言が左揃えされます。 -ndj を指定 す
          ると、宣言はコードと同じ位置にインデントされます。
          デフォルト値:  -ndj

     -ei,-nei
          -ei を指定すると、 else に続く if は、その前の if 文 と
          同じ位置にインデントされます。 -nei を指定すると、 else
          に続く if は、その前の if 文より 1 レベル深くインデント
          されます。
          デフォルト値:  -ei

     -eei,-neei
          -eei を指定すると、 if() および while() の式の部分の 継
          続行が、同じ式の先頭行よりさらに 1 レベル深く (つまり 2
          レベル) インデントされます。これは、継続が行わ れ た 式
          と、 if() または while() に続く文とを間違えないようにす
          るためのものです。
          デフォルト値:  -neei

     -fc1,-nfc1
          -fc1 を指定すると、カラム 1 から始まるコメントの書式 化
          が行われます。 -nfc1 を指定すると、そのような書式化は行
          われません。先頭の `/' がカラム 1 にあるコメントは、 多
          く の場合、プログラマが 1 つ 1 つ手作業で書式化したもの
          です。このような場合は、 -nfc1 を使用してください。
          デフォルト値:  -fc1

     -in  1 つのインデント・レベルのスペースの数を指定します。 デ
          フォルトでは、1 つのタブと等しくなります。

     -ip,-nip
          -ip を指定すると、パラメタの宣言が左マージンからイン デ
          ン トされます。 -nip を指定すると、この処理は行われませ
          ん。
          デフォルト値:  -ip

     -ln  後ろのコメントを含む出力行の最大の長さを n カラムに設定
          します。
          デフォルト値:  -l78

     -lcn ブロック・コメントの行の長さを n カラムに設定します。デ
          フォ ルトでは、 -l で指定された通常の行の長さと等しくな
          ります。

     -lp,-nlp
          -lp を指定すると、継続行の中で括弧に囲まれているコー ド
          の 位置が揃えられます。ある行に、その行では閉じていない
          左括弧がある場合、継続行は左括弧の直後にある文字と同 じ
          位 置から開始されます。 -nlp を指定すると、この処理は行
          われません。たとえば、 -nlp が有効な場合に次のように 書
          式化される継続行があるとします。
               p1 = first_procedure(second_procedure(p2, p3),
                              third_procedure(p4, p5));

          -lp が有効な場合 (デフォルト)、コードは次のように よ り
          はっきりします。
               p1 = first_procedure(second_procedure(p2, p3),
                                      third_procedure(p4, p5));

          いくつかの復帰改行 (NEWLINE) 文字を挿入すると、次のよう
          になります。
               p1 = first_procedure(second_procedure(p2,
                                                  p3),
                                      third_procedure(p4,
                                                p5));

          この例は、 -lp によって出力されたものです。

     -npro
          プロファイル・ファイルの ./.indent.pro と ~/.indent.pro
          を無視します。

     -pcs , -npcs
          -pcs を指定すると、ソースコード内のすべての手続き呼び出
          しと手続きの宣言において、手続き名と '(' の間にスペース
          が挿入されます。
          デフォルト値:  -npcs

     -psl , -npsl
          -psl を指定すると、定義されている手続きの名前がカラム 1
          に 置かれ、その型があれば、前の行に置かれたままとなりま
          す。 -npsl を指定すると、この処理は行われません。
          デフォルト値:  -psl

     -sc,-nsc
          -sc を指定すると、すべてのコメントの左端にアスタリス ク
          (`*')  が置かれます。 -nsc を指定すると、この処理は行わ
          れません。
          デフォルト値:  -sc

     -sob,-nsob
          -sob を指定すると、インデント時に省略可能なブランク行が
          削 除されます。このオプションを使用すれば、宣言の後ろの
          ブランク行を排除できます。デフォルト (-nsob) では、この
          処理は行われません。

     -st  indent は、処理対象のデータを標準入力から読み取り、結果
          を標準出力に書き込みます。

     -T typename
          型のキーワードのリストに名前 typename を追加します。 -T
          は 複 数 回使用することができ、指定した名前が累積されま
          す。 typedef で定義した、プログラム内のすべての型名を指
          定 する必要があります。いくつかの型名を指定し忘れてもプ
          ログラムが壊されることはありませんが、結果として、書 式
          化 が適切でない部分が残ります。そのような部分は書式とし
          て不十分なだけでなく、実際にプログラムで起こるかもし れ
          ない問題の兆候であることがあります。 typedef により言語
          の構文が変更されるため、 indent はすべての typedef を検
          出できません。

     -troff
          indent は、 troff で処理するための書式化を行います。 こ
          れ により、 vgrind と同様の結果が得られます。出力ファイ
          ルが指定されていないと、結果は標準出力に出力され、入 力
          ファイルは処理されません。通常、 troff によって処理した
          出力を得るには、次のコマンドを使用します。

               indent -troff program.c | troff -mindent

     -v,-nv
          -v は「詳細情報」モードをオン、 -nv はオフにします。 詳
          細情報モードでは、1 行を 2 行以上に分割した場合にそのこ
          とが報告され、コンパイル時にサイズの統計情報が示され ま
          す。
          デフォルト値:  -nv



使用法

     ログイン・ディレクトリまたは現作業ディレクトリに .indent.pro
     というファイルを作成し、その中で使用したいオプションを指定す
     れば、 indent のデフォルトを決定する独自の「プロファイル」を
     設 定できます。現作業ディレクトリの .indent.pro は、ログイン
     ディレクトリの中にあるファイルより優先します。 indent の実行
     時 に プ ロ ファイル・ファイルが存在すると、そのプロファイル
     ・ファイルが読み込まれ、それに従ってプログラムのデフォルトが
     設定されます。ただし、コマンド行のオプションはプロファイル内
     のオプションよりも常に優先します。各オプションは、スペース、
     タブ、復帰改行文字で区切ってください。

  コメント
     枠付き               indent は、コメントの開始を示す文字列の
                    直 後 が ダッシュまたはアスタリスク (すなわち
                    `/*-'または`/**') の場合、そのコメントがア ス
                    タ リ ス クの枠によって囲まれていると想定しま
                    す。そのようなコメントを構成する各行は、変 更
                    し ないでそのままにします。ただし、コメントの
                    先頭行のインデント位置が変更された場合は、 そ
                    の 位 置 に合わせてインデントの位置を調整しま
                    す。

     一般テキスト               上記以外のコメントはすべて一般 テ
                    キ ストとして扱います。 indent は各行にできる
                    だけ多くのワードを (スペース、タブ、復帰改 行
                    文 字で区切って) 配置します。ブランク行が現れ
                    ると、段落の終わりと見なします。

  コメントのインデント
     コメントと同じ行にコードがあると、そのコメントは「コメントカ
     ラム」(コマンド行パラメタ -cn によって設定されるもの) から開
     始します。それ以外の行では、現在のコードのインデント位置より
     も  n レベル (コマンド行パラメタ -dn によって指定されるもの)
     少ない位置からコメントを開始します。コードがコメントカラムの
     位置を超えた場合、コメントはその位置よりも右側から開始され、
     極端な場合、コメントを同じ行に納めるために右マージンが自動的
     に拡張されることがあります。

  前処理行
     通常、 indent は前処理文の右側にあるコメントの位置を揃えるだ
     けで、途中に埋め込まれているコメントは変更しません。条件付き
     コンパイル (#ifdef...#endif) を認識し、構文的に特異な部分 が
     あると、それを補正しようとします。

  C の構文
     indent は、C の構文の大部分を識別しますが、その解析はかな り
     甘いものです。構文が不完全であったり、正しくなかったりした場
     合、それが通常のものであれば対処しようとします。特に、次のよ
     うなマクロは適切に処理することができます。

          #define forever for(;;)

  /*INDENT OFF*/ /*INDENT ON*/
     この 2 つのコメントの間のテキストはすべてそのままにしま す。
     したがって、ソースコードがこれらのコメントの間にあると、書式
     の変更は行われません。


ファイル

     ./.indent.pro       プロファイルファイル
     ~/.indent.pro       プロファイルファイル

関連項目

     troff(1)

使用上の留意点

     よくある誤りの 1 つに、ディレクトリ内のすべての C プログラム
     に対して indent を実行しようとして、シェルで
          indent *.c
     と入力してしまい、失敗をしてしまうことがあります。