summaryrefslogtreecommitdiff
path: root/lisp/gnus/gmm-utils.el
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2016-04-12 09:19:11 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2016-04-12 09:19:38 -0700
commitfdb1ba144ca61185e6457f092f38f59dd9bbe6a0 (patch)
tree5048d1fbb946faf0b6059e4d4375bb514b3bfa74 /lisp/gnus/gmm-utils.el
parent7c2c2196fd4be0b656bdf0e0b68f3d7c4a5eca08 (diff)
downloademacs-fdb1ba144ca61185e6457f092f38f59dd9bbe6a0.tar.gz
Support OFFSET and (OFFSET ABBR) time zone rules
This simplifies Gnus and VC time zone support, by letting them feed the output of ‘current-time-zone’ and ‘decode time’ to primitives that accept time zone arguments. * doc/lispref/os.texi (Time Zone Rules, Time Conversion): * etc/NEWS: * lisp/gnus/message.el (message-insert-formatted-citation-line): * lisp/org/org.el (org-timestamp-format): * src/editfns.c (Fformat_time_string, Fdecode_time): (Fcurrent_time_string, Fcurrent_time_zone, Fset_time_zone_rule): Document new behavior. * lisp/gnus/gmm-utils.el (gmm-format-time-string): * lisp/vc/add-log.el (add-log-iso8601-time-zone): Mark as obsolete, as it is now just an alias or narrow wrapper around format-time-string. * src/editfns.c (tzlookup): Also support integer OFFSET and list (OFFSET ABBR) as time zone rules. (Fencode_time): No longer need a special case for a cons ZONE. (Fcurrent_time_zone): If the time zone string is missing, compute it the same way the other new code does.
Diffstat (limited to 'lisp/gnus/gmm-utils.el')
-rw-r--r--lisp/gnus/gmm-utils.el33
1 files changed, 2 insertions, 31 deletions
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index f6455cf9f1a..7aa52794e4c 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -256,37 +256,8 @@ If mode is nil, use `major-mode' of the current buffer."
(string-match "^\\(.+\\)-mode$" mode)
(match-string 1 mode))))))
-(defun gmm-format-time-string (format-string &optional time tz)
- "Use FORMAT-STRING to format the time TIME, or now if omitted.
-The optional TZ specifies the time zone in a number of seconds; any
-other non-nil value will be treated as 0. Note that both the format
-specifiers `%Z' and `%z' will be replaced with a numeric form. "
-;; FIXME: is there a smart way to replace %Z with a time zone name?
- (if (and (numberp tz) (not (zerop tz)))
- (let ((st 0)
- (case-fold-search t)
- ls nd rest)
- (setq time (if time
- (copy-sequence time)
- (current-time)))
- (if (>= (setq ls (- (cadr time) (car (current-time-zone)) (- tz))) 0)
- (setcar (cdr time) ls)
- (setcar (cdr time) (+ ls 65536))
- (setcar time (1- (car time))))
- (setq tz (format "%s%02d%02d"
- (if (>= tz 0) "+" "-")
- (/ (abs tz) 3600)
- (/ (% (abs tz) 3600) 60)))
- (while (string-match "%+z" format-string st)
- (if (zerop (% (- (setq nd (match-end 0)) (match-beginning 0)) 2))
- (progn
- (push (substring format-string st (- nd 2)) rest)
- (push tz rest))
- (push (substring format-string st nd) rest))
- (setq st nd))
- (push (substring format-string st) rest)
- (format-time-string (apply 'concat (nreverse rest)) time))
- (format-time-string format-string time t)))
+(define-obsolete-function-alias 'gmm-format-time-string 'format-time-string
+ "25.2")
(provide 'gmm-utils)