if we don't really have any properties.
(Finsert_buffer_substring):
Pass graft_intervals_into_buffer the current buffer.
Pass it the extra arg LENGTH.
(Fsubst_char_in_region): Call modify_region only if
a change has to be made. Call signal_after_change just once, at end.
argument list passed to doprnt, we must use separate indices for
the array of arguments passed to Fformat, and the array of
arguments to be passed to doprnt.
* editfns.c (Fcurrent_time_zone): Take an optional argument specifying
what (absolute) time should be used to determine the current time zone.
Yield just offset and name of time zone, including DST correction.
Yield time zone offset in seconds, not minutes.
(lisp_time_argument, difftm): New functions.
(Fcurrent_time_string): Use lisp_time_argument.
* systime.h (EMACS_CURRENT_TIME_ZONE, EMACS_GET_TZ_OFFSET,
EMACS_GET_TZ_NAMES): Remove.
* config.h.in: Add HAVE_TM_ZONE.
than the current one.
* insdel.c (modify_region): New argument BUFFER. Select that
buffer while we prepare for the modification, and switch back when
we're done.
* textprop.c (add_properties, remove_properties): Pass
the buffer being modified as the first argument to modify_region.
* editfns.c (Fsubst_char_in_region, Ftranslate_region): Pass the
current_buffer as the first argument to modify_region.
* casefiddle.c (casify_region): Same.
(save_excursion_restore): Restore mark_active of buffer.
Run activate-mark-hook if it's on, or deactivate-mark-hook if it turns off.
(region_limit): Error if mark inactive, if transient-mark-mode.
* editfns.c (Fcurrent_time_zone): Don't forget to include code to
signal an error when EMACS_CURRENT_TIME_ZONE is not defined.
* editfns.c (Fcurrent_time_zone): New function.
(syms_of_editfns): defsubr it.