* lisp.h (Mouse_HLInfo): Move from here...
[bpt/emacs.git] / src / ChangeLog
index 8a3186b..5633d95 100644 (file)
@@ -1,3 +1,412 @@
+2013-08-27  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (Mouse_HLInfo): Move from here...
+       * dispextern.h (Mouse_HLInfo): ...to here and offload lisp.h.
+       (reset_mouse_highlight): New function.
+       * msdos.c (dos_set_window_size, IT_update_begin)
+       (internal_terminal_init):
+       * nsterm.m (ns_update_window_end, x_free_frame_resources)
+       (ns_initialize_display_info):
+       * w32console.c (initialize_w32_display):
+       * w32term.c (x_update_window_end, x_free_frame_resources)
+       (w32_initialize_display_info):
+       * xterm.c (x_update_window_end, x_free_frame_resources, x_term_init):
+       * window.c (Fdelete_other_windows_internal):
+       * xdisp.c (clear_mouse_face, cancel_mouse_face): Use it.
+       * termchar.h (toplevel):
+       * xterm.h (toplevel): Include dispextern.h.
+
+2013-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problems found by static checking.
+       * image.c (XGetPixel, XPutPixel) [HAVE_NS]: Now static.
+       (expect): Avoid nested-if warning.
+       (x_build_heuristic_mask) [HAVE_NS]: Avoid unused-var warning.
+       * nsmenu.m (fillWithWidgetValue:): Avoid type warning.
+       * nsterm.h, nsterm.m (ns_select):
+       * xgselect.c, xgselect.h (xg_select):
+       Adjust signature to better match pselect's.
+       * nsterm.m (ns_select):
+       Don't set *TIMEOUT, since pselect doesn't.
+       * regex.c (whitespace_regexp): Now const_re_char *, to avoid
+       diagnostic about assigning const char * to it.
+       * xfaces.c (x_display_info) [HAVE_NS]: Remove; unused.
+
+2013-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c (substitute_object_recurse): Handle hash-tables as well
+       (bug#15190).
+
+2013-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix unlikely core dump in init_tty, and simplify terminfo case.
+       * term.c (init_tty) [TERMINFO]: Fix check for buffer overrun.
+       The old version incorrectly dumped core if malloc returned a
+       buffer containing only non-NUL bytes.
+       (init_tty): Do not allocate or free termcap buffers; the
+       struct does that for us now.
+       * termchar.h (TERMCAP_BUFFER_SIZE) [!TERMINFO]: New constant.
+       (struct tty_display_info): Define members termcap_term_buffer and
+       termcap_strings_buffer only if !TERMINFO, since terminfo doesn't
+       use them.  Allocate them directly in struct rather than indirectly
+       via a pointer, to simplify init_tty.
+
+       * frame.c (check_minibuf_window): Initialize 'window' properly,
+       so that Emacs reliably aborts later if 'window' is not initialized.
+
+2013-08-26  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_initialize): Set gtk-menu-bar-accel to "" instead
+       of VoidSymbol (Bug#15154).
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (Mouse_HLInfo): Drop set-but-unused members
+       mouse_face_beg_y and mouse_face_end_y.
+       * xdisp.c (note_tool_bar_highlight, mouse_face_from_buffer_pos)
+       (mouse_face_from_string_pos, note_mode_line_or_margin_highlight):
+       Adjust users and update comment where appropriate.
+
+2013-08-26  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.c (check_minibuf_window): New function.
+       (delete_frame, Fmake_frame_invisible, Ficonify_frame):
+       Call check_minibuf_window (Bug#15183).
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Replace last_cursor with last_cursor_vpos
+       because this is the only last cursor data we need to keep and consult.
+       * window.c (replace_window, set_window_buffer, Fsplit_window_internal):
+       * xdisp.c (mark_window_display_accurate_1, try_cursor_movement):
+       Adjust users.
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix recovering from possible decompression error.
+       Since insert_from_gap doesn't always move point, we can't use PT as
+       the position where the partially decompressed data ends, and
+       should count how many bytes was produced so far.
+       * decompress.c (struct decompress_unwind_data): Add nbytes member.
+       (unwind_decompress): Really delete partially uncompressed data.
+       (Fzlib_decompress_region): Take decompressed data size into account.
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * syntax.c (init_syntax_once): Adjust comment and do an early
+       initialization of Qchar_table_extra_slots just once...
+       * casetab.c (init_casetab_once):
+       * category.c (init_category_once):
+       * character.c (syms_of_character):
+       * coding.c (syms_of_coding):
+       * xdisp.c (syms_of_xdisp): ...and omit it here.
+
+2013-08-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (get_next_display_element): Don't apply to characters
+       from a display vector the logic of setting it->end_of_box_run_p
+       suitable for characters from a buffer.  (Bug#15175)
+
+       * w32.c (fdutimens): Call 'utime', which is implemented on w32.c
+       to handle directories, rather than '_utime' which doesn't.
+       (Bug#15176)
+
+2013-08-24  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (x_wm_set_size_hint): Don't set hints when maximized
+       or fullscreen (Bug#14627).
+
+2013-08-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       System-dependent integer overflow fixes.
+       * process.c (Fset_process_window_size): Signal an error if
+       the window size is outside the range supported by the lower level.
+       * sysdep.c (set_window_size): Return negative on error,
+       nonnegative on success, rather than -1, 0, 1 on not in system,
+       failure, success.  This is simpler.  Caller changed.
+       (serial_configure): Remove unnecessary initialization of local.
+       (procfs_get_total_memory) [GNU_LINUX]: Don't assume system memory
+       size fits in unsigned long; this isn't true on some 32-bit hosts.
+       Avoid buffer overrun if some future version of /proc/meminfo has a
+       variable name longer than 20 bytes.
+       (system_process_attributes) [__FreeBSD__]:
+       Don't assume hw.availpages fits in 'int'.
+
+2013-08-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't let very long directory names overrun the stack.
+       Fix some related minor problems involving "//", vfork.
+       * callproc.c (encode_current_directory): New function.
+       (call_process): Don't append "/"; not needed.
+       * fileio.c (file_name_as_directory_slop): New constant.
+       (file_name_as_directory): Allow SRC to be longer than SRCLEN;
+       this can save the caller having to alloca.
+       (Ffile_name_as_directory, Fdirectory_file_name, Fexpand_file_name):
+       Use SAFE_ALLOCA, not alloca.
+       (directory_file_name, Fexpand_file_name): Leave leading "//"
+       alone, since it can be special even on POSIX platforms.
+       * callproc.c (call_process):
+       * process.c (Fformat_network_address):
+       * sysdep.c (sys_subshell):
+       Use encode_current_directory rather than rolling our own.
+       (create_process): No need to encode directory; caller does that now.
+       * process.h (encode_current_directory): New decl.
+       * sysdep.c (sys_subshell): Work even if vfork trashes saved_handlers.
+       Rework to avoid 'goto xyzzy;'.
+
+2013-08-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (handle_face_prop): If the default face was remapped use
+       the remapped face for strings from prefix properties.  (Bug#15155)
+
+2013-08-23  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Minor cleanup for redisplay interface and few related functions.
+       * frame.h (enum text_cursor_kinds): Move from here...
+       * dispextern.h (enum text_cursor_kinds): ...to here.
+       (toplevel): Drop unnecessary declarations.
+       (struct redisplay_interface): Use bool and enum text_cursor_kinds
+       in update_window_end_hook and draw_window_cursor functions.
+       (display_and_set_cursor, x_update_cursor): Adjust prototypes.
+       * nsterm.m (ns_update_window_end, ns_draw_window_cursor):
+       * w32term.c (x_update_window_end,w32_draw_window_cursor):
+       * xterm.c (x_update_window_end, x_draw_window_cursor):
+       * xdisp.c (display_and_set_cursor, update_window_cursor)
+       (update_cursor_in_window_tree, x_update_cursor): Use bool and
+       enum text_cursor_kinds where appropriate.
+
+2013-08-23  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Redesign redisplay interface to drop updated_row and updated_area.
+       * dispextern.h (updated_row, updated_area): Remove declaration.
+       (struct redisplay_interface): Pass glyph row and row area parameters
+       to write_glyphs, insert_glyphs and clear_end_of_line functions.
+       (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
+       Adjust prototypes.
+       * dispnew.c (updated_row, updated_area): Remove.
+       (redraw_overlapped_rows, update_window_line): Adjust user.
+       (update_marginal_area, update_text_area): Likewise.  Pass updated row
+       as a parameter.  Prefer enum glyph_row_area to int where appropriate.
+       * xdisp.c (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
+       Adjust users.
+
+2013-08-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * process.c (flush_pending_output): Remove stub.
+       All uses removed.
+
+2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * callproc.c: Fix race that killed background processes (Bug#15144).
+       (call_process): New arg TEMPFILE_INDEX.  Callers changed.
+       Record deleted process-id in critical section, not afterwards.
+       Don't mistakenly kill process created by a call-process invocation
+       that discards output and does not wait.
+
+2013-08-21  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix compilation with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE
+       and GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES.
+       * alloc.c (toplevel): Remove unnecessary nested #if...#endif.
+       (mark_maybe_object) [!GC_MARK_STACK]: Define to emacs_abort
+       to shut up compiler in mark_object.
+       (dump_zombies): Convert to global and add EXTERNALLY_VISIBLE.
+
+2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag.
+       We can't portably rely on PTY_OPEN doing that, even if
+       it calls posix_openpt with O_CLOEXEC.
+
+2013-08-20  Kenichi Handa  <handa@gnu.org>
+
+       * character.c (string_char): Improve commentary.
+
+2013-08-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c (SIGNATURE_DIGESTSIZE): Remove.
+       (struct animation_cache): Make signature a flexible array member.
+       All uses changed.  This is a tad slower but may insulate us better
+       from future changes to ImageMagick.
+
+2013-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c: Shrink memory needed for animation cache.
+       (SIGNATURE_DIGESTSIZE): New constant.
+       (struct animation_cache): Make 'signature' a fixed size array of bytes.
+       (imagemagick_create_cache): Copy the signature.  This saves
+       several KB of memory that ImageMagick wastes per signature.
+       Don't bother updating the update_time, as the caller does that now.
+       (imagemagick_prune_animation_cache): Don't destroy the signature, as
+       it's a fixed size struct member now.
+       (imagemagick_get_animation_cache): Always destroy the signature,
+       as it's now imagemagick_create_cache's responsibility to copy it.
+       Avoid duplicate calls to strcmp and to imagemagick_create_cache,
+       and use memcmp rather than strcmp.
+       eassert that ImageMagick returns a signature of the specified length.
+
+2013-08-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_get_animation_cache): Don't segfault on
+       each invocation.
+       (imagemagick_get_animation_cache): Revert to previous definition
+       so that it actually works.  But keep the memory leak fix.
+       (imagemagick_get_animation_cache): Fix memory leak.
+
+2013-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c: Fix animation cache signature memory leak.
+       Fix some other minor performance problems while we're at it.
+       (imagemagick_create_cache): Clear just the members that
+       need clearing.  Don't set update_time, as caller does that now.
+       (imagemagick_prune_animation_cache, imagemagick_get_animation_cache):
+       Simplify by using pointer-to-pointer instead of a prev pointer.
+       (imagemagick_prune_animation_cache): Use make_emacs_time rather
+       than EMACS_TIME_FROM_DOUBLE, and DestroyString rather than free.
+       (imagemagick_get_animation_cache): Don't xstrdup the image signature;
+       it's already a copy.  Free the signature probe unless it's cached.
+
+       * process.c (handle_child_signal): Fix crash; deleted pid (Bug#15106).
+       This was introduced by my 2013-08-12 fix for Bug#15035.
+
+2013-08-19  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * image.c (imagemagick_create_cache, imagemagick_get_animation_cache)
+       (imagemagick_prune_animation_cache): Now static.
+
+2013-08-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_get_animation_cache): Don't segfault when
+       pruning all entries.
+
+2013-08-18  Ken Brown  <kbrown@cornell.edu>
+
+       * sheap.c (STATIC_HEAP_SIZE): Adjust to current needs; use bigger
+       static heap if ENABLE_CHECKING is defined.
+       (max_bss_sbrk_ptr): New variable.
+       (bss_sbrk): Use it.
+       (report_sheap_usage): Report maximum static heap usage instead of
+       ending static heap usage.
+
+2013-08-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * decompress.c (Fzlib_available_p) [WINDOWSNT]: Update the value
+       of zlib_initialized according to the results of calling
+       init_zlib_functions.
+
+2013-08-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c: Implement an ImageMagick per-image cache.
+       (imagemagick_get_animation_cache): Fix a double-free error.
+       (imagemagick_load_image): Remove the ping_wand code, which only
+       apparently saved time on invalid animated images, and slowed down
+       everything else.  Optimise for the common case.
+
+2013-08-16  Xue Fuqiao  <xfq.free@gmail.com>
+
+       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
+
+       * editfns.c (insert_before_markers): Mention overlay in the doc string.
+
+       * marker.c (set_marker): Remove documentation of undefined behavior.
+
+2013-08-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_compute_animated_image): Animate correctly
+       when sub-images are smaller than the main image.
+       (imagemagick_compute_animated_image): Setting the iterator row to
+       zero is apparently not allowed.
+       (imagemagick_compute_animated_image): Allow images that say they
+       have sub-images that are bigger than the main image, but just crop
+       them.
+
+2013-08-15  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsmenu.m (menuWillOpen:): Fix preprocessor test (Bug#15001).
+
+2013-08-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_compute_animated_image): Respect the GIF
+       disposal methods.
+
+2013-08-15  Ken Brown  <kbrown@cornell.edu>
+
+       * emacs.c (main): Update comment about G_SLICE_ALWAYS_MALLOC.
+       * gmalloc.c (memalign) [CYGWIN]: Revert last change; it's not
+       needed.
+
+2013-08-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problems found by static checking.
+       * frame.c (delete_frame):
+       * xdisp.c (next_element_from_display_vector):
+       Avoid uninitialized local.
+       * image.c (imagemagick_compute_animated_image): Port to C89.
+       Prefer usual GNU indentation style for loops.
+       Be more careful about bizarrely large sizes, by using ptrdiff_t
+       instead of int.
+
+2013-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix infinite frame selection loop (Bug#15025).
+       * frame.c (delete_frame): Prefer fast ad-hoc loop to next_frame.
+
+2013-08-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (compute_window_start_on_continuation_line):
+       When WORD_WRAP is in effect, use move_it_to instead of move_it_by_lines
+       to make sure we end up setting the window start at the leftmost
+       visible character of the display line.  This avoids funky
+       horizontal shifting because the window start is not kept on the
+       same position.  (Bug#15090)
+       (next_element_from_display_vector): Support 'box' face attribute
+       in the face definitions of a display vector.  (Bug#15099)
+
+2013-08-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_compute_animated_image): Implement animated
+       images (bug#14700).
+       (imagemagick_compute_animated_image): Fix some compilation
+       warnings.  Implement a very simple cache to make the animation
+       usable at all, but it should be replaced with a per-image cache.
+
+2013-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (FOR_EACH_ALIST_VALUE): New macro
+       to do `for' loops over alist values.
+       * buffer.h (FOR_EACH_BUFFER):
+       * process.c (FOR_EACH_PROCESS): Use it.
+       (handle_child_signal, status_notify, Fget_buffer_process)
+       (kill_buffer_processes): Use FOR_EACH_PROCESS.
+
+2013-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * term.c (get_named_tty, create_tty_output, tty_free_frame_resources)
+       (tty_free_frame_resources, delete_tty): Prefer eassert to emacs_abort.
+       * image.c (make_image_cache): For struct image_cache, prefer xmalloc
+       to xzalloc and so avoid redundant call to memset.
+       * xterm.c (x_term_init): Avoid unnecessary initializations of dpyinfo
+       members because it is allocated with xzalloc and so already zeroed.
+
+2013-08-14  Ken Brown  <kbrown@cornell.edu>
+
+       * gmalloc.c (memalign) [CYGWIN]: Rename to emacs_memalign
+       (Bug#15094).
+
+2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Utility function and macro to copy Lisp string to C string.
+       * lisp.h (xlispstrdupa): New macro.
+       (xlispstrdup): New prototype.
+       * alloc.c (xlispstrdup): New function.
+       * callint.c (Fcall_interactively):
+       * fileio.c (Ffile_name_directory, Fexpand_file_name)
+       (Fsubstitute_in_file_name):
+       * frame.c (Fmake_terminal_frame): Use xlispstrdupa.
+       * image.c (x_create_bitmap_from_file):
+       * w32term.c (w32_term_init):
+       * xterm.c (x_term_init): Use xlispstrdup.
+
 2013-08-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * image.c (imagemagick_load_image): Make animated pictures work.
        Remove.
        (make_window): Initialize new integer fields to -1.
        (Fsplit_window_internal): Use direct assignment.
-       (Fset_window_configuration, save_window_save): Convert
-       Lisp_Object to integer and back where appropriate.
+       (Fset_window_configuration, save_window_save):
+       Convert Lisp_Object to integer and back where appropriate.
        (Fset_window_fringes): Adjust user.  Return t if any fringe
        was actually changed, and mention this in docstring.
 
        New macros.
        (Fdecompress_gzipped_region, unwind_decompress): Use the fn_*
        macros instead of invoking the zlib functions directly.
-       (syms_of_decompress): DEFSYM Qzlib_dll.  Staticpro
-       Szlib_available_p.
+       (syms_of_decompress): DEFSYM Qzlib_dll.
+       Staticpro Szlib_available_p.
 
 2013-08-12  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * nsmenu.m (ns_update_menubar): Call fillWithWidgetValue:frame:
        (initWithTitle:): Initialize frame to 0.
        (fillWithWidgetValue:): Call fillWithWidgetValue:frame.
-       (fillWithWidgetValue:frame:): Renamed from
+       (fillWithWidgetValue:frame:): Rename from
        fillWithWidgetValue:setDelegate, call initWithTile:frame: if f.
 
        * nsterm.h (EmacsMenu): fillWithWidgetValue:setDelegate renamed to
        * indent.c (width_run_cache_on_off): Adjust users.
        * bidi.c (bidi_paragraph_cache_on_off): New function.
        (bidi_find_paragraph_start): Use bidi_paragraph_cache if needed.
-       * insdel.c (prepare_to_modify_buffer): Invalidate
-       bidi_paragraph_cache if enabled.
+       * insdel.c (prepare_to_modify_buffer):
+       Invalidate bidi_paragraph_cache if enabled.
 
 2013-08-06  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Avoid redundant Lisp_Object <-> struct frame conversions in font API.
        * font.h (struct font_driver): Change list, match, and list_family
        functions to accept struct frame * as first arg.
-       * font.c (font_score, font_compare, font_sort_entities): Remove
-       prototypes.
+       * font.c (font_score, font_compare, font_sort_entities):
+       Remove prototypes.
        (font_sort_entities, font_list_entities, font_select_entity):
        (font_find_for_lface, Flist_fonts, Ffont_family_list): Adjust to
        match font API change.
        or fscanf fails.
        (system_process_attributes): Prefer plain char to unsigned char
        when either will do.  Clean up properly if interrupted or if
-       memory allocations fail.  Don't assume sscanf succeeds.  Remove
-       no-longer-needed workaround to stop GCC from whining.  Read
-       command-line once, instead of multiple times.  Check read status a
+       memory allocations fail.  Don't assume sscanf succeeds.
+       Remove no-longer-needed workaround to stop GCC from whining.
+       Read command-line once, instead of multiple times.  Check read status a
        bit more carefully.
 
        Fix obscure porting bug with varargs functions.
        of the old Fcall_process_region.  Use Fcopy_sequence to create the
        temp file name, rather than alloca + build_string, for simplicity.
        Don't bother to block input around the temp file creation;
-       shouldn't be needed.  Simplify use of mktemp.  Use
-       record_unwind_protect immediately after creating the temp file;
+       shouldn't be needed.  Simplify use of mktemp.
+       Use record_unwind_protect immediately after creating the temp file;
        this closes an unlikely race where the temp file was not removed.
        Use memcpy rather than an open-coded loop.
        (Fcall_process_region): Use the new function.  If the input is
        (try_cursor_movement, redisplay_window, try_window)
        (try_window_id): Use it instead of FRAME_LINE_HEIGHT.  (Bug#14771)
 
-       * window.c (window_scroll_pixel_based): use
-       default_line_pixel_height.
+       * window.c (window_scroll_pixel_based):
+       use default_line_pixel_height.
 
        * dispextern.h (default_line_pixel_height): Add prototype.