[Mew-dist 14067] Re: mew-scan-form
Shun-ichi GOTO
gotoh at example.com
2000年 9月 5日 (火) 02:38:59 JST
>>>>> at Mon, 4 Sep 2000 17:05:20 +0900
>>>>> 後藤 == Shun-ichi GOTO <gotoh at example.com> said,
後藤> ## この辺りの仕様は以前書いたものを出せます。
後藤> ## でもいまちと忙しいので、今晩にでも...
と、いうことで、出しては見ますが、今見るとあまりに冗長です;-(
これを考えた当時はscan-format指定に凝っていて、われながら
やりすぎだと思う。
でも一応参考までに、とういことで、出しておきます。
## 仕様記述部分の抜粋です
;; format指定方法
;; formatにはリストを指定する。基本型としては、リストのなかに、描画し
;; たい文字列あるいはキーワード(keyword)をならべ、それを連結してものが
;; 描画される。キーワードとは、描画しているメッセージの情報で、以下の
;; ものが使用できる。
;; from ... From:のユーザ名
;; to ... to: のユーザ名(To:に複数のアドレスがある場合は先頭のもの)
;; group ... group名(Mailing List名)。
;; seqno ... sequence number文字列
;; subject ... MLのprefix (i.e. [Mew-dist 1234])を取り除いたSubject
;; full-subject ... MLのprefixを含んだ完全なSubject
;; new-subject ... 親メッセージと違うSubjectの場合その文字列
;; body ... メッセージ本文のダイジェスト文字列
;; sep ... 直前の文字列またはキーワードの内容がnonでない場合、
;; 1つの空白を挿入
;; indent ... indentレベルに応じた空白文字列(thread viewでのみ有効)
;; いずれもメッセージ情報に該当する要素が無い場合はnilを返す。
;; nilは空文字列として描画される。
;; 文字列やキーワードの他にリストを入れ子にして指定することが出来る。
;; 入れ子になったリストも同様に基本処理(連結)が行なわれる。
;;
;; ただしリストの先頭が特殊キーワード(special)あるいは整数であった場合
;; は若干異なる。これを取り除いた残りの部分のリストに対して先に説明し
;; たような基本処理が行なわれ、その結果に対して特定の処理を作用させる
;; ことが出来る。
;; 整数の場合は文字幅の指定となる。残りのリストの連結処理が行われ、そ
;; の結果を指定文字幅となるように切りつめる。幅が足りない場合は空白で
;; 詰められる(左寄せ)。負の整数を指定すると右寄せとなる(注:右寄せを行
;; うためにはmue.elのrev 1.71以降が必要)。
;; 特殊キーワードはprefix, postfix, surroundのように引数をとるものがあ
;; る。引数を使用するものの場合は、これらをリストから取り除いたリスト
;; が基本処理の対象となる。特殊キーワードは以下のものが使用出来る。
;; dquote ... 処理結果が空文字列でなければダブルクォートで囲む
;; squote ... 処理結果が空文字列でなければシングルクォートで囲む
;; bracket ... 処理結果が空文字列でなければブラケット"[]"で囲む
;; paren ... 処理結果が空文字列でなければ括弧"()"で囲む
;; date-format ... 1つの文字列引数をとりformat-time-stringを実行
;; 引数文字列の指定方法に関しては
;; M-x describe-function format-time-string を参照のこと。
;; prefix ... 1つの文字列引数をとり、処理結果が空文字列でなければ
;; その引数文字列を結果文字列の前に連結する。
;; postfix ... 1つの文字列引数をとり、処理結果が空文字列でなければ
;; その引数文字列を結果文字列の後ろに連結する。
;; surround ... 2つの文字列引数(pre, post)をとり、処理結果が空文字列で
;; なければ結果文字列の前にpreを、後ろのpostを連結する。
;; 最終的に作成された文字列は、summaryのwindow-width - 1の幅に収まるよ
;; うに切りつめられて描画される。
;; 例
;; MUEのThread Viewでの書式と同等のものを指定する場合。
;; '(date " " indent (bracket (18 from)) sep
;; (postfix " // " new-subject) body)
;; MUEのNormal Viewでの書式と同等のものを指定する場合。
;; '(date " " (bracket (18 from)) sep
;; full-subject (prefix " //" body))
感じ掴めます? (^^;
こういった指定をフォルダ毎、view mode 毎に切り替えられるようにしてたりし
ました。
## ホントやりすぎだな。ヘタすると色まで指定しそうな勢い。。。
ちなみに
'(date " " indent (bracket (18 from)) sep
(postfix " // " new-subject) body)
という例は、こんなふぅになります。
## thread なのは説明のためのご愛嬌
1234 09/05 [わたし <watashi at example.com] こんち // こんにちは、今日も暑いですね。
1235 09/05 [あのひと <anohito@] そうですねぇ。昨日まではそれほどは
1237 09/05 [no-name at example.com ] 天気 (was こんち) // 昨日の天気に
1236 09/05 [かれ <kare at example.com] ほんと暑いですね。私んちはクーラーが
このような仕様にしたのは、ちょっとやりすぎとも思いますが、
一応そんな指定をさせて、incやscanアクションの先頭で1回、
それを描画するためのlambdaを作って(byte-compileして)行描画関数と
して使用してました。
(let ((name xxxx)
(addr yyyy)
(subj zzzz)
......)
(user-line-draw-function)
)
みたいに変数化してdynamic-bindingを使って参照させるという案もアリですが、
使いもしないものまで値にして作成しておくのはやっぱ重いので、
mew-scan-get-name, mew-scan-get-subj みたいな関数にしておいて
lambda化してました。
## ということで、もう寝ます。(-_-).zZ
--- Regards,
Shun-ichi Goto <gotoh at example.com>
R&D Group, TAIYO Corp., Tokyo, JAPAN
Mew-dist メーリングリストの案内