Rewrite sampler to use Elisp hash-tables.
[bpt/emacs.git] / src / ChangeLog
index 0fc90a1..1b90ae8 100644 (file)
@@ -1,3 +1,717 @@
+2012-09-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xdisp.c (Qautomatic_redisplay): New constant.
+       (redisplay_internal): Record itself in backtrace_list.
+       (syms_of_xdisp): Define Qautomatic_redisplay.
+
+       * profiler.c: Remove filtering functionality.
+       (is_in_trace, Qgc): Remove vars.
+       (make_log, record_backtrace, Fsample_profiler_log):
+       Rewrite, using Elisp hash-tables.
+       (approximate_median, evict_lower_half): New functions.
+       (cpu_log): Rename from sample_log.
+       (cpu_gc_count): New var.
+       (Fsample_profiler_reset, Fmemory_profiler_reset): Remove.
+       (sigprof_handler): Add count to cpu_gc_count during GC, detected via
+       backtrace_list.
+       (block_sigprof, unblock_sigprof): Remove.
+       (gc_probe, mark_profiler): Remove functions.
+       (syms_of_profiler): Staticpro cpu_log and memory_log.
+
+       * lisp.h (SXHASH_COMBINE): Move back to...
+       * fns.c (SXHASH_COMBINE): ...here.
+
+       * alloc.c (Fgarbage_collect): Record itself in backtrace_list.
+       Don't set is_in_trace any more.  Don't call mark_profiler.
+       Only call gc_probe for the memory profiler.
+       (syms_of_alloc): Define Qautomatic_gc.
+
+2012-09-15  Tomohiro Matsuyama  <tomo@cx4a.org>
+
+       * alloc.c (emacs_blocked_malloc): Remove redundant MALLOC_PROBE.
+
+2012-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * alloc.c: Use bool for booleans.
+       (gc_in_progress, abort_on_gc)
+       (setjmp_tested_p) [!GC_SAVE_REGISTERS_ON_STACK && !GC_SETJMP_WORKS]:
+       (dont_register_blocks) [GC_MALLOC_CHECK]:
+       (suppress_checking) [ENABLE_CHECKING]: Now bool, not int.
+       (check_string_bytes, make_specified_string, memory_full)
+       (live_string_p, live_cons_p, live_symbol_p, live_float_p)
+       (live_misc_p, live_vector_p, live_buffer_p, mark_maybe_object)
+       (mark_stack, valid_pointer_p, make_pure_string)
+       (Fgarbage_collect, survives_gc_p, gc_sweep):
+       Use bool for booleans, instead of int.
+       (test_setjmp) [!GC_SAVE_REGISTERS_ON_STACK && !GC_SETJMP_WORKS]:
+       Remove unused local.
+       * alloc.c (PURE_POINTER_P):
+       * lisp.h (STRING_MULTIBYTE): Document that it returns a boolean.
+       * editfns.c (Fformat):
+       * fileio.c (Fexpand_file_name, Fsubstitute_in_file_name)
+       (Fdo_auto_save):
+       * fns.c (sweep_weak_table):
+       * lisp.h (suppress_checking, push_message, survives_gc_p)
+       (make_pure_string, gc_in_progress, abort_on_gc):
+       * lread.c (readchar, read1):
+       * print.c (Fprin1_to_string):
+       * xdisp.c (push_message):
+       Use bool for booleans affected directly or indirectly by
+       alloc.c's changes.
+
+       Make recently-introduced setters macros.
+       * fontset.c (set_fontset_id, set_fontset_name, set_fontset_ascii)
+       (set_fontset_base, set_fontset_frame, set_fontset_nofont_face)
+       (set_fontset_default, set_fontset_fallback): Rename from their
+       upper-case counterparts, and make them functions rather than macros.
+       This is more consistent with the other recently-introduced setters.
+       These don't need to be inline, since they're local.
+
+2012-08-21  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (fd_handler:): Alloc and release a NSAutoreleasePool in
+       the loop (Bug#12247).
+
+2012-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lisp.h (vcopy): Use memcpy rather than our own loop.
+       This fixes a performance regression introduced by the recent
+       addition of vcopy.  This means 'vcopy' will need to be modified
+       for a copying collector, but that's OK.  Also, tighten the
+       checking in the assertion.
+
+2012-08-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32uniscribe.c (uniscribe_shape): Fix producing gstring
+       components for RTL text (Bug#11860).  Adjust X-OFFSET of each
+       non-base glyph for the width of the base character, according to
+       what x_draw_composite_glyph_string_foreground expects.  Generate
+       WADJUST value according to composition_gstring_width's
+       expectations, to produce correct width of the composed character.
+       Reverse the sign of the DU offset produced by ScriptPlace.
+
+2012-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * dbusbind.c (xd_remove_watch): Do not assume C99 comments.
+
+2012-08-21  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid direct writes to contents member of struct Lisp_Vector.
+       * lisp.h (vcopy): New function to copy data into vector.
+       * dispnew.c (Fframe_or_buffer_changed_p): Use AREF and ASET.
+       * fns.c (Ffillarray): Use ASET.
+       * keyboard.c (timer_check_2): Use AREF and ASET.
+       (append_tool_bar_item, Frecent_keys): Use vcopy.
+       * lread.c (read_vector): Use ASET.
+       * msdos.c (Frecent_doskeys): Use vcopy.
+       * xface.c (Finternal_copy_lisp_face): Use vcopy.
+       (Finternal_merge_in_global_face): Use ASET and vcopy.
+       * xfont.c (xfont_list_pattern): Likewise.
+
+2012-08-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fwindow_point): For the selected window always return
+       the position of its buffer's point.
+       (Fset_window_point): For the selected window always go in its
+       buffer to the specified position.
+
+2012-08-21  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Setter macros for fontsets.
+       * fontset.c (SET_FONTSET_ID, SET_FONTSET_NAME, SET_FONTSET_ASCII)
+       (SET_FONTSET_BASE, SET_FONTSET_FRAME, SET_FONTSET_NOFONT_FACE)
+       (SET_FONTSET_DEFAULT, SET_FONTSET_FALLBACK): New macros.
+       Adjust users.
+
+2012-08-20  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (emacs$(EXEEXT), bootstrap-emacs$(EXEEXT)):
+       Don't assume that `ln -f' works.
+
+2012-08-20  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit: Use "set $dummy = ..." to avoid warnings from GDB 7.5
+       and later about non-assignments with no effect.  See discussion at
+       http://sourceware.org/ml/gdb-patches/2012-08/msg00518.html for
+       details.
+
+2012-08-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Inline setter functions for Lisp_Objects slots of struct specbinding.
+       * eval.c (set_specpdl_symbol, set_specpdl_old_value): New functions.
+       Adjust users.
+
+2012-08-20  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (select_window): Always make selected window's buffer
+       current.
+
+2012-08-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Use AREF and ASET for docstrings of category tables.
+       * category.h (CATEGORY_DOCSTRING): Use AREF.
+       (SET_CATEGORY_DOCSTRING): Use ASET.
+       * category.c (Fdefine_category): Use SET_CATEGORY_DOCSTRING.
+
+2012-08-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Inline setter functions for hash table members.
+       * lisp.h (set_hash_key, set_hash_value, set_hash_next)
+       (set_hash_hash, set_hash_index): Rename with _slot suffix.
+       (set_hash_key_and_value, set_hash_index, set_hash_next)
+       (set_hash_hash): New functions.
+       * charset.c, fns.c: Adjust users.
+
+2012-08-20  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Inline getter and setter functions for per-buffer values.
+       * buffer.h (per_buffer_default, set_per_buffer_default)
+       (per_buffer_value, set_per_buffer_value): New functions.
+       (PER_BUFFER_VALUE, PER_BUFFER_DEFAULT): Remove.
+       * buffer.c, data.c: Adjust users.
+
+2012-08-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/vm-limit.$(O)): Update dependencies.
+
+2012-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Rely on <config.h> + <unistd.h> to declare 'environ',
+       as gnulib does this if the system doesn't.
+       * callproc.c, editfns.c, process.c (environ) [!USE_CRT_DLL]:
+       Remove declaration.  MS-Windows declares it on stdlib.h which is
+       included by conf_post.h.
+       * emacs.c (environ) [DOUG_LEA_MALLOC]:
+       * vm-limit.c (environ) [ORDINARY_LINK]: Remove decl.
+       * vm-limit.c: Include <unistd.h>, for 'environ'.
+
+       * unexaix.c, unexcoff.c: Include "mem-limits.h".
+       (start_of_data): Remove decl; mem-limits.h provides it.
+
+       * xdisp.c (handle_invisible_prop): Make it a bit faster
+       and avoid a gcc -Wmaybe-uninitialized diagnostic.
+
+2012-08-19  Chong Yidong  <cyd@gnu.org>
+
+       * xdisp.c (handle_invisible_prop): Fix ellipses at overlay string
+       ends (Bug#3874).
+
+2012-08-19  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * .gdbinit: Use call instead of set when calling a function in the
+       inferior.
+
+       * data.c (set_internal): Don't use set_blv_found.
+       (Fkill_local_variable): Likewise.
+
+2012-08-18  Alp Aker  <alp.tekin.aker@gmail.com>
+
+       * nsfont.m (ns_ascii_average_width): Ensure the string
+       ascii_printable is initialized with a null-terminated character
+       array.  Otherwise, it can contain undesired extra characters.
+
+2012-08-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       port new setting code to Sun C 5.8 2005/10/13
+       * chartab.c, lisp.h (char_table_set, char_table_set_range):
+       Return void, not Lisp_Object.  Otherwise, the compiler
+       complains about (A?B:C) where B is void and C is Lisp_Object
+       when compiling CHAR_TABLE_SET, due to the recent change to
+       the API of sub_char_table_set_contents.
+
+2012-08-18  Chong Yidong  <cyd@gnu.org>
+
+       * xdisp.c (handle_invisible_prop): Obey TEXT_PROP_MEANS_INVISIBLE
+       for the string case (Bug#3874).
+
+2012-08-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * buffer.h (BSET): Remove (Bug#12215).
+       Replace all uses with calls to new setter functions.
+       (bset_bidi_paragraph_direction, bset_case_canon_table)
+       (bset_case_eqv_table, bset_directory, bset_display_count)
+       (bset_display_time, bset_downcase_table)
+       (bset_enable_multibyte_characters, bset_filename, bset_keymap)
+       (bset_last_selected_window, bset_local_var_alist)
+       (bset_mark_active, bset_point_before_scroll, bset_read_only)
+       (bset_truncate_lines, bset_undo_list, bset_upcase_table)
+       (bset_width_table):
+       * buffer.c (bset_abbrev_mode, bset_abbrev_table)
+       (bset_auto_fill_function, bset_auto_save_file_format)
+       (bset_auto_save_file_name, bset_backed_up, bset_begv_marker)
+       (bset_bidi_display_reordering, bset_buffer_file_coding_system)
+       (bset_cache_long_line_scans, bset_case_fold_search)
+       (bset_ctl_arrow, bset_cursor_in_non_selected_windows)
+       (bset_cursor_type, bset_display_table, bset_extra_line_spacing)
+       (bset_file_format, bset_file_truename, bset_fringe_cursor_alist)
+       (bset_fringe_indicator_alist, bset_fringes_outside_margins)
+       (bset_header_line_format, bset_indicate_buffer_boundaries)
+       (bset_indicate_empty_lines, bset_invisibility_spec)
+       (bset_left_fringe_width, bset_major_mode, bset_mark)
+       (bset_minor_modes, bset_mode_line_format, bset_mode_name)
+       (bset_name, bset_overwrite_mode, bset_pt_marker)
+       (bset_right_fringe_width, bset_save_length)
+       (bset_scroll_bar_width, bset_scroll_down_aggressively)
+       (bset_scroll_up_aggressively, bset_selective_display)
+       (bset_selective_display_ellipses, bset_vertical_scroll_bar_type)
+       (bset_word_wrap, bset_zv_marker):
+       * category.c (bset_category_table):
+       * syntax.c (bset_syntax_table):
+       New setter functions.
+
+       * process.h (PSET): Remove (Bug#12215).
+       Replace all uses with calls to new setter functions.
+       Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+       (PROCESS_INLINE): New macro.
+       (pset_childp): New setter function.
+       (pset_gnutls_cred_type) [HAVE_GNUTLS]: New setter function.
+       * process.c (PROCESS_INLINE):
+       Define to EXTERN_INLINE, so that the corresponding functions
+       are compiled into code.
+       (pset_buffer, pset_command, pset_decode_coding_system)
+       (pset_decoding_buf, pset_encode_coding_system)
+       (pset_encoding_buf, pset_filter, pset_log, pset_mark, pset_name)
+       (pset_plist, pset_sentinel, pset_status, pset_tty_name)
+       (pset_type, pset_write_queue): New setter functions.
+
+       * window.h (WSET): Remove (Bug#12215).
+       Replace all uses with calls to new setter functions.
+       Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+       (WINDOW_INLINE): New macro.
+       (wset_buffer, wset_frame, wset_left_col, wset_next, wset_prev)
+       (wset_redisplay_end_trigger, wset_top_line, wset_total_cols)
+       (wset_total_lines, wset_vertical_scroll_bar)
+       (wset_window_end_pos, wset_window_end_valid)
+       (wset_window_end_vpos): New setter functions.
+       * window.c (WINDOW_INLINE):
+       Define to EXTERN_INLINE, so that the corresponding functions
+       are compiled into code.
+       (wset_combination_limit, wset_dedicated, wset_display_table)
+       (wset_hchild, wset_left_fringe_width, wset_left_margin_cols)
+       (wset_new_normal, wset_new_total, wset_next_buffers)
+       (wset_normal_cols, wset_normal_lines, wset_parent, wset_pointm)
+       (wset_prev_buffers, wset_right_fringe_width)
+       (wset_right_margin_cols, wset_scroll_bar_width, wset_start)
+       (wset_temslot, wset_vchild, wset_vertical_scroll_bar_type)
+       (wset_window_parameters):
+       * xdisp.c (wset_base_line_number, wset_base_line_pos)
+       (wset_column_number_displayed, wset_region_showing):
+       New setter functions.
+
+       * termhooks.h (TSET): Remove (Bug#12215).
+       Replace all uses with calls to new setter functions.
+       Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+       (TERMHOOKS_INLINE): New macro.
+       (tset_charset_list, tset_selection_alist): New setter functions.
+       * terminal.c (TERMHOOKS_INLINE):
+       Define to EXTERN_INLINE, so that the corresponding functions
+       are compiled into code.
+       (tset_param_alist): New setter function.
+
+2012-08-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * keyboard.h (KSET): Remove (Bug#12215).
+       Replace all uses with calls to new setter functions.
+       Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+       (KEYBOARD_INLINE): New macro.
+       (kset_default_minibuffer_frame, kset_defining_kbd_macro)
+       (kset_input_decode_map, kset_last_command, kset_last_kbd_macro)
+       (kset_prefix_arg, kset_system_key_alist, kset_window_system):
+       New setter functions.
+       * keyboard.c (KEYBOARD_INLINE):
+       Define to EXTERN_INLINE, so that the corresponding functions
+       are compiled into code.
+       (kset_echo_string, kset_kbd_queue)
+       (kset_keyboard_translate_table, kset_last_prefix_arg)
+       (kset_last_repeatable_command, kset_local_function_key_map)
+       (kset_overriding_terminal_local_map, kset_real_last_command)
+       (kset_system_key_syms): New setter functions.
+
+       * frame.h (FSET): Remove (Bug#12215).
+       Replace all uses with calls to new setter functions.
+       Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+       (FRAME_INLINE): New macro.
+       (fset_buffer_list, fset_buried_buffer_list, fset_condemned_scroll_bars)
+       (fset_current_tool_bar_string, fset_desired_tool_bar_string)
+       (fset_face_alist, fset_focus_frame, fset_icon_name, fset_menu_bar_items)
+       (fset_menu_bar_vector, fset_menu_bar_window, fset_name)
+       (fset_param_alist, fset_root_window, fset_scroll_bars)
+       (fset_selected_window, fset_title, fset_tool_bar_items)
+       (fset_tool_bar_position, fset_tool_bar_window): New functions.
+       * frame.c (FRAME_INLINE):
+       Define to EXTERN_INLINE, so that the corresponding functions
+       are compiled into code.
+       (fset_buffer_predicate, fset_minibuffer_window): New setter functions.
+
+       A few more naming-convention fixes for getters and setters.
+       * buffer.c (set_buffer_overlays_before): Move here from buffer.h,
+       and rename from buffer_overlays_set_before.
+       (set_buffer_overlays_after): Move here from buffer.h, and rename
+       from buffer_overlays_set_after.
+       * buffer.h (buffer_intervals): Rename from buffer_get_intervals.
+       All uses changed.
+       (set_buffer_intervals): Rename from buffer_set_intervals.
+       * intervals.c (set_interval_object): Move here from intervals.h,
+       and rename from interval_set_object.
+       (set_interval_left): Move here from intervals.h, and rename from
+       interval_set_left.
+       (set_interval_right): Move here from intervals.h, and rename from
+       interval_set_right.
+       (copy_interval_parent): Move here from intervals.h, and rename from
+       interval_copy_parent.
+       * intervals.h (set_interval_parent): Rename from interval_set_parent.
+       (set_interval_plist): Rename from interval_set_plist.
+       Return void, not Lisp_Object, since no caller uses the result.
+       * lisp.h (string_intervals): Rename from string_get_intervals.
+       (set_string_intervals): Rename from string_set_intervals.
+
+       * lisp.h (set_char_table_extras): Rename from char_table_set_extras.
+       (set_char_table_contents): Rename from char_table_set_contents.
+       (set_sub_char_table_contents): Rename from sub_char_table_set_contents.
+       All uses changed.  See the end of
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-08/msg00549.html>.
+
+       * lisp.h (CSET): Remove (Bug#12215).
+       (set_char_table_ascii, set_char_table_defalt, set_char_table_parent)
+       (set_char_table_purpose): New functions,
+       replacing CSET.  All uses changed.  For example, replace
+       "CSET (XCHAR_TABLE (char_table), parent, parent);" with
+       "set_char_table_parent (char_table, parent);".
+       The old version was confusing because it used the same name
+       'parent' for two different things.
+
+2012-08-17  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Functions to get and set Lisp_Object fields of buffer-local variables.
+       * lisp.h (blv_found, set_blv_found, blv_value, set_blv_value)
+       (set_blv_where, set_blv_defcell, set_blv_valcell): New functions.
+       (BLV_FOUND, SET_BLV_FOUND, BLV_VALUE, SET_BLV_VALUE): Remove.
+       * data.c, eval.c, frame.c: Adjust users.
+
+2012-08-17  Chong Yidong  <cyd@gnu.org>
+
+       * xfaces.c (merge_face_vectors): If the target font specfies a
+       font spec, make the font's attributes take precedence over
+       directly-specified attributes.
+       (merge_face_ref): Recognize :font.
+
+2012-08-17  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Do not use memcpy for copying intervals.
+       * intervals.c (reproduce_interval): New function.
+       (reproduce_tree, reproduce_tree_obj): Use it.
+       (reproduce_tree_obj): Remove prototype.
+
+2012-08-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lisp.h (duration_to_sec_usec): Remove unused decl.
+
+2012-08-17  Alp Aker  <alp.tekin.aker@gmail.com>
+
+       * nsfont.m (ns_ascii_average_width): Send initWithFormat selector
+       to an allocated instance of NSString, not to the class itself.
+
+2012-08-17  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (C_CTYPE_H): New macro.
+       (LISP_H, $(BLD)/ccl.$(O), $(BLD)/doc.$(O), $(BLD)/w32console.$(O)):
+       ($(BLD)/fontset.$(O), $(BLD)/frame.$(O), $(BLD)/composite.$(O)):
+       ($(BLD)/sysdep.$(O), $(BLD)/w32uniscribe.$(O)): Update dependencies.
+
+2012-08-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use ASCII tests for character types.
+       * category.c, dispnew.c, doprnt.c, editfns.c, syntax.c, term.c:
+       * xfns.c, xterm.c:
+       Don't include <ctype.h>; was not needed.
+       * charset.c, doc.c, fileio.c, font.c, frame.c, gtkutil.c, image.c:
+       * sysdep.c, xfaces.c:
+       Include <c-ctype.h> instead of <ctype.h>.
+       * nsterm.m: Include <c-ctype.h>.
+       * charset.c (read_hex):
+       * doc.c (Fsnarf_documentation):
+       * fileio.c (IS_DRIVE) [WINDOWSNT]:
+       (DRIVE_LETTER) [DOS_NT]:
+       (Ffile_name_directory, Fexpand_file_name)
+       (Fsubstitute_in_file_name):
+       * font.c (font_parse_xlfd, font_parse_fcname):
+       * frame.c (x_set_font_backend):
+       * gtkutil.c (xg_get_font):
+       * image.c (xbm_scan, xpm_scan, pbm_scan_number):
+       * nsimage.m (hexchar):
+       * nsterm.m (ns_xlfd_to_fontname):
+       * sysdep.c (system_process_attributes):
+       * xfaces.c (hash_string_case_insensitive):
+       Use C-locale tests instead of locale-specific tests for character
+       types, since we want the ASCII interpretation here, not the
+       interpretation suitable for whatever happens to be the current locale.
+
+2012-08-16  Martin Rudalics  <rudalics@gmx.at>
+
+       Consistently check windows for validity/liveness
+       (Bug#11984, Bug#12025, Bug#12026).
+       * lisp.h (CHECK_VALID_WINDOW): New macro.
+       * window.c (decode_window): Rename to decode_live_window.
+       (decode_valid_window, Fwindow_valid_p): New functions.
+       (Fwindow_frame, Fframe_root_window, Fwindow_minibuffer_p)
+       (Fframe_first_window, Fframe_selected_window, Fwindow_parent)
+       (Fwindow_top_child, Fwindow_left_child, Fwindow_next_sibling)
+       (Fwindow_prev_sibling, Fwindow_combination_limit)
+       (Fset_window_combination_limit, Fwindow_use_time)
+       (Fwindow_total_height, Fwindow_total_width, Fwindow_new_total)
+       (Fwindow_normal_size, Fwindow_new_normal, Fwindow_left_column)
+       (Fwindow_top_line, Fwindow_body_height, Fwindow_body_width)
+       (Fwindow_hscroll, Fset_window_hscroll)
+       (Fwindow_redisplay_end_trigger)
+       (Fset_window_redisplay_end_trigger, Fwindow_edges)
+       (Fwindow_pixel_edges, Fwindow_absolute_pixel_edges)
+       (Fwindow_inside_edges, Fwindow_inside_pixel_edges)
+       (Fcoordinates_in_window_p, Fwindow_point, Fwindow_start)
+       (Fwindow_end, Fset_window_point, Fset_window_start)
+       (Fpos_visible_in_window_p, Fwindow_line_height)
+       (Fwindow_dedicated_p, Fset_window_dedicated_p)
+       (Fwindow_prev_buffers, Fset_window_prev_buffers)
+       (Fwindow_next_buffers, Fwindow_parameters, Fwindow_parameter)
+       (Fset_window_parameter, Fwindow_display_table)
+       (Fset_window_display_table, Fdelete_other_windows_internal)
+       (Fset_window_buffer, Fset_window_new_total)
+       (Fset_window_new_normal, Fdelete_window_internal)
+       (Fwindow_text_height, Fset_window_margins, Fwindow_margins)
+       (Fset_window_fringes, Fwindow_fringes, Fset_window_scroll_bars)
+       (Fwindow_scroll_bars): Check whether argument window is a valid or
+       live window.  Update doc-strings.
+       (syms_of_window): New symbol Qwindow_valid_p.
+       * keyboard.c (Fposn_at_x_y): Check whether argument
+       frame_or_window denotes a valid window.
+
+2012-08-16  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix previous char table change.
+       * lisp.h (CHAR_TABLE_SET): Use sub_char_table_set_contents.
+       * chartab.c (optimize_sub_char_table): Likewise.
+
+2012-08-16  Chong Yidong  <cyd@gnu.org>
+
+       * gtkutil.c (xg_get_font): Demand an Xft font (Bug#3228).
+
+       * xfont.c (xfont_open):
+       * xftfont.c (xftfont_open): Set the font's max_width field.
+
+       * nsfont.m (nsfont_open): Similar to the Xft backend, set
+       min_width to space_width and average_width to the average over
+       printable ASCII characters.
+       (ns_char_width): Code cleanup.
+       (ns_ascii_average_width): New utility function.
+
+       * font.h (struct font): Update comments.
+
+2012-08-16  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Simple interface to set Lisp_Object fields of character tables.
+       * lisp.h (CSET): New macro.
+       (char_table_set_extras, char_table_set_contents)
+       (sub_char_table_set_contents): New function.
+       * casetab.c, category.c, chartab.c, fns.c, fontset.c, search.c:
+       * syntax.c: Adjust users.
+
+2012-08-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c (eval_sub): Bind lexical-binding.
+       * lread.c (Qlexical_binding): Make non-static.
+
+2012-08-15  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsmenu.m (popupSession): Remove.
+       (pop_down_menu): Remove endModalSession.
+       (timeout_handler:): New method.
+       (runDialogAt:): Get next timeout.  Start a NSTimer with that timeout.
+       Call runModalForWindow.  Check timer_fired when it returns.
+       If not set, cancel timer and break out of loop.
+       Otherwise loop again, with a new timeout.
+
+       * nsterm.m: Include fcntl.h if present.
+       (fd_entry, t_readfds, inNsSelect): Remove.
+       (select_writefds, select_valid, select_timeout, selfds)
+       (select_mutex, apploopnr): Add.
+       (EV_TRAILER): Call kbd_buffer_store_event_hold only if q_event_ptr.
+       Otherwise call kbd_buffer_store_event.
+       (ns_send_appdefined): Remove release of fd_entry.
+       (ns_read_socket): Always send appdefined.  Remove inNsSelect check.
+       Increment and decrement apploopnr.
+       (ns_select): If no file descriptors, just do a NSTimer.
+       Otherwise copy read/write masks and start select thread (fd_handler).
+       Start main loop and wait for application defined event.
+       Inform select thread to stop selecting after main loop is exited.
+       (ns_term_init): Create selfds pipe and set non-blocking.
+       Initialize select_mutex. Start the select thread (fd_handler).
+       (fd_handler:): Loop forever, wait for info from the main thread
+       to either start or stop selecting.  When select returns, send
+       and appdefined event.
+       (sendScrollEventAtLoc:fromEvent:): Check if q_event_ptr is set.
+       If not call kbd_buffer_store_event.
+
+       * nsterm.h (EmacsApp): fd_handler takes id argument.
+       (EmacsDialogPanel): Add timer_fired and timeout_handler.
+
+       * gtkutil.c (xg_mark_data): Use FRAME_X_P.
+
+2012-08-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * region-cache.c (move_cache_gap): Update gap_len using the actual
+       growth of the boundaries array.  Do not change cache_len.
+       (Bug#12196)
+
+2012-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Generalize and cleanup font subsystem checks.
+       * font.h (FONT_DEBUG, font_assert): Remove.
+       * font.c, fontset.c, w32font.c, xfont.c, xftfont.c:
+       Change font_assert to eassert.  Use eassert where appropriate.
+
+2012-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * gtkutil.c (xg_get_font): Use pango_units_to_double.
+
+2012-08-15  Chong Yidong  <cyd@gnu.org>
+
+       * gtkutil.c (xg_get_font): Rename from xg_get_font_name.
+       When using the new font chooser, use gtk_font_chooser_get_font_desc to
+       extract the font descriptor instead of just the font name.
+       In that case, return a font spec instead of a string.
+       (x_last_font_name): Move to this file from xfns.c.
+
+       * xfns.c (Fx_select_font): The return value can also be a font
+       spec.  Move x_last_font_name management to gtkutil.c.
+
+       * xfaces.c: Make font weight and style symbols non-static.
+
+2012-08-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (read_minibuf): Ignore caller's inhibit-read-only
+       (bug#12117).
+
+2012-08-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (Fgarbage_collect): Use plural form consistently.
+
+2012-08-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (command_loop_1): Reset ignore_mouse_drag_p flag each
+       iteration through the command loop.  Fixes a problem whereby mouse
+       movements are ignored until the first mouse click.
+
+2012-08-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use bool, not int, for Lisp booleans.
+       This is more natural, and on my platform (GCC 4.7.1 x86-64) it
+       makes Emacs a bit smaller and presumably a bit faster.
+       * lisp.h: Include <stdbool.h>.
+       (struct Lisp_Boolfwd, defvar_bool):
+       * lread.c (defvar_bool): Use bool, not int, for Lisp booleans.
+       * regex.c [!emacs]: Include <stdbool.h>.
+       (false, true): Remove; <stdbool.h> does this for us now.
+
+2012-08-14  Chong Yidong  <cyd@gnu.org>
+
+       * character.c (Fcharacterp): Doc fix (Bug#12076).
+
+       * data.c (Findirect_variable): Doc fix (Bug#11040).
+
+       * chartab.c (Fmap_char_table): Doc fix (Bug#12061).
+
+       * editfns.c (Fformat): Doc fix (Bug#12059).
+       (Fsave_current_buffer): Doc fix (Bug#11542).
+
+2012-08-14  Barry OReilly  <gundaetiapo@gmail.com>  (tiny change)
+
+       * keyboard.c (access_keymap_keyremap): Accept anonymous functions
+       (bug#12022).
+
+2012-08-14  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.c (make_frame_without_minibuffer, make_minibuffer_frame)
+       (delete_frame, Fmake_frame_invisible, Ficonify_frame):
+       * minibuf.c (choose_minibuf_frame, read_minibuf):
+       * w32fns.c (x_create_tip_frame):
+       * xfns.c (x_create_tip_frame): Call set_window_buffer instead of
+       Fset_window_buffer (Bug#11984, Bug#12025, Bug#12026).
+
+2012-08-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * intervals.c (offset_intervals): Remove obsolete comment.
+
+2012-08-14  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * gtkutil.c (find_rtl_image, update_frame_tool_bar): Use NILP.
+
+2012-08-14  Gergely Risko  <gergely@risko.hu>
+
+       * coding.c (decode_coding): Record buffer modification before
+       disabling undo_list (Bug#11773).
+
+2012-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Revert and cleanup some recent overlay changes.
+       * buffer.h (enum overlay_type): Remove.
+       (buffer_get_overlays, buffer_set_overlays): Likewise.
+       (buffer_set_overlays_before, buffer_set_overlays_after):
+       New function.  Adjust users.
+       (unchain_both): Add eassert.
+
+2012-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * gtkutil.c (update_frame_tool_bar): Use EQ where appropriate.
+
+2012-08-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * gtkutil.c (xg_mark_data): Don't assume C99.
+
+2012-08-13  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_frame_tb_info): New struct.
+       (TB_INFO_KEY): New define.
+       (xg_free_frame_widgets): Free xg_frame_tb_info for frame if present.
+       (xg_mark_data): Mark Lisp_Objects in xg_frame_tb_info.
+       (xg_create_tool_bar): Allocate and initialize a xg_frame_tb_info
+       if not present.
+       (update_frame_tool_bar): Return early if data in xg_frame_tb_info
+       is up to date. Otherwise store new data.
+       (free_frame_tool_bar): Free xg_frame_tb_info if present.
+
+2012-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Use KSET for write access to Lisp_Object members of struct kboard.
+       * keyboard.h (KSET): New macro.
+       * callint.c, category.c, frame.c, keyboard.c, keyboard.h, macros.c:
+       * msdos.c, nsfns.m, nsterm.m, term.c, w32fns.c, w32term.c, xfns.c:
+       * xterm.c: Adjust users.
+
+2012-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Use BSET for write access to Lisp_Object members of struct buffer.
+       * buffer.h (BSET): New macro.
+       * buffer.c, casetab.c, cmds.c, coding.c, data.c, editfns.c:
+       * fileio.c, frame.c, indent.c, insdel.c, intervals.c, keymap.c:
+       * minibuf.c, print.c, process.c, syntax.c, undo.c, w32fns.c:
+       * window.c, xdisp.c, xfns.c: Adjust users.
+
+2012-08-11  BT Templeton  <bpt@hcoop.net>  (tiny change)
+
+       * lread.c (syms_of_lread): Initialize Vlexical_binding.
+
+2012-08-11  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (not_in_argv): New function.
+       (application:openFile,  application:openTempFile:):
+       (application:openFileWithoutUI:, application:openFiles:): Open file
+       if not_in_argv returns non-zero (bug#12171).
+
+       * gtkutil.c (gtk_font_chooser_dialog_new, GTK_FONT_CHOOSER)
+       (gtk_font_chooser_set_font, gtk_font_chooser_get_font):
+       Define for Gtk+ versions less than 3.2.
+       (xg_get_font_name): Use those functions/macros here.
+       Reported by Frans Oilinki <moilinki@gmail.com>.
+
 2012-08-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * unexmacosx.c (copy_data_segment): Copy initialized data in
        Cleanup intervals.
        * intervals.h (NULL_INTERVAL, DEFAULT_INTERVAL): Remove.
        (NULL_INTERVAL_P): Likewise.  Adjust users.
-       (FRONT_STICKY_P, END_NONSTICKY_P, FRONT_NONSTICKY_P): Adjust
-       comment.  Move under #if 0.
+       (FRONT_STICKY_P, END_NONSTICKY_P, FRONT_NONSTICKY_P):
+       Adjust comment.  Move under #if 0.
        * alloc.c, buffer.c, editfns.c, fns.c, insdel.c, intervals.c:
        * print.c, syntax.c, textprop.c, xdisp.c: Adjust users.
 
 
 2012-08-07  Eli Zaretskii  <eliz@gnu.org>
 
-       * .gdbinit (xframe, xwindow, nextcons, xcar, xcdr, xlist): Rename
-       fields to match removal of FGET and WGET and disuse of
+       * .gdbinit (xframe, xwindow, nextcons, xcar, xcdr, xlist):
+       Rename fields to match removal of FGET and WGET and disuse of
        INTERNAL_FIELD in Lisp_Cons.
 
 2012-08-07  Dmitry Antipov  <dmantipov@yandex.ru>
        (interval_set_left, interval_set_right, interval_set_plist):
        (interval_copy_parent): New function.
        (SET_INTERVAL_OBJECT, SET_INTERVAL_PARENT, INTERVAL_PTR_SIZE): Remove.
-       (RESET_INTERVAL, COPY_INTERVAL_CACHE, MERGE_INTERVAL_CACHE): Adjust
-       indentation.
+       (RESET_INTERVAL, COPY_INTERVAL_CACHE, MERGE_INTERVAL_CACHE):
+       Adjust indentation.
        (INTERVAL_SIZE): Remove.  Adjust users.
        * alloc.c, intervals.c, lread.c, textprop.c: Use new functions.
 
 
 2012-08-06  Eli Zaretskii  <eliz@gnu.org>
 
-       * w32menu.c (set_frame_menubar, initialize_frame_menubar): Don't
-       use FRAME_MENU_BAR_ITEMS as an lvalue.
+       * w32menu.c (set_frame_menubar, initialize_frame_menubar):
+       Don't use FRAME_MENU_BAR_ITEMS as an lvalue.
 
 2012-08-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        Fix startup warnings about ../site-lisp on MS-Windows.  (Bug#11959)
        * w32.c (init_environment): Change the default values of many
        environment variables in dflt_envvars[] to NULL, to avoid pushing
-       them into environment when they were not already defined.  Remove
-       the code that deletes site-lisp subdirectories from the default
+       them into environment when they were not already defined.
+       Remove the code that deletes site-lisp subdirectories from the default
        value of EMACSLOADPATH, as it is no longer needed.
-       (check_windows_init_file): Now external, not static.  Use
-       Vload_path as is, without adding anything, as this function is now
+       (check_windows_init_file): Now external, not static.
+       Use Vload_path as is, without adding anything, as this function is now
        called when Vload_path is already set up.
 
        * w32.h (check_windows_init_file): Add prototype.
        GetFileAttributes fails with network-related error codes.
        (sys_rename): Diagnose renaming of a symlink when the user doesn't
        have the required privileges.
-       (get_file_security_desc_by_name): Renamed from
+       (get_file_security_desc_by_name): Rename from
        get_file_security_desc.
        (stat_worker): New function, with most of the guts of 'stat', and
-       with addition of handling of symlinks and support for 'lstat'.  If
-       possible, get file's attributes and security information by
+       with addition of handling of symlinks and support for 'lstat'.
+       If possible, get file's attributes and security information by
        handle, not by name.  Produce S_IFLNK bit for symlinks, when
        called from 'lstat'.
        (stat, lstat): New functions, call 'stat_worker'.
 
        Generalize INTERNAL_FIELD between buffers, keyboards and frames.
        * lisp.h (INTERNAL_FIELD): New macro.
-       * buffer.h (BUFFER_INTERNAL_FIELD): Removed.
+       * buffer.h (BUFFER_INTERNAL_FIELD): Remove.
        (BVAR): Change to use INTERNAL_FIELD.
        * keyboard.h (KBOARD_INTERNAL_FIELD): Likewise.
        (KVAR): Change to use INTERNAL_FIELD.
 
        * nsterm.m (ns_do_open_file): New variable.
        (ns_term_init): Set ns_do_open_file to YES after run returns.
-       (openFile, openTempFile, openFileWithoutUI, openFiles): Open
-       files only if ns_do_open_file.
+       (openFile, openTempFile, openFileWithoutUI, openFiles):
+       Open files only if ns_do_open_file.
 
 2012-07-30  Paul Eggert  <eggert@cs.ucla.edu>
 
 
 2012-07-29  Eli Zaretskii  <eliz@gnu.org>
 
-       * w32heap.h (OS_9X): Renamed from OS_WINDOWS_95.
+       * w32heap.h (OS_9X): Rename from OS_WINDOWS_95.
 
        * w32heap.c (cache_system_info):
        * w32.c (sys_rename):
 2012-07-29  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Cleanup statistics calculation in Fgarbage_collect.
-       * alloc.c (Fgarbage_collect): Rename t1 to meaningful start.  Fix
-       zombies percentage calculation.  Simplify elapsed time calculation.
+       * alloc.c (Fgarbage_collect): Rename t1 to meaningful start.
+       Fix zombies percentage calculation.  Simplify elapsed time calculation.
 
 2012-07-29  Dmitry Antipov  <dmantipov@yandex.ru>
 
 
        Adjust GDB to reflect pvec_type changes (Bug#12036).
        * .gdbinit (xvectype, xpr, xbacktrace): Adjust to reflect the
-       2012-07-04 changes to pseudovector representation.  Problem
-       reported by Eli Zaretskii in <http://bugs.gnu.org/12036#30>.
+       2012-07-04 changes to pseudovector representation.
+       Problem reported by Eli Zaretskii in <http://bugs.gnu.org/12036#30>.
 
 2012-07-27  Michael Albinus  <michael.albinus@gmx.de>
 
        for the reasons.
 
        * w32menu.c (add_menu_item): Cast to ULONG_PTR when assigning
-       info.dwItemData.  Fixes crashes on 64-bit Windows.  Suggested by
-       Fabrice Popineau <fabrice.popineau@supelec.fr>.
+       info.dwItemData.  Fixes crashes on 64-bit Windows.
+       Suggested by Fabrice Popineau <fabrice.popineau@supelec.fr>.
 
 2012-07-21  Jan Djärv  <jan.h.d@swipnet.se>
 
        * lisp.h (intern, intern_c_string): Redefine as static inline
        wrappers for intern_1 and intern_c_string_1, respectively.
        (intern_1, intern_c_string_1): Rename prototypes.
-       * lread.c (intern_1, intern_c_string_1, oblookup): Simplify
-       Vobarray checking.
+       * lread.c (intern_1, intern_c_string_1, oblookup):
+       Simplify Vobarray checking.
        * font.c (font_intern_prop): Likewise.  Adjust comment.
        * w32font.c (intern_font_name): Likewise.
 
 
        Avoid calls to strlen in font processing functions.
        * font.c (font_parse_name, font_parse_xlfd, font_parse_fcname)
-       (font_open_by_name): Change to use length argument.  Adjust
-       users accordingly.
+       (font_open_by_name): Change to use length argument.
+       Adjust users accordingly.
        * font.h (font_open_by_name, font_parse_xlfd, font_unparse_xlfd):
        Adjust prototypes.
        * xfont.c (xfont_decode_coding_xlfd, font_unparse_xlfd):
        srclen argument and return the length of result.  Adjust users
        accordingly.
        (directory_file_name): Fix comment.  Change to add srclen argument,
-       swap 1st and 2nd arguments to obey the common convention.  Adjust
-       users accordingly.
+       swap 1st and 2nd arguments to obey the common convention.
+       Adjust users accordingly.
        * filelock.c (fill_in_lock_file_name): Avoid calls to strlen.
 
 2012-07-10  Glenn Morris  <rgm@gnu.org>
        Support truncation and continuation glyphs on GUI frames, when
        fringes are disabled.  (Bug#11832)
        * xdisp.c (init_iterator): Get dimensions of truncation and
-       continuation glyphs even if on GUI frames.  Adjust
-       it->last_visible_x on GUI frames when the left or right fringes,
+       continuation glyphs even if on GUI frames.
+       Adjust it->last_visible_x on GUI frames when the left or right fringes,
        or both, are absent.
        (start_display, move_it_in_display_line_to): Handle the case of a
        GUI frame without a fringe to display continuation or truncation
 
        Fix block vector allocation code to allow VECTOR_BLOCK_SIZE
        values which aren't power of 2.
-       * alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro.  Verify
-       it's value and the value of VECTOR_BLOCK_SIZE.  Adjust users
+       * alloc.c (VECTOR_FREE_LIST_SIZE_MASK): New macro.
+       Verify it's value and the value of VECTOR_BLOCK_SIZE.  Adjust users
        accordingly.
 
 2012-07-03  Stefan Monnier  <monnier@iro.umontreal.ca>
        * alloc.c (mark_buffer): Simplify.  Remove prototype.
        (mark_object): Add comment.  Reorganize marking of vector-like
        objects.  Use CHECK_LIVE for all vector-like objects except buffers
-       and subroutines when GC_CHECK_MARKED_OBJECTS is defined.  Avoid
-       redundant calls to mark_vectorlike for bool vectors.
+       and subroutines when GC_CHECK_MARKED_OBJECTS is defined.
+       Avoid redundant calls to mark_vectorlike for bool vectors.
 
 2012-06-30  Glenn Morris  <rgm@gnu.org>
 
        has at least microseconds now.  All uses removed.
        (update_frame, update_single_window, update_window, update_frame_1)
        (Fsleep_for, sit_for): Port to higher-resolution time stamps.
+       (duration_to_sec_usec): Remove; no longer needed.
 
        * editfns.c (time_overflow): Now extern.
        (Fcurrent_time, Fget_internal_run_time, make_time, lisp_time_argument)