]> code.delx.au - gnu-emacs/blobdiff - src/ChangeLog
Add set-binary-mode primitive to switch a standard stream to binary I/O.
[gnu-emacs] / src / ChangeLog
index 4c2f2ec59d64667b3c9eace0fd7c8bb80c0d272c..40d8b267d8454ff1cad9d233b65c751081e65c1c 100644 (file)
@@ -1,5 +1,776 @@
+2015-01-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c: Include binary-io.h.
+       (Fset_binary_mode): New function.
+       (syms_of_fileio): Defsubr it.
+       (syms_of_fileio) <Qstdin, Qstdout, Qstderr>: DEFSYM them.
+
+2015-01-15  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * gnutls.c (init_gnutls_functions): Import gnutls_x509_crt_check_issuer.
+       (Fgnutls_peer_status): Use it to set the :self-signed flag.
+       Rename the previous :self-signed to :unknown-ca. (Bug#19404)
+       (Fgnutls_peer_status_warning_describe): Explain :unknown-ca flag.
+
+2015-01-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_wnd_proc): Ignore MENUITEMINFO's dwItemData data
+       when FLAGS indicate the item is not highlighted.  (Bug#19596)
+
+2015-01-14  Martin Rudalics  <rudalics@gmx.at>
+
+       * xmenu.c (update_frame_menubar): Remove garbaged code.
+
+2015-01-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       remove_slash_colon need not be inline
+       * process.c, process.h (remove_slash_colon): No longer inline.
+       This saves text bytes without hurting runtime performance.
+
+2015-01-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid extra multibyteness check in ENCODE_FILE users.
+       * callproc.c (encode_current_directory, Fcall_process, call_process):
+       * dired.c (directory_files_internal, file_name_completion):
+       Do not check for STRING_MULTIBYTE because encode_file_name
+       is a no-op for unibyte strings.
+
+       * process.h (remove_slash_colon): New function.
+       * callproc.c (encode_current_directory, call_process):
+       * process.c (Fstart_process): Use it.
+
+       Consistently handle time zone specification.
+       * editfns.c (decode_time_zone): New function, refactored out from ...
+       (Fencode_time): ... adjusted user.
+       (Fset_time_zone_rule): Use decode_time_zone.
+
+       * editfns.c (make_buffer_string_both): If requested range intersects
+       the gap, don't move the latter but copy in two regions, thus avoiding
+       unnecessary relocation of buffer data.
+
+2015-01-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use bool for boolean in xmenu.c, xml.c
+       * xmenu.c (x_menu_set_in_use, popup_get_selection)
+       (Fx_menu_bar_open_internal, popup_widget_loop)
+       (x_activate_menubar, xg_crazy_callback_abort)
+       (update_frame_menubar, set_frame_menubar)
+       (initialize_frame_menubar, free_frame_menubar)
+       (create_and_show_popup_menu, x_menu_show)
+       (create_and_show_dialog, x_dialog_show):
+       * xml.c (libxml2_loaded_p, init_libxml2_functions, parse_region)
+       (Flibxml_parse_html_region, Flibxml_parse_xml_region):
+       * xrdb.c (main) [TESTRM]:
+       * xsettings.c (init_gsettings):
+       * xterm.c (XFillRectangle, xg_scroll_callback)
+       (xg_end_scroll_callback):
+       * xterm.h (x_menu_set_in_use) [USE_GTK || USE_MOTIF]:
+       Use bool for boolean.
+       * xmenu.c (TRUE): Remove; no longer used.
+       (show_help_event): Remove long-unused code.
+       (set_frame_menubar): Remove "#if 1" and corresponding "#endif" lines.
+
+2015-01-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't say Fnext_read_file_uses_dialog_p is const
+       It's const only if a windowing system is not used; don't say it's
+       const otherwise.  See:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00310.html
+       * fileio.c (next_read_file_uses_dialog_p): Remove.
+       Move guts back to ...
+       (Fnext_read_file_uses_dialog_p): ... here.
+       Don't declare as const, as make-docfile.c now has a special case
+       for this function.  This is an ugly hack, but it's better than
+       lying to the compiler.
+
+       Remove now-unnecessary forward XTYPE decl
+       * lisp.h (XTYPE): Remove forward declaration.  The recent merge
+       from emacs-24 fixed the problem in a better way, by moving XPNTR's
+       definition to after XTYPE's.
+
+2015-01-13  Eli Zaretskii  <eliz@gnu.org>
+
+       Fix problems with 32-bit wide-int build exposed by MinGW.
+       * lisp.h (XPNTR): Move definition to after XTYPE, to avoid
+       compilation error in an unoptimized build when !USE_LSB_TAG.
+
+       * w32heap.c (DUMPED_HEAP_SIZE): For 32-bit wide-int build, use the
+       same larger value as for the 64-bit build.
+
+       * w32term.h (SCROLL_BAR_PACK): Cast the result to UINT_PTR to
+       avoid compiler warnings.
+
+       * w32proc.c (Fw32_get_codepage_charset, Fw32_set_keyboard_layout):
+       Avoid compiler warnings about cast from integer to pointer of
+       different size.
+
+       * w32menu.c (menubar_selection_callback, w32_menu_show): Cast to
+       UINT_PTR instead of EMACS_INT, to avoid compiler warnings about
+       casting from integer to pointer of different size.
+       (add_menu_item): Pass the help-echo string as a pointer to
+       Lisp_String, not as a Lisp_Object.
+       (w32_menu_display_help): Use make_lisp_ptr to reconstruct a Lisp
+       string object from its C pointer.
+
+       * w32fns.c (w32_msg_pump) <WM_EMACS_UNREGISTER_HOT_KEY>: Use
+       make_lisp_ptr instead of XIL, to reconstruct a Lisp_Cons from its
+       C pointer.
+       <WM_EMACS_TOGGLE_LOCK_KEY>: msg.lparam is now a C integer.
+       (Fx_create_frame): Type-cast the result of XFASTINT to avoild
+       compiler warnings about size differences.
+       (Fw32_unregister_hot_key): Pass the tail of w32_grabbed_keys as a
+       pointer to a Lisp_Cons struct, not as a disguised EMACS_INT.
+       (Fw32_toggle_lock_key): Pass the new state of the key as a C
+       integer; use -1 for nil.  Doc fix.
+
+       * .gdbinit (xgetsym): New subroutine.
+       (xsymname, xsymbol): Use it.
+       (xprintsym): No need to call xgetptr.
+
+2015-01-13  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.c (adjust_frame_size): Make sure new numbers of
+       lines/columns get installed after font size change (Bug#19575).
+
+2015-01-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Add DEFUN attributes.
+       * callint.c (Finteractive):
+       * character.c (Fcharacterp, Fmax_char):
+       * data.c (Feq, Fnull, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp)
+       (Fstringp, Fchar_or_string_p, Fintegerp, Fnatnump, Fnumberp)
+       (Ffloatp, Fbyteorder):
+       * decompress.c (Fzlib_available_p):
+       * fns.c (Fidentity):
+       * frame.c (Fframe_windows_min_size):
+       * gnutls.c (Fgnutls_error_p, Fgnutls_available_p):
+       * window.c (Fwindow__sanitize_window_sizes):
+       * xdisp.c (Ftool_bar_height):
+       * xfaces.c (Fface_attribute_relative_p): Add const attribute.
+       * emacs.c (Fkill_emacs):
+       * eval.c (Fthrow):
+       * keyboard.c (Ftop_level, Fexit_recursive_edit)
+       (Fabor_recursive_edit): Add noreturn attribute.
+
+       * search.c (fast_string_match_internal): New function,
+       consolidated from...
+       (fast_string_match, fast_string_match_ignore_case): ...functions
+       which are...
+       * lisp.h (fast_string_match, fast_string_match_ignore_case):
+       inlined from here now.
+       (fast_string_match_internal): Add prototype.
+       * dired.c (file_name_completion): Use fast_string_match_internal.
+
+       * fileio.c (next_read_file_uses_dialog_p): New workaround ...
+       (Fnext_read_file_uses_dialog_p): ... called from here to avoid
+       ATTRIBUTE_CONST dependency from #ifdefs.  For details, see
+       http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00289.html.
+
+2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to 32-bit MingGW --with-wide-int
+       Problem reported by Eli Zaretskii in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00265.html
+       * lisp.h (struct Lisp_Sub_Char_Table): Check that offset matches
+       what we think it is, rather than checking only its alignment (and
+       doing so incorrectly on MinGW).
+
+2015-01-12  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * fileio.c (Ffile_name_as_directory, Fdirectory_file_name):
+       Remove dead NILP check.
+       * image.c (Flookup_image): Use regular format for docstring.
+       * keyboard.c (apply_modifiers_uncached): Use stpcpy.
+
+2015-01-12  Martin Rudalics  <rudalics@gmx.at>
+
+       * dispnew.c (change_frame_size_1): Pass Qchange_frame_size to
+       adjust_frame_size.
+       * frame.c (frame_default_tool_bar_height): New variable.
+       (adjust_frame_size): Possibly add requested adjustment to
+       Vframe_adjust_size_history.
+       (make_frame): Initialize tool_bar_redisplayed_once slot.
+       (Fset_frame_height, Fset_frame_width, Fset_frame_size): Clarify
+       doc-string.  Call adjust_frame_size unconditionally (the frame's
+       text size may remain unaltered but the pixel size may change).
+       (x_figure_window_size): If frame_default_tool_bar_height was
+       set, use it instead of calculating the tool bar height from
+       DEFAULT_TOOL_BAR_IMAGE_HEIGHT.  Don't set
+       Vframe_initial_frame_tool_bar_height.
+       (Qchange_frame_size, Qxg_frame_set_char_size)
+       (Qset_window_configuration, Qx_create_frame_1)
+       (Qx_create_frame_2): New symbols.
+       (Vframe_initial_frame_tool_bar_height): Remove.
+       (Vframe_adjust_size_history): New history variable for debugging
+       frame size adjustments.
+       * frame.h (struct frame): New boolean slot
+       tool_bar_redisplayed_once.
+       (frame_default_tool_bar_height): Extern.
+       * gtkutil.c (xg_frame_set_char_size): Pass Qxg_frame_set_char_size
+       to adjust_frame_size.
+       * nsfns.m (Fx_create_frame): Pass Pass Qx_create_frame_1 and
+       Qx_create_frame_2 to adjust_frame_size.
+       * w32fns.c (x_change_tool_bar_height): Call adjust_frame_size with
+       inhibit 1 when we have not redisplayed the tool bar yet.
+       (Fx_create_frame): Pass Pass Qx_create_frame_1 and
+       Qx_create_frame_2 to adjust_frame_size.
+       * w32menu.c (set_frame_menubar): Simplify adjust_frame_size
+       call.
+       * window.c (Fset_window_configuration): Pass
+       Qset_window_configuration to adjust_frame_size.
+       * xdisp.c (redisplay_tool_bar): Assign new height to
+       frame_default_tool_bar_height.
+       (redisplay_internal): If we haven't redisplayed this frame's
+       tool bar, call redisplay_tool_bar early so we can adjust the
+       frame size accordingly.
+       * xfns.c (x_change_tool_bar_height): Call adjust_frame_size with
+       inhibit 1 when we have not redisplayed the tool bar yet.
+       (Fx_create_frame): Pass Pass Qx_create_frame_1 and
+       Qx_create_frame_2 to adjust_frame_size.
+
+2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Have 'make' output better GEN names
+       * Makefile.in (gl-stamp, globals.h): Simplify by putting the new
+       contents of globals.h into gl-stamp.  This lets us use AM_V_GEN
+       more naturally so that 'make' can output more-accurate names.
+
+2015-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buffer.c (init_buffer_once): Initialize buffer_local_flags before
+       calling reset_buffer_local_variables, and make sure we initialize
+       it completely.
+
+2015-01-11  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * coding.c (Fcoding_system_plist): Use common style for docstring.
+
+2015-01-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to MSB hosts without optimization
+       E.g., when configuring --with-wide-int CFLAGS='-O0' on x86,
+       the inline function XTYPE needs to be declared before being used.
+       * lisp.h (XTYPE): New forward declaration.
+
+2015-01-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to 32-bit --with-wide-int
+       Prefer symbol indexes to struct Lisp_Symbol * casted and then
+       widened, as the latter had trouble with GCC on Fedora 21 when
+       configured --with-wide-int and when used in static initializers.
+       * alloc.c (garbage_collect_1, which_symbols):
+       * lread.c (init_obarray):
+       Prefer builtin_lisp_symbol when it can be used.
+       * dispextern.h (struct image_type.type):
+       * font.c (font_property_table.key):
+       * frame.c (struct frame_parm_table.sym):
+       * keyboard.c (scroll_bar_parts, struct event_head):
+       * xdisp.c (struct props.name):
+       Use the index of a builtin symbol rather than its address.
+       All uses changed.
+       * lisp.h (TAG_SYMPTR, XSYMBOL_INIT): Remove, replacing with ...
+       (TAG_SYMOFFSET, SYMBOL_INDEX): ... new macros that deal with
+       symbol indexes rather than pointers, and which work better on MSB
+       hosts because they shift right before tagging.  All uses changed.
+       (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
+       No longer noops on wide-int hosts, since they work now.
+       (builtin_lisp_symbol): New function.
+
+       Port to HAVE_FREETYPE && !HAVE_XFT
+       * dispextern.h (struct face.extra) [HAVE_FREETYPE && !HAVE_XFT]:
+       * font.h (syms_of_xftfont) [HAVE_FREETYPE && !HAVE_XFT]:
+       Declare in this case too.
+
+2015-01-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (Fw32_register_hot_key): Use XINT instead of XLI.
+
+       * w32notify.c (Fw32notify_add_watch, w32_get_watch_object): Use
+       make_pointer_integer instead of XIL.
+       (Fw32notify_rm_watch): Use XINTPTR instead of XLI.
+
+       * w32inevt.c (handle_file_notifications): Use make_pointer_integer
+       instead of XIL.  Put a list of the descriptor, action, and file
+       name in event->arg, instead of spreading them between event->code
+       and event->arg.
+
+       * w32term.c (queue_notifications): Use make_pointer_integer
+       instead of XIL.  Put a list of the descriptor, action, and file
+       name in event->arg, instead of spreading them between event->code
+       and event->arg.
+
+       * keyboard.c (kbd_buffer_get_event) [HAVE_W32NOTIFY]: Adjust Lisp
+       event creation to changes in w32term.c and w32inevt.c above.
+
+2015-01-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port Qnil==0 changes to 32-bit --with-wide-int
+       * lisp.h (lisp_h_XSYMBOL, XSYMBOL): Assume USE_LSB_TAG in the
+       macro-implemented version.  For the non-USE_LSB_TAG case, supply
+       a new inline function that is the inverse of the new TAG_SYMPTR.
+       (lisp_h_XUNTAGBASE, XUNTAGBASE): Remove.  All uses removed.
+       (TAG_SYMPTR) [!USE_LSB_TAG]: If the pointer subtraction yields a
+       negative number, don't allow sign bits to bleed into the encoded
+       value.  Shift in zero bits instead.
+
+       Refactor pointer-to-integer conversion
+       * gfilenotify.c (monitor_to_lisp, lisp_to_monitor):
+       Rename and move to lisp.h.  All uses changed.
+       * lisp.h (XINTPTR, make_pointer_integer): New inline functions,
+       which are renamed from gfilenotify.c's lisp_to_monitor and
+       monitor_to_lisp, and with more-generic void * signatures.
+
+2015-01-08  Eli Zaretskii  <eliz@gnu.org>
+
+       * dispnew.c (buffer_posn_from_coords): Fix the value of the column
+       returned for right-to-left screen lines.  (Before the change on
+       2014-12-30, the incorrectly-computed X pixel coordinate concealed
+       this bug.)
+
+       * .gdbinit (xsymname): New subroutine.
+       (xprintsym, initial-tbreak): Use it to access the name of a symbol
+       in a way that doesn't cause GDB to barf when it tries to
+       dereference a NULL pointer.
+
+       * xdisp.c (next_element_from_c_string): Use Lisp integer zero as
+       the object.
+       (set_cursor_from_row, try_cursor_movement, dump_glyph)
+       (insert_left_trunc_glyphs, append_space_for_newline)
+       (extend_face_to_end_of_line, highlight_trailing_whitespace)
+       (find_row_edges, ROW_GLYPH_NEWLINE_P, Fmove_point_visually)
+       (Fbidi_resolved_levels, produce_special_glyphs)
+       (rows_from_pos_range, mouse_face_from_buffer_pos)
+       (note_mouse_highlight): Use nil as the object for glyphs inserted
+       by the display engine, and test with NILP instead of INTEGERP.
+       (Bug#19535)
+
+       * w32fns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
+       the display engine.
+
+       * xfns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
+       the display engine.
+
+       * dispextern.h (struct glyph, struct it): Update comments for the
+       OBJECT members.
+
+2015-01-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port new Lisp symbol init to x86 --with-wide-int
+       * lisp.h (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
+       Define to empty on platforms where EMACS_INT_MAX != INTPTR_MAX, as
+       GCC (at least) does not allow a constant initializer to widen an
+       address constant.
+
+       * lisp.h (TAG_SYMPTR): Don't do arithmetic on NULL.
+       This is a followup to the "Port Qnil==0 XUNTAG to clang" patch.
+       Although clang doesn't need it, some other compiler might, and
+       it's easy enough to be safe.
+
+       * conf_post.h (ATTRIBUTE_ALLOC_SIZE): Port to clang 3.5.0.
+       Apparently clang removed support for the alloc_size attribute.
+
+       Port Qnil==0 XUNTAG to clang
+       clang has undefined behavior if the program subtracts an integer
+       from (char *) 0.  Problem reported by YAMAMOTO Mitsuharu in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00132.html
+       * lisp.h (lisp_h_XUNTAG) [USE_LSB_TAG]:
+       (XUNTAG) [!USE_LSB_TAG]: Port to clang 3.5.0.
+
+       Port GFileMonitor * hack to Qnil==0 platforms
+       Reported by Glenn Morris in: http://bugs.gnu.org/15880#112
+       * gfilenotify.c (monitor_to_lisp, lisp_to_monitor): New functions.
+       (dir_monitor_callback, Fgfile_add_watch, Fgfile_rm_watch): Use them.
+
+2015-01-06  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (x_set_window_size): Call updateFrameSize to get real
+       size instead of using widht/height.  The frame may be constrained.
+
+2015-01-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lisp.h (XSYMBOL): Parenthesize id in forward decl.
+       Needed when neither optimizing nor inlining.
+       Also, sort decls alphabetically.
+
+2015-01-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c, w32.h, w32fns.c, w32font.c, w32menu.c, w32notify.c:
+       * w32proc.c, w32select.c, w32term.c, w32uniscribe.c: Remove
+       declarations of Q* variables that represent symbols.
+
+2015-01-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use 0 for Qnil
+       Fixes Bug#15880.
+       If USE_LSB_TAG, arrange for the representation of Qnil to be zero so
+       that NILP (x) is equivalent to testing whether x is 0 at the
+       machine level.  The overall effects of this and the previous patch
+       shrink the size of the text segment by 2.3% and speeds up
+       compilation of all the .elc files by about 0.5% on my platform,
+       which is Fedora 20 x86-64.
+       * lisp.h (lisp_h_XPNTR, lisp_h_XSYMBOL, lisp_h_XUNTAG)
+       (make_lisp_symbol) [USE_LSB_TAG]:
+       Symbols now tag the difference from lispsym, not the pointer.
+       (lisp_h_XUNTAGBASE, TAG_SYMPTR): New macros.
+       (Lisp_Int0, Lisp_Int1, Lisp_Symbol, Lisp_Misc, Lisp_String, Lisp_Cons):
+       Renumber so that Lisp_Symbol is 0, so that Qnil is zero.
+       (XSYMBOL): New forward decl.
+       (XUNTAGBASE): New function.
+       (XUNTAG): Use it.
+
+       Compute C decls for DEFSYMs automatically
+       Fixes Bug#15880.
+       This patch also makes Q constants (e.g., Qnil) constant addresses
+       from the C point of view.
+       * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle.c:
+       * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c:
+       * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c:
+       * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c:
+       * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c:
+       * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c:
+       * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m:
+       * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c:
+       * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c:
+       * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c:
+       * xselect.c, xsettings.c, xterm.c:
+       Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs).
+       These names are now defined automatically by make-docfile.
+       * alloc.c (init_symbol): New function.
+       (Fmake_symbol): Use it.
+       (c_symbol_p): New function.
+       (valid_lisp_object_p, purecopy): Use it.
+       * alloc.c (marked_pinned_symbols):
+       Use make_lisp_symbol instead of make_lisp_ptr.
+       (garbage_collect_1): Mark lispsym symbols.
+       (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro.
+       (mark_object): Use it.
+       (sweep_symbols): Sweep lispsym symbols.
+       (symbol_uses_obj): New function.
+       (which_symbols): Use it.  Work for lispsym symbols, too.
+       (init_alloc_once): Initialize Vpurify_flag here; no need to wait,
+       since Qt's address is already known now.
+       (syms_of_alloc): Add lispsym count to symbols_consed.
+       * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0),
+       when testing whether storage is all bits zero.
+       * dispextern.h (struct image_type):
+       * font.c (font_property_table):
+       * frame.c (struct frame_parm_table, frame_parms):
+       * keyboard.c (scroll_bar_parts, struct event_head):
+       * xdisp.c (struct props):
+       Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and
+       Lisp_Object *, since Qfoo is no longer an object whose address can be
+       taken.  All uses changed.
+       * eval.c (run_hook): New function.  Most uses of Frun_hooks changed to
+       use it, so that they no longer need to take the address of a Lisp sym.
+       (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable.
+       * frame.c (syms_of_frame): Add defsyms for the frame_parms table.
+       * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here.
+       DEFSYM Qdeactivate_mark before the corresponding var.
+       * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line
+       instead of interning their symbols; this avoids duplicates.
+       (LISP_INITIALLY, TAG_PTR)
+       (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT):
+       New macros.
+       (LISP_INITIALLY_ZERO): Use it.
+       (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol)
+       (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*):
+       Move decls up, to avoid forward uses.  Include globals.h earlier, too.
+       (make_lisp_symbol): New function.
+       (XSETSYMBOL): Use it.
+       (DEFSYM): Now just a placeholder for make-docfile.
+       * lread.c (DEFINE_SYMBOLS): Define, for globals.h.
+       (intern_sym): New function, with body taken from old intern_driver.
+       (intern_driver): Use it.  Last arg is now Lisp integer, not ptrdiff_t.
+       All uses changed.
+       (define_symbol): New function.
+       (init_obarray): Define the C symbols taken from lispsym.
+       Use plain DEFSYM for Qt and Qnil.
+       * syntax.c (init_syntax_once): No need to worry about
+       Qchar_table_extra_slots.
+
+2015-01-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       'temacs -nw' should not call missing functions
+       Without this patch, "temacs -nw" fails with the diagnostic
+       "emacs: Symbol's function definition is void: frame-windows-min-size"
+       and messes up the tty's state.
+       * frame.c (Fframe_windows_min_size): New placeholder function.
+       (syms_of_frame): Define it.
+       * window.c (Fwindow__sanitize_window_sizes): New placeholder.
+       (syms_of_window): Define it.
+
+       Less 'make' chatter for lisp dir
+       * Makefile.in (%.elc): Adjust to compile-onefile change in
+       ../lisp/Makefile.in.
+
+       batch write-region no longer says "Wrote FOO"
+       This cuts down on 'make' chatter a bit.
+       * fileio.c (Fwrite_region):
+       Don't output "Wrote /whatever/foo.elc" if noninteractive.
+
+2015-01-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Revert previous change to produce_composite_glyph
+       * term.c (produce_composite_glyph): Revert previous change (Bug#19496).
+
+       Pacify gcc -Wparentheses
+       * frame.c (x_set_frame_parameters): Add parens (Bug#19428).
+
+2015-01-03  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.c (x_set_frame_parameters): Call Fset_frame_size only if
+       f->can_x_set_window_size is true.
+       * xterm.c (x_set_window_size_1): Call change_frame_size with
+       text sizes instead of pixel sizes (Bug#19428).
+
+2015-01-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (pos_visible_p): Fix up the X coordinate for
+       right-to-left screen lines.  (Bug#19473)
+
+2015-01-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (Fw32_get_codepage_charset): Doc fix.  (Bug#19458)
+
+2014-12-31  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify setfattr use by assuming GNU make
+       * Makefile.in (PAXCTL_if_present, SETFATTR_if_present): New macros.
+       (emacs$(EXEEXT), temacs$(EXEEXT), bootstrap-emacs$(EXEEXT)): Use them.
+       Simplify by using GNU make rather than shell conditionals,
+       by using ln -f rather than rm -f followed by ln,
+       and by preferring $@ to spelling out the destination.
+
+2014-12-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * sysdep.c [WINDOWSNT]: Include sys/socket.h, without which this
+       file doesn't compile on MS-Windows.
+
+2014-12-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Allow return value of system-name to vary.  (Bug#19438)
+       * filelock.c (current_lock_owner):
+       * xrdb.c (get_environ_db):
+       * xterm.c (same_x_server):
+       * xterm.c (x_term_init):
+       Prefer (system-name) to system-name, and avoid naming
+       locals 'system-name'.
+       * editfns.c (cached_system_name): New static var.
+       (init_and_cache_system_name): New function.
+       (init_editfns, Fsystem_name): Use it.
+       (syms_of_editfns): Initialize it and Vsystem_name to the same value.
+       * sysdep.c [HAVE_SOCKETS]: Don't include <sys/socket.h>, <netdb.h>.
+       (h_errno) [TRY_AGAIN && !HAVE_H_ERRNO]: Remove decl.
+       (init_system_name) [HAVE_SOCKETS]: Don't canonicalize the name.
+       Don't create a new string if the current value is already correct.
+
+2014-12-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix produce_composite_width typo
+       * term.c (produce_composite_glyph):
+       Fix typo that confused number of columns for pixel width.
+
+2014-12-28  Paul Eggert  <eggert@Penguin.CS.UCLA.EDU>
+
+       Wrap dll functions more simply
+       * decompress.c, gnutls.c, image.c, xml.c:
+       If WINDOWSNT, use '#define FOO fn_FOO' to wrap dll functions,
+       rather than the inverse when not WINDOWSNT.  This isolates the
+       fn_* business into the WINDOWSNT-specific section of the code,
+       which makes it easier to maintain the generic code.
+       * decompress.c (DEF_ZLIB_FN, LOAD_ZLIB_FN):
+       * gnutls.c (DEF_GNUTLS_FN, LOAD_GNUTLS_FN):
+       * image.c (DEF_IMGLIB_FN, LOAD_IMGLIB_FN):
+       * xml.c (DEF_XML2_FN, LOAD_XML2_FN):
+       Remove.  All uses replaced by DEF_DLL_FN.
+       * decompress.c (inflateInit2): Remove; no longer needed.
+       * w32.h (DEF_DLL_FN, LOAD_DLL_FN): New macros.
+
+       Port memory-full checking to GnuTLS 3.3
+       Instead of using gnutls_global_set_mem_functions, check every call
+       to a GnuTLS function that might return an indication of memory
+       exhaustion.  Suggested by Dmitry Antipov in:
+       http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html
+       * gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove.
+       (init_gnutls_functions): Do not load gnutls_global_set_mem_functions.
+       (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove.
+       All uses removed.
+       (check_memory_full): New function.
+       (emacs_gnutls_handshake, emacs_gnutls_handle_error)
+       (gnutls_make_error, gnutls_certificate_details, Fgnutls_peer_status)
+       (Fgnutls_boot): Use it.
+       (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions.
+
+2014-12-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix parse_settings to match internal documentation
+       * xsettings.c (parse_settings): Return the number of settings seen.
+       Count the settings changes accurately.
+       (read_settings): Don't confuse number of settings changes with
+       the return code from XGetWindowProperty.
+
+2014-12-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (set_iterator_to_next) <GET_FROM_STRING>: Limit search in
+       composition_compute_stop_pos to the number of characters in the
+       string.  (Bug#19435)
+       <GET_FROM_BUFFER, GET_FROM_STRING>: Simplify code.
+
+       * composite.c (composition_compute_stop_pos): If no composition
+       was found in a string before ENDPOS, and ENDPOS is the string end,
+       no need to back up to a safe point.
+
+       * dispextern.h (struct it) <end_charpos>: Improve commentary.
+
+2014-12-27  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsimage.m (allocInitFromFile:): Initialize bmRep.
+       (dealloc): Release bmRep.
+        (setPixmapData): Make bmRep local so class member is not
+        set (Bug#19133).
+       (setPixmapData): Rename local variable bmRep to avoid compiler
+       warning.
+
+2014-12-27  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
+       when going to fullscreen (Bug#0x180004f).
+
+2014-12-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * window.c (Fwindow_body_width): Doc fix.  (Bug#19395)
+
+2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
+
+2014-12-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * gnutls.c (gnutls_init): Fix deprecation warning from GCC.
+
+2014-12-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use bool for boolean in xselect.c, xsettings.c
+       * xselect.c (x_get_local_selection, struct selection_data)
+       (x_selection_request_lisp_error, struct prop_location)
+       (x_handle_selection_request, x_convert_selection)
+       (waiting_for_other_props_on_window, expect_property_change)
+       (wait_for_property_change, x_handle_property_notify)
+       (x_get_foreign_selection, x_get_window_property)
+       (receive_incremental_selection)
+       (x_get_window_property_as_lisp_data)
+       (lisp_data_to_selection_data, Fx_get_selection_internal)
+       (x_send_client_event):
+       * xselect.c, xterm.h (x_handle_dnd_message):
+       * xsettings.c (dpyinfo_valid, parse_settings, read_settings)
+       (apply_xft_settings, read_and_apply_settings)
+       (xft_settings_event, init_gsettings, init_xsettings)
+       (syms_of_xsettings):
+       Use bool for boolean.
+       * xselect.c (x_get_window_property): Omit last arg, which was an
+       unused boolean.
+       * xsettings.c (apply_xft_settings): Remove 2nd arg, which was
+       always true.  All callers changed.
+
+2014-12-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (sys_spawnve, get_lcid_callback): Use strcpy instead
+       of strcat.
+
+       * w32menu.c (add_menu_item): Use stpcpy instead of strcat.
+
+       * w32.c (sys_readdir, stat_worker, symlink): Use strcpy instead of
+       strcat.
+
+2014-12-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use bool for boolean in xsmfns.c
+       * xsmfns.c, xterm.h (x_session_have_connection):
+       * xsmfns.c (doing_interact, smc_interact_CB, Fhandle_save_session):
+       Use bool for boolean.
+       (x_session_initialize, Fhandle_save_session):
+       Prefer NILP (x) to EQ (x, Qnil).
+
+2014-12-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * callproc.c (child_setup):
+       * dbusbind.c (xd_signature_cat):
+       * doc.c (get_doc_string, Fsnarf_documentation):
+       * editfns.c (Fuser_full_name):
+       * frame.c (xrdb_get_resource):
+       * gtkutil.c (xg_get_file_with_chooser):
+       * tparam.c (tparam1):
+       * xfns.c (xic_create_fontsetname):
+       * xrdb.c (gethomedir, get_user_db, get_environ_db):
+       * xsmfns.c (smc_save_yourself_CB):
+       Rewrite to avoid the need for strcat, typically by using stpcpy
+       and/or lispstpcpy.  strcat tends to be part of O(N**2) algorithms.
+       * doc.c (sibling_etc):
+       * xrdb.c (xdefaults):
+       Now a top-level static constant.
+
+2014-12-23  Didier Verna  <didier@didierverna.net> (tiny change).
+
+       * nsselect.m (Fns_selection_owner_p): Return a Lisp boolean, not a
+       C one (Bug#19396).
+
+2014-12-22  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_bitmap_icon): Partly revert change from 2014-03-21 which
+       breaks icon setting for Gtk+ except for initial frame (Bug#19403).
+
+2014-12-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use bool for boolean in xterm.c
+       * frame.h, nsterm.m, w32term.c, w32term.h, xterm.c:
+       (x_set_window_size, x_bitmap_icon):
+       * nsterm.m (ns_frame_raise_lower, x_new_font):
+       * termhooks.h (struct terminal.toggle_invisible_pointer_hook)
+       (struct terminal.frame_raise_lower_hook):
+       * w32term.c (w32_frame_raise_lower):
+       * xterm.c, xterm.h (x_text_icon):
+       * xterm.c (x_update_window_begin, x_update_window_end)
+       (x_update_end, x_after_update_window_line)
+       (x_set_glyph_string_gc, x_draw_glyph_string_background)
+       (x_draw_glyph_string_foreground)
+       (x_draw_composite_glyph_string_foreground)
+       (x_alloc_lighter_color, x_draw_relief_rect)
+       (x_draw_glyph_string_box, x_draw_image_relief)
+       (x_draw_image_glyph_string, x_draw_stretch_glyph_string)
+       (x_draw_underwave, x_draw_glyph_string, x_show_hourglass)
+       (x_hide_hourglass):
+       (XFillRectangle) [HAVE_GTK3]:
+       (XTtoggle_invisible_pointer, frame_highlight, frame_unhighlight)
+       (x_focus_changed, x_find_modifier_meanings, note_mouse_movement)
+       (XTmouse_position, xt_action_hook, xt_horizontal_action_hook)
+       (x_send_scroll_bar_event, xm_scroll_callback)
+       (xg_scroll_callback, xaw_jump_callback, xaw_scroll_callback)
+       (x_create_toolkit_scroll_bar)
+       (x_create_horizontal_toolkit_scroll_bar)
+       (x_set_toolkit_horizontal_scroll_bar_thumb, x_scroll_bar_create)
+       (x_scroll_bar_set_handle, XTset_vertical_scroll_bar)
+       (XTset_horizontal_scroll_bar, x_scroll_bar_expose)
+       (x_scroll_bar_handle_click, x_scroll_bar_note_movement)
+       (x_scroll_bar_report_motion)
+       (x_horizontal_scroll_bar_report_motion, x_net_wm_state)
+       (handle_one_xevent, XTread_socket, x_draw_bar_cursor)
+       (x_draw_window_cursor, x_clear_errors)
+       (x_trace_wire, x_new_font, x_set_offset, wm_supports)
+       (set_wm_state, x_set_sticky, get_current_wm_state)
+       (do_ewmh_fullscreen, x_handle_net_wm_state)
+       (x_check_expected_move, x_sync_with_move, x_wait_for_event)
+       (x_set_window_size_1, XTframe_raise_lower)
+       (x_make_frame_visible, x_iconify_frame)
+       (x_timeout_atimer_activated_flag, same_x_server, x_display_ok)
+       (x_term_init, x_process_timeouts, x_activate_timeout_atimer)
+       (x_delete_terminal, x_initialize, syms_of_xterm):
+       Use bool for boolean.
+
 2014-12-20  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * composite.h (struct composition.width): Now int
+       instead of unsigned short, as we prefer signed integers.
+
        Let charset tick grow past USHRT_MAX
        * charset.c, charset.h (charset_ordered_list_tick):
        Now EMACS_UINT, not unsigned short.
        Call gnutls_certificate_set_x509_system_trust.  Log an error message if
        it fails.
 
+2014-12-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * regex.c (analyze_first): Rename from analyze_first.
+
 2014-12-13  Paul Eggert  <eggert@cs.ucla.edu>
 
        * alloc.c (XMALLOC_BASE_ALIGNMENT): Use max_align_t instead of
 2014-11-29  Paul Eggert  <eggert@cs.ucla.edu>
 
        Improve clarity of USE_LSB_TAG definition.
-       Problem reported by Lee Duhem.  Suggestion by Andreas Schwab in:
+       Reported by Lee Duhem.  Suggested by Andreas Schwab in:
        http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg02222.html
        * lisp.h (USE_LSB_TAG): Define in terms of the (simpler)
        VAL_MAX / 2 rather than in terms of the (more complicated)
 
 2014-11-27  Oscar Fuentes  <ofv@wanadoo.es>
 
-       * src/w32.c, src/w32heap.c, src/w32term.c:
+       * w32.c, w32heap.c, w32term.c:
        Use MINGW_W64 instead of _W64.
 
 2014-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
        * fileio.c (Fexpand_file_name): Use make_unibyte_string, not
        build_string, when importing a home directory.  (Bug#18873)
 
+2014-12-27  Eli Zaretskii  <eliz@gnu.org>
+
        * dispnew.c (buffer_posn_from_coords):
        Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to
        account for the header-line height.  (Bug#18839)
 
 2014-10-25  Noam Postavsky  <npostavs@users.sourceforget.net>
 
-       * src/w32proc.c (create_child): If calling a quoted batch file,
+       * w32proc.c (create_child): If calling a quoted batch file,
        pass NULL for exe.  (Bug#18745)
 
 2014-10-24  Eli Zaretskii  <eliz@gnu.org>
        On x86 platforms this works around GCC bug 63495
        <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63495>,
        and more generally should fix a portability problem in Emacs.
-       Problem reported by Stefan Monnier in:
+       Reported by Stefan Monnier in:
        http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00261.html
 
 2014-10-08  Leo Liu  <sdl.web@gmail.com>
 2014-09-23  Paul Eggert  <eggert@cs.ucla.edu>
 
        Fix SAFE_ALLOCA to not exhaust the stack when in a loop.
-       Problem reported by Dmitry Antipov in thread leading to:
+       Reported by Dmitry Antipov in thread leading to:
        http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00713.html
        This patch fixes only SAFE_ALLOCA, SAFE_NALLOCA, and SAFE_ALLOCA_LISP;
        the experimental local_* macros enabled by USE_LOCAL_ALLOCATORS
 2014-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 
        Simplify lisp.h by removing the __COUNTER__ business.
-       Problem reported by Dmitry Antipov in:
+       Reported by Dmitry Antipov in:
        http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00220.html
        * lisp.h (make_local_vector, make_local_string)
        (build_local_string): Simplify by not bothering with __COUNTER__.
        * lisp.h (DEFINE_GDB_SYMBOL_ENUM): Remove.
        These can generate a constant with the correct value but the wrong
        width, which doesn't work as a printf argument.  All uses removed.
-       Problem reported by Dmitry Antipov in:
+       Reported by Dmitry Antipov in:
        http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00213.html
        (ENUMABLE): Remove; no longer needed.
        (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 2014-06-03  Paul Eggert  <eggert@cs.ucla.edu>
 
        * emacs.c: Include "sysselect.h", to define its inline functions.
-       Problem reported by Glenn Morris in:
+       Reported by Glenn Morris in:
        http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00077.html
 
        Do not require libXt-devel when building with gtk.
 2014-03-27  Paul Eggert  <eggert@cs.ucla.edu>
 
        Port recent signal-related changes to FreeBSD.
-       Problem reported by Herbert J. Skuhra.
+       Reported by Herbert J. Skuhra.
        * lisp.h (block_tty_out_signal, unblock_tty_out_signal):
        Move decls from here ...
        * syssignal.h: ... to here, so that lisp.h doesn't depend on signal.h.
 2014-01-20  Paul Eggert  <eggert@cs.ucla.edu>
 
        Avoid undefined behavior by initializing buffer redisplay bit.
-       Problem reported by Dmitry Antipov in
+       Reported by Dmitry Antipov in
        <http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01756.html>.
        * buffer.c (Fget_buffer_create): Initialize redisplay bit.
 
 2013-11-21  Paul Eggert  <eggert@cs.ucla.edu>
 
        Fix some dependency problems that cause unnecessary recompiles.
-       Problem reported by RMS in
+       Reported by RMS in
        <http://lists.gnu.org/archive/html/emacs-devel/2013-11/msg00421.html>.
        * Makefile.in (OLDXMENU_TARGET, OLDXMENU, OLDXMENU_DEPS)
        (really-lwlib, really-oldXMenu, stamp-oldxmenu)
 
 2013-10-23  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Port to Solaris 10 and its bundled GCC.
-       Problem reported by Timothy C. Burt.
+       Port to Solaris 10 and its bundled GCC.  Reported by Timothy C. Burt.
        * floatfns.c (isfinite, isnan): Redefine unconditionally.
 
 2013-10-21  Dmitry Antipov  <dmantipov@yandex.ru>
        so it shouldn't be used all the time.  Perhaps we need two
        flavors of 'eassert', one for where 'assume' is far more likely
        to help or to hurt; but that can be done later.
-       Problem reported by Dmitry Antipov in
+       Reported by Dmitry Antipov in
        <http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00276.html>.
        Also, don't include <verify.h>; no longer needed.
 
 
 2013-07-07  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Port to Ubuntu 10 (Bug#14803).
-       Problem reported by T.V. Raman.
+       Port to Ubuntu 10 (Bug#14803).  Reported by T.V. Raman.
        * process.c (close_on_exec, accept4, process_socket):
        Define these if !HAVE_ACCEPT4, not if !SOCK_CLOEXEC.
 
        * emacs.c (malloc_enable_thread): Hoist extern decl to top level.
        (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
        Invoke malloc_enable_thread even when not interactive.
-       Problem reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
+       Reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
        * process.c (init_process_emacs) [CYGWIN]: Tickle glib even
        in this case, since the underlying bug has now been fixed.
 
        * unexelf.c: Don't assume ElfW (Half) fits in int.
        (entry_address, find_section, unexec): Use ptrdiff_t, not int,
        when dealing with ElfW (Half) values, since they can exceed 2**31
-       on 64-bit OpenBSD hosts.  Problem reported privately by Han Boetes.
+       on 64-bit OpenBSD hosts.  Reported by Han Boetes (privately).
        (entry_address): Omit unused NUM arg.  All uses changed.
 
 2013-05-07  Juri Linkov  <juri@jurta.org>
@@ -15879,7 +16654,7 @@ See ChangeLog.12 for earlier changes.
 ;; coding: utf-8
 ;; End:
 
-  Copyright (C) 2011-2014 Free Software Foundation, Inc.
+  Copyright (C) 2011-2015 Free Software Foundation, Inc.
 
   This file is part of GNU Emacs.