Lisp code shouldn't use set-time-zone-rule except through setenv.
* time.el (display-time-world-list, display-time-world-display): * time-stamp.el (time-stamp-string): * vc/add-log.el (add-change-log-entry): Use setenv instead of set-time-zone-rule. * src/editfns.c (Fset_time_zone_rule): Document relationship with the setenv function. Fixes: debbugs:7337
This commit is contained in:
parent
d56176114c
commit
37e11a6319
6 changed files with 52 additions and 34 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2011-08-08 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* time.el (display-time-world-list, display-time-world-display):
|
||||
* time-stamp.el (time-stamp-string):
|
||||
* vc/add-log.el (add-change-log-entry): Use setenv instead of
|
||||
set-time-zone-rule (Bug#7337).
|
||||
|
||||
2011-08-08 Daiki Ueno <ueno@unixuser.org>
|
||||
|
||||
* epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED): Fix typo.
|
||||
|
|
|
|||
|
|
@ -424,10 +424,10 @@ format the string."
|
|||
(let ((ts-real-time-zone (getenv "TZ")))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(set-time-zone-rule time-stamp-time-zone)
|
||||
(setenv "TZ" time-stamp-time-zone)
|
||||
(format-time-string
|
||||
(time-stamp-string-preprocess ts-format)))
|
||||
(set-time-zone-rule ts-real-time-zone)))
|
||||
(setenv "TZ" ts-real-time-zone)))
|
||||
(format-time-string
|
||||
(time-stamp-string-preprocess ts-format)))
|
||||
;; handle version 1 compatibility
|
||||
|
|
|
|||
61
lisp/time.el
61
lisp/time.el
|
|
@ -156,21 +156,24 @@ LABEL is a string to display as the label of that TIMEZONE's time."
|
|||
(defcustom display-time-world-list
|
||||
;; Determine if zoneinfo style timezones are supported by testing that
|
||||
;; America/New York and Europe/London return different timezones.
|
||||
(let (gmt nyt)
|
||||
(set-time-zone-rule "America/New_York")
|
||||
(setq nyt (format-time-string "%z"))
|
||||
(set-time-zone-rule "Europe/London")
|
||||
(setq gmt (format-time-string "%z"))
|
||||
(set-time-zone-rule nil)
|
||||
(let ((old-tz (getenv "TZ"))
|
||||
gmt nyt)
|
||||
(unwind-protect
|
||||
(progn
|
||||
(setenv "TZ" "America/New_York")
|
||||
(setq nyt (format-time-string "%z"))
|
||||
(setenv "TZ" "Europe/London")
|
||||
(setq gmt (format-time-string "%z")))
|
||||
(setenv "TZ" old-tz))
|
||||
(if (string-equal nyt gmt)
|
||||
legacy-style-world-list
|
||||
zoneinfo-style-world-list))
|
||||
"Alist of time zones and places for `display-time-world' to display.
|
||||
Each element has the form (TIMEZONE LABEL).
|
||||
TIMEZONE should be in the format supported by `set-time-zone-rule' on
|
||||
your system. See the documentation of `zoneinfo-style-world-list' and
|
||||
\`legacy-style-world-list' for two widely used formats.
|
||||
LABEL is a string to display as the label of that TIMEZONE's time."
|
||||
TIMEZONE should be in a format supported by your system. See the
|
||||
documentation of `zoneinfo-style-world-list' and
|
||||
\`legacy-style-world-list' for two widely used formats. LABEL is
|
||||
a string to display as the label of that TIMEZONE's time."
|
||||
:group 'display-time
|
||||
:type '(repeat (list string string))
|
||||
:version "23.1")
|
||||
|
|
@ -521,26 +524,26 @@ See `display-time-world'."
|
|||
(defun display-time-world-display (alist)
|
||||
"Replace current buffer text with times in various zones, based on ALIST."
|
||||
(let ((inhibit-read-only t)
|
||||
(buffer-undo-list t))
|
||||
(buffer-undo-list t)
|
||||
(old-tz (getenv "TZ"))
|
||||
(max-width 0)
|
||||
result fmt)
|
||||
(erase-buffer)
|
||||
(let ((max-width 0)
|
||||
(result ())
|
||||
fmt)
|
||||
(unwind-protect
|
||||
(dolist (zone alist)
|
||||
(let* ((label (cadr zone))
|
||||
(width (string-width label)))
|
||||
(set-time-zone-rule (car zone))
|
||||
(push (cons label
|
||||
(format-time-string display-time-world-time-format))
|
||||
result)
|
||||
(when (> width max-width)
|
||||
(setq max-width width))))
|
||||
(set-time-zone-rule nil))
|
||||
(setq fmt (concat "%-" (int-to-string max-width) "s %s\n"))
|
||||
(dolist (timedata (nreverse result))
|
||||
(insert (format fmt (car timedata) (cdr timedata)))))
|
||||
(delete-char -1)))
|
||||
(unwind-protect
|
||||
(dolist (zone alist)
|
||||
(let* ((label (cadr zone))
|
||||
(width (string-width label)))
|
||||
(setenv "TZ" (car zone))
|
||||
(push (cons label
|
||||
(format-time-string display-time-world-time-format))
|
||||
result)
|
||||
(when (> width max-width)
|
||||
(setq max-width width))))
|
||||
(setenv "TZ" old-tz))
|
||||
(setq fmt (concat "%-" (int-to-string max-width) "s %s\n"))
|
||||
(dolist (timedata (nreverse result))
|
||||
(insert (format fmt (car timedata) (cdr timedata)))))
|
||||
(delete-char -1))
|
||||
|
||||
;;;###autoload
|
||||
(defun display-time-world ()
|
||||
|
|
|
|||
|
|
@ -853,9 +853,9 @@ non-nil, otherwise in local time."
|
|||
(let ((tz (getenv "TZ")))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(set-time-zone-rule add-log-time-zone-rule)
|
||||
(setenv "TZ" add-log-time-zone-rule)
|
||||
(funcall add-log-time-format))
|
||||
(set-time-zone-rule tz)))
|
||||
(setenv "TZ" tz)))
|
||||
(funcall add-log-time-format))
|
||||
" " full-name
|
||||
" <" addr ">"))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
2011-08-08 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* editfns.c (Fset_time_zone_rule): Document relationship with the
|
||||
setenv function.
|
||||
|
||||
* ftfont.c (ftfont_pattern_entity): Copy the extras argument to
|
||||
the font entity extracted from the cache (Bug#8109).
|
||||
|
||||
|
|
|
|||
|
|
@ -2053,7 +2053,12 @@ static char *initial_tz;
|
|||
DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0,
|
||||
doc: /* Set the local time zone using TZ, a string specifying a time zone rule.
|
||||
If TZ is nil, use implementation-defined default time zone information.
|
||||
If TZ is t, use Universal Time. */)
|
||||
If TZ is t, use Universal Time.
|
||||
|
||||
Instead of calling this function, you typically want (setenv "TZ" TZ).
|
||||
That changes both the environment of the Emacs process and the
|
||||
variable `process-environment', whereas `set-time-zone-rule' affects
|
||||
only the former. */)
|
||||
(Lisp_Object tz)
|
||||
{
|
||||
const char *tzstring;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue