SSブログ

MewのSummaryモードでのローカルタイムへの変換 [Linux]

以前から先送りしていた、Mew の Summary モードでのローカルタイムへの変換対応を行った。
尚、これまでは変換せず、日時とタイムゾーンを表示していた。

編集するファイルは ~/.mew.el であり、手順は、以下の通りである。
(ソースの詳細は、備考を参照。)

1. 変数 mew-summary-ctz の追加
(defvar mew-summary-ctz t
  "*If mew-summary-ctz is t,
use local time zone in Summary mode.")


変数 mew-summary-ctz が t の場合、ローカルタイムゾーンでの日時を表示する。
それ以外の場合、メールヘッダーの日時をそのまま表示する。


2. mew-summary-form-year2 関数の作成


mew-summary-form-year 関数をコピーし、下記の変更を行う。

(1) 変更箇所


下記の when を if に変更し、else 部分を追加する。

(when (or (string= s "")
      (not (string-match mew-time-rfc-regex s)))
  ...)


(2) 変更内容


下記のコードを追加する。

(when mew-summary-ctz
  (setq s (timezone-make-date-arpa-standard s)))


(補足)
mew-summary-form-year は、mew-scan.el で定義されている。


3. mew-summary-form-date2 関数の作成


mew-summary-form-date 関数をコピーし、下記の変更を行う。

(1) 変更箇所


mew-summary-form-year2 関数と同様。


(2) 変更内容


mew-summary-form-year2 関数と同様。

(補足)
mew-summary-form-date は、mew-scan.el で定義されている。


4. mew-summary-form-time2 関数の作成


mew-summary-form-time 関数をコピーし、下記の変更を行う。

(1) 変更箇所


mew-summary-form-year2 関数と同様。
(ただし、元々 when ではなく、if が使用されている。)


(2) 変更内容


mew-summary-form-year2 関数と同様。

(補足)
mew-summary-form-time は、mew-scan.el で定義されている。


5. mew-summary-form-tmzn 関数の作成
(defun mew-summary-form-tmzn ()
  "A function to return the time zone of message time, [+-]HHMM."
  (let ((s (MEW-DATE)))
    (if (or (string= s "")
            (not (string-match mew-time-rfc-regex s)))
        (setq s (mew-time-ctz-to-rfc
                 (mew-file-get-time (mew-expand-msg (MEW-FLD) (MEW-NUM)))))
      (when mew-summary-ctz
        (setq s (timezone-make-date-arpa-standard s))))
    (if (not (string-match mew-time-rfc-regex s))
        ""
      (setq s (mew-time-rfc-tmzn))
      (format "%+03d%02d" (/ s 3600) (/ (% s 3600) 60)))))

6. 変数 mew-summary-form の設定変更


year2、date2、time2、tmzn を表示するように変更する。

(defun mew-summary-form-num ()
  "A function to return a message number."
  (MEW-NUM))
(defvar mew-summary-message-number t
  "*If mew-summary-message-number is t,
display message number in Summary mode.")

(setq mew-summary-form
      (if mew-summary-message-number
          ;; display message number
          '((-4 num) " " type
            (4 year2) "-" (5 date2) " " (8 time2) " " (5 tmzn)
            " " (16 from) " " t (0 subj))
        ;; display no message number
        '(type
          (4 year2) "-" (5 date2) " " (8 time2) " " (5 tmzn)
          " " (16 from) " " t (0 subj))))

7. ローカルタイムへの変換以外の変更点


今回行った変更以外に、下記の変更を行っている。

・日付フォーマットの変更 (YYYY/MM/DD から YYYY-MM-DD へ変更)
・時刻フォーマットの変更 (HH:MM から HH:MM:SS へ変更)
・タイムゾーンの表示
・メッセージ番号の表示 (変数 mew-summary-message-number で表示の有無を制御)


[備考]


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット