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) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。