MHL(1)

NAME
mhl - MH メッセージを整形する

SYNOPSIS
/usr/local/lib/mh/mhl [-bell] [-nobell] [-clear] [-noclear] [-folder +folder] [-form formfile] [-length lines] [-width columns] [-moreproc program] [-nomoreproc] [files ...] [-help]

DESCRIPTION
mhl はメッセージを整形表示するプログラムです。 これは more (1) (デフォルトの showproc ) の置換えとして設計されています。 more 同様、 引数(あるいは標準入力)として指定されたメッセージそれぞれを出力します。 もし、複数のメッセージが指定された場合、 それぞれの出力前にプロンプトが出、 <RETURN> または <EOT> で出力を開始します。 <RETURN> の場合は(適切な場合は)画面を消去し、 <EOT> (通常は CTRL-D) の場合は画面消去はしません。 <INTERRUPT> (通常は CTRL-C) はそのメッセージの出力をやめて、 次のメッセージ(あるのなら)のプロンプトを出します。 <QUIT> (通常 CTRL-\) はプログラムを終了します(コアダンプはしません)。 `-bell' オプションを付けると、 mhl はそれぞれのページの最後でベルを鳴らします。 一方、`-clear' オプションを付けると、 mhl はそれぞれのページの最後で画面を消去します (または、それぞれのメッセージの後で改ページを出力します)。 これらのオプションは両方とも(そしてその逆の意味のものも) プロファイル・エントリ moreproc が空と定義されていて、 mhl が端末に出力している時にだけ効果があります。 moreproc エントリが空でなく何か定義されていて、 mhl の出力が端末の場合は、 mhl は、moreproc を端末と mhl の間に置き、 これらのオプションを無視します。 さらに、 `-clear' オプションが指定され、mhl の出力が端末の場合、 mhl は画面消去の方法を見つけるために、 ユーザーの端末のタイプを決めようと、環境変数 $TERM と $TERMCAP を見ます。 もし `-clear' オプションが指定され、mhl の出力が端末でない場合 (例えば、パイプやファイルの場合)、 mhl はそれぞれのメッセージの後に改ページを送ります。 デフォルトの moreproc やプロファイル・エントリを置き換えるためには `-moreproc program' オプションが使えます。 mhl をハードコピー端末で起動すると、 決して moreproc を開始させる事はない点に注意して下さい。 `-length length' と `-width width' オプションはそれぞれ画面の長さと 幅を設定します。 デフォルトは $TERMCAP が指し示す値で、 分からなければ、それぞれ 40 と 80 が使われます。 mhl のデフォルトのフォーマット・ファイルは mhl.format で (これは最初にユーザーの MH ディレクトリの中を探し、次に /usr/local/lib/mh ディレクトリの中を探します)、 これは `-form formatfile' オプションで変更可能です。 最後に、 `-folder +folder' オプションは MH フォルダ名を設定します。 これは後述の "messagename:" 行に使われます。 デフォルトは、環境変数 $mhfolder が使われ、 show、next、そして prev はこの値を適切に初期化します。 mhl は次の二段階で処理します。 1) フォーマット・ファイルを読んで解釈し、 そして、2) それぞれのメッセージ(ファイル)を処理します。 第一段階では、 フォーマットの内部表現が構造リストとして作られます。 第二段階では、 このリストがそれぞれのメッセージに使われ、 フォーマット・ファイルの指定する形式に従って出力します。 "mhl.format" フォーム・ファイルは、画面消去、画面サイズ、 行の折り返し、通過するテキスト、コンポーネントの順序、 そしてコンポーネントの形式などを制御する情報を含んでいます。 さらに、無視すべきコンポーネントのリスト、特別なコンポーネントの組合せが 機能を追加するために定義されます。 出力メッセージはフォーマット・ファイルで指定された順序で出力されます。 mhl.format のそれぞれの行は以下の形式のどれかです。
     ;comment
     :cleartext
     variable[,variable...]
     component:[variable,...] `;' で始まる行は注釈で、無視されます。 `:' で始まる行は生のテキストで、そのまま出力されます。 `:' だけからなる行は空行が出力されます。 "component:" で始まる行は指定のコンポーネントの形式を定義します。 そして、最後に残った行は全体の環境を定義します。 例えば、次の行は
width=80,length=40,clearscreen,overflowtext="***",overflowoffset=5 画面の大きさを幅 80、長さ 40に設定し、 画面はそれぞれのページを表示する前に消去されるべきである事を表し、 行があふれた場合の字下げは 5 で、 その場合は "***" というテキストで示す事を示しています。 以下に挙げるのは現在使える変数とその引数の全てです。 もし、これらがコンポーネントに続いていた場合は、 それはそのコンポーネントにだけ適応され、 そうでない場合は、全体に対して適応されます。 全ての形式は実際に出力が始まる前に解析されますので、 フォーマットの最後に全体に影響する変数を書いた場合でも (例えば、bell、clearscreen、width、length)、 それは最初からメッセージ全体に適応されます。
変数	型	意味
width	整数	画面の幅、またはコンポーネントの幅
length	整数	画面の長さ、またはコンポーネントの長さ
offset	整数	"component: " に対する字下げ量
overflowtext	文字列	あふれた行の最初に使われるテキスト
overflowoffset	整数	あふれた行の字下げ量
compwidth	整数	コンポーネントの最初の行が出力された後の
		テキストに対する字下げ量
uppercase	フラグ	このコンポーネントのテキストは大文字で出力
nouppercase	フラグ	大文字にしない
clearscreen	フラグ/G	それぞれのページの前に画面を消す
noclearscreen	フラグ/G	画面消去しない
bell	フラグ/G	それぞれのページの最後でベルを鳴らす
nobell	フラグ/G	ベルを鳴らさない
component	文字列/L	このコンポーネントに対する
		"component" の代わりに使われる名前
nocomponent	フラグ	このコンポーネントは "component: " を
		出力しない
center	フラグ	コンポーネントを行の真中に出力
		(一行のコンポーネントでのみ働く)
nocenter	フラグ	真中に寄せない
leftadjust	フラグ	それぞれの行で行頭のスペースを取り除く
noleftadjust	フラグ	leftadjust しない
compress	フラグ	テキスト中の改行をスペースに置き換える
nocompress	フラグ	compress しない
split	フラグ	複数の行を一行にまとめない
nosplit	フラグ	複数の行を一行にまとめる
newline	フラグ	コンポーネントの最後に改行を書く
		(デフォルト)
nonewline	フラグ	コンポーネントの最後に改行を書かない
formatfield	文字列	このコンポーネントに対する
		フォーマット文字列 (後述)
decode	フラグ	非ASCII文字のMIME表現をデコードする
addrfield	フラグ	アドレスを含む行
datefield	フラグ	日付を含む行
整数値と文字列値の変数の値を指定するには、 それらの名前の後ろにイコール記号と値を書けばいいです。 整数値の変数は 10進数の値を置き、 文字列値の変数はダブルクォートで囲まれた任意のテキストを置きます。 上記の表で型に "/G" または "/L" が付いているものは、 その値は(それぞれ)全体に対する指定、またはそのコンポーネントだけに対する指定 が出来るものです。 以下の
    ignores=component,... という形式の行は、 出力されない(無視する)コンポーネントのリストを指定します。 コンポーネント "MessageName" (大文字小文字は区別しない)は 指定された、または環境で見つかったフォルダ名と、 実際のメッセージ名(ファイル名)が出力されます。 形式は show に `-header' オプションをつけた時に出力されるものと 同じです。 コンポーネント "Extras" は明示的に指定されていないコンポーネントで、 無視するコンポーネントのリストにも入っていない 全てのコンポーネントを出力します。 もし、このコンポーネントが指定されてない場合は、 明示的に指定されてないコンポーネントは無視されるので、 無視するコンポーネントのリストは必要ありません。 もし "nocomponent" が指定されてない場合、 コンポーネント名はフォーマット・ファイルに書かれている通りに出力されます。 デフォルトのフォーマットは次の通りです。
: -- using template mhl.format --
overflowtext="***",overflowoffset=5
leftadjust,compwidth=9
ignores=msgid,message-id,received
Date:formatfield="%<(nodate{text})%{text}%|%(pretty{text})%>"
To:
cc:
:
From:
Subject:
:
extras:nocomponent
:
body:nocomponent,overflowtext=,overflowoffset=0,noleftadjust
変数 "formatfield" はフォーマット文字列を指定します (mh-format (5) を参照)。 フラグ値 "addrfield" と "datefield" (これらは相互排他的です)は、 mhl にフォーマット文字列中のエスケープの解釈で、 それぞれアドレスか日付かを指定します。 デフォルトでは、 mhl はアドレスや日付を含む行 (これらの行のリストは mh-mail (5) を参照) には何の整形もしません。 mhl はアドレスや日付に対してフォーマット文字列を適応させようとすると、 その解析をしなければならないので、この結果、速い処理が可能になります。 もし望むなら、 mhl にアドレスまたは日付(両方ではない)に対してデフォルトのフォーマット 文字列を与える事が出来ます。 これをするためには、全体に対して効くように、 addrfield または datefield フラグを適切な formatfield 変数値と共に指定して 下さい。
/usr/local/lib/mh/mhl.format    メッセージのテンプレート
あるいは <mh-dir>/mhl.format    が標準のテンプレートに代わる
$HOME/.mh_profile    ユーザーのプロファイル
moreproc:    対話的フロントエンドとして使われるプログラム
show(1), ap(8), dp(8) `-bell' `-noclear' `-length 40' `-width 80' 無し。 `bell' と `clear' の情報をフロントエンドに伝える方法があるべきでしょう。 MH を BERK オプション付で構築したホストでは、 アドレス解釈は不可能です。 "nonewline" オプションは "compress" や "split" と 一緒に使うと良くないです。