merge trunk
[bpt/emacs.git] / src / ChangeLog
index c4b4703..70e342d 100644 (file)
@@ -1,3 +1,902 @@
+2013-04-03  Kenichi Handa  <handa@gnu.org>
+
+       The following changes is to optimize the code for reading UTF-8
+       files.
+
+       * coding.c (check_ascii): Renamed from detect_ascii.  Return value
+       changed.  Check EOL format.  Do not call adjust_coding_eol_type
+       here.
+       (check_utf_8): New function.
+       (adjust_coding_eol_type): Do nothing if already adjusted.
+       (detect_coding): Compare the return value of check_ascii with
+       coding->src_bytes.  Call adjust_coding_eol_type if necessary.
+       (decode_coding_gap): Optimize for valid UTF-8.
+
+2013-03-21  Kenichi Handa  <handa@gnu.org>
+
+       * coding.c (syms_of_coding): Cancel previous change.
+
+       * insdel.c (insert_from_gap): Fix previous change.
+
+2013-04-05  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Consistently use platform-specific function to detect window system.
+       * lisp.h (check_window_system): New prototype.  This function is
+       going to replace check_x, check_w32 and check_ns.
+       (have_menus_p): Mention msdos.c in comment.
+       * fontset.c (check_window_system_func): Remove.  Adjust all users.
+       * fontset.h (check_window_system_func): Remove prototype.
+       * nsterm.h (check_ns):
+       * xterm.h (check_x):
+       * w32term.h (check_w32): Likewise.
+       * menu.c (Fx_popup_menu): Use check_window_system.
+       * msdos.c (check_window_system): Define for MS-DOS.
+       * nsfns.m (check_window_system): Define for NS.  Adjust all users.
+       * w32fns.c (check_window_system): Likewise for MS-Windows.
+       * xfns.c (check_window_system): Likewise for X.
+       * font.c, frame.c, nsmenu.m, nsselect.m, nsterm.m, w32menu.c:
+       * xfaces.c, xmenu.c: Use check_window_system where appropriate.
+
+2013-04-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Prefer < to > in range checks such as 0 <= i && i < N.
+       This makes it easier to visualize quantities on a number line.
+       This patch doesn't apply to all such range checks,
+       only to the range checks affected by the 2013-03-24 change.
+       This patch reverts most of the 2013-03-24 change.
+       * alloc.c (xpalloc, Fgarbage_collect):
+       * ccl.c (ccl_driver, resolve_symbol_ccl_program):
+       * character.c (string_escape_byte8):
+       * charset.c (read_hex):
+       * data.c (cons_to_unsigned):
+       * dispnew.c (update_frame_1):
+       * doc.c (Fsubstitute_command_keys):
+       * doprnt.c (doprnt):
+       * editfns.c (hi_time, decode_time_components):
+       * fileio.c (file_offset):
+       * fns.c (larger_vector, make_hash_table, Fmake_hash_table):
+       * font.c (font_intern_prop):
+       * frame.c (x_set_alpha):
+       * gtkutil.c (get_utf8_string):
+       * indent.c (check_display_width):
+       * keymap.c (Fkey_description):
+       * lisp.h (FIXNUM_OVERFLOW_P, vcopy):
+       * lread.c (read1):
+       * minibuf.c (read_minibuf_noninteractive):
+       * process.c (wait_reading_process_output):
+       * search.c (Freplace_match):
+       * window.c (get_phys_cursor_glyph):
+       * xdisp.c (redisplay_internal):
+       * xsmfns.c (smc_save_yourself_CB):
+       Prefer < to > for range checks.
+       * dispnew.c (sit_for): Don't mishandle NaNs.
+       This fixes a bug introduced in the 2013-03-24 change.
+       * editfns.c (decode_time_components): Don't hoist comparison.
+       This fixes another bug introduced in the 2013-03-24 change.
+
+2013-03-31  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (struct frame): Drop scroll_bottom_vpos
+       member becaue all real users are dead long ago.
+       (FRAME_SCROLL_BOTTOM_VPOS): Remove.
+       * xdisp.c (redisplay_internal): Adjust user.
+
+2013-03-30  Darren Ho  <darren.hoo@gmail.com>  (tiny change)
+
+       * nsmenu.m (showAtX:Y:for:): setLevel to
+       NSPopUpMenuWindowLevel (Bug#13998).
+
+2013-03-30  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.h (ns_get_pending_menu_title, ns_check_menu_open)
+       (ns_check_pending_open_menu): Declare.
+
+       * nsmenu.m (ns_update_menubar): Correct NSTRACE.
+       (x_activate_menubar): Update the menu with title that matches
+       ns_get_pending_menu_title, and call
+       ns_check_pending_openmenu (Bug#12698).
+       (menuWillOpen:): New method.
+       (menuNeedsUpdate:): Add check for ! COCOA || OSX < 10.5 (Bug#12698).
+
+       * nsterm.m (menu_will_open_state, menu_mouse_point)
+       (menu_pending_title): New varaibles.
+       (ns_get_pending_menu_title, ns_check_menu_open)
+       (ns_check_pending_open_menu): New functions.
+
+2013-03-29  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * indent.c (current_column_bol_cache): Remove leftover which is not
+       used in Fmove_to_column any more.
+       (current_column, scan_for_column): Adjust users.
+       * keyboard.c (last_point_position_buffer, last_point_position_window):
+       Remove leftovers which are not used for recording undo any more.
+       (command_loop_1, syms_of_keyboard): Adjust users.
+       * xdisp.c (last_max_ascent): Remove leftover which is not used in
+       redisplay_window any more.
+       (move_it_to): Adjust user.
+
+2013-03-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/filelock.$(O), $(BLD)/filelock.$(O)):
+       Update dependencies.
+
+2013-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (save_type, XSAVE_POINTER, set_save_pointer, XSAVE_INTEGER)
+       (set_save_integer, XSAVE_OBJECT, XSAVE_VALUE): Move to avoid
+       forward references.
+
+2013-03-28  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Replace hchild, vchild and buffer slots
+       with the only contents slot.  This is possible because each valid
+       window may have either the child window (in vertical or horizontal
+       combination) or buffer to display (for the leaf window).  Using that,
+       a lof of operations to traverse and/or change window hierarchies may
+       be simplified.  New member horizontal is used to distinguish between
+       horizontal and vertical combinations of internal windows.
+       (WINDOW_LEAF_P, WINDOW_HORIZONTAL_COMBINATION_P)
+       (WINDOW_VERTICAL_COMBINATION_P): New macros.
+       (WINDOW_VALID_P, WINDOW_LIVE_P): Adjust to match struct window changes.
+       * window.c (wset_hchild, wset_vchild): Remove.  Adjust all users.
+       Use contents slot, not buffer, where appropriate.
+       (wset_combination): New function.
+       (wset_buffer): Add eassert.
+       (Fframe_first_window): Simplify the loop reaching first window.
+       (Fwindow_buffer): Use WINDOW_LEAF_P.
+       (Fwindow_top_child): Use WINDOW_VERTICAL_COMBINATION_P.
+       (Fwindow_left_child): Use WINDOW_HORIZONTAL_COMBINATION_P.
+       (unshow_buffer): Convert initial debugging check to eassert.
+       (replace_window, recombine_windows, Fdelete_other_windows_internal)
+       (make_parent_window, window_resize_check, window_resize_apply)
+       (resize_frame_windows, Fsplit_window_internal, Fdelete_window_internal)
+       (Fset_window_configuration, delete_all_child_windows, save_window_save):
+       Adjust to match struct window changes.
+       (window_loop): Check for broken markers in CHECK_ALL_WINDOWS.
+       (mark_window_cursors_off, count_windows, get_leaf_windows)
+       (foreach_window_1): Simplify the loop.
+       * alloc.c (mark_object): Do not check for the leaf window because
+       internal windows has no glyph matrices anyway.
+       * dispnew.c (clear_window_matrices, showing_window_margins_p)
+       (allocate_matrices_for_window_redisplay, fake_current_matrices)
+       (allocate_matrices_for_frame_redisplay, free_window_matrices)
+       (build_frame_matrix_from_window_tree, mirror_make_current)
+       (frame_row_to_window, mirror_line_dance, check_window_matrix_pointers)
+       (update_window_tree, set_window_update_flags): Simplify the loop.
+       (sync_window_with_frame_matrix_rows): Enforce live window.
+       Use contents slot, not buffer, where appropriate.
+       * frame.c (set_menu_bar_lines_1): Use WINDOW_VERTICAL_COMBINATION_P
+       and WINDOW_HORIZONTAL_COMBINATION_P.
+       (make_frame_visible_1): Simplify the loop.
+       Use contents slot, not buffer, where appropriate.
+       * xdisp.c (hscroll_window_tree, mark_window_display_accurate)
+       (redisplay_windows, redisplay_mode_lines, update_cursor_in_window_tree)
+       (expose_window_tree): Likewise.
+       Use contents slot, not buffer, where appropriate.
+       * textprop.c (get_char_property_and_overlay): Add CHECK_LIVE_WINDOW
+       to avoid deleted windows.  Use contents slot instead of buffer.
+       * buffer.c, dispextern.h, editfns.c, fileio.c, font.c, fringe.c:
+       * indent.c, insdel.c, keyboard.c, keymap.c, minibuf.c, msdos.c:
+       * nsfns.m, nsmenu.m, nsterm.m, print.c, w32fns.c, w32menu.c, xfaces.c:
+       * xfns.c, xmenu.c: Use contents slot, not buffer, where appropriate.
+
+2013-03-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32fns.c (w32_wnd_proc) [ENABLE_CHECKING]: Add code to help
+       identify the reasons for assertion violations in bug#14062 and
+       similar ones.
+       (Fx_show_tip): Fix compilation error under
+       "--enable-check-lisp-object-type".  (Bug#14073)
+
+       * image.c (g_error_free) [WINDOWSNT]: Add DEF_IMGLIB_FN.
+       Reported by <rzl24ozi@gmail.com>.
+
+2013-03-28  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (with_echo_area_buffer_unwind_data): Save window
+       start marker...
+       (unwind_with_echo_area_buffer): ...to restore it here.  This
+       is needed to ensure that...
+       (redisplay_window): ...both window markers are valid here,
+       which is verified by eassert.
+       * editfns.c (save_excursion_save): Do not assume that
+       selected_window always displays the buffer.
+       * buffer.c (Fbuffer_swap_text): Adjust window start markers.
+       Fix comment.
+
+2013-03-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * casetab.c (init_casetab_once): Don't abuse the ascii eqv table for
+       the upcase table.
+
+2013-03-27  rzl24ozi  <rzl24ozi@gmail.com>  (tiny changes)
+
+       * image.c [WINDOWSNT]: Fix calls to DEF_IMGLIB_FN for SVG function.
+
+2013-03-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (IsValidLocale) [__GNUC__]: Don't declare prototype,
+       since MinGW's w32api headers do.  This avoids compiler warnings.
+
+       * w32.c (FSCTL_GET_REPARSE_POINT) [_MSC_VER || _W64]: Don't define
+       if already defined.
+
+2013-03-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (_REPARSE_DATA_BUFFER): Condition by _MSVC and _W64.
+
+2013-03-26  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (style_changed_cb): Check if frame is live and an
+       X frame (Bug#14038).
+
+2013-03-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (_PROCESS_MEMORY_COUNTERS_EX) [_WIN32_WINNT < 0x0500]:
+       Define only for _WIN32_WINNT less than 0x0500.
+       (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT) [!_W64]: Don't define for
+       MinGW64.
+       Move inclusion of time.h before sys/time.h, so that MinGW64 could
+       see its own definitions of 'struct timeval' and 'struct timezone'.
+
+       Fix incompatibilities between MinGW.org and MinGW64 headers.
+       * w32term.c (WCRANGE, GLYPHSET): Don't define if _W64 is defined.
+
+       * w32.c (REPARSE_DATA_BUFFER): Guard with
+       MAXIMUM_REPARSE_DATA_BUFFER_SIZE being defined.
+
+2013-03-25  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xterm.c: Include X11/XKBlib.h
+       (XTring_bell): Use XkbBell if HAVE_XKB (Bug#14041).
+
+2013-03-24  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * alloc.c (xpalloc, Fgarbage_collect): Reorder conditions that are
+       written backwards.
+       * blockinput.h (input_blocked_p): Likewise.
+       * bytecode.c (exec_byte_code): Likewise.
+       * callproc.c (call_process_kill, call_process_cleanup)
+       (Fcall_process): Likewise.
+       * ccl.c (ccl_driver, resolve_symbol_ccl_program)
+       (Fccl_execute_on_string): Likewise.
+       * character.c (string_escape_byte8): Likewise.
+       * charset.c (read_hex): Likewise.
+       * cm.c (calccost): Likewise.
+       * data.c (cons_to_unsigned): Likewise.
+       * dired.c (directory_files_internal, file_name_completion):
+       Likewise.
+       * dispnew.c (scrolling_window, update_frame_1, Fsleep_for)
+       (sit_for): Likewise.
+       * doc.c (Fsubstitute_command_keys): Likewise.
+       * doprnt.c (doprnt): Likewise.
+       * editfns.c (hi_time, decode_time_components, Fformat): Likewise.
+       * emacsgtkfixed.c: Likewise.
+       * fileio.c (file_offset, Fwrite_region): Likewise.
+       * floatfns.c (Fexpt, fmod_float): Likewise.
+       * fns.c (larger_vector, make_hash_table, Fmake_hash_table):
+       Likewise.
+       * font.c (font_intern_prop): Likewise.
+       * frame.c (x_set_alpha): Likewise.
+       * gtkutil.c (get_utf8_string): Likewise.
+       * indent.c (check_display_width): Likewise.
+       * intervals.c (create_root_interval, rotate_right, rotate_left)
+       (split_interval_right, split_interval_left)
+       (adjust_intervals_for_insertion, delete_node)
+       (interval_deletion_adjustment, adjust_intervals_for_deletion)
+       (merge_interval_right, merge_interval_left, copy_intervals)
+       (set_intervals_multibyte_1): Likewise.
+       * keyboard.c (gobble_input, append_tool_bar_item): Likewise.
+       * keymap.c (Fkey_description): Likewise.
+       * lisp.h (FIXNUM_OVERFLOW_P, vcopy): Likewise.
+       * lread.c (openp, read_integer, read1, string_to_number):
+       Likewise.
+       * menu.c (ensure_menu_items): Likewise.
+       * minibuf.c (read_minibuf_noninteractive): Likewise.
+       * print.c (printchar, strout): Likewise.
+       * process.c (create_process, Faccept_process_output)
+       (wait_reading_process_output, read_process_output, send_process)
+       (wait_reading_process_output): Likewise.
+       * profiler.c (make_log, handle_profiler_signal): Likewise.
+       * regex.c (re_exec): Likewise.
+       * regex.h: Likewise.
+       * search.c (looking_at_1, Freplace_match): Likewise.
+       * sysdep.c (get_child_status, procfs_ttyname)
+       (procfs_get_total_memory): Likewise.
+       * systime.h (EMACS_TIME_VALID_P): Likewise.
+       * term.c (dissociate_if_controlling_tty): Likewise.
+       * window.c (get_phys_cursor_glyph): Likewise.
+       * xdisp.c (init_iterator, redisplay_internal, redisplay_window)
+       (try_window_reusing_current_matrix, try_window_id, pint2hrstr):
+       Likewise.
+       * xfns.c (Fx_window_property): Likewise.
+       * xmenu.c (set_frame_menubar): Likewise.
+       * xselect.c (x_get_window_property, x_handle_dnd_message):
+       Likewise.
+       * xsmfns.c (smc_save_yourself_CB): Likewise.
+       * xterm.c (x_scroll_bar_set_handle): Likewise.
+
+2013-03-24  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xfaces.c (Finternal_face_x_get_resource): Allow 3rd (frame) argument
+       to be optional or nil.  Adjust comment and convert it to docstring.
+       * xselect.c (Fx_send_client_event): Rename to Fx_send_client_message.
+       * frame.c (display_x_get_resource, Fx_get_resource): Break long line.
+
+2013-03-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Static checking by GCC 4.8-20130319.
+       * image.c (gif_load): Assume pass < 3 to pacify GCC.
+       * process.c (Fset_process_datagram_address)
+       (Fmake_network_process): Check get_lisp_to_sockaddr_size return value.
+       * xdisp.c (get_char_face_and_encoding):
+       (get_glyph_face_and_encoding): Ensure that *CHAR2B is initialized.
+       (get_glyph_face_and_encoding): Prepare face before possibly using it.
+       (get_per_char_metric): Don't use CHAR2B if it might not be initialized.
+
+2013-03-24  Ken Brown  <kbrown@cornell.edu>
+
+       * w32fns.c (emacs_abort) [CYGWIN]: Define `_open' as a macro to
+       fix compilation on 64-bit Cygwin, where underscores are not
+       automatically prepended.
+
+       * w32term.c (w32_initialize): Silence compiler warning.
+
+2013-03-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (w32fullscreen_hook): Use FRAME_NORMAL_WIDTH,
+       FRAME_NORMAL_HEIGHT, and FRAME_PREV_FSMODE, instead of static
+       variables, to save and restore frame dimensions.  Use
+       FRAME_NORMAL_LEFT and FRAME_NORMAL_TOP to restore frame position
+       after returning from a 'fullscreen' configuration.  use
+       SendMessage instead of PostMessage to send the SC_RESTORE message,
+       to avoid races between the main thread and the input thread.
+
+       * w32term.h (struct w32_output): New members normal_width,
+       normal_height, normal_top, normal_left, and prev_fsmode.
+       (FRAME_NORMAL_WIDTH, FRAME_NORMAL_HEIGHT, FRAME_NORMAL_TOP)
+       (FRAME_NORMAL_LEFT, FRAME_PREV_FSMODE): New macros to access these
+       members of a frame.
+
+       * w32term.c (w32fullscreen_hook): Record last value of the frame's
+       'fullscreen' parameter.  Always record previous width and height
+       of the frame, except when switching out of maximized modes, so
+       that they could be restored correctly, instead of resetting to the
+       default frame dimensions.  Send SC_RESTORE command to the frame,
+       unless we are going to send SC_MAXIMIZE, to restore the frame
+       resize hints in the mouse pointer shown by the window manager.
+       (Bug#14032)
+
+       * frame.c (get_frame_param): Now extern for WINDOWSNT as well.
+
+       * lisp.h (get_frame_param): Adjust conditions for prototype
+       declaration.
+
+2013-03-22  Ken Brown  <kbrown@cornell.edu>
+
+       * unexcw.c: Drop unneeded inclusion of w32common.h.
+       (report_sheap_usage): Declare.
+       (read_exe_header): Add magic numbers for x86_64.
+       (fixup_executable): Fix printf format specifier for unsigned long
+       argument.
+
+2013-03-22  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (struct frame): Put menu_bar_window under #ifdef
+       because this member is not needed when X toolkit is in use.
+       (fset_menu_bar_window):
+       * dispnew.c (clear_current_matrices, clear_desired_matrices)
+       (free_glyphs, update_frame):
+       * xdisp.c (expose_frame): Likewise.
+       (display_menu_bar): Likewise.  Remove redundant eassert.
+       * window.h (WINDOW_MENU_BAR_P): Always define to 0 if X
+       toolkit is in use.
+
+2013-03-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use functions and constants to manipulate Lisp_Save_Value objects.
+       This replaces code that used macros and strings and token-pasting.
+       The change makes the C source a bit easier to follow,
+       and shrinks the Emacs executable a bit.
+       * alloc.c: Verify some properties of Lisp_Save_Value's representation.
+       (make_save_value): Change 1st arg from string to enum.  All callers
+       changed.
+       (INTX): Remove.
+       (mark_object): Use if, not #if, for GC_MARK_STACK.
+       * lisp.h (SAVE_VALUEP, XSAVE_VALUE, XSAVE_POINTER, XSAVE_INTEGER)
+       (XSAVE_OBJECT): Now functions, not macros.
+       (STRING_BYTES_BOUND): Now just a macro, not a constant too;
+       the constant was never used.
+       (SAVE_SLOT_BITS, SAVE_VALUE_SLOTS, SAVE_TYPE_BITS, SAVE_TYPE_INT_INT)
+       (SAVE_TYPE_INT_INT_INT, SAVE_TYPE_OBJ_OBJ, SAVE_TYPE_OBJ_OBJ_OBJ)
+       (SAVE_TYPE_OBJ_OBJ_OBJ_OBJ, SAVE_TYPE_PTR_INT, SAVE_TYPE_PTR_OBJ)
+       (SAVE_TYPE_PTR_PTR, SAVE_TYPE_PTR_PTR_OBJ, SAVE_TYPE_MEMORY):
+       New constants.
+       (struct Lisp_Save_Value): Replace members area, type0, type1, type2,
+       type3 with a single member save_type.  All uses changed.
+       (save_type, set_save_pointer, set_save_integer): New functions.
+       * print.c (PRINTX): Remove.
+
+       * alloc.c: Remove redundant static declarations.
+
+2013-03-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Convert left_col, top_line, total_lines
+       and total_cols from Lisp_Objects to integers.  Adjust comments.
+       (wset_left_col, wset_top_line, wset_total_cols, wset_total_lines):
+       Remove.
+       (WINDOW_TOTAL_COLS, WINDOW_TOTAL_LINES, WINDOW_LEFT_EDGE_COL)
+       (WINDOW_TOP_EDGE_LINE): Drop Lisp_Object to integer conversion.
+       * dispnew.c, frame.c, w32fns.c, window.c, xdisp.c, xfns.c:
+       Adjust users where appropriate.
+
+2013-03-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * frame.h (struct frame): Drop resx and resy because the same data is
+       available from window system-specific output context.  Adjust users.
+       (default_pixels_per_inch_x, default_pixels_per_inch_y): New
+       functions to provide defaults when no window system available.
+       (FRAME_RES_X, FRAME_RES_Y): New macros.
+       (NUMVAL): Moved from xdisp.c.
+       * font.c (font_pixel_size, font_find_for_lface, font_open_for_lface)
+       (Ffont_face_attributes, Fopen_font):
+       * image.c (gs_load):
+       * w32font.c (fill_in_logfont):
+       * xdisp.c (calc_pixel_width_or_height):
+       * xfaces.c (Fx_family_fonts, set_lface_from_font): Use them.
+       * xsettings.c (apply_xft_settings): Drop frame loop and adjust comment.
+
+2013-03-20  Kenichi Handa  <handa@gnu.org>
+
+       * coding.c (syms_of_coding): Initialize disable_ascii_optimization
+       to 1 (temporary workaround until a bug related to ASCII
+       optimization is fixed).
+
+2013-03-19  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.c (Fwindow_combination_limit, Fset_window_combination_limit):
+       Signal error if window is not internal.  Adjust docstring.
+       (delete_all_child_windows): Use combination_limit to save the buffer.
+       (Fset_window_configuration): Adjust accordingly.
+       * print.c (syms_of_print): Initialize debugging output not here...
+       (init_print_once): ...but in a new function here.
+       * lisp.h (init_print_once): Add prototype.
+       * emacs.c (main): Add call to init_print_once.  Adjust comments.
+
+2013-03-18  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.c (window_resize_check, window_resize_apply)
+       (window_from_coordinates, recombine_windows, set_window_buffer)
+       (make_parent_window, Fwindow_resize_apply, resize_frame_windows)
+       (Fsplit_window_internal, Fdelete_window_internal)
+       (freeze_window_starts): Use bool for booleans.
+       * window.h (window_frame_coordinates, resize_frame_windows)
+       (freeze_window_starts, set_window_buffer): Adjust prototypes.
+
+2013-03-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * dispnew.c (bitch_at_user): Use `user-error'.
+
+2013-03-17  Ken Brown  <kbrown@cornell.edu>
+
+       * dispextern.h (RGB_PIXEL_COLOR): Move here from image.c.  Use it
+       as return type of image_background.  (Bug#13981)
+       * image.c (RGB_PIXEL_COLOR): Move to dispextern.h.
+
+2013-03-16  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (updateFrameSize:): Change resize increments if needed.
+       (ns_select): Don't return with result uninitialized.
+
+       * nsterm.h (EmacsSavePanel, EmacsOpenPanel): Add getFilename
+       and getDirectory.
+
+       * nsfns.m (ns_filename_from_panel, ns_directory_from_panel):
+       New functions.
+       (Fns_read_file_name): ret is BOOL.  If ! dir_only_p, don't choose
+       directories.  If filename is nil, get directory name (Bug#13932).
+       Use getFilename and getDirectory.
+       (getFilename, getDirectory): New methods for EmacsSavePanel and
+       EmacsOpenPanel.
+       (ok:): In EmacsOpenPanel, if we can't choose directories, just return.
+
+2013-03-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * coding.c (decode_coding_gap): Fix typo caught by static checking.
+
+2013-03-15  Kenichi Handa  <handa@gnu.org>
+
+       * insdel.c (insert_from_gap): New arg text_at_gap_tail.
+       (adjust_after_replace): Make it back to static.  Delete the third
+       arg text_at_gap_tail.  Cancel the code for handling it.
+
+       * coding.h (struct coding_system): New member eol_seen.
+
+       * coding.c (detect_ascii): New function.
+       (detect_coding): Set coding->head_ascii and coding->eol_seen only
+       when the source bytes are actually scanned.  On detecting for
+       coding_category_utf_8_auto, call detect_ascii instead of scanning
+       source bytes directly.
+       (produce_chars): Call insert_from_gap with the new arg 0.
+       (encode_coding): Likewise.
+       (decode_coding_gap): Control ASCII optimization by the variable
+       disable_ascii_optimization instead of #ifndef .. #endif.
+       Deccode EOL format according to coding->eol_seen.
+       (syms_of_coding): Declare disable-ascii-optimization as a Lisp
+       variable.
+
+       * lisp.h (adjust_after_replace): Cancel externing it.
+       (insert_from_gap): Adjust prototype.
+
+2013-03-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (w32fullscreen_hook): Swap FULLSCREEN_BOTH and
+       FULLSCREEN_MAXIMIZED.  (Bug#13935)
+
+2013-03-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * region-cache.c (find_cache_boundary, move_cache_gap)
+       (insert_cache_boundary, delete_cache_boundaries, set_cache_region):
+       Simplify debugging check and convert to eassert.  Adjust comment.
+       (pp_cache): Put under ENABLE_CHECKING.
+
+2013-03-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (w32_read_socket) <WM_WINDOWPOSCHANGED>: Remove old
+       and incorrect code.  Treat WM_WINDOWPOSCHANGED like WM_ACTIVATE
+       and WM_ACTIVATEAPP.
+       (w32fullscreen_hook): If the frame is visible, reset
+       f->want_fullscreen flag after changing the frame size.  If the
+       frame is not visible, set f->want_fullscreen to FULLSCREEN_WAIT.
+       (Bug#13953)
+
+2013-03-13  Daniel Colascione  <dancol@dancol.org>
+
+       * emacs.c (main): Call syms_of_cygw32 on CYGWIN non-NTGUI builds
+       too so that these builds can use Cygwin's file conversion
+       functions.  (We've been building and linking cygw32.o all along
+       and just not using it.)
+
+2013-03-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       File synchronization fixes (Bug#13944).
+       * Makefile.in (LIB_FDATASYNC): New macro.
+       (LIBES): Use it.
+       * conf_post.h (BSD_SYSTEM, BSD_SYSTEM_AHB): Remove; no longer needed.
+       * fileio.c (Fwrite_region, write_region_inhibit_fsync):
+       Don't worry about HAVE_FSYNC, since a substitute fsync is
+       available if the system lacks one.
+       (Fwrite_regin): Retry fsync if interrupted.
+
+2013-03-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32term.c (w32_read_socket): If the Emacs frame is being
+       activated, call w32fullscreen_hook, to make sure the new frame
+       dimensions are in effect.  (Bug#13937)
+
+2013-03-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (init_iterator): Simplify because both character and byte
+       positions are either specified or -1.  Add eassert.  Adjust comment.
+       * window.c (Fscroll_other_window): Use SET_PT_BOTH because both
+       character and byte positions can be obtained from marker.
+
+2013-03-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Static checking by Sun C 5.12.
+       * alloc.c (buffer_memory_full) [REL_ALLOC]:
+       * bytecode.c (exec_byte_code):
+       * dispnew.c (init_display):
+       * eval.c (error):
+       * fileio.c (Fsubstitute_in_file_name):
+       * keyboard.c (Fevent_convert_list):
+       * keymap.c (Fsingle_key_description):
+       * term.c (maybe_fatal, fatal):
+       * xfns.c (Fx_display_backing_store, Fx_display_visual_class):
+       * xsmfns.c (Fhandle_save_session):
+       Omit unreachable code.
+       * keymap.c (map_keymap_char_table_item): Cast void * to
+       a function pointer type; the C Standard requires this.
+
+       * sysdep.c: Remove a use of BSD_SYSTEM, which I'm trying to phase out.
+       Include <sys/param.h> unconditionally, as that works elsewhere and
+       is simpler here.  Include <sys/sysctl.h> if DARWIN_OS ||
+       __FreeBSD__, not if BSD_SYSTEM, since it's needed only for Darwin
+       and FreeBSD now.
+
+2013-03-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * insdel.c (adjust_after_replace): Use bool for boolean.
+
+2013-03-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c: Move keyboard decoding to read_key_sequence.
+       (decode_keyboard_code): Remove.
+       (tty_read_avail_input): Don't try to decode input.
+       (read_decoded_char): New function.
+       (read_key_sequence): Use it.
+
+2013-03-10  Daniel Colascione  <dancol@dancol.org>
+
+       * w32term.h (GUISTR, GUI_ENCODE_FILE, GUI_ENCODE_SYSTEM, GUI_FN)
+       (GUI_SDATA, guichar_t): Macros to abstract out differences between
+       NTGUI_UNICODE and !NTGUI_UNICODE builds, some moved out of
+       w32fns.c.
+
+       * w32term.c (construct_drag_n_drop): Use the above macros to make
+       drag-and-drop work for non-ASCII filenames in cygw32 builds.
+
+       * w32fns.c (x_set_name, x_set_title): Use the above macros to
+       properly display non-ASCII frame titles in cygw32 builds.
+
+       * w32fns.c (Fw32_shell_execute): Use the above macros to properly
+       call ShellExecute in cygw32 builds.
+
+       * w32fn.c (Fx_file_dialog): Use the above macros to simplify the
+       common file dialog code.
+
+       * w32fns.c (Ffile_system_info): Remove from cygw32 builds, which
+       can just use du like other systems.
+
+       * coding.c (from_unicode_buffer): Declare.
+       * coding.c (from_unicode_buffer): Implement.
+
+2013-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c: Minor cleanup.
+       (FROM_FILE_P): New macro.
+       (skip_dyn_bytes, unreadchar, read1): Use it.
+       (read_list): Consolidate duplicated code.
+
+       * bytecode.c (struct byte_stack): Remove `constants' when unused.
+
+2013-03-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (display_tool_bar_line, redisplay_tool_bar)
+       (redisplay_internal, set_cursor_from_row, try_window)
+       (try_window_id, dump_glyph_row, extend_face_to_end_of_line)
+       (display_line, notice_overwritten_cursor)
+       (mouse_face_from_buffer_pos, note_mouse_highlight):
+       Use MATRIX_ROW_DISPLAYS_TEXT_P.
+       (note_mouse_highlight): Use MATRIX_ROW_GLYPH_START.
+       (mouse_face_from_string_pos, fast_find_string_pos):
+       Use MATRIX_ROW_VPOS.
+
+       * xfns.c (Fx_show_tip): Use MATRIX_ROW_DISPLAYS_TEXT_P.
+
+       * w32fns.c (Fx_show_tip): Use MATRIX_ROW_DISPLAYS_TEXT_P.
+
+       * xdisp.c (try_cursor_movement): Use MATRIX_ROW and
+       MATRIX_MODE_LINE_ROW.
+
+       * dispnew.c (update_window): Use MATRIX_ROW and MATRIX_MODE_LINE_ROW.
+
+2013-03-10  handa  <handa@gnu.org>
+
+       * lisp.h (adjust_after_replace): Extern it.
+
+       * coding.c (detect_coding): Cound the heading ASCII bytes in the
+       case of detection for coding_category_utf_8_auto.
+       (decode_coding_gap) [not CODING_DISABLE_ASCII_OPTIMIZATION]:
+       Skip decoding if all bytes are ASCII.
+
+       * insdel.c (adjust_after_replace): Make it public.  New arg
+       text_at_gap_tail.
+       (adjust_after_insert): Call adjust_after_replace with the new arg
+       value 0.
+
+2013-03-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.h (EVENT_START, EVENT_END, POSN_WINDOW, POSN_POSN)
+       (POSN_WINDOW_POSN, POSN_TIMESTAMP): Be careful since events may come
+       from Elisp via unread-command-events.
+
+       * keyboard.c (access_keymap_keyremap): Accept nil return value from
+       functions to mean "no change".
+
+2013-03-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       region-cache.c, scroll.c, search.c: Use bool for booleans.
+       * lisp.h (compile_pattern):
+       * scroll.c (do_scrolling, do_direct_scrolling):
+       * search.c (struct regexp_cache, compile_pattern_1)
+       (compile_pattern, string_match_1, search_command)
+       (trivial_regexp_p, search_buffer, Freplace_match, match_limit)
+       (search_regs_saved, Fregexp_quote):
+       Use bool for boolean.
+       * region-cache.c (region_cache_forward, region_cache_backward):
+       Fix comments to match code: these functions return int, not boolean.
+
+2013-03-08  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * search.c (find_newline): Accept start and end byte positions
+       as arguments and allow -1 if not known.
+       (find_newline_no_quit): Likewise for start position.
+       * lisp.h (find_newline, find_newline_no_quit): Adjust prototype.
+       * bidi.c (bidi_find_paragraph_start): Pass byte position to
+       find_newline_no_quit, thus eliminating CHAR_TO_BYTE.
+       * editfns.c (Fconstrain_to_field): Break long line.
+       Adjust call to find_newline.
+       * indent.c (vmotion): Adjust calls to find_newline_no_quit.
+       Use DEC_BOTH to start next search from the previous buffer
+       position, where appropriate.
+       * xdisp.c (back_to_previous_line_start, forward_to_next_line_start)
+       (get_visually_first_element, move_it_vertically_backward): Likewise.
+       Obtain byte position from the display iterator, where appropriate.
+
+2013-03-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       print.c, process.c: Use bool for booleans.
+       * lisp.h (wait_reading_process_output):
+       * print.c (print_output_debug_flag, PRINTDECLARE, printchar)
+       (strout, debug_output_compilation_hack, float_to_string, print)
+       (print_object):
+       * process.c (kbd_is_on_hold, inhibit_sentinels, process_output_skip)
+       (decode_status, status_message, create_process, create_pty)
+       (Fmake_network_process, Fnetwork_interface_info)
+       (wait_reading_process_output, read_process_output)
+       (write_queue_push, write_queue_pop, process_send_signal)
+       (handle_child_signal, keyboard_bit_set, kbd_on_hold_p):
+       * process.h (struct Lisp_Process, inhibit_sentinels, kbd_on_hold_p):
+       Use bool for booleans.
+       * process.c (Fnetwork_interface_list): Remove unused local.
+       (connect_counter): Now EMACS_INT, not int.
+
+2013-03-08  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * bidi.c (bidi_fetch_char): Swap first and second arguments
+       to match other functions accepting character and byte positions.
+       Adjust comment.
+       (bidi_resolve_explicit_1, bidi_level_of_next_char): Adjust users.
+       (bidi_paragraph_init): Likewise.  Use DEC_BOTH which is faster
+       when you need just to move to the previous buffer position.
+       * xdisp.c (Fcurrent_bidi_paragraph_direction): Use DEC_BOTH.
+
+2013-03-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit (prowlims): Display the enabled_p flag of the row.
+
+2013-03-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid character to byte conversions in motion subroutines.
+       * indent.h (compute_motion, vmotion): Add byte position argument.
+       * indent.c (compute_motion): Use it and avoid CHAR_TO_BYTE.
+       Add eassert.
+       (Fcompute_motion): Break long line.  Adjust call to compute_motion.
+       Use list5 for return value.
+       (vmotion): Use byte position argument and avoid call to CHAR_TO_BYTE.
+       Adjust comments, style and calls to compute_motion.
+       (Fvertical_motion): Adjust call to vmotion.
+       * window.c (Fdelete_other_windows_internal): Record window start
+       byte position and adjust call to vmotion.
+       (window_scroll_line_based): Likewise with call to compute_motion.
+       Use SET_PT_BOTH.
+       (Frecenter): Adjust calls to vmotion.
+
+2013-03-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (list2i, list3i): New functions.
+       (list4i): Move from window.c and make LISP_INLINE.
+       * editfns.c (make_lisp_time):
+       * fns.c (Flocale_info):
+       * keyboard.c (parse_modifiers):
+       * xterm.c (x_ewmh_activate_frame): Use list2i.
+       * instel.c (signal_after_change):
+       * nsfns.m (Fx_server_version, Fxw_color_values):
+       * w32fns.c (Fxw_color_values, Fx_server_version):
+       * xfns.c (Fxw_color_values, Fx_server_version): Use list3i.
+       * fileio.c (Fvisited_file_modtime):
+       * nsfns.m (Fns_display_usable_bounds):
+       * w32.c (ltime): Use list4i.
+
+2013-03-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * search.c (find_newline_no_quit): Rename from find_next_newline.
+       Add commentary.
+
+       * lisp.h (find_newline_no_quit): Rename prototype.
+
+       * xdisp.c (back_to_previous_line_start)
+       (forward_to_next_line_start, get_visually_first_element)
+       (move_it_vertically_backward): Callers of find_newline_no_quit changed.
+       * indent.c (vmotion): Callers of find_newline_no_quit changed.
+       * bidi.c (bidi_find_paragraph_start): Callers of
+       find_newline_no_quit changed.
+
+       * msdos.c: Change encoding to cp850.  (Bug#13879)
+       (fr_keyboard, it_keyboard, dk_keyboard): Update keyboard layouts.
+
+2013-03-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Coding system support cleanup and minor refactoring.
+       * coding.h (enum coding_result_code): Remove
+       CODING_RESULT_INCONSISTENT_EOL and CODING_RESULT_INSUFFICIENT_MEM.
+       (toplevel): Remove unused CODING_MODE_INHIBIT_INCONSISTENT_EOL.
+       (CODING_MODE_LAST_BLOCK, CODING_MODE_SELECTIVE_DISPLAY)
+       (CODING_MODE_DIRECTION, CODING_MODE_FIXED_DESTINATION)
+       (CODING_MODE_SAFE_ENCODING): Rearrange bit values.
+       (decode_coding_region, encode_coding_region, decode_coding_string):
+       Remove unused compatibility macros.
+       * coding.c (Qinconsistent_eol, Qinsufficient_memory): Remove.
+       (record_conversion_result): Adjust user.
+       (syms_of_coding): Likewise.
+       (ALLOC_CONVERSION_WORK_AREA): Use SAFE_ALLOCA.
+       (decode_coding, encode_coding): Add USE_SAFE_ALLOCA and SAFE_FREE.
+       (decode_coding_object): Simplify since xrealloc never returns NULL.
+       Add eassert.
+
+2013-03-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix a build failure on OpenBSD 4.x and MirBSD (Bug#13881).
+       * sysdep.c (list_system_processes)
+       [BSD_SYSTEM && !DARWIN_OS && !__FreeBSD__]:
+       Make it a stub in this case; otherwise the build might fail,
+       and this code hasn't been tested on such hosts anyway.
+       Problem reported by Nelson H. F. Beebe in
+       <http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00021.html>
+       and analyzed by Jérémie Courrèges-Anglas in
+       <http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00062.html>.
+
+2013-03-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (find_next_newline_no_quit): Rename to find_next_newline.
+       * xdisp.c (back_to_previous_line_start, forward_to_next_line_start)
+       (get_visually_first_element, move_it_vertically_backward): Ajust users.
+       * bidi.c (bidi_find_paragraph_start): Likewise.
+       * indent.c (vmotion): Likewise.
+
+2013-03-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       FILE's lock is now always .#FILE and may be a regular file (Bug#13807).
+       * filelock.c: Include <c-ctype.h>.
+       (MAX_LFINFO): New top-level constant.
+       (lock_info_type): Remove members pid, boot_time.  Add members at,
+       dot, colon.  Change user member to be the entire buffer, not a
+       pointer.  This allows us to handle the case where a foreign
+       pid or boot time exceeds the local range.  All uses changed.
+       (LINKS_MIGHT_NOT_WORK): New constant.
+       (FREE_LOCK_INFO): Remove, as the pieces no longer need freeing.
+       (defined_WINDOWSNT): Remove.
+       (MAKE_LOCK_NAME, file_in_lock_file_name):
+       Always use .#FILE (not .#-FILE) for the file lock,
+       even if it is a regular file.
+       (rename_lock_file): New function.
+       (create_lock_file): Use it.
+       (create_lock_file, read_lock_data):
+       Prefer a symbolic link for the lock file, falling back on a
+       regular file if symlinks don't work.  Do not try to create
+       symlinks on MS-Windows, due to security hassles.  Stick with
+       POSIXish functions (open, read, write, close, fchmod, readlink, symlink,
+       link, rename, unlink, mkstemp) when creating locks, as a GNUish
+       host may be using a Windowsish file system, and cannot use
+       MS-Windows-only system calls.  Fall back on mktemp if mkstemp
+       doesn't work.  Don't fail merely because of a symlink-contents
+       length limit in the current file system; fall back on regular
+       files.  Increase the symlink contents length limit to 8 KiB, this
+       should be big enough for any real use and doesn't crunch the
+       stack.
+       (create_lock_file, lock_file_1, read_lock_data):
+       Simplify allocation of lock file buffers now that they fit in 8 KiB.
+       (lock_file_1): Return error number, not bool.  All callers changed.
+       (ELOOP): New macro, if not already defined.
+       (read_lock_data): Return size of lock file contents, not Lisp object.
+       All callers changed.  Handle a race condition if some other process
+       replaces a regular-file lock with a symlink lock or vice versa,
+       while we're trying to read the lock.
+       (current_lock_owner): Parse contents more carefully, to help avoid
+       confusing a regular-file lock with some other application's use
+       of the file.  Check for lock file contents being too long, or
+       not parsing correctly.
+       (current_lock_owner, lock_file):
+       Allow foreign pid and boot times that exceed the local range.
+       (current_lock_owner, lock_if_free, lock_file):
+       Simplify allocation of lock file contents.
+       * w32.c (sys_rename_replace): New function, containing most of
+       the contents of the old sys_rename.
+       (sys_rename): Use it.
+       (fchmod): New dummy function.
+       * w32.h (sys_rename_replace, fchmod): New decls.
+
 2013-03-05  Eli Zaretskii  <eliz@gnu.org>
 
        * bidi.c (bidi_resolve_explicit_1): Don't call CHAR_TO_BYTE or
        to be in sync with bidi_it->bytepos.  Suggested by Dmitry Antipov
        <dmantipov@yandex.ru>.
 
-2013-03-05  Paul Eggert  <eggert@cs.ucla.edu>
-
-       Fix a build failure on OpenBSD 4.x and MirBSD.
-       * sysdep.c (KERN_PROC, kinfo_proc)
-       [BSD_SYSTEM && (!KERN_PROC || __MirBSD__)]:
-       Define to KERN_PROC2 and kinfo_proc2, for OpenBSD 4.9 and MirBSD.
-       list-system-processes still returns nil, but at least it doesn't crash.
-       Problem reported by Nelson H. F. Beebe in
-       <http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00021.html>.
-
 2013-03-05  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * composite.c (get_composition_id, fill_gstring_header):
 
 2013-03-02  Eli Zaretskii  <eliz@gnu.org>
 
-       * textprop.c (Fadd_text_properties, Fremove_text_properties): If
-       the interval tree changes as a side effect of calling
+       * textprop.c (Fadd_text_properties, Fremove_text_properties):
+       If the interval tree changes as a side effect of calling
        modify_region, re-do processing starting from the call to
        validate_interval_range.  (Bug#13743)
 
        * textprop.c (Fadd_text_properties, Fremove_text_properties)
        (Fremove_list_of_text_properties): Skip all of the intervals in
        the region between START and END that already have resp. don't
-       have the requested properties, not just the first one.  Add
-       assertions that the loop afterwards always modifies the
+       have the requested properties, not just the first one.
+       Add assertions that the loop afterwards always modifies the
        properties.  (Bug#13743)
 
 2013-02-25  Stefan Monnier  <monnier@iro.umontreal.ca>
        a public macro and no need to inline by hand.
 
 2012-09-26  Tomohiro Matsuyama  <tomo@cx4a.org>
-            Stefan Monnier  <monnier@iro.umontreal.ca>
-            Juanma Barranquero  <lekktu@gmail.com>
+           Stefan Monnier  <monnier@iro.umontreal.ca>
+           Juanma Barranquero  <lekktu@gmail.com>
 
        * profiler.c: New file.
        * Makefile.in (base_obj): Add profiler.o.