timezone in notmuch
Teemu Likonen
tlikonen at iki.fi
Wed Apr 15 22:37:12 PDT 2020
Tomi Ollila [2020-04-15T23:17:32+03] wrote:
> I use this:
>
> https://github.com/domo141/nottoomuch/blob/master/build/01-date-local.patch
>
> I've been thinking if some hook could be added to notmuch-emacs so
> that such a custom date mangling can be done outside of the
> notmuch-emacs source...
Formerly I used Emacs Gnus and its hook to change the date. For this
discussion I adapted the idea to Notmuch. The code below is based on
idea that after article display there is a hook which can do anything
user wants. I wanted ISO 8601 date.
;; Add a hook for changing article's date string.
(add-hook 'some-article-display-hook 'tl-notmuch-custom-article-date)
(defmacro notmuch-narrow-to-article-headers (&rest body)
;; Implement macro which uses NARROW function to narrow current buffer
;; to article's headers only.
`(progn , at body))
(defun tl-notmuch-custom-article-date ()
(save-excursion
(save-match-data
(notmuch-narrow-to-article-headers
(goto-char (point-min))
(when (re-search-forward "^Date: \\(.+\\)$" nil t)
(let ((inhibit-read-only t))
(replace-match (tl-message-date-string-iso
(match-string-no-properties 1))
nil t nil 1)))))))
(defun tl-message-date-string-iso (string)
;; Parse message date STRING and return ISO 8601 time string.
(require 'parse-time)
(condition-case nil
(let* ((date-list (parse-time-string string))
(year (nth 5 date-list))
(month (nth 4 date-list))
(day (nth 3 date-list))
(hour (nth 2 date-list))
(min (nth 1 date-list))
(sec (nth 0 date-list))
(tz-total-sec (nth 8 date-list)))
(format "%04d-%02d-%02dT%02d:%02d:%02d%s"
year month day hour min sec
(if (not tz-total-sec)
""
(let* ((tz-sign (if (>= tz-total-sec 0) "+" "-"))
(tz-hour (truncate (abs tz-total-sec) 3600))
(tz-min (truncate (- (abs tz-total-sec)
(* tz-hour 3600))
60)))
(cond
((= tz-hour tz-min 0) "Z")
((= tz-min 0)
(format "%s%02d" tz-sign tz-hour))
(t
(format "%s%02d:%02d" tz-sign tz-hour tz-min)))))))
(error string)))
--
/// Teemu Likonen - .-.. http://www.iki.fi/tlikonen/
// OpenPGP: 4E1055DC84E9DFF613D78557719D69D324539450
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 251 bytes
Desc: not available
URL: <http://notmuchmail.org/pipermail/notmuch/attachments/20200416/5c7533e0/attachment.sig>
More information about the notmuch
mailing list