From 75bfc66716a6c33ca89be28457c1df991170bb83 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sun, 7 Aug 2011 17:14:54 +0300 Subject: Minor doc fixes. Remove duplicate ChangeLog entries. * doc/emacs/dired.texi (Operating on Files): Rewrite according to the fact that `dired-do-chmod' doesn't use the `chmod' program anymore. * lisp/faces.el (list-faces-display): Remove extra angle bracket from `help-mode-map'. * lisp/info.el (Info-history-toc-nodes): Doc fix. * lisp/longlines.el (longlines-mode): Doc fix. * src/editfns.c (Fformat_time_string): Doc fix, add tag `usage:' to show the arg `TIME' instead of `TIMEVAL'. --- src/editfns.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/editfns.c') diff --git a/src/editfns.c b/src/editfns.c index 577263c5ae..5eed386afb 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -1695,7 +1695,9 @@ The modifiers are `E' and `O'. For certain characters X, %EX is a locale's alternative version of %X; %OX is like %X, but uses the locale's number symbols. -For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". */) +For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z". + +usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */) (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal) { time_t value; -- cgit v1.2.3 From 37e11a631937986f03f6216655ea1c964f7286aa Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 8 Aug 2011 11:53:35 -0400 Subject: 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 --- lisp/ChangeLog | 7 +++++++ lisp/time-stamp.el | 4 ++-- lisp/time.el | 61 ++++++++++++++++++++++++++++-------------------------- lisp/vc/add-log.el | 4 ++-- src/ChangeLog | 3 +++ src/editfns.c | 7 ++++++- 6 files changed, 52 insertions(+), 34 deletions(-) (limited to 'src/editfns.c') diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d2ea294d2d..bd344dad35 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2011-08-08 Chong Yidong + + * 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 * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED): Fix typo. diff --git a/lisp/time-stamp.el b/lisp/time-stamp.el index 5934058399..fda8cd1438 100644 --- a/lisp/time-stamp.el +++ b/lisp/time-stamp.el @@ -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 diff --git a/lisp/time.el b/lisp/time.el index b158ef6469..f8fea0c64a 100644 --- a/lisp/time.el +++ b/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 () diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el index e5aead2309..9170d7b942 100644 --- a/lisp/vc/add-log.el +++ b/lisp/vc/add-log.el @@ -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 ">")) diff --git a/src/ChangeLog b/src/ChangeLog index 4df4455e86..cbe2d8659b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2011-08-08 Chong Yidong + * 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). diff --git a/src/editfns.c b/src/editfns.c index 5eed386afb..297f7b6d7e 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -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; -- cgit v1.2.3