VGRIND(1)

名称
vgrind - プログラムのソースを清書する

書式
vgrind [-] [-W] [-d file] [-f] [-h header] [-llanguage] [-n] [-p postproc] [-sn] [-t] [-x] name ...

解説
vgrind ユーティリティは、プログラムのソースを troff(1) を使って清書します。コメント はイタリック体で、キーワードはボールド体で、現在印刷中の関数名は、 各ページの余白部分に列挙されます。

vgrind ユーティリティには 2 つの基本的なモード、フィルタモード( -f オプションの項を参照)と 標準モードがあります。フィルタモードでは、 vgrind は tbl(1) と同様 に振る舞います。すなわち、以下の troff ライク なマクロに囲まれた部分以外 は素通しします。

.vS 処理領域開始

.vE 処理領域終了

マクロに囲まれた行は既に示したように清書されます。 vgrind からの出力を troff(1) に渡すことにより印刷することができます。 eqn(1) や tbl(1) との呼び出し順序には特別な制限はありません。

通常モードでは、 vgrind は入力ファイル全体を処理し、 ポストプロセッサを起動して出力処理を行わせます。 ポストプロセッサのデフォルトは psroff(1) です

どちらのモードでも、 vgrind はピリオドで開始する行は変更せずに出力します。

オプションは以下のとおりです。

-   標準入力から読み込みます( -f オプションが指定された場合はデフォルトです)。

-W  (ナロー)バリアン用ではなく、(ワイド)バーサテックプリンタの出力を 行います。

-d file
    プログラミング言語定義ファイルを指定します(デフォルトでは /usr/share/misc/vgrindefs を使用します)。

-f  フィルタモードで動作します。

-h header
    各ページのヘッダ文字列を指定します(デフォルトは入力ファイル名です)。

-l  入力ファイルのプログラミング言語を指定します。現在使用可能なものは以下 のとおりです: PASCAL (-lp), MODEL (-lm), C (-lc もしくはデフォルト), C++ (-lc++), CSH (-lcsh), SHELL (-lsh), RATFOR (-lr), MODULA2 (-lmod2), YACC (-lyacc), LISP (-lisp), ICON (-lI), PERL (-lperl) 。

-n  キーワードのボールド化を行いません。

-p postproc
    postproc を出力のポストプロセッサとして使用します。 psroff(1) がデフォルトです。

-s  出力文字のポイントサイズを指定します(troff の .ps と同じ引数です)。

-t  troff(1) の同一のオプションと同じく、 フォーマット後、標準出力に書き出します。

-x  インデックスファイルを清書します。 vgrind は、カレントディレクトリに index という名前のファイルがあればつねにインデックスを 出力します。このインデックスファイルを vgrind に -x オプションととも に指定することで、清書することができます。

関連ファイル
index
    インデックスファイル
/usr/share/tmac/tmac.vgrind
    マクロパッケージ
/usr/libexec/vfontedpr
    プリプロセッサ
/usr/share/misc/vgrindefs
    言語記述ファイル

関連項目
getcap(3), vgrindefs(5)

バグ
vfontedpr プリプロセッサは、以下のプログラミングスタイルを仮定しています:

C 言語 - 関数名は、空白またはアスタリスクのみからなる行の直後にあり、括 弧でくくられた引数リストが同じ行にある。

PASCAL - 関数名は、キーワード function または procedure と同じ行にある。

MODEL - 関数名は、キーワード is beginproc と同じ行にある。

もし以上に従っていない場合、インデックスと余白への関数名印刷が不正確な ものになります。

その他、いくつかのプログラミングスタイルはきれいに清書されません: ブランクによってソースコードの先頭などを揃えた場合、正しくフォーマットされ ません。 vgrind を使って清書する場合は、タブによってソースコードを揃える ようにします。これは vgrind が可変幅フォントを使用するからです。

vgrind は、 ctags(1) が関数を検出する方式を採用すべきです。

フィルタモードは -me または -ms マクロを用いたドキュメントで、正しく動作しません。 (このモードは一体どこで使うのでしょう)

歴史
vgrind は 3.0BSD で追加されました。