MewのSummaryモードでのローカルタイムへの変換 [Linux]
尚、これまでは変換せず、日時とタイムゾーンを表示していた。
編集するファイルは ~/.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 で表示の有無を制御)
8. 備考
(defun mew-summary-form-year2 () "A function to return a message year, YYYY" (let ((s (MEW-DATE)) year) (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)) "0000" (setq year (mew-time-rfc-year)) (cond ((< year 50) (setq year (+ year 2000))) ((< year 100) (setq year (+ year 1900)))) (number-to-string year)))) (defun mew-summary-form-date2 () "A function to return a message date, MM-DD." (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 (string-match mew-time-rfc-regex s) (format "%02d-%02d" (mew-time-mon-str-to-int (mew-time-rfc-mon)) (mew-time-rfc-day)) ""))) (defun mew-summary-form-time2 () "A function to return a message time, HH:MM:SS." (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 (string-match mew-time-rfc-regex s) (format "%02d:%02d:%02d" (or (mew-time-rfc-hour) 0) (or (mew-time-rfc-min) 0) (or (mew-time-rfc-sec) 0)) "00:00:00"))) (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))))) (defun mew-summary-form-num () "A function to return a message number." (MEW-NUM)) ;; set format in Summary mode (defvar mew-summary-ctz t "*If mew-summary-ctz is t, use local time zone in Summary mode.") (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))))
コメント 0