Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ indent(1) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

INDENT(1)  —  UNIX Programmer’s Manual

名称

indent − Cプログラムソースに字下げ処理を施して整形する

形式

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

解説

indent は、 C プログラムのフォーマッタです。 input-file の C プログラムをスイッチに従って再整形します。 指定できるスイッチについては、以下で述べられています。 これらのスイッチは、 ファイル名の前または後ろに置くことができます。 注 : input-fileだけを 指定した場合には、 整形は‘置き換え’で行われます。 つまり、 整形されたファイルは input-file へ書き戻され、 input-file のバックアップコピーが現在のディレクトリに書き込まれます。 input-file の名前が‘/blah/blah/file’だとすると、 バックアップファイルの名前は file.BAK になります。 output-file が指定された場合には、 indent はそれが input-file とは異なることを確認するためにチェックします。

オプション

以下に列記されているオプションは、 indent によって整形される形式を制御します。

−bad,−nbad −bad が指定された場合には、 すべての宣言のブロックのあとにブランク行が入れられます。 デフォルトは −nbad です。

−bap,−nbap −bap が指定された場合には、 すべてのプロシージャ本体のあとにブランク行が入れられます。 デフォルトは −nbap です。

−bbb,−nbbb −bbb が指定された場合には、 すべてのコメントのブロックの前にブランク行が入れられます。 デフォルトは −nbbb です。

−bc,−nbc −bc が指定された場合には、 宣言内の各コンマのあとに改行が入れられます。 −nbc は、このオプションをオフにします。 デフォルトは −nbc です。

−br,−bl −bl を指定すると、 次のように複合文がラインアップされます。

    if (...)
    {
        code
    }

−br (デフォルト)を指定すると、 上記の複合文は次のようになります。

    if (...) {
        code
    }

−cn コードに関するコメントが始まるカラム。 デフォルトは 33 です。

−cdn 宣言に関するコメントが始まるカラム。 デフォルトはコードに関するコメントと同じカラムになります。

−cdb,−ncdb ブランク行にコメント区切り記号を 置く(または置かない)ようにします。 このオプションがオンになっていると、 コメントは、

/∗
∗ this is a comment
∗/

のようになり、 次のようにはなりません。

/∗ this is a comment ∗/

これは、 ブロックコメントだけに影響をおよぼし、 コードの右側のコメントには影響しません。 デフォルトは −cdb です。

−ce,−nce 直前の‘}’にぴたりと付くように‘else’を 入れる(または入れない)ようにします。 デフォルトは −ce です。

−cin 継続インデントを、 n にセットします。 文の最初の行の先頭から継続行が字下げされます。 かっこで囲まれた式には、 −lp が作用するようになっていない限り、 ネストを示すための字下げが追加されます。 −ci のデフォルトは −i と同じ値です。

−clin case ラベルを、 switch 文の右へ n タブストップだけ字下げされるようにします。 −cli0.5 は、 case ラベルを、 半タブストップ分だけ字下げします。 デフォルトは −cli0 です。 (これは、小数の引数を 受け付ける唯一のオプションです。)

−dn コードの右以外にあるコメントの配置位置を制御します。 −d1 と指定すると、 コメントはコードの左へ 1 レベルだけ字下げされます。 デフォルトの −d0 は、これらのコメントをコードの左端に合わせます。 後述のコメントの字下げに関する項を参照してください。

−din 宣言のキーワードからそのあとの識別名までに対して、 文字単位で字下げを指定します。 デフォルトは −di16 です。

−dj,−ndj −dj は、宣言を左寄せします。 −ndj はコードと同じ位置に字下げします。 デフォルトは −ndj です。

−ei,−nei 特殊な else-if 処理をオン(オフ)にします。 オンになっている場合には、 else があとにある if は、 直前の if 文と同じに字下げされます。 デフォルトは −ei です。

−fc1,−nfc1 コメントをカラム1から始める整形を オン(オフ)にします。 よくあることですが、 コメントの先頭の‘/’がカラム 1 にあるものは、 プログラマがその位置にするように注意を 払って手で整形したものです。 そのような場合には、 −nfc1 を 使用する必要があります。 デフォルトは −fc1 です。

−in 1 レベル分の字下げスペース数を指定します。 デフォルトは 8 です。

−ip,−nip パラメータ宣言の左マージンからの字下げを オン(オフ)にします。 デフォルトは −ip です。

−ln 出力行の最長を指定します。 デフォルトは 78 です。

−lp,−nlp かっこで囲まれている継続行のコードを揃えます。 左かっこを含む行に対応する右かっこがない場合は、 その継続行は、 左かっこの直後の文字位置から始まるように字下げされます。 例えば、 次の 2行に渡るコードは、−nlp が有効になっている時のものです。

    p1 = first_procedure(second_procedure(p2, p3),
        third_procedure(p4, p5));

−lp を 有効にする(デフォルト)と、 このコードは次のように見やすくなります。

    p1 = first_procedure(second_procedure(p2, p3),
third_procedure(p4, p5));

これに 2個の改行を挿入すると、 次のようになります。

    p1 = first_procedure(second_procedure(p2,
p3),
third_procedure(p4,
p5));

−npro プロファイルファイル‘./.indent.pro’および‘~/.indent.pro’を 無視させます。

−pcs,−npcs −pcs とした場合には、 すべてのプロシージャ呼び出しは、 名前と‘(’との間にスペースが 1 個挿入されます。 デフォルトは −npcs です。

−ps,−nps −ps とした場合には、 演算子‘−>’に続くポインタは両サイドを スペースで囲まれます。 デフォルトは −nps です。

−psl,−npsl −psl とした場合には、 定義されているプロシージャの名前がカラム 1 に置かれます − そのタイプは、 もしあれば、直前の行に残されます。 デフォルトは −psl です。

−sc,−nsc アスタリスク (‘∗’) を すべてのコメントの左端に置く処理を オン(オフ)にします。 デフォルトは −sc です。

−sob,−nsob −sob が指定された場合には、 オプションのブランク行が削除されます。 これは、 宣言のあとにあるブランク行を 取り除くために使用することができます。 デフォルトは −nsob です。

−st indent に、標準入力から入力させ、 標準出力に出力させます。

−Ttypename typename をタイプキーワードのリストに追加します。 名前の累積: −T は複数回指定することができます。 プログラムにある typedefs で定義されたすべてのタイプ名を 指定する必要があります。 −− いくつかを 指定しなかった場合でも、 それによる被害はありませんが、 プログラムはあるべき姿に整形されません。 これを行うことは手間がかかりますが、 これがまさに C における 1つの問題点の現れです。 typedefs は言語の構文変更を 引き起こしますが、 indent はすべての typedefs を 見つけることはできません。

−troff indent に、 troff による処理ができるようにプログラムを 整形させます。 vgrind と同様のリストが得られます。 出力ファイルが指定されない場合には、 もとのファイルへの書き戻しではなく、 デフォルトで標準出力が用いられます。

−v,−nv −v は‘冗長’モードをオンにし、 −nv はオフにします。 冗長モードにあるときには、 1行の入力が複数の行の出力に分割したときに報告し、 完了時に統計を表示します。 デフォルトは −nv です。

補足説明

ユーザは、 自分のログインディレクトリ または現在のディレクトリの両方 またはそのどちらか一方に .indent.pro と呼ばれるファイルを作成して、 希望するスイッチを含めることによって、 自分のデフォルトの‘プロファイル’を indent にセットアップすることができます。 現在のディレクトリにある‘.indent.pro’ファイルのスイッチは、 (名前を累積する −T のタイプ定義は除いて) 自分のログインディレクトリの 同ファイルのスイッチに優先します。 indent が実行され、 プロファイルファイルが存在している場合には、 それが読み取られ、 このプログラムのデフォルトがセットアップされます。 スイッチは、 スペース、または タブ、 復帰改行で区切る必要があります。 コマンド行で指定されたスイッチは、 プロファイルのスイッチよりも優先します。 コメント ‘ボックス’コメント。 indent は、 コメントの始まりの直後にダッシュまたはアスタリスクがある注釈 (すなわち、 ‘/∗−’または‘/∗∗’の形) は、 まわりを アスタリスクのボックスで囲まれたコメントであると見なします。 このようなコメントの各行は、 コメントの最初の行の字下げが他の行とは 違う場合に字下げが調整されるということはありますが、 それ以外の場合には変更されることはありません。 ストレートテキスト。 他のすべてのコメントはストレートテキストとして扱われます。 indent は、(ブランク、タブ、または改行で区切られた)ワードを 1行に できるだけ多く収めようとします。 ブランク行はパラグラフを分割します。 コメントの字下げ処理 コメントがコードと同一行にある場合には、 そのコメントは‘注釈カラム’から開始されます。 この‘コメントカラム’は、 コマンド行パラメータ −cn でセットされます。 コメントがコードと同じ行にない場合には、 コメントはコードが現在置かれているところより n レベルだけ右へ字下げして開始されます。 ここで、 n はコマンド行パラメータ −dn で指定されます。 コードがコメントカラムを 越えている場合には、 コメントはそれより右から開始され、 極端な場合は右マージンが自動的に変更されることもあります。 プリプロセッサ行 普通、 indent はプロプロセッサ行をそのまま残します。 後続のコメントを整理するための再整形だけを行います。 埋め込まれているコメントはそのままにします。 条件付きコンパイル (#ifdef...#endif) は認識され、 indent は導かれた構文上の特性を補正しようとします。 Cの構文 indent は、 C の構文については相当量を理解しますが、 ‘寛大な’解析プログラムになっています。 普通の部類に属する不完全な構文や誤った形式がある構文は うまく処理しようとします。 特に、次のようなマクロの使い方は正しく処理されます。

        #define forever for(;;)

関連ファイル

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

バグ

indent には、ls よりかなり多くのスイッチがあります。 あるディレクトリに収められているすべての C 言語プログラムに 字下げ処理をしようとして、 シェルに対して

    indent ∗.c

とタイプするのは、よくある誤りですが、 これは仕様ではなく、バグと呼べるものです。

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026