Merge from origin/emacs-25

ca50981 Improve time zone documentation
c23c965 Prevent bootstrap autoload backup files
9344612 Disable multicolor fonts on OS X since they are not supported...
c41ce1c Capitalize “Universal Time” in documentation
10597c9 Don't use 'find-program'
This commit is contained in:
Paul Eggert 2016-04-12 08:50:47 -07:00
commit 7c2c2196fd
12 changed files with 116 additions and 82 deletions

View file

@ -641,8 +641,9 @@ to put temporary files (@pxref{Backup}). Emacs tries to use
@env{TMP}, then @env{TEMP}, and finally @file{c:/temp}.
@item TZ
@vindex TZ, environment variable
This specifies the current time zone and possibly also daylight
saving time information. On MS-DOS, if @env{TZ} is not set in the
This specifies the default time zone and possibly also daylight
saving time information. @xref{Time Zone Rules,,, elisp, The GNU
Emacs Lisp Reference Manual}. On MS-DOS, if @env{TZ} is not set in the
environment when Emacs starts, Emacs defines a default value as
appropriate for the country code returned by DOS@. On MS-Windows, Emacs
does not use @env{TZ} at all.

View file

@ -19,6 +19,7 @@ terminal and the screen.
* System Environment:: Distinguish the name and kind of system.
* User Identification:: Finding the name and user id of the user.
* Time of Day:: Getting the current time.
* Time Zone Rules:: Rules for time zones and daylight saving time.
* Time Conversion:: Converting a time from numeric form to
calendrical data and vice versa.
* Time Parsing:: Converting a time from numeric form to text
@ -1259,7 +1260,7 @@ information may some day be added at the end.
The argument @var{time}, if given, specifies a time to format,
instead of the current time. The optional argument @var{zone}
defaults to the current time zone rule.
defaults to the current time zone rule. @xref{Time Zone Rules}.
@example
@group
@ -1296,26 +1297,9 @@ For example, if @var{time} is a number, @code{(time-to-seconds
or rounding errors occur.
@end defun
@defun current-time-zone &optional time zone
@cindex time zone, current
This function returns a list describing the time zone that the user is
in.
The value has the form @code{(@var{offset} @var{name})}. Here
@var{offset} is an integer giving the number of seconds ahead of Universal Time
(east of Greenwich). A negative value means west of Greenwich. The
second element, @var{name}, is a string giving the name of the time
zone. Both elements change when daylight saving time begins or ends;
if the user has specified a time zone that does not use a seasonal time
adjustment, then the value is constant through time.
If the operating system doesn't supply all the information necessary to
compute the value, the unknown elements of the list are @code{nil}.
The argument @var{time}, if given, specifies a time value to
analyze instead of the current time. The optional argument @var{zone}
defaults to the current time zone rule.
@end defun
@node Time Zone Rules
@section Time Zone Rules
@cindex time zone rules
@vindex TZ, environment variable
The default time zone is determined by the @env{TZ} environment
@ -1324,6 +1308,15 @@ to default to Universal Time with @code{(setenv "TZ" "UTC0")}. If
@env{TZ} is not in the environment, Emacs uses system wall clock time,
which is a platform-dependent default time zone.
The set of supported @env{TZ} strings is system-dependent. GNU and
many other systems support the tzdata database, e.g.,
@samp{"America/New_York"} specifies the time zone and daylight saving
time history for locations near New York City. GNU and most other
systems support POSIX-style @env{TZ} strings, e.g.,
@samp{"EST+5EDT,M4.1.0/2,M10.5.0/2"} specifies the rules used in New
York from 1987 through 2006. All systems support the string
@samp{"UTC0"} meaning Universal Time.
@cindex time zone rule
Functions that convert to and from local time accept an optional
@dfn{time zone rule} argument, which specifies the conversion's time
@ -1334,6 +1327,29 @@ If it is @code{t}, the conversion uses Universal Time. If it is
a string, the conversion uses the time zone rule equivalent to setting
@env{TZ} to that string.
@defun current-time-zone &optional time zone
@cindex time zone, current
This function returns a list describing the time zone that the user is
in.
The value has the form @code{(@var{offset} @var{abbr})}. Here
@var{offset} is an integer giving the number of seconds ahead of Universal Time
(east of Greenwich). A negative value means west of Greenwich. The
second element, @var{abbr}, is a string giving an abbreviation for the
time zone, e.g., @samp{"CST"} for China Standard Time or for
U.S. Central Standard Time. Both elements can change when daylight
saving time begins or ends; if the user has specified a time zone that
does not use a seasonal time adjustment, then the value is constant
through time.
If the operating system doesn't supply all the information necessary to
compute the value, the unknown elements of the list are @code{nil}.
The argument @var{time}, if given, specifies a time value to
analyze instead of the current time. The optional argument @var{zone}
defaults to the current time zone rule.
@end defun
@node Time Conversion
@section Time Conversion
@cindex calendrical information
@ -1358,8 +1374,8 @@ as traditional Gregorian years do; for example, the year number
@defun decode-time &optional time zone
This function converts a time value into calendrical information. If
you don't specify @var{time}, it decodes the current time, and similarly
@var{zone} defaults to the current time zone rule. The return
value is a list of nine elements, as follows:
@var{zone} defaults to the current time zone rule. @xref{Time Zone Rules}.
The return value is a list of nine elements, as follows:
@example
(@var{seconds} @var{minutes} @var{hour} @var{day} @var{month} @var{year} @var{dow} @var{dst} @var{utcoff})
@ -1406,6 +1422,7 @@ to stand for years above 1900, or years above 2000, you must alter them
yourself before you call @code{encode-time}.
The optional argument @var{zone} defaults to the current time zone rule.
@xref{Time Zone Rules}.
In addition to the usual time zone rule values, it can also be a list
(as you would get from @code{current-time-zone}) or an integer (as
from @code{decode-time}), applied without any further alteration for
@ -1449,8 +1466,8 @@ corresponding time value.
This function converts @var{time} (or the current time, if
@var{time} is omitted) to a string according to
@var{format-string}. The conversion uses the time zone rule @var{zone}
(or the current time zone rule, if omitted). The argument
@var{format-string}. The conversion uses the time zone rule @var{zone}, which
defaults to the current time zone rule. @xref{Time Zone Rules}. The argument
@var{format-string} may contain @samp{%}-sequences which say to
substitute parts of the time. Here is a table of what the
@samp{%}-sequences mean:

View file

@ -2125,11 +2125,11 @@ quotation marks.
*** Time conversion functions now accept an optional ZONE argument
that specifies the time zone rules for conversion. ZONE is omitted or
nil for Emacs local time, t for Universal Time, 'wall' for system wall
clock time, or a string as in 'set-time-zone-rule' for a time zone
rule. The affected functions are 'current-time-string',
'current-time-zone', 'decode-time', and 'format-time-string'. The
function 'encode-time', which already accepted a simple time zone rule
argument, has been extended to accept all the new forms.
clock time, or a string as in the TZ environment variable. The
affected functions are 'current-time-string', 'current-time-zone',
'decode-time', and 'format-time-string'. The function 'encode-time',
which already accepted a simple time zone rule argument, has been
extended to accept all the new forms.
*** Incompatible change in the third argument of 'format-time-string'.
Previously, any non-nil argument was interpreted as specifying Universal Time.

View file

@ -2181,11 +2181,11 @@ month names with consistent widths for some locales on some versions
of Windows. This is caused by a deficiency in the underlying system
library function.
** Problems with set-time-zone-rule function
** Non-US time zones.
The function set-time-zone-rule gives incorrect results for many
non-US timezones. This is due to over-simplistic handling of
daylight savings switchovers by the Windows libraries.
Many non-US time zones are implemented incorrectly. This is due to
over-simplistic handling of daylight savings switchovers by the
Windows libraries.
** Files larger than 4GB report wrong size in a 32-bit Windows build

View file

@ -173,7 +173,7 @@ delta. At present, delta = 0.01 degrees, so the value of the variable
;;; End of user options.
(defvar solar-sidereal-time-greenwich-midnight nil
"Sidereal time at Greenwich at midnight (universal time).")
"Sidereal time at Greenwich at midnight (Universal Time).")
(defvar solar-northern-spring-or-summer-season nil
"Non-nil if northern spring or summer and nil otherwise.
@ -413,8 +413,8 @@ Result is in days. For the years 1800-1987, the maximum error is
(defun solar-ephemeris-time (time)
"Ephemeris Time at moment TIME.
TIME is a pair with the first component being the number of Julian centuries
elapsed at 0 Universal Time, and the second component being the universal
time. For instance, the pair corresponding to November 28, 1995 at 16 UT is
elapsed at 0 Universal Time, and the second component counting Universal Time
hours. For instance, the pair corresponding to November 28, 1995 at 16 UT is
\(-0.040945 16), -0.040945 being the number of Julian centuries elapsed between
Jan 1, 2000 at 12 UT and November 28, 1995 at 0 UT.
@ -430,7 +430,7 @@ Result is in Julian centuries of ephemeris time."
"Right ascension (in hours) and declination (in degrees) of the sun at TIME.
TIME is a pair with the first component being the number of
Julian centuries elapsed at 0 Universal Time, and the second
component being the universal time. For instance, the pair
component counting Universal Time hours. For instance, the pair
corresponding to November 28, 1995 at 16 UT is (-0.040945 16),
-0.040945 being the number of Julian centuries elapsed between
Jan 1, 2000 at 12 UT and November 28, 1995 at 0 UT. SUNRISE-FLAG is passed
@ -444,7 +444,7 @@ to `solar-ecliptic-coordinates'."
"Azimuth and height of the sun at TIME, LATITUDE, and LONGITUDE.
TIME is a pair with the first component being the number of
Julian centuries elapsed at 0 Universal Time, and the second
component being the universal time. For instance, the pair
component counting Universal Time hours. For instance, the pair
corresponding to November 28, 1995 at 16 UT is (-0.040945 16),
-0.040945 being the number of Julian centuries elapsed between
Jan 1, 2000 at 12 UT and November 28, 1995 at 0 UT. SUNRISE-FLAG
@ -476,8 +476,8 @@ Sunrise if DIRECTION =-1 or sunset if =1 at LATITUDE, LONGITUDE, with midday
being TIME.
TIME is a pair with the first component being the number of Julian centuries
elapsed at 0 Universal Time, and the second component being the universal
time. For instance, the pair corresponding to November 28, 1995 at 16 UT is
elapsed at 0 Universal Time, and the second component counting Universal Time
hours. For instance, the pair corresponding to November 28, 1995 at 16 UT is
\(-0.040945 16), -0.040945 being the number of Julian centuries elapsed between
Jan 1, 2000 at 12 UT and November 28, 1995 at 0 UT.
@ -522,8 +522,8 @@ Uses binary search."
Parameters are the midday TIME and the LATITUDE, LONGITUDE of the location.
TIME is a pair with the first component being the number of Julian centuries
elapsed at 0 Universal Time, and the second component being the universal
time. For instance, the pair corresponding to November 28, 1995 at 16 UT is
elapsed at 0 Universal Time, and the second component counting Universal Time
hours. For instance, the pair corresponding to November 28, 1995 at 16 UT is
\(-0.040945 16), -0.040945 being the number of Julian centuries elapsed between
Jan 1, 2000 at 12 UT and November 28, 1995 at 0 UT.

View file

@ -251,9 +251,22 @@ If a buffer is visiting the desired autoload file, return it."
(enable-local-eval nil))
;; We used to use `raw-text' to read this file, but this causes
;; problems when the file contains non-ASCII characters.
(let ((delay-mode-hooks t))
(find-file-noselect
(autoload-ensure-default-file (autoload-generated-file))))))
(let* ((delay-mode-hooks t)
(file (autoload-generated-file))
(file-missing (not (file-exists-p file))))
(when file-missing
(autoload-ensure-default-file file))
(with-current-buffer
(find-file-noselect
(autoload-ensure-file-writeable
file))
;; block backups when the file has just been created, since
;; the backups will just be the auto-generated headers.
;; bug#23203
(when file-missing
(setq buffer-backed-up t)
(save-buffer))
(current-buffer)))))
(defun autoload-generated-file ()
(expand-file-name generated-autoload-file
@ -374,21 +387,22 @@ not be relied upon."
;;;###autoload
(put 'autoload-ensure-writable 'risky-local-variable t)
(defun autoload-ensure-file-writeable (file)
;; Probably pointless, but replaces the old AUTOGEN_VCS in lisp/Makefile,
;; which was designed to handle CVSREAD=1 and equivalent.
(and autoload-ensure-writable
(let ((modes (file-modes file)))
(if (zerop (logand modes #o0200))
;; Ignore any errors here, and let subsequent attempts
;; to write the file raise any real error.
(ignore-errors (set-file-modes file (logior modes #o0200))))))
file)
(defun autoload-ensure-default-file (file)
"Make sure that the autoload file FILE exists, creating it if needed.
If the file already exists and `autoload-ensure-writable' is non-nil,
make it writable."
(if (file-exists-p file)
;; Probably pointless, but replaces the old AUTOGEN_VCS in lisp/Makefile,
;; which was designed to handle CVSREAD=1 and equivalent.
(and autoload-ensure-writable
(let ((modes (file-modes file)))
(if (zerop (logand modes #o0200))
;; Ignore any errors here, and let subsequent attempts
;; to write the file raise any real error.
(ignore-errors (set-file-modes file (logior modes #o0200))))))
(write-region (autoload-rubric file) nil file))
file)
(write-region (autoload-rubric file) nil file))
(defun autoload-insert-section-header (outbuf autoloads load-name file time)
"Insert the section-header line,

View file

@ -1009,7 +1009,7 @@ on parts -- for instance, adding Vcard info to a database."
(defcustom gnus-article-date-headers '(combined-lapsed)
"A list of Date header formats to display.
Valid formats are `ut' (universal time), `local' (local time
Valid formats are `ut' (Universal Time), `local' (local time
zone), `english' (readable English), `lapsed' (elapsed time),
`combined-lapsed' (both the original date and the elapsed time),
`original' (the original date header), `iso8601' (ISO8601

View file

@ -22674,7 +22674,7 @@ time-range, if possible.
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
`set-time-zone-rule' for a time zone rule."
the TZ environment variable."
(format-time-string
format
(apply 'encode-time

View file

@ -162,7 +162,7 @@ end it with `/'. DIR must be one of `project-roots' or
DIRS is a list of absolute directories; it should be some
subset of the project roots and external roots.
The default implementation uses `find-program'. PROJECT is used
The default implementation uses `grep-find-program'. PROJECT is used
to find the list of ignores for each directory."
;; FIXME: Uniquely abbreviate the roots?
(require 'xref)
@ -171,7 +171,7 @@ to find the list of ignores for each directory."
(lambda (dir)
(let ((command
(format "%s %s %s -type f -print0"
find-program
grep-find-program
dir
(xref--find-ignores-arguments
(project-ignores project dir)

View file

@ -583,10 +583,9 @@ Compatibility function for \\[next-error] invocations."
;; called add-log-time-zone-rule since it's only used from add-log-* code.
(defvaralias 'change-log-time-zone-rule 'add-log-time-zone-rule)
(defvar add-log-time-zone-rule nil
"Time zone used for calculating change log time stamps.
It takes the same format as the TZ argument of `set-time-zone-rule'.
If nil, use local time.
If t, use universal time.")
"Time zone rule used for calculating change log time stamps.
If nil, use local time. If t, use Universal Time.
If a string, interpret as the ZONE argument of `format-time-string'.")
(put 'add-log-time-zone-rule 'safe-local-variable
(lambda (x) (or (booleanp x) (stringp x))))

View file

@ -1969,10 +1969,10 @@ DEFUN ("format-time-string", Fformat_time_string, Sformat_time_string, 1, 3, 0,
doc: /* Use FORMAT-STRING to format the time TIME, or now if omitted.
TIME is specified as (HIGH LOW USEC PSEC), as returned by
`current-time' or `file-attributes'. The obsolete form (HIGH . LOW)
is also still accepted.
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
`set-time-zone-rule' for a time zone rule.
is also still accepted. The optional ZONE is omitted or nil for Emacs
local time, t for Universal Time, `wall' for system wall clock time,
or a string as in the TZ environment variable.
The value is a copy of FORMAT-STRING, but with certain constructs replaced
by text that describes the specified date and time in TIME:
@ -2087,7 +2087,7 @@ as from `current-time' and `file-attributes', or nil to use the
current time. The obsolete form (HIGH . LOW) is also still accepted.
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
`set-time-zone-rule' for a time zone rule.
the TZ environment variable.
The list has the following nine members: SEC is an integer between 0
and 60; SEC is 60 for a leap second, which only some operating systems
@ -2152,9 +2152,9 @@ DEFUN ("encode-time", Fencode_time, Sencode_time, 6, MANY, 0,
This is the reverse operation of `decode-time', which see.
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
`set-time-zone-rule' for a time zone rule. It can also be a list (as
from `current-time-zone') or an integer (as from `decode-time')
applied without consideration for daylight saving time.
the TZ environment variable. It can also be a list (as from
`current-time-zone') or an integer (as from `decode-time') applied
without consideration for daylight saving time.
You can pass more than 7 arguments; then the first six arguments
are used as SECOND through YEAR, and the *last* argument is used as ZONE.
@ -2214,7 +2214,7 @@ but this is considered obsolete.
The optional ZONE is omitted or nil for Emacs local time, t for
Universal Time, `wall' for system wall clock time, or a string as in
`set-time-zone-rule' for a time zone rule. */)
the TZ environment variable. */)
(Lisp_Object specified_time, Lisp_Object zone)
{
time_t value = lisp_seconds_argument (specified_time);
@ -2291,7 +2291,7 @@ instead of using the current time. The argument should have the form
`current-time' and from `file-attributes'. SPECIFIED-TIME can also
have the form (HIGH . LOW), but this is considered obsolete.
Optional second arg ZONE is omitted or nil for the local time zone, or
a string as in `set-time-zone-rule'.
a string as in the TZ environment variable.
Some operating systems cannot provide all this information to Emacs;
in this case, `current-time-zone' returns a list containing nil for
@ -2332,8 +2332,11 @@ the data it can't find. */)
DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0,
doc: /* Set the Emacs local time zone using TZ, a string specifying a time zone rule.
If TZ is nil or `wall', use system wall clock time. If TZ is t, use
Universal Time. If TZ is an integer, treat it as in `encode-time'.
If TZ is nil or `wall', use system wall clock time; this differs from
the usual Emacs convention where nil means current local time. If TZ
is t, use Universal Time. If TZ is an integer, treat it as in
`encode-time'.
Instead of calling this function, you typically want something else.
To temporarily use a different time zone rule for just one invocation

View file

@ -2373,9 +2373,9 @@ So we use CTFontDescriptorCreateMatchingFontDescriptor (no
!= (spacing >= FONT_SPACING_MONO)))
continue;
/* Don't use a color bitmap font unless its family is
explicitly specified. */
if ((sym_traits & kCTFontTraitColorGlyphs) && NILP (family))
/* Don't use a color bitmap font until it is supported on
free platforms. */
if (sym_traits & kCTFontTraitColorGlyphs)
continue;
if (j > 0