[Mew-dist 15684] Ugly mew-time-rfc-xxx, yech!
Tak Ota
Takaaki.Ota at example.com
2000年 12月 29日 (金) 05:04:12 JST
新しい Mew になって mew-scan-form がきめ細かくカスタマイズできて重宝し
ています。ありがとうございます。
ところで米国でのメッセージの time zone をできるだけ正確に表示したくて
以下のような処理をしているのですが(だんだん scan が遅くなる ;)
mew-time-rfc-xxx がとても見苦しくなっています。あるものは文字列を返し、
またあるものは数値を返し、あるものは半加工の情報を返すためにこのように
なりました。これらのサービスは一応ユーザーに解放しているものと解釈して
いますのでもう少し統一的にきれいにしてはどうかと感じています。いかがで
しょうか?
(defun mew-scan-form-time-and-zone ()
"Return a string of message time and time zone information"
(let ((s (MEW-DATE)))
(if (or (string= s "")
(not (string-match mew-time-rfc-regex s)))
"--:--"
(let ((zone-str (match-string 11 s))
(offset-str (match-string 9 s)))
(format "%02d:%2s %s"
(or (mew-time-rfc-hour) 0)
(or (mew-time-rfc-min) "00")
(or zone-str
(unless offset-str
"---")
(condition-case nil
(cdr (assq (string-to-int offset-str)
(if (nth 7 ;; get DST
(decode-time
(encode-time (string-to-number (mew-time-rfc-sec))
(string-to-number (mew-time-rfc-min))
(mew-time-rfc-hour)
(mew-time-rfc-day)
(mew-time-mon-str-to-int (mew-time-rfc-mon))
(let ((year (mew-time-rfc-year)))
(cond ((< year 50) (+ year 2000))
((< year 100) (+ year 1900))
(t year)))
(* (string-to-number offset-str) 36))))
'((-800 . "PST") (-700 . "PDT") (-600 . "MDT") (-500 . "CDT") (-400 . "EDT")
(0 . "GMT") (900 . "JST"))
'((-800 . "PST") (-700 . "MST") (-600 . "CST") (-500 . "EST") (-400 . "EDT")
(0 . "GMT") (900 . "JST")))))
(error offset-str))
offset-str))))))
(byte-compile 'mew-scan-form-time-and-zone)
(setq mew-scan-form-size-unit '("" "k")) ;; I don't need Meg Gig Tera stuff!!
(setq mew-scan-form-size-0k t) ;; I don't care about the size of micro messages.
(setq mew-scan-form
'(type (5 date) "/" (4 year) "[" (9 time-and-zone) "] " (32 from) " " (-5 size) " " (0 subj)))
(setq mew-scan-form-extract-rule '(nickname name comment address))
Mew-dist メーリングリストの案内