From: Paul Eggert Date: Tue, 3 Mar 2015 22:29:22 +0000 (-0800) Subject: Merge from origin/emacs-24 X-Git-Tag: emacs-25.0.90~2564^2~242 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/f15c8583198c3d6c26ca0c0a5b6fb019f98d6c3c Merge from origin/emacs-24 ec26c23 authors.el: Add missing ignored and renamed files e589765 A more thorough fix for bug#19307 4e8d586 Fix last commit d6fee01 Tramp: Don't use a tempfile for ControlPath. 27e11c0 Fix display of overlay strings with faces after ellipsis (Bug#19307) e9a7e10 Fix redrawing of mode lines when exposed (Bug#19721) 50f3811 net/tramp.el (tramp-ssh-controlmaster-options): Use "%C" Conflicts: lisp/ChangeLog src/ChangeLog src/xdisp.c --- f15c8583198c3d6c26ca0c0a5b6fb019f98d6c3c diff --cc lisp/ChangeLog index db1358cd2f,e52f9a35b4..8083fb85ce --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@@ -1,4 -1,24 +1,25 @@@ -2015-02-04 Nicolas Petton ++2015-03-03 Nicolas Petton + + * emacs-lisp/authors.el (authors-ignored-files) + (authors-renamed-files-alist): Additions. + -2015-02-03 Michael Albinus ++2015-03-03 Michael Albinus + + * net/tramp.el (tramp-ssh-controlmaster-options): Don't use a + tempfile for ControlPath. (Bug#19702) + -2015-02-02 Michael Albinus ++2015-03-03 Michael Albinus + + * net/tramp.el (tramp-ssh-controlmaster-options): Use "%C" for + ControlPath if possible. (Bug#19702) + -2015-02-02 Glenn Morris ++2015-03-03 Glenn Morris + + * emacs-lisp/authors.el (authors-obsolete-files-regexps) + (authors-valid-file-names, authors-renamed-files-alist): Additions. + -2015-02-01 Alan Mackenzie ++2015-03-03 Alan Mackenzie +2015-03-03 Alan Mackenzie CC Mode: Stop Font Lock forcing fontification from BOL. Fixes debbugs#19669. diff --cc src/ChangeLog index 0bc5d650ca,8e7ab9363f..0a05b544d9 --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,6716 -1,1060 +1,6743 @@@ -2015-02-03 Eli Zaretskii ++2015-03-03 Eli Zaretskii + + * xdisp.c (handle_stop, handle_single_display_spec) + (next-element_from_image): Don't reset the + ignore_overlay_strings_at_pos_p flag here. + (next_element_from_buffer): Reset ignore_overlay_strings_at_pos_p + here. + (next_overlay_string): Set ignore_overlay_strings_at_pos_p here, + after we've exhausted all the overlay strings at the current + position. (Bug#19307) + -2015-02-02 Eli Zaretskii ++2015-03-03 Eli Zaretskii + + * xdisp.c (set_iterator_to_next): Set value of stop_charpos + according to the object we are about to resume iterating. + (Bug#19307) + + * dispnew.c (adjust_glyph_matrix): Set the update_mode_line flag + of the window whose current glyph matrix was resized, which + disables the mode-line row as side effect. + + * xdisp.c (redisplay_window): Don't avoid redisplay of a window + whose update_mode_line flag is set. (Bug#19721) + -2015-01-30 Eli Zaretskii ++2015-03-03 Eli Zaretskii + + * dispextern.h (FACE_FOR_CHAR): Fix the commentary. +2015-03-03 Daniel Colascione -2015-01-29 Hans Wennborg (tiny change) - - * emacs.c (decode_env_path): Add parentheses around ternary - operator to increase readability and pacify compiler warnings. + * alloc.c (syms_of_alloc): Rename `gc-precise-p' to `gc-precise'. -2015-01-29 Eli Zaretskii +2015-03-03 Paul Eggert - * w32.c (sys_readdir): Map ERROR_NOT_READY (as in "device not - ready") to ENOENT. + * alloc.c (run_finalizers): Omit unused local. + Also, redo newly-added code as per usual Emacs style. -2015-01-28 Eli Zaretskii +2015-03-03 Martin Rudalics - * dired.c (directory_files_internal, file_name_completion) - [WINDOWSNT]: Signal an error when errno is set non-zero by - 'readdir', regardless of its value. + * frame.c (adjust_frame_size): If the pixel sizes remain + unchanged but the number of lines or columns of the frame + changes, run `window--pixel-to-total' (Bug#19972). + (Qwindow_pixel_to_total): DEFSYM it. - * w32.c (sys_readdir): Set errno to ENOENT when the directory - doesn't exist and to EACCES when it's not accessible to the - current user. Set errno to zero when FindNextFile exhausts the - directory, so that callers don't interpret that as an error and - don't signal a file-error. - (open_unc_volume): Set errno to ENOENT if WNetOpenEnum fails. +2015-03-03 Daniel Colascione -2015-01-27 Eli Zaretskii + * print.c (print_object): Print whether a finalizer has + been called. - * dired.c (directory_files_internal) [WINDOWSNT]: If readdir - returns NULL and errno is ENOTDIR, behave as if opendir failed to - open the directory. (Bug#19701) + * data.c (Ftype_of): Make `type-of' work with finalizers. + (syms_of_data): Register Qfinalizer. - * w32.c (sys_readdir): If FindFirstFile fails because the - directory doesn't exist, set errno to ENOTDIR. +2015-03-02 Daniel Colascione -2015-01-24 Jan Djärv + * print.c (print_object): Print finalizers. - * nsterm.m (drawRect:): Add block/unblock_input (Bug#19660). + * alloc.c: + (finalizers, doomed_finalizers): New variables. + (init_finalizer_list, finalizer_insert, unchain_finalizer) + (mark_finalizer_list, queue_doomed_finalizers) + (run_finalizer_handler, run_finalizer_function, run_finalizers): + New functions. + (garbage_collect_1, mark_object, sweep_misc) + (init_alloc_once, syms_of_alloc): Support finalizers. + (gc-precise-p): New Lisp variable. -2015-01-21 Paul Eggert + * lisp.h (Lisp_Misc_Type): New value Lisp_Misc_Finalizer. + (FINALIZERP, XFINALIZER): New functions. + (Lisp_Finalizer): New structure. - Fix coding.c subscript error - * coding.c (CODING_ISO_INVOKED_CHARSET): - Avoid undefined behavior if CODING_ISO_INVOCATION returns negative. +2015-02-28 Paul Eggert - Backport: correct old fix for GTK font selection - * gtkutil.c (xg_get_font): Fix off-by-2 typo. - Fixes: bug#3228 + * character.c (alphabeticp, decimalnump): Avoid undefined behavior + if CATEGORY is not an integer, or is an integer out of + unicode_category_t range. -2015-01-21 Jan Djärv +2015-02-28 Martin Rudalics - * nsterm.m (EV_TRAILER2): Set Vinhibit_quit to Qt (Bug#19531). + * frame.c (make_initial_frame, Fmake_terminal_frame): Set + can_x_set_window_size and after_make_frame (Bug#19962). -2015-01-17 Eli Zaretskii +2015-02-28 Eli Zaretskii - * xdisp.c (produce_image_glyph): Fix display of images in R2L - screen lines: prepend the new glyph to the ones already there - instead of appending it. + * character.c (alphabeticp, decimalnump): New functions. + * character.h (alphabeticp, decimalnump): Add prototypes. -2015-01-14 Eli Zaretskii + * regex.c (ISALNUM, ISALPHA): Check Unicode character properties + for multibyte characters by calling alphabeticp and decimalnump. + (BIT_ALPHA, BIT_ALNUM): New bit masks. + (re_wctype_to_bit): Return them when the class is RECC_ALPHA or + RECC_ALNUM. + (re_match_2_internal): Call ISALPHA and ISALNUM when appropriate. + (Bug#19878) - * w32fns.c (w32_set_title_bar_text): New function, including - support for titles with non-ASCII characters outside of the - current system codepage. - (x_set_name, x_set_title): Use it. (Bug#19590) +2015-02-27 Jan Djärv -2015-01-10 Eli Zaretskii + * xterm.h (x_real_pos_and_offsets): Take outer_border as arg also. - * indent.c (Fvertical_motion): Return zero if we started from ZV - and there's an overlay after-string there. (Bug#19553) + * xmenu.c (x_menu_show): Adjust for new arg to x_real_pos_and_offsets. -2015-01-09 Eli Zaretskii + * xfns.c (x_real_pos_and_offsets): Take outer_border as arg also. + Initialize all args. Get outer_border from window attributes. + Fix typo for top_offset_y. + (x_real_positions): Adjust for new arg to x_real_pos_and_offsets. + (Fx_frame_geometry): Get outer_border also. Use attrs.width/height. - * emacs.c (usage_message): Fix the description of the -nl switch. - (Bug#19542) +2015-02-27 Mark Laws -2015-01-08 Eli Zaretskii + Support daemon mode on MS-Windows (bug#19688) + * emacs.c [WINDOWSNT]: New global var. + (main) [WINDOWSNT]: Initialize it to NULL. Create the event to + signal clients we are ready for connections. + (Fdaemon_initialized): Use DAEMON_RUNNING. + [WINDOWSNT]: MS-Windows specific code to signal clients we are + ready for connections. - * dispnew.c (buffer_posn_from_coords): Fix the value of the column - returned for right-to-left screen lines. (Before the change on - 2014-12-30, the incorrectly-computed X pixel coordinate concealed - this bug.) + * lisp.h (DAEMON_RUNNING): New macro, encapsulates Posix and + MS-Windows conditions for running in daemon mode. -2015-01-05 Eli Zaretskii + * minibuf.c (read_minibuf): Use DAEMON_RUNNING. - * xdisp.c (move_it_to, try_cursor_movement): Don't use the window - end information if the window_end_valid flag is unset. - (try_window_id): If the call to display_line invalidated the - window end information, give up the try_window_id optimization. - (Bug#19511) + * keyboard.c (kbd_buffer_get_event): Use DAEMON_RUNNING. -2015-01-04 Eli Zaretskii + * dispnew.c (init_display) [WINDOWSNT]: Initialize frames/terminal + even in daemon mode. - * w32fns.c (Fx_server_version, Fx_server_vendor): Doc fix. +2015-02-26 Jan Djärv - * xfns.c (Fx_server_version, Fx_server_vendor): Doc fix. + * xmenu.c (create_and_show_popup_menu): Call XTranslateCoordinates, + dont use OUTER_TO_INNER macros. + (x_menu_show): Call x_real_pos_and_offsets, don't use + OUTER_TO_INNER macros. - * emacs.c (syms_of_emacs) : Doc fix. - (Bug#19502) +2015-02-26 Eli Zaretskii -2014-12-30 Eli Zaretskii + * dispextern.h (FACE_FOR_CHAR): Fix the commentary. - * xdisp.c (pos_visible_p): Fix up the X coordinate for - right-to-left screen lines. (Bug#19473) +2015-02-26 Hans Wennborg (tiny change) -2014-12-28 Eli Zaretskii + * emacs.c (decode_env_path): Add parentheses around ternary + operator to increase readability and pacify compiler warnings. - * w32proc.c (Fw32_get_codepage_charset): Doc fix. (Bug#19458) +2015-02-26 Eli Zaretskii -2014-12-28 Paul Eggert + * w32.c (sys_readdir): Map ERROR_NOT_READY (as in "device not + ready") to ENOENT. - Port memory-full checking to GnuTLS 3.3 - Instead of using gnutls_global_set_mem_functions, check every call - to a GnuTLS function that might return an indication of memory - exhaustion. Suggested by Dmitry Antipov in: - http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html - * gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove. - (init_gnutls_functions): Do not load gnutls_global_set_mem_functions. - (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove. - All uses removed. - (check_memory_full): New function. - (emacs_gnutls_handshake, emacs_gnutls_handle_error) - (gnutls_make_error, Fgnutls_boot): Use it. - (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions. +2015-02-26 Paul Eggert -2014-12-25 Eli Zaretskii + * xfns.c (x_real_pos_and_offsets): Fix pointer signedness. - * xdisp.c (set_iterator_to_next) : Limit search in - composition_compute_stop_pos to the number of characters in the - string. (Bug#19435) - : Simplify code. +2015-02-25 Jan Djärv - * composite.c (composition_compute_stop_pos): If no composition - was found in a string before ENDPOS, and ENDPOS is the string end, - no need to back up to a safe point. + * xterm.h (struct x_output): Remove x_pixels_outer_diff, + y_pixels_outer_diff, FRAME_OUTER_TO_INNER_DIFF_X, + FRAME_OUTER_TO_INNER_DIFF_Y. Declare x_real_pos_and_offsets. - * dispextern.h (struct it) : Improve commentary. + * xmenu.c (create_and_show_popup_menu): Use XTranslateCoordinates + instead of OUTER_TO_INNER_DIFF macros. -2014-12-24 Jan Djärv + * xfns.c (x_real_pos_and_offsets): New function, basically the code + from x_real_positions. + (x_real_positions): Call x_real_pos_and_offsets. + (x_relative_mouse_position): Use XTranslateCoordinates instead of + OUTER_TO_INNER_DIFF macros. + (Fx_frame_geometry): Get offsets with x_real_pos_and_offsets, + border from window attributes. Adjust tool bar and menu widths. - * nsimage.m (allocInitFromFile:): Initialize bmRep. - (dealloc): Release bmRep. - (setPixmapData): Make bmRep local so class member is not - set (Bug#19133). - (setPixmapData): Rename local variable bmRep to avoid compiler - warning. + * w32fns.c (x_real_positions): Remove setting of x_pixels_diff, + y_pixels_diff. -2014-12-24 Jan Djärv + * frame.h (struct frame): Remove x_pixels_diff, y_pixels_diff. - * nsterm.h (EmacsImage): Remove imageListNext, refCount, reference, - imageListSetNext, imageListNext. +2015-02-25 Paul Eggert - * nsimage.m (ImageList, imageListNext, imageListSetNext:) - (reference): Remove. - (allocInitFromFile:): Remove searching ImageList and calling - reference (Bug#18918). - (dealloc): Remove handling if ImageList. + Backtrace after malloc arena is corrupted + Without this change, if the malloc arena is corrupted and then + 'backtrace' is called, the backtrace can crash because 'backtrace' + calls 'malloc'. For more, please see: + https://sourceware.org/ml/libc-alpha/2015-02/msg00678.html + * emacs.c (main): Initialize tables used by 'backtrace'. + * sysdep.c (emacs_backtrace): Document the newly used part of the API. -2014-12-22 Jan Djärv +2015-02-22 Jan Djärv - * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert - when going to fullscreen (Bug#19427). + * nsfns.m (Fx_frame_geometry): New function. + (syms_of_nsfns): Defsubr Sx_frame_geometry. -2014-12-18 Eli Zaretskii +2015-02-22 Paul Eggert - * window.c (Fwindow_body_width): Doc fix. (Bug#19395) + Spelling fixes + * lisp.h (DEFINE_NON_NIL_Q_SYMBOL_MACROS): + Rename from DEFINE_NONNIL_Q_SYMBOL_MACROS. All uses changed. -2014-12-15 Stefan Monnier +2015-02-21 Eli Zaretskii - * buffer.c (syms_of_buffer) : fix docstring. + * w32term.c (queue_notifications): + * w32inevt.c (handle_file_notifications): + * w32font.c (w32_enumfont_pattern_entity): Prefer 'Qfoo' to + 'intern ("foo")'. -2014-12-13 Eli Zaretskii +2015-02-21 Paul Eggert - * gnutls.c (gnutls_init): Fix deprecation warning from GCC. + Prefer 'Qfoo' to 'intern ("foo")' + * buffer.c (syms_of_buffer): + * bytecode.c (exec_byte_code): + * callint.c (Fcall_interactively): + * callproc.c (create_temp_file): + * charset.c (define_charset_internal): + * coding.c (syms_of_coding): + * editfns.c (syms_of_editfns): + * emacs.c (main): + * fns.c (syms_of_fns): + * frame.c (delete_frame, Fframe_parameters): + * keyboard.c (syms_of_keyboard): + * keymap.c (syms_of_keymap): + * minibuf.c (read_minibuf, syms_of_minibuf): + * nsfns.m (ns_cursor_type_to_lisp): + * textprop.c (syms_of_textprop): + * xdisp.c (Fformat_mode_line, syms_of_xdisp): + * xfns.c (x_create_tip_frame, Fx_select_font): + * xml.c (parse_region): + Prefer constants like 'Qfoo' to calls like 'intern ("foo")'. + * buffer.c (syms_of_buffer): OK to do (put 'erase-buffer 'disabled + t) here now ... + (keys_of_buffer): ... instead of here. + * ftfont.c (syms_of_ftfont): Move DEFSYM of Qmono from here ... + * xfns.c (syms_of_xfns): ... to here, since ftfont.c is more + optional than xfns.c. -2014-12-12 Eli Zaretskii +2015-02-20 Jan Djärv - * gnutls.c (Fgnutls_available_p, syms_of_gnutls): - Move gnutls-available-p out of the HAVE_GNUTLS conditional, and define - them only once. + * emacs.c (terminate_due_to_signal): Move totally_unblock_input after + setting fatal_error_in_progress, so gobble_input and *read_socket are + not read if there are pending_signals. -2014-12-11 Teodor Zlatanov +2015-02-20 Paul Eggert - * emacs.c (main): Always include gnutls.h and run syms_of_gnutls. + Simplify binary I/O configuration + * lread.c (Fload): Prefer FOPEN_TEXT and FOPEN_BINARY to #ifdef DOS_NT. + * sysstdio.h: Add copyright notice. Include . + (FOPEN_BINARY, FOPEN_TEXT): New macros. + * xfaces.c (Fx_load_color_file): Use FOPEN_TEXT, since POSIX + doesn't guarantee that "t" will work. - * gnutls.h: Always declare syms_of_gnutls. +2015-02-19 Eli Zaretskii - * gnutls.c (Fgnutls_available_p syms_of_gnutls): Move later for - clarity. Let the availability check return Qnil when the GnuTLS - integration is not available, instead of erroring out. - (Bug#19346) + * keyboard.c (read_char): Make sure this_single_command_key_start + is in sync with this_command_key_count, around the call to + input-method-function. (Bug#19774) -2014-12-10 Eli Zaretskii +2015-02-19 Fujii Hironori (tiny change) - * xdisp.c (move_it_in_display_line_to, display_line): - Don't disallow overflow-newline-into-fringe when word-wrap is in - effect. (Bug#19300) + * w32fns.c (w32_wnd_proc) : Pass the + message to DefWindowProc, after positioning the IME window, to + trigger its display. (Bug#11732) -2014-12-04 Lee Duhem (tiny change) +2015-02-18 Eli Zaretskii - * eval.c (Fsignal): Remove duplicate test. - (Fautoload_do_load): Fix up docstring. + * emacs.c (Fkill_emacs): Exit with specified exit code even if + stdin is at EOF. (Bug#19897) -2014-12-02 Jan Djärv +2015-02-18 Oscar Fuentes - * nsterm.m (represented_filename, represented_frame): New variables. - (ns_set_represented_filename): New function. - (sendEvent:): Set represented filename here to avoid flicker, - related to Bug#18757. + * keyboard.c (read_char): When there is an input method function, + do not restore the echo area if a prefix argument is being + introduced. (Bug#19875) - * nsterm.h: Declare ns_set_represented_filename. +2015-02-16 Kelly Dean - * nsfns.m (ns_set_name_as_filename): Don't set represented filename - at once, call ns_set_represented_filename instead. + * src/keyboard.c (timer_check_2): Fix incorrect comment. -2014-11-27 Eli Zaretskii +2015-02-14 Martin Rudalics - * xdisp.c (handle_single_display_spec): When ignoring a fringe - bitmap display, reset the ignore_overlay_strings_at_pos_p flag. - (next_element_from_buffer): When done with overlays, reset the - ignore_overlay_strings_at_pos_p flag. (Bug#19201) + * xterm.c (x_frame_normalize_before_maximize): Fix doc-string. + Suggested by Alan Mackenzie . -2014-11-25 Eli Zaretskii +2015-02-14 Eli Zaretskii - * w32fns.c (Fw32_shell_execute): Convert forward slashes in - DOCUMENT to backslashes, if DOCUMENT is a file. (Bug#19141) + * menu.c (Fx_popup_menu) [HAVE_X_WINDOWS]: Call + x_relative_mouse_position only for X frames. (Bug#19862) -2014-11-25 Ulrich Müller +2015-02-13 Paul Eggert - * Makefile.in (temacs$(EXEEXT)): Use consistent flag settings - for paxctl and setfattr. Fixes temacs startup failure with - grsecurity/PaX enabled Linux kernel (bug#19067). + Better support for future plugins + * lisp.h (DEFINE_LISP_SYMBOL): New macro, replacing and simplifying + DEFINE_LISP_SYMBOL_BEGIN / DEFINE_LISP_SYMBOL_END. All uses changed. + (DEFINE_NONNIL_Q_SYMBOL_MACROS): New macro, defaulting to true. -2014-11-17 Oscar Fuentes +2015-02-11 Martin Rudalics - * src/w32.c: Use MINGW_W64 instead of _W64. + * w32term.c (w32_read_socket): In SIZE_MAXIMIZED and + SIZE_RESTORED cases correctly handle `maximized' value for the + `fullscreen' parameter. Don't use 'maximized' frame parameter + any more. + (w32fullscreen_hook): Include menu bar height when calculating + new text height in FULLSCREEN_BOTH case. + * xterm.c (do_ewmh_fullscreen): Handle transition from + FULLSCREEN_BOTH to FULLSCREEN_MAXIMIZED when + x_frame_normalize_before_maximize is set. + +2015-02-10 Paul Eggert + + Use bool for boolean in xdisp.c + * dispextern.h (display_prop_intangible_p, resize_mini_window) + (pixel_to_glyph_coords, mark_window_display_accurate) + (compute_display_string_pos, handle_tool_bar_click) + (x_intersect_rectangles, clear_mouse_face, display_tty_menu_item): + * lisp.h (setup_echo_area_for_printing, message_with_string) + (pos_visible_p): Use bool for boolean. + * xdisp.c: Use bool, true, false intstead of int, 1, 0. + Remove unnecessary forward decls. + (trace_move) [DEBUG_TRACE_MOVE]: Now static. + (CHECK_IT, CHECK_WINDOW_END): + Now an inline function that is always defined. + (check_it) [0]: + (check_window_end) [oGLYPH_DEBUG && ENABLE_CHECKING]: + Remove; no longer needed. + (handle_stop): Prefer (X && !Y) to (X ? !Y : 0). + (get_overlay_strings): Omit unnecessary casts. + (forward_to_next_line_start): + (Ftool_bar_height): + Prefer !BOOL to (BOOL ? 0 : 1). + (next_element_function): New typedef. + (get_next_element): Use it. Now const. + (IT_POS_VALID_AFTER_MOVE_P): Prefer !X || Y==0 to (X ? Y==0 : 1). + (vmessage): Now ATTRIBUTE_FORMAT_PRINTF (1, 0), to pacify GCC 4.9.2 + (display_echo_area): Prefer BOOLEXPR to BOOLEXPR ? 1 : 0. + (tool_bar_item_info): Simplify. + (invisible_prop): Rename from invisible_p, since it doesn't + return bool. All callers changed. + (x_produce_glyphs): Simplify. + +2015-02-09 Paul Eggert + + Check for some overflows in vertical-motion + * indent.c (window_column_x): New function. + (Fvertical_motion): Use it to protect against integer overflow + when computing column. Prefer extract_float to doing things by hand. + Avoid unnecessary casts. + + * xfont.c: Minor style fixes + (xfont_list_pattern): Reindent to 80 cols and use Emacs-style comments. + Redo loop so that less indentation is needed. + +2015-02-09 Eli Zaretskii + + * indent.c (Fvertical_motion): Accept an additional argument + CUR-COL and use it as the starting screen coordinate. + * window.c (window_scroll_line_based, Fmove_to_window_line): All + callers of vertical-motion changed. + +2015-02-09 Dima Kogan + + * font.c (font_score): Remove unused variable assignment. + +2015-02-09 Dima Kogan + + * xfaces.c (realize_basic_faces): Don't set Qscalable_fonts_allowed to + t. + * font.c (font_score): Try to find a font without scaling first, + and only accept scalable fonts if we did not get a match (Bug#19117). + +2015-02-09 Stefan Monnier + + * keyboard.c (syms_of_keyboard): Use non-nil default value. + +2015-02-09 Paul Eggert + + Use C99's INFINITY and NAN macros + * lread.c: Include . + (string_to_number): Use INFINITY and NAN rather than rolling our own. + This avoids some runtime diagnostics when building with + gcc -fsanitize=undefined. + + Fix bidi_explicit_dir_char undefined behavior + * bidi.c (bidi_explicit_dir_char): Avoid subscript error when + argument is BIDI_EOB. This can happen in bidi_level_of_next_char. + + Better distinguish infinite from invalid times + * editfns.c (check_time_validity): New function. + (decode_time_components): Return int, not bool. + Return -1 (not 0) if the time is out of range. + All callers changed. + (lisp_time_struct, lisp_seconds_argument): Distinguish better + between time overflow and invalid time values. + +2015-02-08 Paul Eggert + + Minor tweaks to frame_size_history_add + * frame.c (frame_size_history_add): Don't assume length fits in 'int'. + Prefer XCAR and XCDR to Fcar and Fcdr when the arg is a cons. + (Fframe_after_make_frame): Simplify. + * gtkutil.c: Remove commented-out code. + * xfns.c (Fx_create_frame): Fix indenting. + +2015-02-08 Eli Zaretskii + + * frame.c (Fframe_parameter): Don't replace a non-nil value of + foreground-color or background-color parameters with a nil value. + (Bug#19802) + +2015-02-08 Stefan Monnier + + * data.c (Findirect_function): Like `symbol-function', don't signal an + error for void functions any more. + +2015-02-07 Martin Rudalics + + * frame.c (frame_size_history_add): New function. + (frame_inhibit_resize): Consider frame_inhibit_implied_resize + only after frame's after_make_frame slot is true. + Inhibit resizing fullwidth-/height frames in one direction only. + Update frame_size_history. + (adjust_frame_size): Call frame_size_history_add. + (make_frame): Initalize after_make_frame slot. + (Fmake_terminal_frame): Adjust adjust_frame_size call. + (Fcan_run_window_configuration_change_hook): Rename to + Fframe_after_make_frame. Set after_make_frame slot. + Return second argument. + (x_set_frame_parameters): Postpone handling fullscreen parameter + until after width and height parameters have been set. + Apply width and height changes only if can_x_set_window_size is true. + Update frame_size_history. + (Qadjust_frame_size_1, Qadjust_frame_size_2) + (Qadjust_frame_size_3, QEmacsFrameResize, Qframe_inhibit_resize) + (Qx_set_fullscreen, Qx_check_fullscreen, Qx_set_window_size_1) + (Qxg_frame_resized, Qxg_frame_set_char_size_1) + (Qxg_frame_set_char_size_2, Qxg_frame_set_char_size_3) + (Qxg_change_toolbar_position, Qx_net_wm_state) + (Qx_handle_net_wm_state, Qtb_size_cb, Qupdate_frame_tool_bar) + (Qfree_frame_tool_bar): New symbol for updating frame_size_history. + (Qtip_frame, Qterminal_frame): New symbols. + (Vframe_adjust_size_history): Rename to frame_size_history. + * frame.h (struct frame): + Rename can_run_window_configuration_change_hook slot to + after_make_frame. + (frame_size_history_add): Extern. + * gtkutil.c (xg_frame_resized): Call frame_size_history_add. + Don't set FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT here. + (xg_frame_set_char_size): Try to preserve the status of + fullwidth/-height frames. Call frame_size_history_add. + (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar) + (xg_change_toolbar_position): Call frame_size_history_add. + * w32fns.c (x_change_tool_bar_height): Handle frame's fullscreen + status. + (Fx_create_frame): Process fullscreen parameter after frame has + been resized. + (x_create_tip_frame): Pass Qtip_frame to adjust_frame_size. + (Fx_frame_geometry): Don't pollute pure storage. + * w32term.c (w32_read_socket): For WM_WINDOWPOSCHANGED, + WM_ACTIVATE and WM_ACTIVATEAPP set frame's visibility before + calling w32fullscreen_hook. For WM_DISPLAYCHANGE call + w32fullscreen_hook immediately. + (x_fullscreen_adjust, x_check_fullscreen): Remove. + (w32fullscreen_hook): Call change_frame_size just as with a + "normal" frame resize operation. Call do_pending_window_change. + (x_set_window_size): Try to handle fullwidth and fullheight more + accurately. Don't rely on w32_enable_frame_resize_hack. + (w32_enable_frame_resize_hack): Remove variable. + * widget.c (EmacsFrameResize): Remove dead code. + Call frame_size_history_add + * window.c (run_window_configuration_change_hook): + Check f->after_make_frame instead of + f->can_run_window_configuration_change_hook. + * xfns.c (x_change_tool_bar_height): Handle frame's fullscreen status. + (Fx_create_frame): Process fullscreen parameter after frame has + been resized. + (Fx_frame_geometry): Don't pollute pure storage. + * xterm.c (x_net_wm_state, x_handle_net_wm_state): + Call frame_size_history_add. + (do_ewmh_fullscreen): Handle x_frame_normalize_before_maximize. + (x_check_fullscreen): Count in menubar when calling + XResizeWindow. Wait for ConfigureNotify event. + Call frame_size_history_add. + (x_set_window_size_1): Remove PIXELWISE argument. Try to handle + changing a fullheight frame's width or a fullwidth frame's + height. Call frame_size_history_add. + (x_set_window_size): Simplify xg_frame_set_char_size and + x_set_window_size_1 calls. + (x_frame_normalize_before_maximize): New variable. + +2015-02-07 Paul Eggert + + Remove no-longer-used cursor_in_echo_area code + * dispnew.c (set_window_cursor_after_update, update_frame_1): + Remove checks for negative cursor_in_echo_area, since this var is + a boolean, and has been a boolean for some time. Simplify. + * dispnew.c (init_display): + * xdisp.c (message3_nolog, vmessage): Use bool for boolean. + +2015-02-05 Stefan Monnier + + * eval.c (Ffunction): Handle the new (:documentation ...) form. + (syms_of_eval): Declare `:documentation'. + +2015-02-05 Martin Rudalics + + * xdisp.c (Fwindow_text_pixel_size): Remove optional BUFFER + argument added on 2015-02-01. + +2015-02-04 Paul Eggert + + Remove no-longer-used two_byte_p calculations + * dispextern.h (struct glyph_string): Remove member two_byte_p. + All uses removed. + * xdisp.c (get_glyph_face_and_encoding): Remove arg two_byte_p. + All callers changed. - * src/w32term.c: Likewise. +2015-02-03 Paul Eggert -2014-11-16 Stefan Monnier + Omit unnecessary var if GTK or NS + * frame.c, frame.h (frame_default_tool_bar_height) [USE_GTK||HAVE_NS]: + Now a constant zero on these platforms. - * frame.c (Fhandle_switch_frame): Deactivate shift-region (bug#19003). +2015-02-01 Martin Rudalics -2014-11-15 Jan Djärv + * xdisp.c (Fwindow_text_pixel_size): Add optional argument BUFFER. - * nsterm.m (ns_send_appdefined): Check for application defined - event on Cocoa (Bug#18993). Backport from trunk. +2015-01-31 Eli Zaretskii -2014-11-15 Eli Zaretskii + * coding.c (raw_text_coding_system_p): New function. - * window.c (window_scroll_pixel_based): Avoid truncation/rounding - errors in computing the number of pixels to scroll. - Suggested by Kelly Dean . (Bug#19060) + * keyboard.c (read_decoded_event_from_main_queue): Use it when the + keyboard coding-system is 'raw-text'. (Bug#19532) -2014-11-15 Jan Djärv + * coding.h (raw_text_coding_system_p): Add prototype. - * nsmenu.m (update_frame_tool_bar): If tool bar changes height, - call updateFrameSize. +2015-01-31 Andreas Schwab - * nsterm.m (setFrame:): Remove call to display (Bug#18757). + * Makefile.in (gl-stamp): Generate globals.h through the use of + move-if-change. + (globals.h): Replace with empty command. -2014-11-14 Jan Djärv +2015-01-31 Eli Zaretskii - * nsfns.m (x_set_foreground_color, x_set_background_color) - (x_set_cursor_color, Fxw_color_values): Block/unblock input, - use SET_FRAME_GARBAGED instead of redraw_frame (Bug#19036). + * keyboard.c (kbd_buffer_store_event_hold): Ignore FOCUS_OUT_EVENT + and ICONIFY_EVENT for the purposes of breaking while-no-input + loops. (Bug#19547) -2014-11-09 Eli Zaretskii + * dired.c (read_dirent): Correct the "MSDOS hacks" hack: the + special code for errno = ENOENT or EACCES is needed for WINDOWSNT, + not for MSDOS. - * fileio.c (Finsert_file_contents): Invalidate buffer caches also - when the inserted text does not need decoding. (Bug#18982) +2015-01-31 Paul Eggert - * w32heap.c (allocate_heap): Set the lower limit of heap at 8MB. - (Bug#18995) + Simplify read_dirent's MSDOS hacks + * dired.c (read_dirent): Simplify by removing the need for the + DIR_ENTRY argument. All callers changed. This separates the + MS-DOS idiosyncrasies better from the rest of the code. -2014-11-09 Jan Djärv +2015-01-30 Eli Zaretskii - * nsterm.h (EmacsScroller): judge returns bool. + * dired.c (read_dirent): Accept an additional argument + FIRST_ENTRY. If readdir fails with ENOENT or EACCES the first + time it is called, report the error as if it happened in + open_directory. + (directory_files_internal, file_name_completion): Adjust callers + or read_dirent. - * nsterm.m (ns_set_vertical_scroll_bar): Release bar. - (ns_judge_scroll_bars): Only set removed if judge returns true. - (judge): Returns bool == condemned. Remove self from window. - (setPosition:portion:whole:): Remove raise SIGIO (Bug#18757). +2015-01-30 Paul Eggert -2014-11-08 Jan Djärv + Refactor calls to opendir for simplicity + * dired.c (open_directory): Accept Lisp_Object, not char *, for + dirname. Signal an error if the open fails. All callers changed. - * nsterm.m (init): Replace OSX 10.9 check with IMPL_COCOA. - (run): Ditto. Only use non-system event loop if OSX version is - exactly 10.9 (Bug#18993). - (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless - needed (Bug#18757). +2015-01-29 Paul Eggert -2014-11-07 Michael Albinus + Report readdir failures + Previously, on non-MS-Windows platforms the code treated most + readdir failures as EOF. This was incorrect, e.g., when readdir + fails with errno == EOVERFLOW. Signal an error instead. + * dired.c (read_dirent): + New function, which signals an error when readdir fails. + (directory_files_internal, file_name_completion): Use it. - * callproc.c (encode_current_directory): Support handling of file - names prepended by "/:". (Bug#18891) +2015-01-29 Eli Zaretskii -2014-11-06 Alan Mackenzie + Use bool for boolean in w32menu.c, w32font.c, w32uniscribe.c. + * w32uniscribe.c (uniscribe_list, uniscribe_match): Use bool where + appropriate. - * syntax.c (back_comment): Fix off-by-one error (bug#18022). + * w32font.c (struct font_callback_data, w32font_list_internal) + (w32font_driver, w32font_match_internal): Use bool where appropriate. -2014-11-06 Dima Kogan + * w32menu.c (x_activate_menubar, set_frame_menubar) + (w32_dialog_show, initialize_frame_menubar, w32_menu_show) + (is_simple_dialog): Use bool where appropriate. - * xgselect.c (xg_select): Use g_main_context_acquire (bug#18861). +2015-01-28 Paul Eggert -2014-11-05 Michael Albinus + Use bool, not int, to track face changes + * xfaces.c (face_change): Rename from face_change_count, and + change from int to bool. The var is now true (instead of nonzero) + if attributes have changed; this is simpler. All uses changed. + (Bug#19698) - * dired.c (Ffile_attributes): Return Qnil, if Fexpand_file_name - raises an error. (Bug#18891) +2015-01-28 Eli Zaretskii -2014-11-03 Eli Zaretskii + * dired.c (directory_files_internal, file_name_completion) + [WINDOWSNT]: Signal an error when errno is set non-zero by + 'readdir', regardless of its value. - * xdisp.c (Fdump_glyph_matrix, Fdump_frame_glyph_matrix): Doc fix. - (Fdump_frame_glyph_matrix): Don't segfault if invoked on a GUI - frame; instead, print an error message. + * w32.c (sys_readdir): Set errno to ENOENT when the directory + doesn't exist and to EACCES when it's not accessible to the + current user. Set errno to zero when FindNextFile exhausts the + directory, so that callers don't interpret that as an error and + don't signal a file-error. + (open_unc_volume): Set errno to ENOENT if WNetOpenEnum fails. -2014-11-03 Jan Djärv + * dired.c (directory_files_internal) [WINDOWSNT]: If readdir + returns NULL and errno is ENOTDIR, behave as if opendir failed to + open the directory. (Bug#19701) - * nsfns.m (ns_set_doc_edited): Check for FRAME_NS (Bug#18925). + * w32.c (sys_readdir): If FindFirstFile fails because the + directory doesn't exist, set errno to ENOTDIR. -2014-10-31 Jan Djärv +2015-01-28 Jan Djärv - * macfont.m (macfont_glyph_extents): Turn off syntetic bold - if force_integral_p (i.e. no antialias). - (macfont_draw): Check ns_antialias_text, also turn off syntetic - bold if no antialias (Bug#18876). + * nsterm.m (drawRect:): Add block/unblock_input (Bug#19660). - * emacs.c (main): Don't chdir to $HOME on Cocoa if --chdir - was given (Bug#18846). +2015-01-28 Paul Eggert -2014-10-30 Jan Djärv + Fix coding.c subscript error + * coding.c (CODING_ISO_INVOKED_CHARSET): + Avoid undefined behavior if CODING_ISO_INVOCATION returns negative. - * nsterm.h (ns_set_doc_edited): Declare taking no args. +2015-01-28 Eli Zaretskii - * nsfns.m (ns_set_doc_edited): Do all logic (check frames) here - instead of in xdisp.c, function now takes void. (Bug#18884). + * xdisp.c (produce_image_glyph): Fix display of images in R2L + screen lines: prepend the new glyph to the ones already there + instead of appending it. - * xdisp.c (prepare_menu_bars): Remove HAVE_NS code. - (redisplay_internal): Call ns_set_doc_edited if HAVE_NS (Bug#18884). + * w32fns.c (w32_set_title_bar_text): New function, including + support for titles with non-ASCII characters outside of the + current system codepage. + (x_set_name, x_set_title): Use it. (Bug#19590) - * nsterm.h (EmacsScroller): Replace Lisp_Object win with - struct window* (Bug#18889). - Remove getMouseMotionPart. - (ns_output): Make icon_top/left int. + * indent.c (Fvertical_motion): Return zero if we started from ZV + and there's an overlay after-string there. (Bug#19553) - * nsfns.m (x_icon): icon_top/left is int. + * emacs.c (usage_message): Fix the description of the -nl switch. + (Bug#19542) - * nsterm.m (ns_mouse_position): Remove unused code. - (initFrame:window:, dealloc): Use window instead of win. - (getMouseMotionPart:window:x:y:): Remove, unused. - (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window. + * xdisp.c (move_it_to, try_cursor_movement): Don't use the window + end information if the window_end_valid flag is unset. + (try_window_id): If the call to display_line invalidated the + window end information, give up the try_window_id optimization. + (Bug#19511) -2014-10-30 Samuel Bronson + * w32fns.c (Fx_server_version, Fx_server_vendor): Doc fix. + * xfns.c (Fx_server_version, Fx_server_vendor): Doc fix. - * unexmacosx.c (copy_data_segment): Port to GCC 4.6+ (Bug#9927). + * emacs.c (syms_of_emacs) : Doc fix. (Bug#19502) -2014-10-28 Eli Zaretskii +2015-01-28 Stefan Monnier - * fileio.c (Fexpand_file_name): Use make_unibyte_string, not - build_string, when importing a home directory. (Bug#18873) + * lisp.mk (lisp): Add cl-preloaded. -2014-10-26 Eli Zaretskii +2015-01-27 Paul Eggert - * dispnew.c (buffer_posn_from_coords): - Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to - account for the header-line height. (Bug#18839) + Use bool for boolean in xfaces.c + * dispextern.h: Adjust to signature changes. + * font.c (font_at, font_range): + * fontset.c (Finternal_char_font): + * fringe.c (draw_fringe_bitmap_1): + * xdisp.c (handle_face_prop, face_before_or_after_it_pos) + (get_next_display_element, highlight_trailing_whitespace) + (display_string, calc_line_height_property) + (note_mode_line_or_margin_highlight, note_mouse_highlight): + * xfaces.c (tty_suppress_bold_inverse_default_colors_p) + (menu_face_changed_default, recompute_basic_faces) + (Fbitmap_spec_p, parse_rgb_list, tty_lookup_color) + (tty_defined_color, defined_color, face_color_gray_p) + (face_color_supported_p, load_color2, load_face_colors) + (Fx_list_fonts, LFACEP, push_named_merge_point) + (resolve_face_name, lface_from_face_name_no_resolve) + (lface_from_face_name, get_lface_attributes_no_remap) + (get_lface_attributes, lface_fully_specified_p) + (set_lface_from_font, merge_face_vectors, merge_named_face) + (merge_face_ref, Finternal_make_lisp_face) + (Finternal_lisp_face_p, Finternal_copy_lisp_face) + (Finternal_set_lisp_face_attribute) + (update_face_from_frame_parameter, set_font_frame_param) + (face_boolean_x_resource_value) + (Finternal_set_lisp_face_attribute_from_resource) + (x_update_menu_appearance, Finternal_get_lisp_face_attribute) + (Finternal_merge_in_global_face, Fface_font, face_attr_equal_p) + (lface_equal_p, Finternal_lisp_face_equal_p) + (Finternal_lisp_face_empty_p, lface_same_font_attributes_p) + (Fcolor_distance, lookup_named_face, lookup_basic_face) + (lookup_derived_face, Fface_attributes_as_vector) + (x_supports_face_attributes_p, tty_supports_face_attributes_p) + (Fdisplay_supports_face_attributes_p, realize_basic_faces) + (realize_default_face, realize_named_face) + (realize_non_ascii_face, realize_x_face, map_tty_color) + (realize_tty_face, compute_char_face, face_at_buffer_position) + (face_for_overlay_string, face_at_string_position): + Use bool for boolean. + * xfaces.c (set_lface_from_font): + Return void, since callers never use the result. -2014-10-22 YAMAMOTO Mitsuharu +2015-01-26 Andreas Schwab - * xdisp.c (draw_glyphs): Set clipping to highlight boundaries. - [Backport] - (erase_phys_cursor): Fix confusion between window-relative and - text area-relative x-coordinates. [Backport] + * image.c (lookup_pixel_color): Reorder conditions that are + written backwards. + (x_to_xcolors): Likewise. + (x_detect_edges): Likewise. + (png_load_body): Likewise. + (gif_close): Likewise. + (gif_load): Likewise. -2014-10-20 Glenn Morris +2015-01-25 Eli Zaretskii - * minibuf.c (history-length): Increase default from 30 to 100. - [Backport] + Use bool for boolean in w32term.c + * w32term.c (x_update_window_begin, x_update_window_end) + (x_update_end, x_after_update_window_line) + (x_set_glyph_string_gc, x_draw_glyph_string_background) + (x_draw_glyph_string_foreground) + (x_draw_composite_glyph_string_foreground) + (x_draw_glyphless_glyph_string_foreground) + (x_draw_image_glyph_string, x_draw_glyph_string) + (x_draw_stretch_glyph_string, note_mouse_movement) + (w32_mouse_position, x_scroll_bar_report_motion) + (x_horizontal_scroll_bar_report_motion, w32_read_socket) + (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar) + (w32_draw_window_cursor, x_new_font, x_set_offset) + (x_set_window_size, x_make_frame_invisible, x_iconify_frame): + Use bool where appropriate. + + Use bool for boolean in w32fns.c + * w32fns.c (w32_defined_color, x_decode_color) + (Fxw_color_defined_p, Fxw_color_values, x_set_icon_type) + (x_set_menu_bar_lines, x_change_tool_bar_height) + (x_set_internal_border_width, x_explicitly_set_name) + (x_implicitly_set_name, Fx_create_frame, w32_window) + (x_create_tip_frame, Fx_show_tip): Use bool where appropriate. + +2015-01-25 Paul Eggert + + Use bool for boolean in xfns.c + * xfaces.c (x_update_menu_appearance): + * xfns.c (x_real_positions, x_defined_color, x_decode_color) + (xg_set_icon, xg_set_icon_from_xpm_data, x_set_cursor_color) + (x_set_icon_type, x_set_icon_name, x_set_menu_bar_lines) + (x_change_tool_bar_height, x_set_internal_border_width) + (x_encode_text, x_set_name_internal, x_explicitly_set_name) + (x_implicitly_set_name, x_default_scroll_bar_color_parameter) + (hack_wm_protocols, xic_create_fontsetname, xic_free_xfontset) + (x_window, x_icon, Fx_wm_set_size_hint, Fx_create_frame) + (Fxw_color_defined_p, Fxw_color_values, x_create_tip_frame) + (Fx_show_tip, clean_up_file_dialog, Fx_file_dialog) + (clean_up_dialog, syms_of_xfns): + * xterm.h (xg_set_icon, xg_set_icon_from_xpm_data) + (xic_create_fontsetname): + Use bool for boolean. + * xfns.c: Include bitmaps/gray.xbm unconditionally. + + Count MANY function args more reliably + * alloc.c (Fgc_status, purecopy, unbind_to, garbage_collect_1): + * buffer.c (Fbuffer_list, Fkill_buffer): + * callint.c (read_file_name, Fcall_interactively): + * charset.c (Fset_charset_priority, syms_of_charset): + * chartab.c (uniprop_encode_value_numeric): + * coding.c (syms_of_coding): + * composite.c (syms_of_composite): + * data.c (wrong_range): + * dbusbind.c (syms_of_dbusbind): + * dired.c (file_attributes): + * editfns.c (Fdecode_time, update_buffer_properties, format2): + * eval.c (run_hook_with_args_2, apply1, call1, call2, call3) + (call4, call5, call6, call7): + * fileio.c (Finsert_file_contents, choose_write_coding_system) + (Fcar_less_than_car, build_annotations, auto_save_error): + * filelock.c (get_boot_time): + * fns.c (internal_equal, nconc2, Fyes_or_no_p, Fwidget_apply): + (maybe_resize_hash_table, secure_hash): + * font.c (font_style_to_value, font_open_by_name, Flist_fonts): + * fontset.c (fontset_add, Fset_fontset_font): + * ftfont.c (ftfont_lookup_cache): + * gtkutil.c (xg_get_font): + * insdel.c (signal_before_change, signal_after_change): + * keymap.c (append_key): + * lread.c (load_warn_old_style_backquotes, Fload, init_lread): + * minibuf.c (Fread_buffer): + * print.c (print_preprocess): + * process.c (Fformat_network_address, Fmake_network_process) + (server_accept_connection): + * sound.c (Fplay_sound_internal): + * term.c (Fsuspend_tty, Fresume_tty): + * window.c (window_list): + * xdisp.c (run_redisplay_end_trigger_hook, add_to_log) + (message_with_string): + * xfaces.c (Fx_list_fonts): + * xfont.c (syms_of_xfont): + * xselect.c (x_handle_selection_request) + (x_handle_selection_clear, x_clear_frame_selections) + (x_clipboard_manager_error_1): + Prefer CALLMANY and CALLN to counting args by hand. + * doc.c (reread_doc_file): Remove unused code. + * fns.c (concat2, concat3): Redo to avoid need for local-var vector. + (cmpfn_user_defined, hashfn_user_defined, Fmaphash): + Prefer call1 and call2 to Ffuncall. + * keyboard.c (safe_run_hook_funcall, safe_run_hooks): + Use struct literal rather than a local var, for simplicity. + * keymap.c (where_is_internal): Use NULL rather than a pointer + to unused args. + * lisp.h (CALLMANY, CALLN): New macros. + * sound.c (Fplay_sound_internal): Coalesce duplicate code. + Fixes: bug#19634 + + Use gnustep-config if available + * emacs.c [NS_IMPL_GNUSTEP]: Don't include . + It doesn't appear to be needed, and the inclusion breaks on + Ubuntu 14.10 when 'configure' uses 'gnustep-config'. + +2015-01-22 Eli Zaretskii + + * xdisp.c (init_iterator): Restore a comment lost in transition. + +2015-01-22 Paul Eggert + + Use bool for boolean in xfont.c, xftfont.c, xgselect.c + * xfont.c (xfont_driver, xfont_chars_supported) + (xfont_text_extents): + * xftfont.c (xftfont_get_colors, xftfont_open) + (xftfont_prepare_face, xftfont_done_face) + (xftfont_cached_font_ok): + * xgselect.c (xg_select): + Use bool for boolean. + + Don't downcase system diagnostics' first letters + * fileio.c (report_file_errno): Don't downcase, and simplify. + Fixes: bug#19642 + + Isolate NIL_IS_ZERO-assuming code better + Suggested by Stefan Monnier in: + http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00588.html + * alloc.c (allocate_pseudovector): + Use memclear, not memsetnil, to remove a 'verify'. + * callint.c (Fcall_interactively): + * dispnew.c (realloc_glyph_pool): + * xdisp.c (init_iterator): + Use memclear, not memset, to remove a 'verify'. + * lisp.h (memclear): Rename from memsetnil, and take a byte + count rather than a word count. All callers changed. + +2015-01-20 Paul Eggert + + Undo port to hypothetical nonzero Qnil case + This mostly undoes the previous change in this area. See: + http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00570.html + * alloc.c (allocate_pseudovector): + * callint.c (Fcall_interactively): + * dispnew.c (realloc_glyph_pool): + * fringe.c (init_fringe): + * lisp.h (memsetnil): + * xdisp.c (init_iterator): + Simplify by assuming that Qnil is zero, but verify the assumption. + * lisp.h (NIL_IS_ZERO): Revert back to this symbol, removing + NIL_IS_NONZERO. All uses changed. + +2015-01-20 Jan Djärv + + * nsterm.m (EV_TRAILER2): Set Vinhibit_quit to Qt (Bug#19531). + +2015-01-20 Dmitry Antipov + + Prefer xlispstrdup to avoid dumb calls to strlen. + * nsfont.m (ns_get_family): + * nsterm.m (ns_term_init): + * w32fns.c (w32_window): + * xfns.c (x_window, Fx_select_font): Use xlispstrdup. + +2015-01-20 Paul Eggert + + Correct an old fix for GTK font selection + * gtkutil.c (xg_get_font): Fix off-by-2 typo. + Fixes: bug#3228 + + Fix minor bugs with printing null bytes + * minibuf.c (read_minibuf_noninteractive): + * xdisp.c (Ftrace_to_stderr) [GLYPH_DEBUG]: + Work even if the Lisp string contains a null byte. + + Port to hypothetical case where Qnil is nonzero + * alloc.c (allocate_pseudovector): + * callint.c (Fcall_interactively): + * coding.c (syms_of_coding): + * dispnew.c (realloc_glyph_pool): + * fringe.c (init_fringe): + * lisp.h (memsetnil): + * xdisp.c (init_iterator): + Port to the currently-hypothetical case where Qnil is nonzero. + * dispnew.c (adjust_glyph_matrix): Remove unnecessary verification, + as there are no Lisp_Object values in the data here. + * lisp.h (NIL_IS_NONZERO): New symbol, replacing NIL_IS_ZERO. + All uses changed. Define only if not already defined, so that one + can debug with -DNIL_IS_NONZERO. + * xdisp.c (init_iterator): Remove unnecessary initializations to 0. + +2015-01-19 Eli Zaretskii + + * dispnew.c (adjust_glyph_matrix, realloc_glyph_pool): Verify that + Qnil is represented as zero, before using that to initialize parts + of the glyph structure. + + * xdisp.c (init_iterator): Verify that Qnil is represented as + zero, before using that to initialize parts of the iterator + structure. + +2015-01-19 Paul Eggert + + Prefer memset to repeatedly assigning Qnil + * alloc.c (allocate_pseudovector): Catch more bogus values. + * alloc.c (allocate_pseudovector): + * callint.c (Fcall_interactively): + * coding.c (syms_of_coding): + * fringe.c (init_fringe): + Verify that Qnil == 0. + * callint.c (Fcall_interactively): + * eval.c (Fapply, Ffuncall): + * fns.c (mapcar1, larger_vector): + * font.c (font_expand_wildcards): + * fringe.c (init_fringe): + Prefer memset to assigning zeros by hand. + * callint.c (Fcall_interactively): + Remove duplicate assignment of Qnil to args[i]. + * coding.c (syms_of_coding): + Prefer LISP_INITIALLY_ZERO to assigning zeros by hand. + * fileio.c (Ffile_selinux_context): + Rewrite to avoid need for Lisp_Object array. + * lisp.h (XLI_BUILTIN_LISPSYM): New macro. + (DEFINE_LISP_SYMBOL_END): Use it. + (NIL_IS_ZERO): New constant. + (memsetnil): New function. + +2015-01-16 Dmitry Antipov + + Tune pseudovector allocation assuming Qnil == 0. + * alloc.c (allocate_pseudovector): Use memset for both + Lisp_Objects and regular slots. Add zerolen arg. + * lisp.h (allocate_pseudovector): Adjust prototype. + (ALLOCATE_PSEUDOVECTOR): Adjust user. + (ALLOCATE_ZEROED_PSEUDOVECTOR): New macro. + (allocate_hash_table, allocate_window, allocate_frame) + (allocate_process, allocate_terminal): Remove prototypes. + * fns.c (allocate_hash_table): Now static here. + * frame.c (allocate_frame): + * process.c (allocate_process): + * terminal.c (allocate_terminal): + * window.c (allocate_window): Now static here. + Use ALLOCATE_ZEROED_PSEUDOVECTOR. Add comment. + + * lisp.h (XTERMINAL): Add eassert. + * process.c (make_lisp_proc): Now static here. + + Prefer INLINE functions in font.h to match style used in lisp.h. + * font.h (FONTP, FONT_SPEC_P, FONT_ENTITY_P, FONT_OBJECT_P) + (CHECK_FONT, CHECK_FONT_SPEC, CHECK_FONT_ENTITY, CHECK_FONT_OBJECT) + (XFONT_SPEC, XFONT_ENTITY, XFONT_OBJECT, CHECK_FONT_GET_OBJECT): + Now functions. + * font.c (Ffont_otf_alternates, Fquery_font, Ffont_get_glyphs): + * ftfont.c (ftfont_shape): + * macfont.m (macfont_shape): + * w32uniscribe.c (uniscribe_shape): + * xftfont.c (xftfont_shape): Adjust CHECK_FONT_GET_OBJECT users. + +2015-01-16 Paul Eggert + + Give up on -Wsuggest-attribute=const + * decompress.c (Fzlib_available_p): + * gnutls.c (Fgnutls_available_p): + * gtkutil.h (xg_uses_old_file_dialog): + * xdisp.c (Ftool_bar_height): + * xmenu.c (popup_activated): + No longer const, since it's not const on at lest some + configurations, and we shouldn't lie to the compiler. + +2015-01-15 Eli Zaretskii + + * fileio.c: Include binary-io.h. + (Fset_binary_mode): New function. + (syms_of_fileio): Defsubr it. + (syms_of_fileio) : DEFSYM them. + +2015-01-15 Teodor Zlatanov + + * gnutls.c (init_gnutls_functions): Import gnutls_x509_crt_check_issuer. + (Fgnutls_peer_status): Use it to set the :self-signed flag. + Rename the previous :self-signed to :unknown-ca. (Bug#19404) + (Fgnutls_peer_status_warning_describe): Explain :unknown-ca flag. + +2015-01-14 Eli Zaretskii + + * w32fns.c (w32_wnd_proc): Ignore MENUITEMINFO's dwItemData data + when FLAGS indicate the item is not highlighted. (Bug#19596) + +2015-01-14 Martin Rudalics + + * xmenu.c (update_frame_menubar): Remove garbaged code. + +2015-01-14 Paul Eggert + + remove_slash_colon need not be inline + * process.c, process.h (remove_slash_colon): No longer inline. + This saves text bytes without hurting runtime performance. + +2015-01-14 Dmitry Antipov + + Avoid extra multibyteness check in ENCODE_FILE users. + * callproc.c (encode_current_directory, Fcall_process, call_process): + * dired.c (directory_files_internal, file_name_completion): + Do not check for STRING_MULTIBYTE because encode_file_name + is a no-op for unibyte strings. + + * process.h (remove_slash_colon): New function. + * callproc.c (encode_current_directory, call_process): + * process.c (Fstart_process): Use it. + + Consistently handle time zone specification. + * editfns.c (decode_time_zone): New function, refactored out from ... + (Fencode_time): ... adjusted user. + (Fset_time_zone_rule): Use decode_time_zone. + + * editfns.c (make_buffer_string_both): If requested range intersects + the gap, don't move the latter but copy in two regions, thus avoiding + unnecessary relocation of buffer data. + +2015-01-14 Paul Eggert + + Use bool for boolean in xmenu.c, xml.c + * xmenu.c (x_menu_set_in_use, popup_get_selection) + (Fx_menu_bar_open_internal, popup_widget_loop) + (x_activate_menubar, xg_crazy_callback_abort) + (update_frame_menubar, set_frame_menubar) + (initialize_frame_menubar, free_frame_menubar) + (create_and_show_popup_menu, x_menu_show) + (create_and_show_dialog, x_dialog_show): + * xml.c (libxml2_loaded_p, init_libxml2_functions, parse_region) + (Flibxml_parse_html_region, Flibxml_parse_xml_region): + * xrdb.c (main) [TESTRM]: + * xsettings.c (init_gsettings): + * xterm.c (XFillRectangle, xg_scroll_callback) + (xg_end_scroll_callback): + * xterm.h (x_menu_set_in_use) [USE_GTK || USE_MOTIF]: + Use bool for boolean. + * xmenu.c (TRUE): Remove; no longer used. + (show_help_event): Remove long-unused code. + (set_frame_menubar): Remove "#if 1" and corresponding "#endif" lines. + +2015-01-13 Paul Eggert + + Don't say Fnext_read_file_uses_dialog_p is const + It's const only if a windowing system is not used; don't say it's + const otherwise. See: + http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00310.html + * fileio.c (next_read_file_uses_dialog_p): Remove. + Move guts back to ... + (Fnext_read_file_uses_dialog_p): ... here. + Don't declare as const, as make-docfile.c now has a special case + for this function. This is an ugly hack, but it's better than + lying to the compiler. + + Remove now-unnecessary forward XTYPE decl + * lisp.h (XTYPE): Remove forward declaration. The recent merge + from emacs-24 fixed the problem in a better way, by moving XPNTR's + definition to after XTYPE's. + +2015-01-13 Eli Zaretskii + + Fix problems with 32-bit wide-int build exposed by MinGW. + * lisp.h (XPNTR): Move definition to after XTYPE, to avoid + compilation error in an unoptimized build when !USE_LSB_TAG. + + * w32heap.c (DUMPED_HEAP_SIZE): For 32-bit wide-int build, use the + same larger value as for the 64-bit build. + + * w32term.h (SCROLL_BAR_PACK): Cast the result to UINT_PTR to + avoid compiler warnings. + + * w32proc.c (Fw32_get_codepage_charset, Fw32_set_keyboard_layout): + Avoid compiler warnings about cast from integer to pointer of + different size. + + * w32menu.c (menubar_selection_callback, w32_menu_show): Cast to + UINT_PTR instead of EMACS_INT, to avoid compiler warnings about + casting from integer to pointer of different size. + (add_menu_item): Pass the help-echo string as a pointer to + Lisp_String, not as a Lisp_Object. + (w32_menu_display_help): Use make_lisp_ptr to reconstruct a Lisp + string object from its C pointer. + + * w32fns.c (w32_msg_pump) : Use + make_lisp_ptr instead of XIL, to reconstruct a Lisp_Cons from its + C pointer. + : msg.lparam is now a C integer. + (Fx_create_frame): Type-cast the result of XFASTINT to avoild + compiler warnings about size differences. + (Fw32_unregister_hot_key): Pass the tail of w32_grabbed_keys as a + pointer to a Lisp_Cons struct, not as a disguised EMACS_INT. + (Fw32_toggle_lock_key): Pass the new state of the key as a C + integer; use -1 for nil. Doc fix. + + * .gdbinit (xgetsym): New subroutine. + (xsymname, xsymbol): Use it. + (xprintsym): No need to call xgetptr. + +2015-01-13 Martin Rudalics + + * frame.c (adjust_frame_size): Make sure new numbers of + lines/columns get installed after font size change (Bug#19575). + +2015-01-13 Dmitry Antipov + + Add DEFUN attributes. + * callint.c (Finteractive): + * character.c (Fcharacterp, Fmax_char): + * data.c (Feq, Fnull, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp) + (Fstringp, Fchar_or_string_p, Fintegerp, Fnatnump, Fnumberp) + (Ffloatp, Fbyteorder): + * decompress.c (Fzlib_available_p): + * fns.c (Fidentity): + * frame.c (Fframe_windows_min_size): + * gnutls.c (Fgnutls_error_p, Fgnutls_available_p): + * window.c (Fwindow__sanitize_window_sizes): + * xdisp.c (Ftool_bar_height): + * xfaces.c (Fface_attribute_relative_p): Add const attribute. + * emacs.c (Fkill_emacs): + * eval.c (Fthrow): + * keyboard.c (Ftop_level, Fexit_recursive_edit) + (Fabor_recursive_edit): Add noreturn attribute. + + * search.c (fast_string_match_internal): New function, + consolidated from... + (fast_string_match, fast_string_match_ignore_case): ...functions + which are... + * lisp.h (fast_string_match, fast_string_match_ignore_case): + inlined from here now. + (fast_string_match_internal): Add prototype. + * dired.c (file_name_completion): Use fast_string_match_internal. + + * fileio.c (next_read_file_uses_dialog_p): New workaround ... + (Fnext_read_file_uses_dialog_p): ... called from here to avoid + ATTRIBUTE_CONST dependency from #ifdefs. For details, see + http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00289.html. + +2015-01-12 Paul Eggert + + Port to 32-bit MingGW --with-wide-int + Problem reported by Eli Zaretskii in: + http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00265.html + * lisp.h (struct Lisp_Sub_Char_Table): Check that offset matches + what we think it is, rather than checking only its alignment (and + doing so incorrectly on MinGW). + +2015-01-12 Dmitry Antipov + + * fileio.c (Ffile_name_as_directory, Fdirectory_file_name): + Remove dead NILP check. + * image.c (Flookup_image): Use regular format for docstring. + * keyboard.c (apply_modifiers_uncached): Use stpcpy. + +2015-01-12 Martin Rudalics + + * dispnew.c (change_frame_size_1): Pass Qchange_frame_size to + adjust_frame_size. + * frame.c (frame_default_tool_bar_height): New variable. + (adjust_frame_size): Possibly add requested adjustment to + Vframe_adjust_size_history. + (make_frame): Initialize tool_bar_redisplayed_once slot. + (Fset_frame_height, Fset_frame_width, Fset_frame_size): Clarify + doc-string. Call adjust_frame_size unconditionally (the frame's + text size may remain unaltered but the pixel size may change). + (x_figure_window_size): If frame_default_tool_bar_height was + set, use it instead of calculating the tool bar height from + DEFAULT_TOOL_BAR_IMAGE_HEIGHT. Don't set + Vframe_initial_frame_tool_bar_height. + (Qchange_frame_size, Qxg_frame_set_char_size) + (Qset_window_configuration, Qx_create_frame_1) + (Qx_create_frame_2): New symbols. + (Vframe_initial_frame_tool_bar_height): Remove. + (Vframe_adjust_size_history): New history variable for debugging + frame size adjustments. + * frame.h (struct frame): New boolean slot + tool_bar_redisplayed_once. + (frame_default_tool_bar_height): Extern. + * gtkutil.c (xg_frame_set_char_size): Pass Qxg_frame_set_char_size + to adjust_frame_size. + * nsfns.m (Fx_create_frame): Pass Pass Qx_create_frame_1 and + Qx_create_frame_2 to adjust_frame_size. + * w32fns.c (x_change_tool_bar_height): Call adjust_frame_size with + inhibit 1 when we have not redisplayed the tool bar yet. + (Fx_create_frame): Pass Pass Qx_create_frame_1 and + Qx_create_frame_2 to adjust_frame_size. + * w32menu.c (set_frame_menubar): Simplify adjust_frame_size + call. + * window.c (Fset_window_configuration): + Pass Qset_window_configuration to adjust_frame_size. + * xdisp.c (redisplay_tool_bar): Assign new height to + frame_default_tool_bar_height. + (redisplay_internal): If we haven't redisplayed this frame's + tool bar, call redisplay_tool_bar early so we can adjust the + frame size accordingly. + * xfns.c (x_change_tool_bar_height): Call adjust_frame_size with + inhibit 1 when we have not redisplayed the tool bar yet. + (Fx_create_frame): Pass Pass Qx_create_frame_1 and + Qx_create_frame_2 to adjust_frame_size. + +2015-01-12 Paul Eggert + + Have 'make' output better GEN names + * Makefile.in (gl-stamp, globals.h): Simplify by putting the new + contents of globals.h into gl-stamp. This lets us use AM_V_GEN + more naturally so that 'make' can output more-accurate names. + +2015-01-11 Stefan Monnier + + * buffer.c (init_buffer_once): Initialize buffer_local_flags before + calling reset_buffer_local_variables, and make sure we initialize + it completely. + +2015-01-11 Dmitry Antipov + + * coding.c (Fcoding_system_plist): Use common style for docstring. + +2015-01-11 Paul Eggert + + Port to MSB hosts without optimization + E.g., when configuring --with-wide-int CFLAGS='-O0' on x86, + the inline function XTYPE needs to be declared before being used. + * lisp.h (XTYPE): New forward declaration. + +2015-01-10 Paul Eggert + + Port to 32-bit --with-wide-int + Prefer symbol indexes to struct Lisp_Symbol * casted and then + widened, as the latter had trouble with GCC on Fedora 21 when + configured --with-wide-int and when used in static initializers. + * alloc.c (garbage_collect_1, which_symbols): + * lread.c (init_obarray): + Prefer builtin_lisp_symbol when it can be used. + * dispextern.h (struct image_type.type): + * font.c (font_property_table.key): + * frame.c (struct frame_parm_table.sym): + * keyboard.c (scroll_bar_parts, struct event_head): + * xdisp.c (struct props.name): + Use the index of a builtin symbol rather than its address. + All uses changed. + * lisp.h (TAG_SYMPTR, XSYMBOL_INIT): Remove, replacing with ... + (TAG_SYMOFFSET, SYMBOL_INDEX): ... new macros that deal with + symbol indexes rather than pointers, and which work better on MSB + hosts because they shift right before tagging. All uses changed. + (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END): + No longer noops on wide-int hosts, since they work now. + (builtin_lisp_symbol): New function. + + Port to HAVE_FREETYPE && !HAVE_XFT + * dispextern.h (struct face.extra) [HAVE_FREETYPE && !HAVE_XFT]: + * font.h (syms_of_xftfont) [HAVE_FREETYPE && !HAVE_XFT]: + Declare in this case too. + +2015-01-10 Eli Zaretskii + + * w32fns.c (Fw32_register_hot_key): Use XINT instead of XLI. + + * w32notify.c (Fw32notify_add_watch, w32_get_watch_object): + Use make_pointer_integer instead of XIL. + (Fw32notify_rm_watch): Use XINTPTR instead of XLI. + + * w32inevt.c (handle_file_notifications): Use make_pointer_integer + instead of XIL. Put a list of the descriptor, action, and file + name in event->arg, instead of spreading them between event->code + and event->arg. + + * w32term.c (queue_notifications): Use make_pointer_integer + instead of XIL. Put a list of the descriptor, action, and file + name in event->arg, instead of spreading them between event->code + and event->arg. + + * keyboard.c (kbd_buffer_get_event) [HAVE_W32NOTIFY]: Adjust Lisp + event creation to changes in w32term.c and w32inevt.c above. + +2015-01-09 Paul Eggert + + Port Qnil==0 changes to 32-bit --with-wide-int + * lisp.h (lisp_h_XSYMBOL, XSYMBOL): Assume USE_LSB_TAG in the + macro-implemented version. For the non-USE_LSB_TAG case, supply + a new inline function that is the inverse of the new TAG_SYMPTR. + (lisp_h_XUNTAGBASE, XUNTAGBASE): Remove. All uses removed. + (TAG_SYMPTR) [!USE_LSB_TAG]: If the pointer subtraction yields a + negative number, don't allow sign bits to bleed into the encoded + value. Shift in zero bits instead. + + Refactor pointer-to-integer conversion + * gfilenotify.c (monitor_to_lisp, lisp_to_monitor): + Rename and move to lisp.h. All uses changed. + * lisp.h (XINTPTR, make_pointer_integer): New inline functions, + which are renamed from gfilenotify.c's lisp_to_monitor and + monitor_to_lisp, and with more-generic void * signatures. + +2015-01-08 Eli Zaretskii + + * dispnew.c (buffer_posn_from_coords): Fix the value of the column + returned for right-to-left screen lines. (Before the change on + 2014-12-30, the incorrectly-computed X pixel coordinate concealed + this bug.) + + * .gdbinit (xsymname): New subroutine. + (xprintsym, initial-tbreak): Use it to access the name of a symbol + in a way that doesn't cause GDB to barf when it tries to + dereference a NULL pointer. + + * xdisp.c (next_element_from_c_string): Use Lisp integer zero as + the object. + (set_cursor_from_row, try_cursor_movement, dump_glyph) + (insert_left_trunc_glyphs, append_space_for_newline) + (extend_face_to_end_of_line, highlight_trailing_whitespace) + (find_row_edges, ROW_GLYPH_NEWLINE_P, Fmove_point_visually) + (Fbidi_resolved_levels, produce_special_glyphs) + (rows_from_pos_range, mouse_face_from_buffer_pos) + (note_mouse_highlight): Use nil as the object for glyphs inserted + by the display engine, and test with NILP instead of INTEGERP. + (Bug#19535) + + * w32fns.c (Fx_show_tip): Use NILP to test for glyphs inserted by + the display engine. + + * xfns.c (Fx_show_tip): Use NILP to test for glyphs inserted by + the display engine. + + * dispextern.h (struct glyph, struct it): Update comments for the + OBJECT members. + +2015-01-08 Paul Eggert + + Port new Lisp symbol init to x86 --with-wide-int + * lisp.h (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END): + Define to empty on platforms where EMACS_INT_MAX != INTPTR_MAX, as + GCC (at least) does not allow a constant initializer to widen an + address constant. + + * lisp.h (TAG_SYMPTR): Don't do arithmetic on NULL. + This is a followup to the "Port Qnil==0 XUNTAG to clang" patch. + Although clang doesn't need it, some other compiler might, and + it's easy enough to be safe. + + * conf_post.h (ATTRIBUTE_ALLOC_SIZE): Port to clang 3.5.0. + Apparently clang removed support for the alloc_size attribute. + + Port Qnil==0 XUNTAG to clang + clang has undefined behavior if the program subtracts an integer + from (char *) 0. Problem reported by YAMAMOTO Mitsuharu in: + http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00132.html + * lisp.h (lisp_h_XUNTAG) [USE_LSB_TAG]: + (XUNTAG) [!USE_LSB_TAG]: Port to clang 3.5.0. + + Port GFileMonitor * hack to Qnil==0 platforms + Reported by Glenn Morris in: http://bugs.gnu.org/15880#112 + * gfilenotify.c (monitor_to_lisp, lisp_to_monitor): New functions. + (dir_monitor_callback, Fgfile_add_watch, Fgfile_rm_watch): Use them. + +2015-01-06 Jan Djärv + + * nsterm.m (x_set_window_size): Call updateFrameSize to get real + size instead of using widht/height. The frame may be constrained. + +2015-01-05 Paul Eggert + + * lisp.h (XSYMBOL): Parenthesize id in forward decl. + Needed when neither optimizing nor inlining. + Also, sort decls alphabetically. + +2015-01-05 Eli Zaretskii + + * w32proc.c, w32.h, w32fns.c, w32font.c, w32menu.c, w32notify.c: + * w32proc.c, w32select.c, w32term.c, w32uniscribe.c: Remove + declarations of Q* variables that represent symbols. + +2015-01-05 Paul Eggert + + Use 0 for Qnil + Fixes Bug#15880. + If USE_LSB_TAG, arrange for the representation of Qnil to be zero so + that NILP (x) is equivalent to testing whether x is 0 at the + machine level. The overall effects of this and the previous patch + shrink the size of the text segment by 2.3% and speeds up + compilation of all the .elc files by about 0.5% on my platform, + which is Fedora 20 x86-64. + * lisp.h (lisp_h_XPNTR, lisp_h_XSYMBOL, lisp_h_XUNTAG) + (make_lisp_symbol) [USE_LSB_TAG]: + Symbols now tag the difference from lispsym, not the pointer. + (lisp_h_XUNTAGBASE, TAG_SYMPTR): New macros. + (Lisp_Int0, Lisp_Int1, Lisp_Symbol, Lisp_Misc, Lisp_String, Lisp_Cons): + Renumber so that Lisp_Symbol is 0, so that Qnil is zero. + (XSYMBOL): New forward decl. + (XUNTAGBASE): New function. + (XUNTAG): Use it. + + Compute C decls for DEFSYMs automatically + Fixes Bug#15880. + This patch also makes Q constants (e.g., Qnil) constant addresses + from the C point of view. + * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle.c: + * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c: + * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c: + * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c: + * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c: + * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c: + * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m: + * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c: + * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c: + * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c: + * xselect.c, xsettings.c, xterm.c: + Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs). + These names are now defined automatically by make-docfile. + * alloc.c (init_symbol): New function. + (Fmake_symbol): Use it. + (c_symbol_p): New function. + (valid_lisp_object_p, purecopy): Use it. + * alloc.c (marked_pinned_symbols): + Use make_lisp_symbol instead of make_lisp_ptr. + (garbage_collect_1): Mark lispsym symbols. + (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro. + (mark_object): Use it. + (sweep_symbols): Sweep lispsym symbols. + (symbol_uses_obj): New function. + (which_symbols): Use it. Work for lispsym symbols, too. + (init_alloc_once): Initialize Vpurify_flag here; no need to wait, + since Qt's address is already known now. + (syms_of_alloc): Add lispsym count to symbols_consed. + * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0), + when testing whether storage is all bits zero. + * dispextern.h (struct image_type): + * font.c (font_property_table): + * frame.c (struct frame_parm_table, frame_parms): + * keyboard.c (scroll_bar_parts, struct event_head): + * xdisp.c (struct props): + Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and + Lisp_Object *, since Qfoo is no longer an object whose address can be + taken. All uses changed. + * eval.c (run_hook): New function. Most uses of Frun_hooks changed to + use it, so that they no longer need to take the address of a Lisp sym. + (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable. + * frame.c (syms_of_frame): Add defsyms for the frame_parms table. + * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here. + DEFSYM Qdeactivate_mark before the corresponding var. + * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line + instead of interning their symbols; this avoids duplicates. + (LISP_INITIALLY, TAG_PTR) + (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT): + New macros. + (LISP_INITIALLY_ZERO): Use it. + (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol) + (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*): + Move decls up, to avoid forward uses. Include globals.h earlier, too. + (make_lisp_symbol): New function. + (XSETSYMBOL): Use it. + (DEFSYM): Now just a placeholder for make-docfile. + * lread.c (DEFINE_SYMBOLS): Define, for globals.h. + (intern_sym): New function, with body taken from old intern_driver. + (intern_driver): Use it. Last arg is now Lisp integer, not ptrdiff_t. + All uses changed. + (define_symbol): New function. + (init_obarray): Define the C symbols taken from lispsym. + Use plain DEFSYM for Qt and Qnil. + * syntax.c (init_syntax_once): No need to worry about + Qchar_table_extra_slots. + +2015-01-04 Paul Eggert + + 'temacs -nw' should not call missing functions + Without this patch, "temacs -nw" fails with the diagnostic + "emacs: Symbol's function definition is void: frame-windows-min-size" + and messes up the tty's state. + * frame.c (Fframe_windows_min_size): New placeholder function. + (syms_of_frame): Define it. + * window.c (Fwindow__sanitize_window_sizes): New placeholder. + (syms_of_window): Define it. + + Less 'make' chatter for lisp dir + * Makefile.in (%.elc): Adjust to compile-onefile change in + ../lisp/Makefile.in. + + batch write-region no longer says "Wrote FOO" + This cuts down on 'make' chatter a bit. + * fileio.c (Fwrite_region): + Don't output "Wrote /whatever/foo.elc" if noninteractive. + +2015-01-03 Paul Eggert + + Revert previous change to produce_composite_glyph + * term.c (produce_composite_glyph): Revert previous change (Bug#19496). + + Pacify gcc -Wparentheses + * frame.c (x_set_frame_parameters): Add parens (Bug#19428). + +2015-01-03 Martin Rudalics + + * frame.c (x_set_frame_parameters): Call Fset_frame_size only if + f->can_x_set_window_size is true. + * xterm.c (x_set_window_size_1): Call change_frame_size with + text sizes instead of pixel sizes (Bug#19428). + +2015-01-01 Eli Zaretskii + + * xdisp.c (pos_visible_p): Fix up the X coordinate for + right-to-left screen lines. (Bug#19473) + +2015-01-01 Eli Zaretskii + + * w32proc.c (Fw32_get_codepage_charset): Doc fix. (Bug#19458) + +2014-12-31 Paul Eggert + + Simplify setfattr use by assuming GNU make + * Makefile.in (PAXCTL_if_present, SETFATTR_if_present): New macros. + (emacs$(EXEEXT), temacs$(EXEEXT), bootstrap-emacs$(EXEEXT)): Use them. + Simplify by using GNU make rather than shell conditionals, + by using ln -f rather than rm -f followed by ln, + and by preferring $@ to spelling out the destination. + +2014-12-29 Eli Zaretskii + + * sysdep.c [WINDOWSNT]: Include sys/socket.h, without which this + file doesn't compile on MS-Windows. + +2014-12-29 Paul Eggert + + Allow return value of system-name to vary. (Bug#19438) + * filelock.c (current_lock_owner): + * xrdb.c (get_environ_db): + * xterm.c (same_x_server): + * xterm.c (x_term_init): + Prefer (system-name) to system-name, and avoid naming + locals 'system-name'. + * editfns.c (cached_system_name): New static var. + (init_and_cache_system_name): New function. + (init_editfns, Fsystem_name): Use it. + (syms_of_editfns): Initialize it and Vsystem_name to the same value. + * sysdep.c [HAVE_SOCKETS]: Don't include , . + (h_errno) [TRY_AGAIN && !HAVE_H_ERRNO]: Remove decl. + (init_system_name) [HAVE_SOCKETS]: Don't canonicalize the name. + Don't create a new string if the current value is already correct. + +2014-12-28 Paul Eggert + + Fix produce_composite_width typo + * term.c (produce_composite_glyph): + Fix typo that confused number of columns for pixel width. + +2014-12-28 Paul Eggert + + Wrap dll functions more simply + * decompress.c, gnutls.c, image.c, xml.c: + If WINDOWSNT, use '#define FOO fn_FOO' to wrap dll functions, + rather than the inverse when not WINDOWSNT. This isolates the + fn_* business into the WINDOWSNT-specific section of the code, + which makes it easier to maintain the generic code. + * decompress.c (DEF_ZLIB_FN, LOAD_ZLIB_FN): + * gnutls.c (DEF_GNUTLS_FN, LOAD_GNUTLS_FN): + * image.c (DEF_IMGLIB_FN, LOAD_IMGLIB_FN): + * xml.c (DEF_XML2_FN, LOAD_XML2_FN): + Remove. All uses replaced by DEF_DLL_FN. + * decompress.c (inflateInit2): Remove; no longer needed. + * w32.h (DEF_DLL_FN, LOAD_DLL_FN): New macros. + + Port memory-full checking to GnuTLS 3.3 + Instead of using gnutls_global_set_mem_functions, check every call + to a GnuTLS function that might return an indication of memory + exhaustion. Suggested by Dmitry Antipov in: + http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html + * gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove. + (init_gnutls_functions): Do not load gnutls_global_set_mem_functions. + (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove. + All uses removed. + (check_memory_full): New function. + (emacs_gnutls_handshake, emacs_gnutls_handle_error) + (gnutls_make_error, gnutls_certificate_details, Fgnutls_peer_status) + (Fgnutls_boot): Use it. + (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions. + +2014-12-27 Paul Eggert + + Fix parse_settings to match internal documentation + * xsettings.c (parse_settings): Return the number of settings seen. + Count the settings changes accurately. + (read_settings): Don't confuse number of settings changes with + the return code from XGetWindowProperty. + +2014-12-27 Eli Zaretskii + + * xdisp.c (set_iterator_to_next) : Limit search in + composition_compute_stop_pos to the number of characters in the + string. (Bug#19435) + : Simplify code. + + * composite.c (composition_compute_stop_pos): If no composition + was found in a string before ENDPOS, and ENDPOS is the string end, + no need to back up to a safe point. + + * dispextern.h (struct it) : Improve commentary. + +2014-12-27 Jan Djärv + + * nsimage.m (allocInitFromFile:): Initialize bmRep. + (dealloc): Release bmRep. + (setPixmapData): Make bmRep local so class member is not + set (Bug#19133). + (setPixmapData): Rename local variable bmRep to avoid compiler + warning. + +2014-12-27 Jan Djärv + + * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert + when going to fullscreen (Bug#0x180004f). + +2014-12-27 Eli Zaretskii + + * window.c (Fwindow_body_width): Doc fix. (Bug#19395) + +2014-12-27 Stefan Monnier + + * buffer.c (syms_of_buffer) : fix docstring. + +2014-12-27 Eli Zaretskii + + * gnutls.c (gnutls_init): Fix deprecation warning from GCC. + +2014-12-26 Paul Eggert + + Use bool for boolean in xselect.c, xsettings.c + * xselect.c (x_get_local_selection, struct selection_data) + (x_selection_request_lisp_error, struct prop_location) + (x_handle_selection_request, x_convert_selection) + (waiting_for_other_props_on_window, expect_property_change) + (wait_for_property_change, x_handle_property_notify) + (x_get_foreign_selection, x_get_window_property) + (receive_incremental_selection) + (x_get_window_property_as_lisp_data) + (lisp_data_to_selection_data, Fx_get_selection_internal) + (x_send_client_event): + * xselect.c, xterm.h (x_handle_dnd_message): + * xsettings.c (dpyinfo_valid, parse_settings, read_settings) + (apply_xft_settings, read_and_apply_settings) + (xft_settings_event, init_gsettings, init_xsettings) + (syms_of_xsettings): + Use bool for boolean. + * xselect.c (x_get_window_property): Omit last arg, which was an + unused boolean. + * xsettings.c (apply_xft_settings): Remove 2nd arg, which was + always true. All callers changed. + +2014-12-26 Eli Zaretskii + + * w32proc.c (sys_spawnve, get_lcid_callback): Use strcpy instead + of strcat. + + * w32menu.c (add_menu_item): Use stpcpy instead of strcat. + + * w32.c (sys_readdir, stat_worker, symlink): Use strcpy instead of + strcat. + +2014-12-26 Paul Eggert + + Use bool for boolean in xsmfns.c + * xsmfns.c, xterm.h (x_session_have_connection): + * xsmfns.c (doing_interact, smc_interact_CB, Fhandle_save_session): + Use bool for boolean. + (x_session_initialize, Fhandle_save_session): + Prefer NILP (x) to EQ (x, Qnil). + +2014-12-25 Paul Eggert + + * callproc.c (child_setup): + * dbusbind.c (xd_signature_cat): + * doc.c (get_doc_string, Fsnarf_documentation): + * editfns.c (Fuser_full_name): + * frame.c (xrdb_get_resource): + * gtkutil.c (xg_get_file_with_chooser): + * tparam.c (tparam1): + * xfns.c (xic_create_fontsetname): + * xrdb.c (gethomedir, get_user_db, get_environ_db): + * xsmfns.c (smc_save_yourself_CB): + Rewrite to avoid the need for strcat, typically by using stpcpy + and/or lispstpcpy. strcat tends to be part of O(N**2) algorithms. + * doc.c (sibling_etc): + * xrdb.c (xdefaults): + Now a top-level static constant. + +2014-12-23 Didier Verna (tiny change). + + * nsselect.m (Fns_selection_owner_p): Return a Lisp boolean, not a + C one (Bug#19396). + +2014-12-22 Jan Djärv + + * xterm.c (x_bitmap_icon): Partly revert change from 2014-03-21 which + breaks icon setting for Gtk+ except for initial frame (Bug#19403). + +2014-12-22 Paul Eggert + + Use bool for boolean in xterm.c + * frame.h, nsterm.m, w32term.c, w32term.h, xterm.c: + (x_set_window_size, x_bitmap_icon): + * nsterm.m (ns_frame_raise_lower, x_new_font): + * termhooks.h (struct terminal.toggle_invisible_pointer_hook) + (struct terminal.frame_raise_lower_hook): + * w32term.c (w32_frame_raise_lower): + * xterm.c, xterm.h (x_text_icon): + * xterm.c (x_update_window_begin, x_update_window_end) + (x_update_end, x_after_update_window_line) + (x_set_glyph_string_gc, x_draw_glyph_string_background) + (x_draw_glyph_string_foreground) + (x_draw_composite_glyph_string_foreground) + (x_alloc_lighter_color, x_draw_relief_rect) + (x_draw_glyph_string_box, x_draw_image_relief) + (x_draw_image_glyph_string, x_draw_stretch_glyph_string) + (x_draw_underwave, x_draw_glyph_string, x_show_hourglass) + (x_hide_hourglass): + (XFillRectangle) [HAVE_GTK3]: + (XTtoggle_invisible_pointer, frame_highlight, frame_unhighlight) + (x_focus_changed, x_find_modifier_meanings, note_mouse_movement) + (XTmouse_position, xt_action_hook, xt_horizontal_action_hook) + (x_send_scroll_bar_event, xm_scroll_callback) + (xg_scroll_callback, xaw_jump_callback, xaw_scroll_callback) + (x_create_toolkit_scroll_bar) + (x_create_horizontal_toolkit_scroll_bar) + (x_set_toolkit_horizontal_scroll_bar_thumb, x_scroll_bar_create) + (x_scroll_bar_set_handle, XTset_vertical_scroll_bar) + (XTset_horizontal_scroll_bar, x_scroll_bar_expose) + (x_scroll_bar_handle_click, x_scroll_bar_note_movement) + (x_scroll_bar_report_motion) + (x_horizontal_scroll_bar_report_motion, x_net_wm_state) + (handle_one_xevent, XTread_socket, x_draw_bar_cursor) + (x_draw_window_cursor, x_clear_errors) + (x_trace_wire, x_new_font, x_set_offset, wm_supports) + (set_wm_state, x_set_sticky, get_current_wm_state) + (do_ewmh_fullscreen, x_handle_net_wm_state) + (x_check_expected_move, x_sync_with_move, x_wait_for_event) + (x_set_window_size_1, XTframe_raise_lower) + (x_make_frame_visible, x_iconify_frame) + (x_timeout_atimer_activated_flag, same_x_server, x_display_ok) + (x_term_init, x_process_timeouts, x_activate_timeout_atimer) + (x_delete_terminal, x_initialize, syms_of_xterm): + Use bool for boolean. + +2014-12-20 Paul Eggert + + * composite.h (struct composition.width): Now int + instead of unsigned short, as we prefer signed integers. + + Let charset tick grow past USHRT_MAX + * charset.c, charset.h (charset_ordered_list_tick): + Now EMACS_UINT, not unsigned short. + * fontset.c (reorder_font_vector): Allow the tick to grow to the + maximum representable Emacs integer value before wrapping it around. + + Simplify unexec file mode setting + * unexaix.c, unexcoff.c, unexelf.c, unexmacosx.c: + Don't include when no longer needed. + (unexec): Create file with correct mode in the first place, + rather than overwriting the mode later and fiddling with the + global umask in the mean time. Avoid bogus usage like + 'umask (777)', which should have been 'umask (0777)'. + (mark_x): Remove. All callers removed. + +2014-12-19 Paul Eggert + + Minor cleanups for Lisp objects and symbols + * alloc.c (next_vector, set_next_vector): + * lisp.h (lisp_h_INTEGERP, make_number, XFASTINT, make_natnum): + (lisp_h_make_number) [USE_LSB_TAG]: + Use Lisp_Int0 instead of the mystery constant 0. + * alloc.c (mark_object): Always set and use po; that's simpler. + (CHECK_LIVE, CHECK_ALLOCATED_AND_LIVE): + Properly parenthesize definientia. + * bidi.c (bidi_initialize): + * buffer.c (init_buffer_once): + * nsfns.m (syms_of_nsfns): + * nsmenu.m (syms_of_nsmenu): + * nsselect.m (syms_of_nsselect): + Prefer DEFSYM to defining by hand. + * buffer.c (syms_of_buffer): Omit unneeded staticpros. + * data.c: Fix too-long line. + * lisp.h (DECLARE_GDB_SYM): New macro. + (DEFINE_GDB_SYMBOL_BEGIN): Use it. + (DEFINE_GDB_SYMBOL_BEGIN, DEFINE_GDB_SYMBOL_END) [!MAIN_PROGRAM]: + Declare the symbol, so it's visible to everywhere lisp.h is included. + Move forward decls as far forward as they can go, + to allow future changes to use them. + +2014-12-18 Paul Eggert + + * gnutls.c: Include gnutls.h. + This to check syms_of_gnutls's API even when !HAVE_GNUTLS. + * image.c (svg_load): Fix pointer signedness. + +2014-12-18 Martin Rudalics + + * frame.c (frame_windows_min_size): New argument IGNORE. + (adjust_frame_size): When called from change_frame_size call + frame_windows_min_size with IGNORE Qt so we can ignore size + restrictions. + +2014-12-18 Eli Zaretskii + + * font.c (Ffont_info): Add more font information to the vector + returned by the function, inspired by query-font. Doc fix. + (Bug#19395) + +2014-12-18 Stefan Monnier + + * keyboard.c (input_was_pending): New var. + (read_char): Use it to make sure we only skip redisplay when we can't + keep up with the repeat rate. + +2014-12-17 Stefan Monnier + + * keyboard.c (swallow_events): Don't redisplay if there's input pending. + +2014-12-17 Ulf Jasper + + * image.c (svg_load): Watch out for nil value of current buffer's + filename. Re-enable filename thing for not-a-file case. + +2014-12-17 Ulf Jasper + + Partially disabled previous change. + + * image.c (svg_load): Temporarily disabled filename thing for + not-a-file case as it can cause crashs. + +2014-12-17 Ulf Jasper + + Fix problem with images referenced within svg files. (bug#19373) + + * image.c: Additional parameter 'filename' for + svg_load_image. Include "buffer.h". Define library function + rsvg_handle_set_base_uri for WINDOWSNT. + (init_svg_functions): Initialize rsvg_handle_set_base_uri. + (fn_rsvg_handle_set_base_uri): Define fn_rsvg_handle_set_base_uri. + (svg_load): Pass a filename to svg_load_image: either name of + actual file or of current buffer's file. + (svg_load_image): New parameter 'filename', used for setting + base_uri, necessary for loading referenced images. (bug#19373) + +2014-12-16 Paul Eggert + + * lread.c (init_obarray): Declare Qt as special. + This fixes a typo in the 2012-05-15 patch that + tried to declare Qt as special. + +2014-12-15 Stefan Monnier + + Various fixes to use bool type and constants. + * dispnew.c (update_single_window): Remove arg `force_p' since it's + always true. + * xfaces.c (clear_face_cache): Use bool for the argument type. + +2014-12-15 Paul Eggert + + Correct same_at_end when restoring window points + * fileio.c (Finsert_file_contents): Compute same_at_end character + position using the old buffer size, not the new one, since + restore_window_points wants the old size. + Fixes: debbugs:19161 + +2014-12-14 Alan Mackenzie + + New feature optionally to accelerate auto-repeated scrolling. + + * xdisp.c: Remove "static" from declaration of Qfontification_functions. + + * window.c (window_scroll): Bind fontification-functions to nil + when scrolling by whole screens and + fast-but-imprecise-scrolling is non-nil. + (syms_of_window): New DEFVAR_BOOL fast-but-imprecise-scrolling. + + * lisp.h (bool): Declare Qfontification_functions extern. + +2014-12-14 Eli Zaretskii + + Load system's default trusted Certificate Authorities if available. + * gnutls.c (gnutls_certificate_set_x509_system_trust) + [GNUTLS >= 3.0.20]: Declare for WINDOWSNT. + (init_gnutls_functions)(gnutls_certificate_set_x509_system_trust) + [GNUTLS >= 3.0.20]: Load from shared library for WINDOWSNT. + (fn_gnutls_certificate_set_x509_system_trust) [!WINDOWSNT]: + Define new macro. + (Fgnutls_boot) [GNUTLS >= 3.0.20]: + Call gnutls_certificate_set_x509_system_trust. Log an error message if + it fails. + +2014-12-14 Paul Eggert + + * regex.c (analyze_first): Rename from analyze_first. + +2014-12-13 Paul Eggert + + * alloc.c (XMALLOC_BASE_ALIGNMENT): Use max_align_t instead of + a hack involving a union. + +2014-12-13 Eli Zaretskii + + * gnutls.c (Fgnutls_available_p, syms_of_gnutls): + Move gnutls-available-p out of the HAVE_GNUTLS conditional, and define + them only once. + +2014-12-13 Teodor Zlatanov + + * emacs.c (main): Always include gnutls.h and run syms_of_gnutls. + + * gnutls.h: Always declare syms_of_gnutls. + + * gnutls.c (Fgnutls_available_p syms_of_gnutls): Move later for + clarity. Let the availability check return Qnil when the GnuTLS + integration is not available, instead of erroring out. + (Bug#19346) + +2014-12-13 Eli Zaretskii + + * xdisp.c (move_it_in_display_line_to, display_line): + Don't disallow overflow-newline-into-fringe when word-wrap is in + effect. (Bug#19300) + +2014-12-11 Stefan Monnier + + * fileio.c: Better preserve window-points during revert (bug#19161). + (Qget_buffer_window_list): New var. + (get_window_points_and_markers, restore_window_points): New functions. + (Finsert_file_contents): Use them to save and restore window-points. + +2014-12-11 Dmitry Antipov + + * xterm.c (x_delete_terminal): Call emacs_close for X connection + descriptor if called from x_connection_closed and always delete + this descriptor from keyboard waiting set (Bug#19147). + +2014-12-10 Eli Zaretskii + + * bidi.c (BIDI_CACHE_MAX_ELTS_PER_SLOT): New macro. + (bidi_cache_max_elts): New global variable. + (bidi_shelve_header_size): Add the sizeof bidi_cache_max_elts. + (bidi_cache_shrink, bidi_initialize): Reset bidi_cache_max_elts to + its initial value. + (bidi_cache_search): Handle overflown cache. Improve commentary. + (bidi_cache_ensure_space): Limit allocations to the current value + of bidi_cache_max_elts. Force xpalloc not to over-allocate. + If less than a full BIDI_CACHE_CHUNK is left to the limit, decrease + the increment to not exceed the limit. + (bidi_cache_iterator_state): Now returns non-zero if succeeded to + cache, zero otherwise (meaning the cache overflowed). In the + latter case, set bidi_cache_last_idx to -1. + (bidi_peek_at_next_level): Handle overflown cache. + (bidi_push_it): Increase the cache limit for iterating the new object. + (bidi_pop_it): Decrease the cache limit back to previous value. + (bidi_shelve_cache): Shelve the current value of the cache limit. + (bidi_unshelve_cache): Restore the value of cache limit. + (bidi_find_bracket_pairs): If the cache overflows while looking + for the paired bracket, give up and let bidi_resolve_neutrals + process the bracket as a simple neutral. (Bug#19322) + (bidi_find_other_level_edge): If the cache overflows, fall back on + Plan B, which effectively stops the reordering and restarts it on + the next character (after resetting the cache). + (bidi_move_to_visually_next): When the cache overflows, reset it + after processing the last cached character. + +2014-12-10 Paul Eggert + + Fix glitches in gnutls.c, mostly memory-related + * gnutls.c: Sort macro definitions by name. + (fn_gnutls_transport_set_errno): Omit unreachable definition. + (fn_gnutls_x509_crt_get_signature): Omit unused symbol. + (gnutls_hex_string): Arg is now unsigned char *, to avoid a cast. + Prefer ptrdiff_t for sizes. Check for arithmetic overflow when + calculating string length. Use make_uninit_string, to avoid + copying the string. Cast the char, not the pointer. + (gnutls_certificate_details): Use xmalloc and xfree, not malloc + and free. Work even for dates past the year 9999. Use void * + for buffers, to avoid casts. + +2014-12-09 Andy Moreton (tiny change) + + * gnutls.c (gnutls_protocol_get_name): Fix a copy/paste typo. + +2014-12-08 Lars Magne Ingebrigtsen + + * gnutls.c (Fgnutls_peer_status): Return the key exchange, cipher + and MAC algorithms. + +2014-12-08 Stefan Monnier + + * process.c: Whitespace and line-break nitpicks. + +2014-12-08 Lars Magne Ingebrigtsen + + * gnutls.c (gnutls_certificate_details): The :signature isn't + that useful, so remove it. + (gnutls_certificate_details): Clean up whitespace slightly. + (Fgnutls_peer_status): Return the Diffie-Hellman prime bits for + the connection. + (gnutls_certificate_details): Put :signature-algorithm back again, + which was removed by mistake. + (emacs_gnutls_handle_error): Fatal errors should be on level 1, so + that they are not messaged by default (bug#16253). + (Fgnutls_error_fatalp): Doc fix (bug#18210). + + * gnutls.c: Add Windows specs for gnutls_dh_get_prime_bits. + +2014-12-07 Jan Djärv + + * nsimage.m (setPixmapData): Make bmRep local so class member is not + set (Bug#19133). + +2014-12-05 Lee Duhem (tiny change) + + * eval.c (Fsignal): Remove duplicate test. + (Fautoload_do_load): Fix up docstring. + +2014-12-05 Jan Djärv + + * nsterm.m (represented_filename, represented_frame): New variables. + (ns_set_represented_filename): New function. + (sendEvent:): Set represented filename here to avoid flicker, + related to Bug#18757. + + * nsterm.h: Declare ns_set_represented_filename. + + * nsfns.m (ns_set_name_as_filename): Don't set represented filename + at once, call ns_set_represented_filename instead. + +2014-12-05 Eli Zaretskii + + * dispextern.h (enum bidi_dir_t): Force NEUTRAL_DIR to be zero. + (struct bidi_stack): Reduce size by using bit fields and by + packing sos, override, and isolate_status into a single 8-bit + byte called 'flags'. + + * bidi.c (ISOLATE_STATUS, OVERRIDE): New macros. + (bidi_push_embedding_level): Construct flags from individual + bits. Adapt to changes in prev_for_neutral and next_for_neutral + members. + (bidi_pop_embedding_level): Use ISOLATE_STATUS. Extract 'sos' + from flags. Adapt to changes in prev_for_neutral, + next_for_neutral, and last_strong members. + (bidi_line_init): Initialize flags to zero. + (bidi_resolve_explicit, bidi_resolve_weak, bidi_resolve_brackets) + (bidi_resolve_neutral): Use ISOLATE_STATUS and OVERRIDE. + +2014-12-04 Stefan Monnier + + * eval.c (backtrace_eval_unrewind): Rewind also the excursions. + (Fapply): Try and simplify the control flow. + +2014-12-03 Chris Zheng (tiny change) + + * gnutls.c (init_gnutls_functions, gnutls_certificate_details): + Use gnutls_sign_get_name directly because + gnutls_sign_algorithm_get_name is a macro on MinGW (bug#19231). + (init_gnutls_functions): Load missing gnutls_server_name_set. + +2014-12-02 Eli Zaretskii + + * bidi.c (bidi_find_first_overridden): New function. + + * xdisp.c (Fbidi_find_overridden_directionality): New function. + (syms_of_xdisp): Defsubr it. + + * dispextern.h (bidi_find_first_overridden): Add prototype. + +2014-12-02 Jan Djärv + + * nsimage.m (initFromSkipXBM:width:height:flip:length:): Set bmRep + to nil after release (Bug#9133). + +2014-11-30 Paul Eggert + + Port better to AddressSanitizer. + These changes suffice for temacs on x86-64 with GCC 4.9.2 and + -fsanitize=address. + * alloc.c (valid_pointer_p) [ADDRESS_SANITIZER]: + Return -1 or 0, as the pipe trick doesn't work. + * alloc.c (relocatable_string_data_p, mark_object, sweep_symbols): + * data.c (Ffset): + * print.c (print_object): + When a pointer-check primitive returns -1, do not assume this + means the pointer is valid or that the underlying system has failed. + It could just be that addresses are being sanitized so Emacs can't + test for pointer validity. + * lisp.h (defined_GC_CHECK_STRING_BYTES): New constant. + (USE_STACK_STRING) [GC_CHECK_STRING_BYTES]: Now false, since the + string validity checker doesn't work on stack-based strings. + +2014-11-29 Paul Eggert + + Improve clarity of USE_LSB_TAG definition. + Reported by Lee Duhem. Suggested by Andreas Schwab in: + http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg02222.html + * lisp.h (USE_LSB_TAG): Define in terms of the (simpler) + VAL_MAX / 2 rather than in terms of the (more complicated) + EMACS_INT_MAX >> GCTYPEBITS, and adjust commentary to match. + +2014-11-29 Eli Zaretskii + + * xdisp.c (handle_single_display_spec): When ignoring a fringe + bitmap display, reset the ignore_overlay_strings_at_pos_p flag. + (next_element_from_buffer): When done with overlays, reset the + ignore_overlay_strings_at_pos_p flag. (Bug#19201) + +2014-11-29 Eli Zaretskii + + * w32fns.c (Fw32_shell_execute): Convert forward slashes in + DOCUMENT to backslashes, if DOCUMENT is a file. (Bug#19141) + +2014-11-29 Ulrich Müller + + * Makefile.in (temacs$(EXEEXT)): Use consistent flag settings + for paxctl and setfattr. Fixes temacs startup failure with + grsecurity/PaX enabled Linux kernel (bug#19067). + +2014-11-27 Oscar Fuentes + + * w32.c, w32heap.c, w32term.c: + Use MINGW_W64 instead of _W64. + +2014-11-27 Stefan Monnier + + * frame.c (Fhandle_switch_frame): Deactivate shift-region (bug#19003). + +2014-11-26 Lars Magne Ingebrigtsen + + * gnutls.c (gnutls_ip_address_p): New function. + (Fgnutls_boot): Only send SNI if the host name is not an IP address. + +2014-11-26 Toke Høiland-Jørgensen (tiny change) + + * gnutls.c (Fgnutls_boot): Send the server name over (bug#18208). + +2014-11-25 Paul Eggert + + Fix gnutls problems caught by static checking. + * gnutls.c (Fgnutls_boot): Remove unused local. + (Fgnutls_boot): Fix pointer signedness. + +2014-11-25 Lars Magne Ingebrigtsen + + * gnutls.c (gnutls_certificate_details): Don't include certain + certificate details on older gnutls versions (bug#19168). + (syms_of_gnutls): Export gnutls_peer_status_warning_describe. + (gnutls_certificate_details): Reversed check in last checkin. + +2014-11-25 Teodor Zlatanov + + * gnutls.c (Fgnutls_peer_status): Check GNUTLS_INITSTAGE, not gnutls_p. + (Fgnutls_peer_status_warning_describe): Add function to describe a + peer verification warning symbol. + (Fgnutls_peer_status): Use it. + (Fgnutls_boot): Use it. Minor logging fixes. + +2014-11-24 Lars Magne Ingebrigtsen + + * gnutls.c: Fix compilation warnings given fix --enable-gcc-warnings. + +2014-11-24 Glenn Morris + + * emacs.c (main) <--version>: Make use of PACKAGE_NAME. + + * Makefile.in (emacs.res): Use ../nt rule, rather than duplicating it. + (ntsource, WINDRES, EMACS_MANIFEST): Remove, now unused. + +2014-11-23 Lars Magne Ingebrigtsen + + * gnutls.c: Fix Windows function definition of + gnutls_x509_crt_get_fingerprint. + + * gnutls.c: Fix Windows return value for gnutls_pk_algorithm_get_name. + + * gnutls.c (Fgnutls_boot): Save certificate for later inspection. + + * process.h: Added more fields to Lisp_Process to track + certificate details. + + * gnutls.c (gnutls_hex_string, gnutls_certificate_details) + (Fgnutls_peer_status): New functions to export TLS certificate + details to Emacs Lisp. + +2014-11-23 Jan Djärv + + * gtkutil.c (gtk_adjustment_configure): Define for Gtk+ < 2.14. + (xg_set_toolkit_horizontal_scroll_bar_thumb): Remove wrong version + check for gtk_adjustment_configure (Bug#19149). + (gtk_adjustment_configure): Don't use 2.14 functions (Bug#19149). + +2014-11-22 Glenn Morris + + * Makefile.in (emacs.res): Add dependency on icons/hand.cur. Use $<. + +2014-11-22 Martin Rudalics + + Don't shrink frame when using desktop-save-mode (Bug#19048). + * w32fns.c (x_set_tool_bar_lines): Always call + x_change_tool_bar_height (Bug#19048). + (x_change_tool_bar_height): Mark frame as garbaged since + adjust_frame_size might not have done that. + * xfns.c (x_set_tool_bar_lines): Always call + x_change_tool_bar_height (Bug#19048). + (x_change_tool_bar_height): Mark frame as garbaged since + adjust_frame_size might not have done that. + +2014-11-21 Ulf Jasper + + * xml.c (parse_region): Take care of new optional parameter + 'discard-comments' of 'libxml-parse(html|xml)-region'. + (Flibxml_parse_html_region, Flibxml_parse_xml_region): + New optional parameter 'discard-comments'. + +2014-11-17 Paul Eggert + + Improve time stamp handling, and be more consistent about it. + * editfns.c (invalid_time): New function. + Use it instead of 'error ("Invalid time specification")'. + (time_add, time_subtract, time_arith, Ftime_add, Ftime_less_p) + (decode_float_time, lisp_to_timespec, lisp_time_struct): + New functions. + (make_time_tail, make_time): Remove. All uses changed to use + new functions or plain list4i. + (disassemble_lisp_time): Return effective length if successful. + Check that LOW is an integer, if it's combined with other components. + (decode_time_components): Decode into struct lisp_time, not + struct timespec, so that we can support a wide set of times + regardless of whether time_t is signed. Decode plain numbers + as seconds since the Epoch, and nil as the current time. + (lisp_time_argument, lisp_seconds_argument, Ffloat_time): + Reimplement in terms of new functions. + (Fencode_time): Just use list2i. + (syms_of_editfns): Add time-add, time-subtract, time-less-p. + * keyboard.c (decode_timer): Don't allow the new formats (floating + point or nil) in timers. + * systime.h (LO_TIME_BITS): New constant. Use it everywhere in + place of the magic number '16'. + (struct lisp_time): New type. + (decode_time_components): Use it. + (lisp_to_timespec): New decl. + +2014-11-16 Lars Magne Ingebrigtsen + + * intervals.h (INTERVAL_WRITABLE_P): Check the `inhibit-read-only' + text property. + + * callint.c (Fcall_interactively): Pass in nil as argument to + Fbarf_if_buffer_read_only. + + * fileio.c (Finsert_file_contents): Ditto. + + * insdel.c (prepare_to_modify_buffer_1): Pass start region in. + + * textprop.c (verify_interval_modification): Check buffer + readedness after the last interval. + + * buffer.c (Fbarf_if_buffer_read_only): Don't raise an error if + the text at POSITION (new optional argument) has the + `inhibit-read-only' text property set. + +2014-11-16 Eli Zaretskii + + * window.c (window_scroll_pixel_based): Avoid truncation/rounding + errors in computing the number of pixels to scroll. + Suggested by Kelly Dean . (Bug#19060) + +2014-11-16 Jan Djärv + + * nsmenu.m (update_frame_tool_bar): If tool bar changes height, + call updateFrameSize. + + * nsterm.m (setFrame:): Remove call to display (Bug#18757). + +2014-11-16 Jan Djärv + + * nsfns.m (x_set_foreground_color, x_set_background_color) + (x_set_cursor_color, Fxw_color_values): Block/unblock input, + use SET_FRAME_GARBAGED instead of redraw_frame (Bug#19036). + +2014-11-15 Jan Djärv + + * nsterm.m (ns_send_appdefined): Check for application defined + event on Cocoa (Bug#18993). + (run): Restore code before the previous 18993 fix. + +2014-11-14 David Reitter + + * nsterm.m (run): Set timeout for event loop to prevent hang. + (Bug#18993) + +2014-11-14 Paul Eggert + + * .gitignore: Add emacs-[1-9]*, to ignore files like emacs-25.0.50.1. + +2014-11-14 Dmitry Antipov + + * xfont.c (xfont_list_pattern): Do not allocate font entity object + for each candidate font but attempt to reuse it from previous improper + candidate, if any. + +2014-11-13 Paul Eggert + + Avoid undefined behavior in color table hashing. + * image.c (CT_HASH_RGB) [COLOR_TABLE_SUPPORT]: Remove, replacing with ... + (ct_hash_rgb) [COLOR_TABLE_SUPPORT]: New function. All uses changed. + This function avoids undefined behavior with signed shift overflow. + +2014-11-10 Eli Zaretskii + + * fileio.c (Finsert_file_contents): Invalidate buffer caches also + when the inserted text does not need decoding. (Bug#18982) + +2014-11-10 Jan Djärv + + * nsterm.h (EmacsScroller): judge returns bool. + + * nsterm.m (ns_set_vertical_scroll_bar): Release bar. + (ns_judge_scroll_bars): Only set removed if judge returns true. + (judge): Returns bool == condemned. Remove self from window. + (setPosition:portion:whole:): Remove raise SIGIO (Bug#18757). + +2014-11-10 Stefan Monnier + + * keyboard.c (command_loop_1): Record this-command in recent-keys. + (Frecent_keys): Rewrite. and add optional `include-cmds' arg. + +2014-11-09 Jan Djärv + + * nsterm.m (ns_set_vertical_scroll_bar) + (ns_set_horizontal_scroll_bar): Cleanup merge error. + +2014-11-09 Paul Eggert + + * xgselect.c (xg_select): Don't assume n_gfds is nonnegative + merely because tmo_in_millisec is nonnegative. The 1st call + to g_main_context_query could succeed while the 2nd one fails. + + * frame.c (Fcan_run_window_configuration_change_hook): Return a value. + +2014-11-08 Jan Djärv + + * nsterm.m (run): Only use non-system event loop if OSX version is + exactly 10.9 (Bug#18993). + (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless + needed (Bug#18757). + +2014-11-08 Michael Albinus + + * callproc.c (encode_current_directory): Support handling of file + names prepended by "/:". (Bug#18891) + +2014-11-08 Alan Mackenzie + + * syntax.c (back_comment): Fix off-by-one error (bug#18022). + +2014-11-08 Dima Kogan + + * xgselect.c (xg_select): Use g_main_context_acquire (bug#18861). + +2014-11-08 Michael Albinus + + * dired.c (Ffile_attributes): Return Qnil, if Fexpand_file_name + raises an error. (Bug#18891) + +2014-11-08 Martin Rudalics + + * frame.c (adjust_frame_size): Call x_set_window_size only if + f->can_x_set_window_size is set. + (make_frame): Initialize f->can_x_set_window_size and + f->can_run_window_configuration_change_hook. + (Fcan_run_window_configuration_change_hook): New function. + * frame.h (frame): Split `official' into `can_x_set_window_size' + and `can_run_window_configuration_change_hook'. + * nsfns.m (Fx_create_frame): Set f->can_x_set_window_size. + * w32fns.c (Fx_create_frame, x_create_tip_frame): + Set f->can_x_set_window_size. + * window.c (run_window_configuration_change_hook): + Return immediately if either f->can_x_set_window_size or + f->can_run_window_configuration_change_hook are false. + (Fset_window_configuration): Instead of f->official set + f->can_x_set_window_size. + * xfns.c (Fx_create_frame, x_create_tip_frame): + Set f->can_x_set_window_size. + +2014-11-08 Jan Djärv + + * nsterm.m (EmacsScroller.dealloc): Reinstate, removed at merge + cleanup from 2014-11-01 (Bug#18972). + +2014-11-07 Stefan Monnier + + * keyboard.c: Call gui-set-selection instead of x-set-selection. + * xdisp.c (window-scroll-functions): Improve docstring. + +2014-11-07 Paul Eggert + + Uniquify the 'size' symbol. + * frame.c (Qsize): + * w32notify.c (Qsize): Remove. + * lisp.h (Qsize): New decl. + * lread.c (Qsize): Now extern. + * w32notify.c (syms_of_w32notify): No need to defsym. + +2014-11-07 Martin Rudalics + + * dispnew.c (change_frame_size_1): Fix call of + adjust_frame_size. + * frame.c (Qsize, Qframe_position, Qframe_outer_size) + (Qframe_inner_size, Qexternal_border_size, Qtitle_height) + (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external) + (Qtool_bar_size): New constants. + (frame_inhibit_resize, adjust_frame_size): New argument to + handle case where frame_inhibit_implied_resize is a list. + (Fmake_terminal_frame, Fset_frame_height, Fset_frame_width) + (Fset_frame_size, x_set_left_fringe, x_set_right_fringe) + (x_set_right_divider_width, x_set_bottom_divider_width) + (x_set_vertical_scroll_bars, x_set_horizontal_scroll_bars) + (x_set_scroll_bar_width, x_set_scroll_bar_height): + Update callers. + (frame-inhibit-implied-resize): Rewrite doc-string. + * frame.h (frame_inhibit_resize, adjust_frame_size): + Fix external declarations. + (Qframe_position, Qframe_outer_size) + (Qframe_inner_size, Qexternal_border_size, Qtitle_height) + (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external) + (Qtool_bar_size): Extern them. + * gtkutil.c (FRAME_TOTAL_PIXEL_HEIGHT, FRAME_TOTAL_PIXEL_WIDTH) + (xg_height_or_width_changed): Remove. + (xg_frame_set_char_size): Adjust adjust_frame_size calls. + (menubar_map_cb, xg_update_frame_menubar, free_frame_menubar) + (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar) + (xg_change_toolbar_position): Call adjust_frame_size directly. + * nsfns.m (x_set_internal_border_width, Fx_create_frame): + Fix calls of adjust_frame_size. + * w32fns.c (x_set_internal_border_width, x_set_menu_bar_lines) + (Fx_create_frame, x_create_tip_frame): Adjust adjust_frame_size calls. + (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that + frame can get resized when tool-bar-lines parameter changes from + or to zero. + (Fw32_frame_menu_bar_size): Return fourth value. + (Fw32_frame_rect): Block input around system calls + (Fx_frame_geometry): New function. + * w32menu.c (set_frame_menubar): Adjust adjust_frame_size call. + * w32term.c (x_new_font): Adjust adjust_frame_size call. + * widget.c (EmacsFrameSetCharSize): Adjust frame_inhibit_resize call. + * window.c (Fset_window_configuration): Adjust adjust_frame_size call. + * xfns.c (x_set_menu_bar_lines, x_set_internal_border_width) + (Fx_create_frame): Adjust adjust_frame_size calls. + (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that + frame can get resized when tool-bar-lines parameter changes from + or to zero. + (Fx_frame_geometry): New function. + * xmenu.c (update_frame_menubar): On Lucid call + adjust_frame_size with one pixel less height to avoid that + repeatedly adding/removing the menu bar grows the frame. + (free_frame_menubar): On Motif arrange to optionally preserve + the old frame height when removing the menu bar. + * xterm.c (x_new_font): Adjust adjust_frame_size call. + +2014-11-03 Eli Zaretskii + + * xdisp.c (Fdump_glyph_matrix, Fdump_frame_glyph_matrix): Doc fix. + (Fdump_frame_glyph_matrix): Don't segfault if invoked on a GUI + frame; instead, print an error message. + +2014-11-03 Jan Djärv + + * nsfns.m (ns_set_doc_edited): Check for FRAME_NS (Bug#18925). + +2014-11-02 Jan Djärv + + * nsimage.m (allocInitFromFile:): Initialize bmRep. + (dealloc): Release bmRep. + + * nsterm.h (EmacsImage): Remove imageListNext, refCount, reference, + imageListSetNext, imageListNext. + + * nsimage.m (ImageList, imageListNext, imageListSetNext:) + (reference): Remove. + (allocInitFromFile:): Remove searching ImageList and calling + reference (Bug#18918). + (dealloc): Remove handling if ImageList. + +2014-11-02 Andreas Schwab + + * process.c (catch_child_signal): Fix incorrect assertion. + +2014-11-01 Jan Djärv + + * macfont.m (macfont_draw): + * nsterm.m (ns_mouse_position, judge): Clean up merge conflict. + + * macfont.m (macfont_glyph_extents): Turn off synthetic bold + if force_integral_p (i.e. no antialias). + (macfont_draw): Check ns_antialias_text, also turn off synthetic + bold if no antialias (Bug#18876). + + * emacs.c (main): Don't chdir to $HOME on Cocoa if --chdir + was given (Bug#18846). + + * nsterm.h (ns_set_doc_edited): Declare taking no args. + + * nsfns.m (ns_set_doc_edited): Do all logic (check frames) here + instead of in xdisp.c, function now takes void. (Bug#18884). + + * xdisp.c (prepare_menu_bars): Remove HAVE_NS code. + (redisplay_internal): Call ns_set_doc_edited if HAVE_NS (Bug#18884). + + * nsterm.h (EmacsScroller): Replace Lisp_Object win with + struct window* (Bug#18889). + Remove getMouseMotionPart. + (ns_output): Make icon_top/left int. + + * nsfns.m (x_icon): icon_top/left is int. + + * nsterm.m (ns_mouse_position): Remove unused code. + (initFrame:window:, dealloc): Use window instead of win. + (getMouseMotionPart:window:x:y:): Remove, unused. + (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window. + +2014-11-01 Eli Zaretskii + + * keyboard.c (readable_events): When FLAGS include + READABLE_EVENTS_FILTER_EVENTS, ignore BUFFER_SWITCH_EVENT events. + This avoids returning non-nil from input-pending-p when only such + events are in the queue. (Bug#18856) + +2014-11-01 Jan Djärv + + * nsselect.m (QCLIPBOARD, QSECONDARY, QTEXT, QFILE_NAME) + (NXPrimaryPboard, NXSecondaryPboard): Declare static. + (Qforeign_selection): Remove. + (ns_get_local_selection): Identation fix. + (syms_of_nsselect): Remove Qforeign_selection, ns-lost-selection-hooks + + * nsselect.m (ns_get_local_selection): Remove calling of + functions in Vselection_converter_alist (Bug#18911). + (syms_of_nsselect): Remove Vselection_converter_alist. + +2014-10-31 Dmitry Antipov + + * font.c (copy_font_spec): Redesign to avoid Fcopy_alist + and unnecessary initialization. Adjust comments. + +2014-10-30 Eli Zaretskii + + * bidi.c (bidi_cache_reset_to): Invalidate bidi_cache_last_idx by + setting it to -1. + (bidi_find_bracket_pairs): Pass to bidi_cache_reset_to a relative + index, not an absolute one, as that's what the function expects. + +2014-10-30 Dmitry Antipov + + * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to realize + font on an initial frame when running as a daemon (Bug#18869). + + * fontset.c (toplevel): Adjust comment to match 2014-06-19 change. + +2014-10-30 Eli Zaretskii + + * fileio.c (Fexpand_file_name): Use make_unibyte_string, not + build_string, when importing a home directory. (Bug#18873) + +2014-12-27 Eli Zaretskii + + * dispnew.c (buffer_posn_from_coords): + Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to + account for the header-line height. (Bug#18839) + +2014-10-28 Ulf Jasper + + * xml.c (parse_region): Do not forget the first document child. + +2014-10-25 Jan Djärv + + * nsselect.m: pasteboard_changecount is new. + (ns_store_pb_change_count, ns_get_pb_change_count) + (ns_get_our_change_count_for): New functions. + (ns_string_to_pasteboard_internal): Correct comment. + type => gtype in eassert, Call ns_store_pb_change_count. + (Fns_own_selection_internal): Remove data, use value (Bug#18799). + (Fns_disown_selection_internal, Fns_selection_owner_p): + Replace Vselection_alist check, with change count check. + (Fns_get_selection): Initialize val to Qnil. Only get local + selection if change counts match (Bug#18799). + (nxatoms_of_nsselect): Initialize pasteboard_changecount. + +2014-10-25 Noam Postavsky + + * w32proc.c (create_child): If calling a quoted batch file, + pass NULL for exe. (Bug#18745) + +2014-10-24 Eli Zaretskii + + * bidi.c (bidi_resolve_explicit, bidi_find_bracket_pairs) + (bidi_resolve_brackets): Use end of string position rather than ZV + when iterating over a string. (Bug#18815) + +2014-10-24 Martin Rudalics + + * keyboard.c (make_lispy_position): Return coordinates also when + on scroll bars, fringes, margins or not in a window. + * xdisp.c (show_mouse_face): Don't change cursor face during + mouse tracking. + +2014-10-23 Martin Rudalics + + * frame.c (Fset_frame_height, Fset_frame_width, Fset_frame_size) + (frame_resize_pixelwise, frame_inhibit_implied_resize): + Fix doc-strings (Bug#18789). + +2014-10-23 Paul Eggert + + * Makefile.in (ACLOCAL_INPUTS): Omit unnecessary use of 'wildcard'. + +2014-10-22 Eli Zaretskii + + Optimize redisplay of simple bracketed text. + * bidi.c (bidi_cache_reset_to): New function. + (bidi_cache_reset): Call it. + (bidi_init_it, bidi_line_init): Initialize the bracket_pairing_pos + member to -1. + (bidi_resolve_explicit): Reset bracket_pairing_pos and + bracket_enclosed_type only if bracket_pairing_pos's value is not + ZV. + (MAX_BPA_STACK): Make sure the value is signed. + (PUSH_BPA_STACK): If the BPA stack overflows, don't bail out, but + stop pushing values onto the stack. + (bidi_find_bracket_pairs): If the bracketed text is only on the + base embedding level, remove all the states cached by this + function from the cache, and return zero, so that the brackets in + this segment of text are processed as normal neutrals. + (bidi_resolve_brackets): Detect the brackets that are to be + processed as neutrals, and don't call bidi_find_bracket_pairs on + them. (Bug#18778) + +2014-10-21 Stefan Monnier + + * w32select.c (Fw32_selection_exists_p): Rename from + Fx_selection_exists_p. + (syms_of_w32select): Adjust accordingly. + + * w16select.c (Fw16_selection_exists_p): Rename from + Fx_selection_exists_p. + (syms_of_win16select): Adjust accordingly. + + * nsselect.m (ns_get_local_selection): Signal error rather than `quit'. + (Fns_own_selection_internal): Tighten scoping. + (Fns_selection_exists_p): Rename from Fx_selection_exists_p. + (Fns_get_selection): Rename from Fx_get_selection_internal. + (Fns_get_selection_internal, Fns_store_selection_internal): + Remove functions. + (syms_of_nsselect): Adjust accordingly. + +2014-10-21 Martin Rudalics + + * w32fns.c (Fw32_frame_menu_bar_size): New function. + * w32term.c (x_set_window_size): Account for wrapped menu bar + lines when setting up frame height (Bug#15174 and Bug#18720). + (w32_add_wrapped_menu_bar_lines): New variable. + +2014-10-21 Stefan Monnier + + * xdisp.c (redisplay_window): Re-run pre-redisplay-function after we + move point. + +2014-10-20 Glenn Morris + + * Merge in all changes up to 24.4 release. + +2014-10-19 Jan Djärv + + * gtkutil.c (xg_update_menubar, xg_update_menu_item): Only call + g_object_notify for label if Gtk+ >= 2.16 (Bug#16522). + + * xterm.h (x_output): Remove net_wm_state_hidden_seen. + + * xterm.c (handle_one_xevent): Check return value from + x_handle_net_wm_state, remove net_wm_state_hidden_seen (Bug#18722). + (get_current_wm_state): Remove net_wm_state_hidden_seen setting. + + * gtkutil.c (create_dialog): Don't use gtk_dialog_get_action_area on + Gt+ >= 3.12, or gtk_misc_set_alignment on Gtk+ >= 3.14 (Bug#18674). + (make_widget_for_menu_item): Don't use gtk_misc_set_alignment on + Gtk+ >= 3.14 (Bug#18674). + (update_frame_tool_bar): Don't use gtk_misc_set_padding on + Gtk+ >= 3.14 (Bug#18674). + +2014-10-18 Paul Eggert + + * gtkutil.c: Remove no-longer-used code. + (xg_update_menubar): Remove unused local and unnecessary call to + gtk_menu_item_get_submenu. + (XG_TOOL_BAR_PROXY_BUTTON, xg_tool_bar_proxy_callback) + (xg_get_tool_bar_widgets, xg_tool_bar_proxy_help_callback) + (TOOLBAR_TOP_WIDGET): Remove; no longer used. + +2014-10-18 Jan Djärv + + * xfns.c (syms_of_xfns): Remove x-gtk-whole-detached-tool-bar. + + * xterm.h (handlebox_widget): Remove. + + * xmenu.c (set_frame_menubar): Remove GTK block that calls + xg_have_tear_offs. + + * gtkutil.h (xg_have_tear_offs): Remove declaration. + + * gtkutil.c (XG_TEXT_CANCEL, XG_TEXT_OPEN, XG_TEXT_OK): New defines + to handle Gtk versions. + (xg_get_file_with_chooser): Use them. + (xg_have_tear_offs, tearoff_remove, tearoff_activate): + Remove (create_menus): Remove teroff argument and code. + Remove call to gtk_menu_set_title. + (xg_update_menubar, xg_update_submenu): Remove tearoff code. + Adjust args to create_menus. + (xg_tool_bar_menu_proxy, xg_tool_bar_detach_callback) + (xg_tool_bar_attach_callback, TOOLBAR_TOP_WIDGET): Remove. + (xg_pack_tool_bar): Replace TOOLBAR_TOP_WIDGET, remove detach code. + (xg_make_tool_item): Remove detach code. + (xg_update_tool_bar_sizes): Replace TOOLBAR_TOP_WIDGET. + (find_icon_from_name): New function. + (update_frame_tool_bar): Remove GtkStockItem code, move to + find_icon_from_name. Let stock be a list of icon names to try. + Only use gtk_image_new_from_stock on Gtk+ < 3.10. + Replace TOOLBAR_TOP_WIDGET. + (free_frame_tool_bar, xg_change_toolbar_position ): + Replace TOOLBAR_TOP_WIDGET. + (xg_initialize): Remove tearoff code. + +2014-10-18 Eli Zaretskii + + * xterm.c (x_draw_bar_cursor, x_draw_hollow_cursor): Subtract 1 + pixel from the window's cursor glyph width, since X renders hollow + blocks 1 pixel wider than the 'width' parameter. + + * xdisp.c (get_phys_cursor_geometry): Don't subtract 1 pixel from + glyph->pixel_width; this is now done in xterm.c. + + Fix reordering of bracket characters in isolates. + * bidi.c (bidi_cache_find): Rename the argument NEUTRALS_OK to + RESOLVED_ONLY; when non-zero, return from the cache only fully + resolved states. All callers changed. + (CANONICAL_EQU): New macro. + (PUSH_BPA_STACK): Use it to push onto the BPA stack the canonical + equivalent of the paired closing bracket character. + (bidi_find_bracket_pairs): Set the bracket_pairing_pos member to + the default non-negative value, to be checked later in + bidi_resolve_brackets. Use CANONICAL_EQU to test candidate + characters against those pushed onto the BPA stack. + (bidi_record_type_for_neutral): New function. + (bidi_resolve_brackets): Record next_for_neutral and + prev_for_neutral when embedding level gets pushed. Force + resolution of bracket pairs when entering a level run that was not + yet BPA-resolved. + (bidi_resolve_neutral): Add assertions before calling + bidi_resolve_neutral_1. + (bidi_level_of_next_char): Remove the code that attempted to + resolve unresolved neutrals; that is now done by + bidi_resolve_neutral. + + * w32select.c (owner_callback): Mark with ALIGN_STACK attribute. + +2014-10-17 Eli Zaretskii + + * xterm.c (x_draw_hollow_cursor): Fix display of hollow cursor on + 1-pixel R2L characters. + Reported by Dmitry Antipov , see + http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00518.html. + +2014-10-16 Eli Zaretskii + + * bidi.c (bidi_find_bracket_pairs): Avoid a loop that does nothing + useful. + +2014-10-15 Paul Eggert + + * bidi.c (bidi_find_bracket_pairs): Initialize local var. + This pacifies GCC 4.9.1 with --enable-gcc-warnings. + It's not clear to me whether the initialization is needed, + but it can't hurt so I played it safe. + +2014-10-15 Stefan Monnier + + * lisp.mk (lisp): Add emacs-lisp/eldoc.elc. + +2014-10-15 Eli Zaretskii + + Update the bidirectional reordering engine for Unicode 6.3 and 7.0. + * bidi.c (bidi_ignore_explicit_marks_for_paragraph_level): + Remove variable. + (bidi_get_type): Return the isolate initiators and terminator types. + (bidi_isolate_fmt_char, bidi_paired_bracket_type) + (bidi_fetch_char_skip_isolates, find_first_strong_char) + (bidi_find_bracket_pairs, bidi_resolve_brackets): New functions. + (bidi_set_sos_type): Rename from bidi_set_sor_type and updated + for the new features. + (bidi_push_embedding_level, bidi_pop_embedding_level): Update to + push and pop correctly for isolates. + (bidi_remember_char): Modify to accept an additional argument + and record the bidi type according to its value. + (bidi_cache_iterator_state): Accept an additional argument to only + update an existing state. Handle the new members of struct bidi_it. + (bidi_cache_find): Arguments changed: no longer accepts a level, + instead accepts a flag telling it whether it is okay to return + unresolved neutrals. + (bidi_initialize): Initiate and staticpro the bracket-type uniprop + table. Initialize new isolate-related members. + (bidi_paragraph_init): Some code factored out into + find_first_strong_char. + (bidi_resolve_explicit_1): Function deleted, its code incorporated + into bidi_resolve_explicit. + (bidi_resolve_explicit): Support the isolate initiators and + terminator. Fix handling of embeddings and overrides according to + new UBA requirements. Record information about previously seen + characters here (moved from bidi_level_of_next_char). + (bidi_resolve_weak): Adapt to changes in struct members. + (FLAG_EMBEDDING_INSIDE, FLAG_OPPOSITE_INSIDE, MAX_BPA_STACK) + (STORE_BRACKET_CHARPOS, PUSH_BPA_STACK): New macros. + (bidi_resolve_neutral): Call bidi_resolve_brackets to handle the + paired bracket resolution. Handle isolate initiators and + terminator. + (bidi_type_of_next_char): Remove unneeded code for BN limit. + (bidi_level_of_next_char): Move the code that records information + about previous characters to bidi_resolve_explicit. Fix logic of + resolving neutrals and make sure their cache entries are updated. + Remove now unneeded special handling of PDF level. + + * dispextern.h (struct glyph): Enlarge the width of resolved_level. + (BIDI_MAXDEPTH): New macro, renamed from BIDI_MAXLEVEL and + enlarged per Unicode 6.3. + (enum bidi_bracket_type_t): New data type. + (struct bidi_saved_info): Leave only 2 type members out of 4. + Remove bytepos. + (struct bidi_stack): Add members necessary to support isolating + sequences. + (struct bidi_it): Add new members necessary to support isolating + sequences and bracket pair resolution. + + * xdisp.c (Fbidi_resolved_levels): New function. + (syms_of_xdisp): Defsubr it. + (append_glyph, append_composite_glyph, produce_image_glyph) + (append_stretch_glyph, append_glyphless_glyph): Convert aborts to + assertions. + (syms_of_xdisp) : New variable. + + * term.c (append_glyph, append_composite_glyph) + (append_glyphless_glyph): Convert aborts to assertions. + + * .gdbinit (pgx): Display the character codepoint, resolved level, + and bidi type also for glyphless glyphs. + +2014-10-15 Dmitry Antipov + + Avoid unwanted point motion in Fline_beginning_position. + * lisp.h (scan_newline_from_point): Add prototype. + * search.c (scan_newline_from_point): New function, refactored from... + * cmds.c (Fforward_line): ...adjusted user. + * editfns.c (Fline_beginning_position): Use scan_newline_from_point + and simplify the former since the latter doesn't move point. + +2014-10-14 Dmitry Antipov + + Cleanup terminal handling code. + * dispextern.h (get_named_tty): Remove prototype but... + * termhooks.h (get_named_terminal): ...resurrect it under + more meaningful name. + (get_terminal): Likewise, but with... + (decode_live_terminal): ...this name. + (decode_tty_terminal): Add prototype. + * term.c (get_tty_terminal): Remove. + (get_named_tty): Remove. + (Ftty_display_color_p, Ftty_display_color_cells, Ftty_type) + (Fcontrolling_tty_p, Fsuspend_tty, Fresume_tty): + Use decode_tty_terminal. + (Ftty_no_underline, Ftty_top_frame): Use decode_live_terminal. + * terminal.c (get_terminal): Refactor to... + (decode_terminal, decode_live_terminal): ...new functions. + (decode_tty_terminal): Replacement for get_tty_terminal. + (get_named_terminal): Likewise for get_named_tty. + * coding.c (Fset_terminal_coding_system_internal) + (Fterminal_coding_system, Fset_keyboard_coding_system_internal): + (Fkeyboard_coding_system): + * composite.c (Fcomposition_get_gstring): + * dispnew.c (Fsend_string_to_terminal): + * frame.c (Fmake_terminal_frame): + * nsfns.m (check_ns_display_info): + * w32fns.c, xfns.c (check_x_display_info): + * xselect.c (frame_for_x_selection): Use decode_live_terminal. + * keyboard.c (handle_interrupt_signal, handle_interrupt) + (Fset_quit_char): Use get_named_terminal. + (Fset_output_flow_control, Fset_input_meta_mode): + Use decode_tty_terminal. + +2014-10-13 Eli Zaretskii + + * w32term.h (ALIGN_STACK): Use _WIN64, not _W64, to distinguish + between 32-bit and 64-bit MinGW builds. (Bug#18699) + +2014-10-12 Paul Eggert + + Fix port to Debian GNU/kFreeBSD 7 (wheezy) (Bug#18666). + * process.c (accept4) [!HAVE_ACCEPT4]: New macro. + +2014-10-12 Stefan Monnier + + * frame.c (Fmouse_pixel_position): Call Vmouse_position_function + (bug#18638). + +2014-10-12 Paul Eggert + + * editfns.c (dump_tz_string): No longer const. + It might be modified. + + * nsmenu.m (clear): Assume OS X 10.6 or later. + +2014-10-12 Jan Djärv + + * unexmacosx.c: Remove include ppc/reloc.h. + (unrelocate, copy_dysymtab): Remove PPC code. + (rebase_reloc_address): Remove, only used for PPC: + + * nsterm.m: Always include macfont.h on COCOA. + (ns_update_auto_hide_menu_bar, ns_draw_fringe_bitmap) + (ns_dumpglyphs_image, ns_check_menu_open) + (applicationDidFinishLaunching) + (antialiasThresholdDidChange:) + (keyDown:, toggleFullScreen:, setPosition:portion:whole:): + Remove checks for OSX <= 10.5/10.6. + (changeFont:): Use macfont on COCOA, nsfont on GNUSTEP. + (syms_of_nsterm): Call syms_of_macfont on COCOA, syms_of_nsfont on + GNUSTEP. + + * nsterm.h (MAC_OS_X_VERSION_10_4, MAC_OS_X_VERSION_10_5): Remove. + (NS_HAVE_NSINTEGER): Remove block. + Remove >= OSX 10.6 tests. + + * nsmenu.m (NSMenuDidBeginTrackingNotification): Remove. + (x_activate_menubar, trackingNotification:): Remove check for + OSX >= 10.5. + (menuNeedsUpdate:): Remove check for OSX < 10.5. + + * nsimage.m (allocInitFromFile:): Remove code for OSX < 10.6. + + * nsfns.m: Always include macfont.h on COCOA. + (ns_filename_from_panel, ns_directory_from_panel) + (Fx_create_frame, Fns_popup_font_panel, ns_run_file_dialog) + (Fns_read_file_name, Fns_list_services): Remove code for OSX < 10.6 + + * macfont.m: Remove >= 1050 check. + (macfont_create_family_with_symbol) + (macfont_get_glyph_for_character) + (mac_font_get_glyphs_for_variants) + (mac_ctfont_create_available_families, syms_of_macfont): + Remove code for OSX < 10.6. + (mac_font_family_group, mac_font_family_compare): Remove, only used + for OSX < 10.6. + + * macfont.h (MAC_FONT_FORMAT_ATTRIBUTE, MAC_FONT_FORMAT_BITMAP) + (mac_font_copy_non_synthetic_table): Remove versions for OSX < 10.6 + + * Makefile.in: Replace nsfont.o macfont.o with ns_fontfile in + comment. + +2014-10-12 Paul Eggert + + Fix putenv race conditions with undefined behavior (Bug#8705). + Do all putenv calls before Emacs creates any threads. + Use a safer way to modify the TZ environment variable in the + presence of multiple threads. For further thread-safety, + prefer localtime_r and gmtime_r to localtime and gmtime, + and prefer struct tm's tm_gmtoff (if available) to calling + both localtime_r and gmtime_r. + * dbusbind.c (Fdbus__init_bus): Move xputenv call from here ... + (init_dbusbind): ... to this new function. + * emacs.c (main) [HAVE_DBUS]: Call it before creating threads. + * xterm.c (x_term_init): Move xputenv call from here ... + (init_xterm): ... to this new function. + * emacs.c (main) [USE_GTK]: Call it before creating threads. + * editfns.c (HAVE_TM_GMTOFF): Default to false. + (dump_tz_string): New constant. + (init_editfns): Use it. This centralizes the dump_tz stuff. + Call set_time_zone_rule here, so that its xputenv is done + before Emacs goes multithreaded. + (mktime_z) [!HAVE_TZALLOC]: New function, which is typically + thread-safe enough for Emacs. + (format_time_string, Fdecode_time, Fcurrent_time_string) + (Fcurrent_time_zone): + Prefer localtime_r and gmtime_r, which are more thread-safe, to + localtime and gmtime. Remove now-unnecessary calls to block_input. + (tm_gmtoff): New static function. + (Fdecode_time, Fcurrent_time_zone): Use it. + (Fencode_time): Use mktime_z, for better thread-safety. + (set_time_zone_rule): Now static. Rewrite to be mostly thread-safe, + i.e., not quite thread-safe but good enough for Emacs typical usage. + Do not reclaim storage that is in the environment; let it leak. + Always call tzset, since localtime_r does not. + * emacs.c (dump_tz, Fdump_emacs) [HAVE_TZSET]: Remove dump_tz stuff. + This is now done in init_editfns. + * systime.h (mktime_z, timezone_t, tzalloc, tzfree) [!HAVE_TZALLOC]: + New macros and declarations, for platforms lacking tzalloc & friends. + +2014-10-09 Paul Eggert + + * lisp.h (USE_STACK_STRING): Now true only if USE_STACK CONS. + On x86 platforms this works around GCC bug 63495 + , + and more generally should fix a portability problem in Emacs. + Reported by Stefan Monnier in: + http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00261.html + +2014-10-08 Leo Liu + + Enhance terpri to allow conditionally output a newline. (Bug#18652) + * keymap.c (describe_vector_princ): + * keyboard.c (Fcommand_error_default_function): Adapt to change to + Fterpri. + + * print.c (printchar_stdout_last): Declare. + (printchar): Record the last char written to stdout. + (Fterpri): Add optional argument ENSURE. + +2014-10-08 Eli Zaretskii + + * w32inevt.c (maybe_generate_resize_event): Pass non-zero as the + DELAY argument to change_frame_size, so that the frame size + changes, if any are needed, are delayed until the next redisplay. + This is to avoid a too early QUIT inside change_frame_size, when + it calls Lisp in frame_windows_min_size, in case one of the events + we've read sets the quit-flag. (Bug#18649) + + * w32fns.c (check_x_display_info): Accept terminal objects as + argument, to follow what xfns.c does. + +2014-10-07 Glenn Morris + + * Makefile.in ($(srcdir)/macuvs.h) + ($(lispsource)/international/charprop.el): Add explicit FORCE. + +2014-10-07 Eli Zaretskii + + * decompress.c (init_zlib_functions): Move the message about zlib + being unavailable from here... + (Fzlib_decompress_region): ...to here. (Bug#18650) + +2014-10-07 Dmitry Antipov + + * font.c (Ffont_get_glyphs): Use validate_subarray and fix + the case where an optional string is used. Adjust docstring. + +2014-10-06 Stefan Monnier + + * lisp.mk (lisp): Remove w32-common-fns.elc. + +2014-10-05 Paul Eggert + + * keyboard.c (Qleft, Qright): Remove duplicate definitions (Bug#9927). + These were already defined in buffer.c, and the duplicate + definitions cause problems on platforms like 'gcc -fno-common'. + Reported by Peter Dyballa in: http://bugs.gnu.org/9927#137 + +2014-10-05 Jan Djärv + + * nsterm.m (updateFrameSize:): Only call update_frame_tool_bar + if toolbar is visible. + + * nsfont.m (nsfont_draw): Use CGFloat for GNUstep newer than + 0.23 (Bug#18030). + + * nsterm.m (syms_of_nsterm): ns-use-fullscreen-animation is new. + (toggleFullScreen:): Use ns-use-fullscreen-animation for animate. + (ns_select, ns_read_socket): Use unwind_protect to decrease + apploopnr (Bug#18345). + (ns_draw_window_cursor): Adjust y for hbar cursor only if smaller than + line height (Bug#17977). + + * macfont.m: Fix indentation and import changes from macport 24.3.94. + (macfont_closest_traits_index): New function. + (macfont_closest_traits_index_p): Rename from + macfont_closest_traits_index. + (macfont_list): Use macfont_closest_traits_index_p. + +2014-10-05 K. Handa + + * coding.c (detect_coding_iso_2022): Set coding->rejected + correctly when an invalid escape sequence is found (Bug#18610). + +2014-10-04 Jan Djärv + + * gtkutil.c (create_menus): Only add tearoffs to empty menus. + (xg_update_submenu): Remove has_tearoff_p, pass 1 to create_menus + for add_tearoff_p. + +2014-10-04 Martin Rudalics + + * buffer.c (scroll_bar_width, scroll_bar_height): + Fix doc-strings. + * window.c (Fset_window_scroll_bars): Fix doc-string. + (Fwindow_scroll_bars): Have it return what the doc-string says. + +2014-10-03 Eli Zaretskii + + * xdisp.c (move_it_by_lines): Call reseat_1 after moving the + iterator backwards, to resync the bidi iterator. (Bug#18584) + +2014-10-03 Dmitry Antipov + + Consistently use min and max macros from lisp.h. + * coding.c (min, max): + * font.c (MAX): + * unexhp9k800.c (min): + * unexw32.c (min, max): Use definitions from lisp.h. + * regex.c (MAX, MIN) [!emacs]: Define own max and min as such. + Adjust users. + * gmalloc.c (min): Tiny style change. + + * fileio.c (emacs_readlinkat, Finsert_file_contents): + * w32fns.c, xfns.c (x_create_tip_frame): Use AUTO_STRING. + +2014-10-03 Paul Eggert + + Fix x-focus-frame bug with "Not an in-range integer" (Bug#18586). + * xselect.c (X_SHRT_MAX, X_SHRT_MIN, X_LONG_MAX, X_LONG_MIN) + (X_ULONG_MAX): Move these macros to xterm.h. + (x_fill_property_data): Be more generous about allowing either + signed or unsigned data of the appropriate width. + * xterm.h (x_display_set_last_user_time): New function. + All setters of last_user_time changd to use this function. + If ENABLE_CHECKING, check that the times are in range. + +2014-10-02 Eli Zaretskii + + * dispnew.c (adjust_decode_mode_spec_buffer): Use 'int' instead of + 'ssize_t'. Suggested by Paul Eggert . + +2014-10-02 Jan Djärv + + * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to + make a font_object from a tty frame (Bug#18573). + (Finternal_set_lisp_face_attribute): Add FIXME comment. + +2014-10-02 Dmitry Antipov + + * alloc.c (mark_overlay): Assume that overlay boundaries are + always markers. Add comment. + * lread.c (read_internal_start): Use convenient validate_subarray. + Adjust docstring. + (Fread_from_string): Adjust docstring. + +2014-10-02 Stefan Monnier + + * lisp.h: Fix up compilation for USE_STACK_LISP_OBJECTS=false. + + * nsselect.m (ns-own-selection-internal, ns-disown-selection-internal): + Rename from the "x-" prefix. + +2014-10-01 Stefan Monnier + + * xselect.c (selection-converter-alist): Fix docstring. + +2014-10-01 Eli Zaretskii + + * w32proc.c (sys_spawnve): Avoid modification of the CMDNAME + argument passed by the caller, when we mirror all slashes into + backslashes. + +2014-10-01 Dmitry Antipov + + * gtkutil.c (xg_set_toolkit_horizontal_scroll_bar_thumb): + Resurrect old code and fix compilation with GTK < 2.13.6. + +2014-10-01 Paul Eggert + + Use AUTO_CONS instead of SCOPED_CONS, etc. + * frame.h (AUTO_FRAME_ARG): Rename from FRAME_PARAMETER. + * lisp.h (AUTO_CONS): Rename from scoped_cons. + (AUTO_LIST1): Rename from scoped_list1. + (AUTO_LIST2): Rename from scoped_list2. + (AUTO_LIST3): Rename from scoped_list3. + (AUTO_LIST4): Rename from scoped_list4. + (AUTO_STRING): Rename from SCOPED_STRING. + * frame.h (AUTO_FRAME_ARG): + * lisp.h (AUTO_CONS, AUTO_LIST1, AUTO_LIST2, AUTO_LIST3) + (AUTO_LIST4, AUTO_STRING): + Prepend a new argument 'name'. + Declare a variable instead of yielding a value. + All uses changed. + * lisp.h (STACK_CONS, AUTO_CONS_EXPR): New internal macros. + +2014-09-30 Eli Zaretskii + + * w32fns.c (w32_createwindow): Accept an additional argument, an + array of 2 values specifying the coordinates of the frame's + top-left corner. Use these values instead of calling x_get_arg, + which can cons Lisp objects, and therefore cannot be called except + from the main thread. Remove redundant tests for the default + values. + (my_create_window): Move the calculation of the coordinates of the + frame's top-left edge here. Pass them to the input thread via the + second parameter of the WM_EMACS_CREATEWINDOW message. + See http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00892.html + for the details. + +2014-09-30 Eli Zaretskii + + * xdisp.c (cursor_row_fully_visible_p): Update commentary. + (redisplay_window): Treat the frame's frozen_window_starts flag + the same way as the optional_new_start flag for the window: only + obey it if the glyph row showing point will be fully visible. + Likewise when the window start is in a continuation line. If, + after trying everything under the 'force_start' label, point is + still not fully visible, give up and scroll the window. + Add debugging traces. (Bug#18545) + + * window.c (Frecenter): Set the window's redisplay flag. + +2014-09-30 Eli Zaretskii + + * w32term.c (w32_read_socket): Don't use frame dimensions for + resizing if GetClientRect returned an empty (0, 0, 0, 0) + rectangle. Check the return value of GetClientRect, and don't use + the results if it didn't succeed. + + * dispnew.c (change_frame_size_1): Recompute the frame dimensions + in columns and lines after correcting the pixel dimensions in + check_frame_size. + (adjust_decode_mode_spec_buffer): Add assertion to avoid passing + negative values to xrealloc. (Bug#18528) + +2014-09-30 Paul Eggert + + * alloc.c: Remove now-unnecessary check. + Suggested by Dmitry Antipov in: + http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00891.html + + * xterm.c (x_term_init): Allocate temps on stack, not on heap. + + * frame.c (x_set_frame_parameters): Port --enable-gcc-warnings + to Ubuntu 14.04.1 x86-64. + + Simplify stack-allocated Lisp objects, and make them more portable. + The build_local_string macro was used in two ways: (1) string + literals for which scoped allocation suffices, and (2) file name + components, where it's not safe in general to assume bounded-size + ASCII data. Simplify by defining a new macro SCOPED_STRING that + allocates a block-scope string, and by using SCOPED_STRING for (1) + and build_string for (2). Furthermore, actually use stack + allocation only for objects known to have sufficient alignment. + This simpler implementation means Emacs can make + USE_STACK_LISP_OBJECTS the default unless GC_MARK_STACK != + GC_MAKE_GCPROS_NOOPS. + * lisp.h (GCALIGNED): Align even if !USE_STACK_LISP_OBJECTS, + for fewer differences among implementations. + (struct Lisp_String): Now GCALIGNED. + (USE_STACK_LISP_OBJECTS): Default to true, since the + implementation no longer insists on a nonempty GCALIGNED. + But make it false if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS. + (SCOPED_CONS_INITIALIZER): Remove, since it's no longer needed + separately. Move definiens to scoped_cons. The old definition + was incorrect when GCALIGNED was defined to be empty. + (union Aligned_String): New type. + (USE_STACK_CONS, USE_STACK_STRING): New constants, so that the + implementation ports to compilers that don't align strictly enough. + Don't worry about the union sizes; it's not worth bothering about. + (scoped_cons, scoped_list1, scoped_list3, scoped_list4): + Rewrite using USE_STACK_CONS. + (scoped_cons): Assume the use of union Aligned_Cons. + (lisp_string_size, make_local_string, build_local_string): Remove. + Unless otherwise specified, all callers of build_local_string + changed to use SCOPED_STRING. + (SCOPED_STRING): New macro. + * data.c (wrong_choice): + * menu.c (single_menu_item): + * process.c (Fformat_network_address): + Hoist use of SCOPED_STRING out of a scope, so that its returned + object lives long enough. + * fileio.c (Fexpand_file_name): Use build_string, not SCOPED_STRING, + as the string might be long or might not be ASCII. + +2014-09-29 Eli Zaretskii + + * msdos.c (internal_terminal_init): Bump version to 25. + +2014-09-29 Dmitry Antipov + + Keep stack-allocated Lisp objects fast rather than versatile. + * lisp.h (union Aligned_Cons) [!GCALIGNED]: Define as such. + (SCOPED_CONS_INITIALIZER): New macro. + (scoped_cons) [USE_STACK_LISP_OBJECTS]: Use it. + (USE_LOCAL_ALLOCA): Remove. + (local_cons, local_list1, local_list2, local_list3, local_list4): + Remove. Stack overflow checking makes them too slow. + (make_local_vector): Likewise. Also we just don't have enough + users for it. + (enum LISP_STRING_OVERHEAD): Remove. + (local_string_init, local_vector_init): Remove prototypes. + (make_local_string, build_local_string): Redesign to target short + compile-time string constants, fall back to regular string allocation + where appropriate. + (lisp_string_size): New function. + (verify_ascii) [ENABLE_CHECKING]: Add prototype. + * alloc.c (local_string_init, local_vector_init): Remove. + (verify_ascii) [ENABLE_CHECKING]: New function. + * buffer.c, charset.c, chartab.c, data.c, editfns.c, emacs.c, fileio.c: + * fns.c, font.c, fontset.c, frame.c, keyboard.c, keymap.c, lread.c: + * menu.c, minibuf.c, process.c, textprop.c, xdisp.c, xfns.c, xfont.c: + * xselect.c, xterm.c: All related users changed. + +2014-09-28 Ken Brown + + * sheap.c (bss_sbrk_buffer_beg): Remove redundant variable. + * gmalloc.c [CYGWIN]: Adapt to change in sheap.c. + +2014-09-27 Ken Brown + + Fix implementation of HYBRID_MALLOC on Cygwin. + * sheap.c (bss_sbrk_buffer_end): Cast to void *. + (bss_sbrk_buffer_beg): New variable. Use it... + * gmalloc.c (ALLOCATED_BEFORE_DUMPING) [CYGWIN]: ...here, to fix + incorrect definition. + +2014-09-27 Stefan Monnier + + * keyboard.c (track-mouse): Rename to internal--track-mouse. + Make it into a function and change arg to be a function. + + * lisp.mk (lisp): Add elisp-mode.elc. + +2014-09-26 Paul Eggert + + * xfns.c (x_default_scroll_bar_color_parameter): + Use USE_LOCAL_ALLOCA only if USE_TOOLKIT_SCROLL_BARS, + to pacify --enable-gcc-warnings in non-scrollbar builds. + +2014-09-26 Ken Brown + + * w32term.h (ALIGN_STACK): Fix the cpp condition. + +2014-09-25 Eli Zaretskii + + * lisp.h (USE_STACK_LISP_OBJECTS): Default to false for 32-bit + MinGW builds that use GCC before 4.2. + + Default to stack objects on DOS_NT platforms as well. + * w32term.h (ALIGN_STACK) [__GNUC__]: Define to + __attribute__((force_align_arg_pointer)) for GCC 4.2 and later. + + * lisp.h (USE_STACK_LISP_OBJECTS): Remove the !DOS_NT condition. + + * w32proc.c (enum_locale_fn, enum_codepage_fn): Add the + ALIGN_STACK attribute. + + * w32fns.c (w32_monitor_enum): Add the ALIGN_STACK attribute. + + * w32uniscribe.c (add_opentype_font_name_to_list): Add the + ALIGN_STACK attribute. + + * w32font.c (add_font_name_to_list, add_font_entity_to_list) + (add_one_font_entity_to_list): Add the ALIGN_STACK attribute. + +2014-09-25 Martin Rudalics + + * frame.c (frame_inhibit_resize): + * widget.c (EmacsFrameResize): + * window.c (resize_frame_windows, Fset_window_configuration): + * xdisp.c (expose_frame): + * xfns.c (x_change_tool_bar_height): + * xmenu.c (update_frame_menubar): + * xterm.c (handle_one_xevent, x_new_font, x_set_window_size_1): + Remove code left dead after 2014-07-27 changes. + +2014-09-25 Paul Eggert + + Fix local_cons etc. to not exhaust the stack when in a loop. + Problem reported in: + http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00696.html + * buffer.c (Fother_buffer, other_buffer_safely, init_buffer): + * charset.c (load_charset_map_from_file, Ffind_charset_region) + (Ffind_charset_string): + * chartab.c (uniprop_encode_value_numeric, uniprop_table): + * data.c (wrong_range): + * editfns.c (Fpropertize, format2): + * emacs.c (init_cmdargs, decode_env_path): + * fileio.c (auto_save_error): + * fns.c (Fyes_or_no_p): + * font.c (font_style_to_value, font_parse_xlfd) + (font_parse_family_registry, font_delete_unmatched) + (font_add_log): + * fontset.c (Fset_fontset_font): + * frame.c (x_get_arg): + * keyboard.c (echo_dash, safe_run_hooks_error, parse_menu_item) + (read_char_minibuf_menu_prompt): + * keymap.c (silly_event_symbol_error, describe_vector): + * lread.c (load_warn_old_style_backquotes): + * menu.c (single_menu_item): + * minibuf.c (Fread_buffer): + * process.c (status_message, Fformat_network_address) + (server_accept_connection): + * textprop.c (copy_text_properties): + * xdisp.c (Fcurrent_bidi_paragraph_direction): + * xfns.c (x_default_scroll_bar_color_parameter): + * xfont.c (xfont_open): + * xselect.c (x_clipboard_manager_error_1): + * xterm.c (x_term_init): + Put USE_LOCAL_ALLOCA at the start of the function. + * fns.c (maybe_resize_hash_table): Use build_string instead of + build_local_string, since we'd otherwise need a conditional + USE_LOCAL_ALLOCA here, but this is just debugging output and is + not worth the bother of optimization. + * font.c (font_delete_unmatched): Remove by-hand code that + observed MAX_ALLOCA limit, since it's now done automatically. + * keymap.c (Fsingle_key_description): Put USE_SAFE_ALLOCA at top, + since build_local_string needs its sa_alloc. + * lisp.h (lisp_word_count): New function. + (SAFE_ALLOCA_LISP): Use it. + (USE_LOCAL_ALLOCA): New macro. + (local_cons, make_local_vector, make_local_string): + Observe the MAX_ALLOCA limit. + (LISP_STRING_OVERHEAD): New constant. + (make_local_string): Use it. + +2014-09-24 Paul Eggert + + Default to stack objects on non-GNU/Linux, non-DOS_NT platforms. + * lisp.h (USE_STACK_LISP_OBJECTS): Also default to true + if !defined DOS_NT && !defined GNU_LINUX. I've tested this on AIX + and Solaris and it's likely to work on similar platforms. + + Avoid signed integer overflow when converting Time to ptrdiff_t. + * keyboard.c (INPUT_EVENT_POS_MAX, INPUT_EVENT_POS_MIN): + New macros. + (position_to_Time, Time_to_position): New functions. + (gen_help_event, kbd_buffer_get_event): Use them. + * systime.h (Time) [emacs && !HAVE_X_WINDOWS]: + Go back to plain 'unsigned long', so that 'Time' is the same + for both X and non-X builds; this is less likely to cause surprise. + * termhooks.h: Remove compile-time check that Time and ptrdiff_t + are the same size; this is no longer required. + + * keyboard.c (make_lispy_event): Avoid unnecessary tests + of bit 28 and of whether an unsigned value is negative. + This simplifies the code a bit, and pacifies clang 3.4. + +2014-09-24 Eli Zaretskii + + * systime.h (Time): Define as size_t, to be consistent with 64-bit + Windows builds, where 'long' is a 32-bit type. + + * w32inevt.h (w32_console_mouse_position): Update the argument + types to use 'Time'. + + * w32term.c (w32_mouse_position) + (x_horizontal_scroll_bar_report_motion) + (x_scroll_bar_report_motion): Update the argument types to use + 'Time'. + +2014-09-24 Dmitry Antipov + + * termhooks.h (enum scroll_bar_part): Begin from 0 to allow... + (struct input_event): ...unsigned bitfields. Likewise for + `event_kind' member. Prefer unsigned for `code' and 'modifiers'. + Use `timestamp' for HELP_EVENT position. Add compile-time assert. + * keyboard.c (gen_help_event, kbd_buffer_store_help_event) + (kbd_buffer_get_event): Adjust users. + (scroll_bar_parts): Add Qnil to match scroll_bar_nowhere. + (make_scroll_bar_position): New function, refactored out of... + (make_lispy_event): ...adjusted user. + * nsterm.h (EmacsScroller): Use enum for `last_hit_part' member. + * nsterm.m (ns_mouse_position, mouseUp): + * term.c (term_mouse_position): + * w32inevt.c (w32_console_mouse_position): + * w32term.c (w32_mouse_position): + * xterm.c (XTmouse_position): Use scroll_bar_above_handle. + (x_send_scroll_bar_event, xm_scroll_callback, xg_scroll_callback): + Prefer enum and explicit enum members to integers and numeric values. + + * chartab.c (uniprop_encode_value_numeric): + * font.c (font_style_to_value): Use make_local_vector. + (font_delete_unmatched): Use local_cons but respect MAX_ALLOCA. + * keymap.c (append_key): Use scoped_list1. + + * lisp.h (USE_STACK_LISP_OBJECTS): Enable by default if GNU_LINUX + && __GNUC__ && !__clang__. Mention known problems. Adjust comment. + +2014-09-24 Paul Eggert + + Fix some slow uses and misuses of strcat. + * doc.c (get_doc_string): + * gtkutil.c (get_utf8_string): + * xsmfns.c (x_session_initialize): + Avoid recomputation of string length. + * ftfont.c (ftfont_spec_pattern): + * xfns.c (xic_create_fontsetname): + Don't assume output buffer is initially zero. + +2014-09-23 Paul Eggert + + * lisp.h (lispstpcpy): Rename from lispstrcpy, and act like stpcpy. + All callers changed. + * xterm.c (x_term_init): Use new functionality to avoid two needs + to compute a string length. + + * dispextern.h, xdisp.c (window_box_right_offset): Now static. + +2014-09-23 Dmitry Antipov + + Use known length of a Lisp string to copy it faster. + * lisp.h (lispstrcpy): New function. Add comment. + * callproc.c (child_setup): + * dbusbind.c (xd_append_arg): + * doc.c (get_doc_string): + * font.c (Ffont_xlfd_name): + * frame.c (xrdb_get_resource): + * process.c (Fmake_network_process, network_interface_info): + * w32fns.c (Fx_open_connection): + * w32proc.c (sys_spawnve): + * xfns.c (select_visual): + * xfont.c (xfont_list): + * xsmfns.c (x_session_initialize): + * xterm.c (x_term_init): Use it. + +2014-09-23 Paul Eggert + + Fix SAFE_ALLOCA to not exhaust the stack when in a loop. + Reported by Dmitry Antipov in thread leading to: + http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00713.html + This patch fixes only SAFE_ALLOCA, SAFE_NALLOCA, and SAFE_ALLOCA_LISP; + the experimental local_* macros enabled by USE_LOCAL_ALLOCATORS + remain unfixed. + * callproc.c (call_process): Save and restore sa_avail. + * lisp.h (USE_SAFE_ALLOCA): Define sa_avail. + (AVAIL_ALLOCA): New macro. + (SAFE_ALLOCA, SAFE_NALLOCA, SAFE_ALLOCA_LISP): + Use it, and check against sa_avail rather than MAX_ALLOCA. + +2014-09-22 Dmitry Antipov + + On OSX, do not free font-specific data more than once (Bug#18501). + * macfont.m (macfont_close): Release and free font-specific data + only if it wasn't previously freed. + +2014-09-22 David Caldwell (tiny change) + + * unexmacosx.c (dump_it): Improve error message. + +2014-09-22 Juri Linkov + + * image.c (imagemagick_load_image): Add delay to imagemagick metadata. + (Bug#10747, bug#18334) + +2014-09-22 Eli Zaretskii + + * frame.c (Fmouse_position, Fset_mouse_position): Clarify the + units in which the position is measured. (Bug#18493) + + * xdisp.c (redisplay_internal): Force redisplay of all windows + that show a buffer whose narrowing has changed. (Bug#18490) + +2014-09-22 Eli Zaretskii + + * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor): + * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor): In R2L + lines, draw the hollow-box and hbar cursors on the right side of + cursor-glyph. Thanks to martin rudalics for + testing on X. + + * xterm.c (x_draw_stretch_glyph_string): + * w32term.c (x_draw_stretch_glyph_string): Fix a thinko that + caused the block cursor to disappear on a TAB in R2L lines in + every window except the leftmost one. Reported by Martin Rudalics + . + +2014-09-22 Dmitry Antipov + + Always use matched specpdl entry to record call arguments (Bug#18473). + * lisp.h (record_in_backtrace): Adjust prototype. + * eval.c (record_in_backtrace): Return current specpdl level. + (set_backtrace_args, set_backtrace_nargs): Merge. Adjust all users. + (eval_sub, Ffuncall): Record call arguments in matched specpdl + entry and use that entry in call to backtrace_debug_on_exit. + (apply_lambda): Likewise. Get current specpdl level as 3rd arg. + (do_debug_on_call): Get current specpdl level as 2nd arg. + + Prefer ptrdiff_t to int and avoid integer overflows. + * fileio.c (make_temp_name): + * font.c (font_parse_family_registry): Avoid integer + overflow on string size calculation. + * data.c (Faset): Likewise for byte index. + +2014-09-22 Eli Zaretskii + + Fix display of R2L lines in partial-width windows. + * xdisp.c (init_iterator): Don't use it->bidi_p before it is + assigned the correct value. + (extend_face_to_end_of_line): Account for truncation and + continuation glyphs in R2L rows when one of the fringes is not + displayed. + (display_line): Don't assign negative X offset to a row if we are + going to produce a truncation glyph for it. When handling + truncated R2L rows, consider the width of the left fringe instead + of the right one. + (produce_special_glyphs): Fix bogus assignments. + +2014-09-22 Eli Zaretskii + + * fileio.c (Fexpand_file_name) [DOS_NT]: Make sure newdirlim is + always set to a valid value. Make sure the size passed to alloca + is always positive. (Bug#18516) + +2014-09-22 Dmitry Antipov + + Avoid extra call to oblookup when interning symbols. + * lisp.h (intern_driver): Add prototype. + * lread.c (intern_driver): New function. + (intern1, intern_c_string_1, Fintern): + * font.c (font_intern_prop): + * w32font.c (intern_font_name): Use it. + +2014-09-21 Paul Eggert + + Minor improvements to new stack-allocated Lisp objects. + * frame.h (FRAME_PARAMETER): + Prefer scoped_list1 to local_list1 where either would do. + * lisp.h (scoped_list4): New macro. + (local_cons, local_list1, local_list2, local_list3, local_list4) + (make_local_vector, make_local_string, build_local_string): + Prefer functions to macros where either would do. + * xdisp.c (build_desired_tool_bar_string): + Prefer scoped_list4 to local_list4 where either would do. + +2014-09-18 Dmitry Antipov + + More and more stack-allocated Lisp objects if USE_LOCAL_ALLOCATORS. + * lisp.h (local_list4) [USE_LOCAL_ALLOCATORS]: New macro. + [!USE_LOCAL_ALLOCATORS]: Fall back to regular list4. + * frame.h (FRAME_PARAMETER): New macro. + * dispnew.c (init_display): + * fontset.c (Fset_fontset_font): + * frame.c (x_default_parameter): + * xfaces.c (set_font_frame_param, Finternal_merge_in_global_face): + * xfns.c (x_default_scroll_bar_color_parameter) + (x_default_font_parameter, x_create_tip_frame): Use it. + * editfns.c (Fpropertize): Use local_cons. + * process.c (status_message): Use build_local_string. + * xfont.c (xfont_open): Use make_local_string. + * xdisp.c (build_desired_tool_bar_string): Use local_list4. + +2014-09-18 Paul Eggert + + Port USE_LOCAL_ALLOCATORS code to clang 3.4 x86-64. + * lisp.h (USE_LOCAL_ALLOCATORS): Define only if __GNUC__ && + !__clang__. This works with GCC and with clang and is safer for + compilers we don't know about. + (local_cons): Rename parameter to make capture less likely. + +2014-09-17 Samuel Bronson + + * unexmacosx.c (copy_data_segment): Port to GCC 4.6+ (Bug#9927). + +2014-09-17 Paul Eggert + + Fix minor problems found by static checking. + * alloc.c, lisp.h (SAVE_TYPE_INT_OBJ, make_save_int_obj): + Remove; now unused. + * buffer.h (decode_buffer): Doc and indentation fixes. + * fns.c (Qstring_collate_lessp, Qstring_collate_equalp): Now static. + +2014-09-17 Dmitry Antipov + + Avoid clang-specific warnings. + * buffer.c (init_buffer): Shut up -Wself-assign. + * process.c (server_accept_connection): Shut up -Wunsequenced. + +2014-09-16 Daniel Colascione + + * fns.c (sxhash): For symbols, use address as hash code. + +2014-09-16 Dmitry Antipov + + If USE_LOCAL_ALLOCATORS, allocate even more Lisp objects on stack. + * charset.c (load_charset_map_from_file): Use scoped_list2 + and build_local_string. + * buffer.c (Fother_buffer, other_buffer_safely, init_buffer): + * emacs.c (init_cmdargs, decode_env_path): + * fileio.c (Fexpand_file_name): + * fns.c (maybe_resize_hash_table) [ENABLE_CHECKING]: + * frame.c (x_get_arg): + * keyboard.c (safe_run_hooks_error): + * lread.c (load_warn_old_style_backquotes): + * xdisp.c (Fcurrent_bidi_paragraph_direction): + * xfns.c (x_default_scroll_bar_color_parameter, select_visual): + * xselect.c (x_clipboard_manager_error_1) + (x_clipboard_manager_save_all): + * xterm.c (x_term_init): Use build_local_string. + + Avoid more integer overflows on string size calculations. + * category.c (Fmake_category_set): + * xdisp.c (get_overlay_arrow_glyph_row): + * w32font.c (intern_font_name): Prefer ptrdiff_t to int. + +2014-09-15 Eli Zaretskii + + * sound.c [WINDOWSNT]: Include w32common.h and mbstring.h. + (SOUND_WARNING) [WINDOWSNT]: Include in do..while and improve the + error message format. Use message_with_string to have non-ASCII + file names properly displayed. + (do_play_sound) [WINDOWSNT]: Use Unicode APIs to play sound files + when w32-unicode-filenames is non-nil, but not on Windows 9X, + where these APIs are not available even in UNICOWS.DLL. + Improve the format of error messages and include the file name in them + where appropriate. + (Fplay_sound_internal) [WINDOWSNT]: Make the MS-Windows branch + call play-sound-functions, per documentation. + + * w32.c (w32_get_long_filename, w32_get_short_filename): + Constify the input file name arguments. + + * w32.h (w32_get_long_filename, w32_get_short_filename): + Update prototypes. + +2014-09-15 Dmitry Antipov + + If USE_LOCAL_ALLOCATORS, allocate some Lisp objects on stack. + * lisp.h (local_cons, local_list1, local_list2, local_list3) + [USE_LOCAL_ALLOCATORS]: New macros. + [!USE_LOCAL_ALLOCATORS]: Fall back to regular functions. + (build_local_string): Avoid argument name expansion clash with + make_local_string. + * alloc.c (toplevel) + [USE_LOCAL_ALLOCATORS && GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS]: + Preprocessor guard to avoid impossible configuration. + * charset.c (Ffind_charset_region, Ffind_charset_string): + Use make_local_vector. + * lread.c (read1, substitute_object_recurse): Use scoped_cons. + * textprop.c (Fput_text_property, Fadd_face_text_property): + Use scoped_list2. + (copy_text_properties): Use local_cons and local_list3. + * chartab.c (uniprop_table): + * data.c (wrong_choice, wrong_range): + * doc.c (get_doc_string): + * editfns.c (format2): + * fileio.c (Fexpand_file_name, auto_save_error): + * fns.c (Fyes_or_no_p): + * font.c (font_parse_xlfd, font_parse_family_registry, font_add_log): + * fontset.c (Fset_fontset_font): + * keyboard.c (echo_add_key, echo_dash, parse_menu_item) + (read_char_minibuf_menu_prompt): + * keymap.c (silly_event_symbol_error, describe_vector): + * menu.c (single_menu_item): + * minibuf.c (Fread_buffer): + * process.c (status_message, Fformat_network_address) + (server_accept_connection): Use make_local_string and + build_local_string. Prefer compound literals where appropriate. + +2014-09-15 Daniel Colascione + + * fns.c (Fsort): Tweak sort docstring. + +2014-09-15 Eli Zaretskii + + * w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of pipes. + (sys_write): When a write to a non-blocking pipe returns ENOSPC, + set errno to EAGAIN instead, to allow the caller to retry the + write after some waiting. Fixes deadlocks when Emacs exchanges a + lot of data through the pipe. (Bug#18420) + + * sound.c (Fplay_sound_internal): Encode the sound file name in + the ANSI codepage. Expand it against data-directory, as per docs, + not against the current directory. No need to make a local copy + of the file name; pass the encoded file name directly to + do_play_sound. (Bug#18463) + + * w32.c (ansi_encode_filename): If w32_get_short_filename returns + NULL, and the file name is not encodable in ANSI codepage, return + the string with "?" replacement characters, which will fail the + caller. This avoids returning a random value in that case. + +2014-09-15 Martin Rudalics + + * window.c (Fresize_mini_window_internal): Set w->total_lines + from w->pixel_height (Bug#18422). + +2014-09-15 Jan Djärv + + * nsterm.m (updateFrameSize:, initFrameFromEmacs:) + (toggleFullScreen:): Take frame_resize_pixelwise into account when + setting resize increments (Bug#18435). + +2014-09-15 Eli Zaretskii + + * xdisp.c (pos_visible_p): Properly save and restore the iterator + state around the call to line_bottom, since it can move the + iterator to another screen line. This fixes off-by-one errors in + the reported row in some rare cases. + +2014-09-14 Jan Djärv + + * callproc.c (init_callproc): Fix bug introduced at + 2014-09-07 (Bug#18474). + +2014-09-13 Dmitry Antipov + + Prefer ptrdiff_t to int and avoid integer overflows. + * fileio.c (make_temp_name): + * font.c (font_parse_family_registry): Avoid integer + overflow on string size calculation. + * data.c (Faset): Likewise for byte index. + +2014-09-12 Detlev Zundel + + * buffer.c (syms_of_buffer): DEFSYM Qchoice (Bug#18337). + +2014-09-11 Dmitry Antipov + + * lisp.h (make_local_string): Nitpick indent. + * print.c (Fprin1_to_string): Remove unused GCPROs. + + More debugging aids around GCPROs. + * lisp.h (struct gcpro) [DEBUG_GCPRO]: Add extra members. + (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6, GCPRO7): + Minor restyle. If DEBUG_GCPRO, initialize extra fields. + + * lread.c (readevalloop_eager_expand_eval): Add GCPRO and fix + bootstrap broken if GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE. + + Remove redundant GCPROs around Ffuncall and Fapply calls. + This is safe because Ffuncall protects all of its arguments by itself. + * charset.c (map_charset_for_dump): Remove redundant GCPRO. + * eval.c (Fapply, apply1, call0, call1, call2, call3, call4, call5) + (call6, call7): Likewise. Use compound literals where applicable. + (run_hook_with_args_2): Use compound literal. + +2014-09-11 Paul Eggert + + Pacify --enable-gcc-warnings when no window system is used. + These warnings found that subscript error, so they seem worthwhile. + * composite.c (char_composable_p): Simplify a bit. + * frame.c (x_set_frame_parameters): Add an IF_LINT. + * frame.c (x_set_horizontal_scroll_bars, x_set_scroll_bar_height): + * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS): + * window.c (set_window_scroll_bars): + Use USE_HORIZONTAL_SCROLL_BARS for simplicity. + * frame.h [! USE_HORIZONTAL_SCROLL_BARS]: + Ignore -Wsuggest-attribute=const. + * window.h (USE_HORIZONTAL_SCROLL_BARS): New macro. + (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Use it. + +2014-09-10 Paul Eggert + + * charset.c (Fget_unused_iso_final_char): Fix subscript error. + Use check_iso_charset_parameter instead of doing the checks by hand. + (check_iso_charset_parameter): Move up. Check parameters a bit + more carefully, and return true for 96-char sets. All callers changed. + +2014-09-10 Paul Eggert + + Simplify lisp.h by removing the __COUNTER__ business. + Reported by Dmitry Antipov in: + http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00220.html + * lisp.h (make_local_vector, make_local_string) + (build_local_string): Simplify by not bothering with __COUNTER__. + The __COUNTER__ business wasn't working properly, and was needed + only for hypothetical future expansion anyway. + +2014-09-10 Alp Aker + + * nsterm.m (ns_draw_fringe_bitmap): Use the same logic as other + terms to determine bitmap color. (Bug#18437) + +2014-09-10 Eli Zaretskii + + * w32.c (sys_write): Use SAFE_NALLOCA for the NL -> CRLF + translation buffer. + +2014-09-10 Paul Eggert + + * xterm.c (handle_one_xevent): Add braces to pacify gcc -Wall. + +2014-09-10 Jan Djärv + + * xterm.c (handle_one_xevent): Detect iconified by looking at + _NET_WM_STATE_HIDDEN. + +2014-09-10 Paul Eggert + + * lisp.h (DEFINE_GDB_SYMBOL_ENUM): Remove. + These can generate a constant with the correct value but the wrong + width, which doesn't work as a printf argument. All uses removed. + Reported by Dmitry Antipov in: + http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00213.html + (ENUMABLE): Remove; no longer needed. + (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val): + Remove; no longer needed because of the above change. + Each definiens moved to the only use. + + Improve the experimental local and scoped allocation. + * alloc.c (local_string_init, local_vector_init): + New functions, defined if USE_LOCAL_ALLOCATORS. + Mostly, these are moved here from lisp.h, as it's not + clear it's worth making them inline. + * lisp.h (USE_STACK_LISP_OBJECTS): Default to false. + (GCALIGNED): Depend on HAVE_STRUCT_ATTRIBUTE_ALIGNED and + USE_STACK_LISP_OBJECTS, not on a laundry list. + (local_string_init, local_vector_init): New decls. + (union Aligned_Cons): New type. + (scoped_cons): Use it. Give up on the char trick, as it's a too + much of a maintenance hassle; if someone wants this speedup + they'll just need to convince their compiler to align properly. + Conversely, use the speedup if struct Lisp_Cons happens to + be aligned even without a directive. Better yet, help it along + by using union Aligned_Cons rather than struct Lisp_Cons. + (pointer_valid_for_lisp_object): Remove. This check is not + necessary, since make_lisp_ptr is already doing it. All uses removed. + (local_vector_init, local_string_init): Move to alloc.c. + (build_local_vector): Remove this awkward macro, replacing with ... + (make_local_vector): New macro, which acts more like a function. + Use statement expressions and use __COUNTER__ to avoid macro + capture. Fall back on functions if these features are not supported. + (build_local_string, make_local_string): Likewise. + +2014-09-09 Dmitry Antipov + + * xterm.c (x_term_init): Consolidate duplicated code. + [USE_LUCID]: Revert 2014-04-02 change (Bug#18403). Add comment. + (x_delete_terminal): Do not close X connection fd (Bug#18403). + Add eassert and mark dpyinfo as dead only if it was alive. + + Add macros to allocate temporary Lisp objects with alloca. + Respect MAX_ALLOCA and fall back to regular GC for large objects. + * character.h (parse_str_as_multibyte): Move prototype to ... + * lisp.h (parse_str_as_multibyte): ... here. + (struct Lisp_Cons): Add GCALIGNED attribute if supported. + (scoped_cons, scoped_list2, build_local_vector, build_local_string): + New macros. + (scoped_cons_init, pointer_valid_for_lisp_object, local_vector_init) + (local_string_init): New functions. + * alloc.c (verify_alloca) [ENABLE_CHECKING]: New function. + (init_alloc_once): Call it. + + Cleanup last change and make all new stuff conditional. + * lisp.h (build_local_string): Rename to ... + (make_local_string): ... this macro. + (build_local_string, scoped_list1, scoped_list3): New macros. + (toplevel) [USE_STACK_LISP_OBJECTS]: Define all new macros + and functions as such, use regular fallbacks otherwise. + * alloc.c (verify_alloca) [USE_STACK_LISP_OBJECTS]: Define + conditionally. + +2014-09-08 Eli Zaretskii + + * dispnew.c (prepare_desired_row): When MODE_LINE_P is zero, + always make sure the marginal areas of the row are in sync with + what the window wants. (Bug#18419) + + * data.c (set_internal): Use assq_no_quit, not Fassq, to find an + existing binding of a variable, to avoid silently aborting + commands that use specbind. (Bug#18331) + +2014-09-07 Paul Eggert + + Fix bug uncovered by changing alloca to auto buffer (Bug#18410). + * coding.c (growable_destination): New function. + (produce_chars): Use it for sanity checks. Do not fiddle with + dst_end if the source and destination are both nil, as it's + the caller's responsibility to avoid overlap. + * keyboard.c (read_decoded_event_from_main_queue): + The destination must be MAX_MULTIBYTE_LENGTH times the max source + length, not 4 times, to prevent decode_coding_c_string from trying + to reallocate a destination. This removes the need for the FIXME. + + * callproc.c (exec_failed) [DOS_NT]: Define a dummy. + All callers simplified. Add a comment about exec_failed, vfork, + and alloca. + + Adjust drag-and-drop fix when window is above top (Bug#18303). + * xselect.c (x_fill_property_data): Don't let sign bit of negative + XCDR bleed into XCAR's encoded value. Improve checks for + out-of-range data while we're at it. + +2014-09-07 Jan Djärv + + * xselect.c (x_fill_property_data): Handle negative XCDR when data + is CONSP (Bug#18303). + +2014-09-07 Eli Zaretskii + + * callproc.c (child_setup) [WINDOWSNT]: Don't call exec_failed if + 'alloca' gets passed arguments larger than MAX_ALLOCA. + + * font.c (MAX): Define if not defined elsewhere. + +2014-09-07 Paul Eggert + + * keyboard.c (read_decoded_event_from_main_queue): Reinstitute alloca + here for destination buffer, to work around what appears to be a + bug in decode_coding_c_string when the source and destination are + both C strings. + + Use SAFE_ALLOCA etc. to avoid unbounded stack allocation (Bug#18410). + This follows up on the recent thread in emacs-devel on alloca; see: + http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00042.html + This patch also cleans up alloca-related glitches noted while + examining the code looking for unbounded alloca. + * alloc.c (listn): + * callproc.c (init_callproc): + Rewrite to avoid need for alloca. + * buffer.c (mouse_face_overlay_overlaps) + (report_overlay_modification): + * buffer.h (GET_OVERLAYS_AT): + * coding.c (make_subsidiaries): + * doc.c (Fsnarf_documentation): + * editfns.c (Fuser_full_name): + * fileio.c (Ffile_name_directory, Fexpand_file_name) + (search_embedded_absfilename, Fsubstitute_in_file_name): + * fns.c (Fmake_hash_table): + * font.c (font_vconcat_entity_vectors, font_update_drivers): + * fontset.c (fontset_pattern_regexp, Ffontset_info): + * frame.c (Fmake_terminal_frame, x_set_frame_parameters) + (xrdb_get_resource, x_get_resource_string): + * ftfont.c (ftfont_get_charset, ftfont_check_otf, ftfont_drive_otf): + * ftxfont.c (ftxfont_draw): + * image.c (xbm_load, xpm_load, jpeg_load_body): + * keyboard.c (echo_add_key, menu_bar_items, tool_bar_items) + + * keymap.c (Fdescribe_buffer_bindings, describe_map): + * lread.c (openp): + * menu.c (digest_single_submenu, find_and_call_menu_selection) + (find_and_return_menu_selection): + * print.c (PRINTFINISH): + * process.c (Fformat_network_address): + * scroll.c (do_scrolling, do_direct_scrolling, scrolling_1): + * search.c (search_buffer, Fmatch_data, Fregexp_quote): + * sound.c (wav_play, au_play): + * syntax.c (skip_chars): + * term.c (tty_menu_activate, tty_menu_show): + * textprop.c (get_char_property_and_overlay): + * window.c (Fset_window_configuration): + * xdisp.c (safe__call, next_overlay_change, vmessage) + (compute_overhangs_and_x, draw_glyphs, note_mouse_highlight): + * xfaces.c (face_at_buffer_position): + * xmenu.c (x_menu_show): + Use SAFE_ALLOCA etc. instead of plain alloca, since the + allocation size isn't bounded. + * callint.c (Fcall_interactively): Redo memory_full check + so that it can be done at compile-time on some platforms. + * coding.c (MAX_LOOKUP_MAX): New constant. + (get_translation_table): Use it. + * callproc.c (call_process): Use SAFE_NALLOCA instead of + SAFE_ALLOCA, to catch integer overflows on size calculation. + (exec_failed) [!DOS_NT]: New function. + (child_setup) [!DOS_NT]: Use it. + * editfns.c (Ftranspose_regions): + Hoist USE_SAFE_ALLOC + SAFE_FREE out of 'if'. + * editfns.c (check_translation): + Allocate larger buffers on the heap. + * eval.c (internal_lisp_condition_case): + Check for MAX_ALLOCA overflow. + * fns.c (sort_vector): Use SAFE_ALLOCA_LISP rather than Fmake_vector. + (Fbase64_encode_region, Fbase64_decode_region): + Avoid unnecessary calls to SAFE_FREE before 'error'. + * buffer.c (mouse_face_overlay_overlaps): + * editfns.c (Fget_pos_property, check_translation): + * eval.c (Ffuncall): + * font.c (font_unparse_xlfd, font_find_for_lface): + * ftfont.c (ftfont_drive_otf): + * keyboard.c (echo_add_key, read_decoded_event_from_main_queue) + (menu_bar_items, tool_bar_items): + * sound.c (Fplay_sound_internal): + * xdisp.c (load_overlay_strings, dump_glyph_row): + Use an ordinary auto buffer rather than alloca, since the + allocation size is fixed and small. + * ftfont.c: Include . + (matching_prefix): New function. + (get_adstyle_property): Use it, to avoid need for alloca. + * keyboard.c (echo_add_key): + * keymap.c (describe_map): Use ptrdiff_t, not int. + * keyboard.c (echo_add_key): Prefer sizeof to strlen. + * keymap.c (Fdescribe_buffer_bindings): Use SBYTES, not SCHARS, + when counting bytes. + * lisp.h (xlispstrdupa): Remove, replacing with ... + (SAFE_ALLOCA_STRING): ... new macro with different API. + This fixes a portability problem, namely, alloca result + passed to another function. All uses changed. + (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Check for MAX_ALLOCA, + not MAX_ALLOCA - 1. + * regex.c (REGEX_USE_SAFE_ALLOCA, REGEX_SAFE_FREE) + (REGEX_ALLOCATE): New macros. + (REGEX_REALLOCATE, REGEX_ALLOCATE_STACK, REGEX_REALLOCATE_STACK) + (REGEX_FREE_STACK, FREE_VARIABLES, re_match_2_internal): + Use them. + * xdisp.c (message3): Use SAFE_ALLOCA_STRING rather than doing it + by hand. + (decode_mode_spec_coding): Store directly into buf rather than + into an alloca temporary and copying the temporary to the buf. + +2014-09-06 Eli Zaretskii + + * Makefile.in (EMACS_HEAPSIZE): Remove, no longer used. (Bug#18416) + +2014-09-04 Jan D + + * xterm.c (x_term_init): Don't call x_session_initialize if running + as a daemon (Bug#18375). + + * xsmfns.c: Initialize ice_fd. + +2014-09-04 Paul Eggert + + Less chatter in 'make' output. + * Makefile.in (AM_V_GEN, am__v_GEN_, am__v_GEN_0, am__v_GEN_1, AM_V_at) + (am__v_at_, am__v_at_0, am__v_at_1): New macros, taken from Automake. + ($(etc)/DOC, buildobj.h, gl-stamp): Use them. + +2014-09-03 Martin Rudalics + + * buffer.c (scroll-bar-height): Fix typo in doc-string. + * frame.c (Vdefault_frame_horizontal_scroll_bars): + Remove variable. + * nsfns.m (Fx_create_frame): + * w32fns.c (Fx_create_frame): + * xfns.c (Fx_create_frame): Default horizontal scroll bars to + nil. + +2014-09-03 Eli Zaretskii + + * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in + the reported row in the case of a window with a header line, by + improving on the fix committed in 2011-10-08T10:58:50Z!eliz@gnu.org + eliz@gnu.org-20111008105850-ht4tvsayohvr1kjc. (Bug#18384) + +2014-09-03 Paul Eggert + + * eval.c (internal_lisp_condition_case): Don't overrun the stack + when configured --with-wide-int on typical 32-bit platforms. + +2014-09-03 Eli Zaretskii + + * xdisp.c (display_and_set_cursor): Call erase_phys_cursor also + when HPOS is negative, for the benefit of R2L glyph rows whose + newline overflows into the fringe. + +2014-09-03 Ken Brown + + * conf_post.h (strnicmp) [CYGWIN && HAVE_NTGUI]: Define. (Bug#18366) + +2014-09-02 Paul Eggert + + Minor cleanup of recent strlen-avoiding patch. + * fileio.c (CHECK_LENGTH): Remove. + Rewrite callers so that they don't need it. + (Fexpand_file_name) [DOS_NT]: Fix a case where directory length + variable wasn't set. + +2014-09-02 Dmitry Antipov + + * fileio.c (CHECK_LENGTH): New macro. + (Fexpand_file_name): Use it and get rid of a few more calls + to strlen and strcat. + * callproc.c (egetenv_internal): Add arg and rename from egetenv ... + * lisp.h (egetenv): ... because of a new inline function used to + avoid calls to strlen for a compile-time constants. + + * buffer.h (decode_buffer): New function. + * buffer.c (Fbuffer_name, Fbuffer_file_name, Fbuffer_base_buffer) + (Fbuffer_local_variables, Fbuffer_modified_p, Fbuffer_modified_tick) + (Fbuffer_chars_modified_tick, Fdelete_all_overlays): + * data.c (Flocal_variables_p): + * fileio.c (Fverify_visited_file_modtime): + * marker.c (live_buffer): Use it. + +2014-09-01 Dmitry Antipov + + Avoid extra calls to strlen in filesystem I/O routines. + * fileio.c (Fexpand_file_name): Avoid calls to strlen if + the length of 'newdir' is known or may be precalculated. + (file_accessible_directory_p): Prefer to pass Lisp_Object, + not 'char *', and so use precalculated length. + (Ffile_accessible_directory_p): + * callproc.c (encode_current_directory, init_callproc): + * charset.c (init_charset): + * lread.c (load_path_check, load_path_default): Adjust users. + * lisp.h (file_accessible_directory_p): Tweak prototype. + +2014-09-01 Eli Zaretskii + + * w32proc.c (w32_compare_strings): Support "C" and "POSIX" + locales. + +2014-09-01 Paul Eggert + + --enable-silent-rules now suppresses more chatter. + * Makefile.in (AM_DEFAULT_VERBOSITY, AM_V_CC, am__v_CC_) + (am__v_CC_0, am__v_CC_1, AM_V_CCLD, am__v_CCLD_, am__v_CCLD_0) + (am__v_CCLD_1): New macros, taken from Automake. + (.c.o, .m.o, temacs$(EXEEXT)): Use them. + + Clean up extern decls a bit. + * bytecode.c: Include blockinput.h and keyboard.h rather + than rolling their APIs by hand. + * emacs.c: Include regex.h and rely on its and lisp.h's API + rather than rolling them by hand. + * lastfile.c: Include lisp.h, to check this file's API. + * lisp.h (lisp_eval_depth, my_edata, my_endbss, my_endbss_static): + New decls. + * regex.h (re_max_failures): New decl. + * unexcw.c, unexmacosx.c, unexw32.c: + Rely on lisp.h's API rather than rolling it by hand. + * vm-limit.c (__after_morecore_hook, __morecore, real_morecore): + Declare at top level, to pacify GCC -Wnested-externs. + +2014-08-31 Eli Zaretskii + + * xdisp.c (get_glyph_string_clip_rects): Don't let the width of a + clipping rectangle become negative (i.e. large positive, since + it's an unsigned data type). This can happen in R2L hscrolled + glyph rows, and caused us to draw the cursor glyph on the fringe. + For the details, see + http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00543.html. + +2014-08-31 Ken Brown + + * gmalloc.c: Don't include . Declare system malloc and + friends before defining hybrid_malloc and friends if HYBRID_MALLOC + is defined. (Bug#18368) + +2014-08-30 Paul Eggert + + Vector-sorting fixes (Bug#18361). + It's not safe to call qsort or qsort_r, since they have undefined + behavior if the user-specified predicate is not a total order. + Also, watch out for garbage-collection while sorting vectors. + * fns.c: Include . + (sort_vector_predicate) [!HAVE_QSORT_R]: Remove. + (sort_vector_compare): Remove, replacing with .... + (inorder, merge_vectors, sort_vector_inplace, sort_vector_copy): + ... these new functions. + (sort_vector): Rewrite to use the new functions. + GCPRO locals, since the predicate can invoke the GC. + Since it's in-place return void; caller changed. + (merge): Use 'inorder', for clarity. + + * sysdep.c (str_collate): Clear errno just before wcscoll(_l). + One can't hoist this out of the 'if', because intervening calls to + newlocale, twolower, etc. can change errno. + +2014-08-30 Eli Zaretskii + + * sysdep.c (str_collate) [__STDC_ISO_10646__]: Improve the + wording of the error messages. + (str_collate) [WINDOWSNT]: Signal an error if w32_compare_strings + sets errno. + + * w32proc.c (get_lcid_callback): Accept locale specifications + without the country part, as in "enu" vs "enu_USA". + (w32_compare_strings): Signal an error if a locale was specified, + but couldn't be translated into a valid LCID. + +2014-08-29 Michael Albinus + + * sysdep.c (str_collate) [__STDC_ISO_10646__]: Move up setting errno. + +2014-08-29 Paul Eggert + + * sysdep.c (str_collate) [__STDC_ISO_10646__]: Do not look at + errno after towlower_l. errno's value is not specified after + towlower_l. Instead, assume that towlower_l returns its argument + on failure, which is portable in practice. + +2014-08-29 Eli Zaretskii + + * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): Doc fix. + + * w32proc.c (w32_compare_strings): Accept additional argument + IGNORE_CASE. Set up the flags for CompareStringW to ignore case + if requested. If w32-collate-ignore-punctuation is non-nil, add + NORM_IGNORESYMBOLS to the flags. + (LINGUISTIC_IGNORECASE): Define if not already defined. + (syms_of_ntproc) : New variable. + + * sysdep.c (str_collate) [WINDOWSNT]: Adapt to the interface + change. + +2014-08-29 Michael Albinus + + * sysdep.c (LC_CTYPE, LC_CTYPE_MASK, towlower_l): + Define substitutes for platforms that lack them. + (str_collate): Add arguments locale and ignore_case. + + * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): + Add optional arguments LOCALE and IGNORE-CASE. + + * lisp.h (str_collate): Adapt argument list. + +2014-08-29 Dmitry Antipov + + Add vectors support to Fsort. + * fns.c (sort_vector, sort_vector_compare): New functions. + (sort_list): Likewise, refactored out of ... + (Fsort): ... adjusted user. Mention vectors in docstring. + (sort_vector_predicate) [!HAVE_QSORT_R]: New variable. + * alloc.c (make_save_int_obj): New function. + * lisp.h (enum Lisp_Save_Type): New member SAVE_TYPE_INT_OBJ. + (make_save_int_obj): Add prototype. + + Fix last change to support Darwin/OSX and FreeBSD (Bug#18354). + * sysdep.c (sort_vector_compare) [DARWIN_OS || __FreeBSD__]: + Conditionally define to match system's qsort_r signature. + (sort_vector) [DARWIN_OS || __FreeBSD__]: Likewise in call to qsort_r. + +2014-08-28 Ken Brown + + Add support for HYBRID_MALLOC, allowing the use of gmalloc before + dumping and the system malloc after dumping. (Bug#18222) + + * conf_post.h (malloc, realloc, calloc, free) [HYBRID_MALLOC]: + Define as macros, expanding to hybrid_malloc, etc. + (HYBRID_GET_CURRENT_DIR_NAME): New macro. + (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Define as + macro. + * gmalloc.c: Set up the infrastructure for HYBRID_MALLOC, with a + full implementation on Cygwin. Remove Cygwin-specific code that + is no longer needed. + (malloc, realloc, calloc, free, aligned_alloc) [HYBRID_MALLOC]: + Redefine as macros expanding to gmalloc, grealloc, etc. + (DUMPED, ALLOCATED_BEFORE_DUMPING) [CYGWIN]: New macros. + (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Undefine. + (USE_PTHREAD, posix_memalign) [HYBRID_MALLOC]: Don't define. + (hybrid_malloc, hybrid_calloc, hybrid_free, hybrid_realloc) + [HYBRID_MALLOC]: + (hybrid_get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: + (hybrid_aligned_alloc) [HYBRID_MALLOC && (HAVE_ALIGNED_ALLOC || + HAVE_POSIX_MEMALIGN)]: New functions. + * alloc.c (aligned_alloc) [HYBRID_MALLOC && (ALIGNED_ALLOC || + HAVE_POSIX_MEMALIGN)]: Define as macro expanding to + hybrid_aligned_alloc; declare. + (USE_ALIGNED_ALLOC) [HYBRID_MALLOC && (ALIGNED_ALLOC || + HAVE_POSIX_MEMALIGN)]: Define. + (refill_memory_reserve) [HYBRID_MALLOC]: Do nothing. + * sysdep.c (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: + Define as macro, expanding to gget_current_dir_name, and define + the latter. + * emacs.c (main) [HYBRID_MALLOC]: Don't call memory_warnings() or + malloc_enable_thread(). Don't initialize malloc. + * lisp.h (NONPOINTER_BITS) [CYGWIN]: Define (because GNU_MALLOC is + no longer defined on Cygwin). + (refill_memory_reserve) [HYBRID_MALLOC]: Don't declare. + * sheap.c (bss_sbrk_buffer_end): New variable. + * unexcw.c (__malloc_initialized): Remove variable. + * ralloc.c: Throughout, treat HYBRID_MALLOC the same as + SYSTEM_MALLOC. + * xdisp.c (decode_mode_spec) [HYBRID_MALLOC]: Don't check + Vmemory_full. + +2014-08-28 Martin Rudalics + + * w32term.c (w32_horizontal_scroll_bar_handle_click): + In `event->y' return entire range (the size of the scroll bar minus + that of the thumb). + * xterm.c (xm_scroll_callback, xaw_jump_callback): In `whole' + return entire range (the scaled size of the scroll bar minus + that of the slider). In `portion' return the scaled position of + the slider. + (xaw_jump_callback): Restore part of code for vertical scroll + bar broken in change from 2014-07-27. + (xaw_scroll_callback): Provide incremental scrolling with + horizontal scroll bars. + +2014-08-28 Eli Zaretskii + + * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Don't define. + + * indent.c (Fvertical_motion): Fix vertical motion up through a + display property after a newline. (Bug#18276) + + * xdisp.c (display_line): Don't assume that the call to + reseat_at_next_visible_line_start ends up at a character + immediately following the newline on the previous line. + Avoids setting the ends_at_zv_p flag on screen lines that are not at or + beyond ZV, which causes infloop in redisplay. For the details, see + http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00368.html. + + * dispnew.c (buffer_posn_from_coords): Fix mirroring of X + coordinate for hscrolled R2L screen lines. (Bug#18277) + +2014-08-28 Paul Eggert + + * sysdep.c (LC_COLLATE, LC_COLLATE_MASK): Give individual defaults + (Bug#18051). + +2014-08-27 Eli Zaretskii + + * syntax.c (scan_lists): Don't examine positions before BEGV. + (Bug#18339) + +2014-08-27 Paul Eggert + + Improve robustness of new string-collation code (Bug#18051). + * sysdep.c (LC_COLLATE, LC_COLLATE_MASK, freelocale, locale_t) + (newlocale, wcscoll_l): Define substitutes for platforms that + lack them, so as to simplify the mainline code. + (str_collate): Simplify the code by assuming the above definitions. + Use wcscoll_l, not uselocale, as uselocale is too fragile. + For example, the old version left the Emacs in the wrong locale if + wcscoll reported an error. Use 'int', not ptrdiff_t, for the int + result. Report an error if newlocale fails. + +2014-08-27 Michael Albinus + + * lisp.h (str_collate): + * sysdep.c (str_collate): Return int. + (str_collate) [__STDC_ISO_10646__]: Propagate error of wcscoll. + +2014-08-27 Dmitry Antipov + + Fix some glitches in previous change. + * sysdep.c (stack_direction): Replace stack_grows_down + to simplify calculation of stack boundaries. + (handle_sigsegv): Check whether we really crash somewhere near + to stack boundary, and handle fatal signal as usual if not. + (init_sigsegv): Adjust accordingly. + * keyboard.c (Vtop_level_message): Rename to + Vinternal__top_level_message, as suggested by Stefan Monnier in + http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00493.html + All related users changed. + +2014-08-26 Dmitry Antipov + + Handle C stack overflow caused by too nested Lisp evaluation. + * lisp.h (toplevel) [HAVE_STACK_OVERFLOW_HANDLING]: Declare + siglongjmp point to transfer control from SIGSEGV handler. + * keyboard.c (return_to_command_loop, recover_top_level_message) + [HAVE_STACK_OVERFLOW_HANDLING]: New variables. + (regular_top_level_message): New variable. + (command_loop) [HAVE_STACK_OVERFLOW_HANDLING]: Handle non-local + exit from SIGSEGV handler and adjust message displayed by Vtop_level + if appropriate. + (syms_of_keyboard): DEFVAR Vtop_level_message and initialize + new variables described above. + * sysdep.c [HAVE_SYS_RESOURCE_H]: Include sys/resource.h as such. + (stack_grows_down, sigsegv_stack, handle_sigsegv) + [HAVE_STACK_OVERFLOW_HANDLING]: New variables and function. + (init_sigsegv): New function. + (init_signals): Use it. + +2014-08-25 Ken Brown + + * emacs.c (main): Remove use of obsolete macro + G_SLICE_ALWAYS_MALLOC. + +2014-08-25 Eli Zaretskii + + Implement locale-sensitive string collation for MS-Windows. + * w32proc.c (get_lcid_callback, get_lcid, w32_compare_strings): + New functions. (Bug#18051) + + * w32.h (w32_compare_strings): Add prototype. + + * w32.c : New global flag. + (globals_of_w32): Initialize it. + + * sysdep.c (str_collate) [WINDOWSNT]: Implementation for MS-Windows. + + * fns.c (Fstring_collate_lessp, Fstring_collate_equalp) + [WINDOWSNT]: Call str_collate on MS-Windows. + +2014-08-25 Dmitry Antipov + + One more minor cleanup of font subsystem. + * font.h (struct font_driver): Convert text_extents to + return void because returned value is never actually used. + * macfont.m (macfont_text_extents): + * w32font.c (w32font_text_extents): + * xftfont.c (xftfont_text_extents): Adjust to return void + and assume that 'metrics' argument is always non-NULL. + * ftfont.c (ftfont_text_extents): + * xfont.c (xfont_text_extents): Likewise. Avoid redundant memset. + +2014-08-25 Paul Eggert + + Minor cleanups of str_collate fix (Bug#18051). + * fns.c (str_collate): Move decl from here ... + * lisp.h (str_collate): ... to here. + * sysdep.c (str_collate): Prune away some of the forest of ifdefs. + Remove unnecessary casts. Use SAFE_NALLOCA to avoid + potential problems with integer overflow. Don't assume + setlocale succeeds. Remove unnecessary test before restoring + locale via setlocale, and free the copied setlocale string + when done with it. + +2014-08-24 Michael Albinus + + * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): New DEFUNs. + + * sysdep.c (str_collate): New function. (Bug#18051) + +2014-08-23 Karol Ostrovsky (tiny change) + + * Makefile.in (emacs$(EXEEXT)): Retry deletion of bootstrap-emacs + if the initial "rm -f" fails. This is for MinGW builds, where + MS-Windows will not allow deleting the executable file of a + running program. + +2014-08-20 Eli Zaretskii + + * w32term.c (w32_scroll_bar_handle_click) + (w32_horizontal_scroll_bar_handle_click) + (x_scroll_bar_report_motion) + (x_horizontal_scroll_bar_report_motion): For SB_THUMBPOSITION and + SB_THUMBTRACK, use the 32-bit position information returned by + GetScrollInfo, not the 16-bit information returned in the Windows + message sent to us. + +2014-08-19 Eli Zaretskii + + * w32term.c (w32_horizontal_scroll_bar_handle_click): Fix the + second coordinate ('y') reported for dragging the horizontal + scroll bar thumb. + +2014-08-19 YAMAMOTO Mitsuharu + + * xdisp.c (erase_phys_cursor): Fix confusion between window-relative + and text area-relative x-coordinates. + +2014-08-17 Eli Zaretskii + + Avoid overwriting the reversed_p flags in the glyph matrices when + init_iterator or start_display are called. + * xdisp.c (init_iterator): Don't initialize the reversed_p flag of + the glyph row here. + (tool_bar_height, redisplay_tool_bar, try_window) + (try_window_reusing_current_matrix, try_window_id) + (get_overlay_arrow_glyph_row, display_menu_bar): Initialize the + reversed_p flag of the iterator's glyph row where the glyph row + is going to be redrawn. + +2014-08-16 Paul Eggert + + * xdisp.c (set_horizontal_scroll_bar): Don't use uninitialized local. + +2014-08-16 Martin Rudalics + + * w32term.c (w32_horizontal_scroll_bar_handle_click): In y part + of emacs_event return length from si.nPage to si.nMax. + * xdisp.c (set_horizontal_scroll_bar): For right-to-left text + interchange start and end of thumb. + +2014-08-15 Ken Brown + + * gmalloc.c (_malloc_mutex, _aligned_blocks_mutex) [CYGWIN]: Use + ERRORCHECK mutexes. (Bug#18222) + +2014-08-12 Martin Rudalics + + * frame.c (set_menu_bar_lines_1): Remove. + (set_menu_bar_lines): Call change_frame_size instead of + set_menu_bar_lines_1. + +2014-08-11 Jan Djärv + + * nsfns.m (Fx_create_frame): Call adjust_frame_size, + set f->official. + +2014-08-11 Glenn Morris + + * fileio.c: Revert 2013-01-31 change, which chose coding system for + writing before backing up, since it causes a more serious problem + than the one it solves. (Closes Bug#18141, reopens Bug#13522.) + (choose_write_coding_system): No longer callable from Lisp. + Move last piece back here from Fwrite_region. + (Fwrite_region, syms_of_fileio): Update for above changes. + +2014-08-11 Martin Rudalics + + * window.c (Fwindow_valid_p): Fix doc-string (Bug#18194). + (Fwindow_new_total, Fwindow_normal_size, Fwindow_new_normal) + (Fwindow_new_pixel, Fset_window_new_pixel) + (Fset_window_new_total, Fset_window_new_normal) + (Fwindow_resize_apply): Fix doc-strings (see Bug#18112). + See also: + http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html + +2014-08-11 Eli Zaretskii + + * fontset.c (Finternal_char_font): Recompute basic faces if the + frame's face cache was cleared. (Bug#18162) + +2014-08-11 Dmitry Antipov + + Fix bug with uninitialized undo list of an indirect buffer (Bug#18180). + * buffer.c (Fmake_indirect_buffer): Initialize undo list with the + base buffer's undo list. + +2014-08-10 Reuben Thomas + + Fix a couple of recent inadvertent breaks of the MSDOS port. + * msdos.c: include required menu.h + * term.c: set correct menu_show_hook on MSDOS. + +2014-08-10 Martin Rudalics + + Fix handling of menu bar line on TTY frames (Bug#18136) + (Bug#18196). + * dispnew.c (handle_window_change_signal): + * keyboard.c (Fsuspend_emacs): Call change_frame_size with + frame's menu bar lines subtracted from height. + * frame.c (frame_inhibit_resize): Inhibit resizing of TTY + frames. + (adjust_frame_size): Count in menu bar when setting FrameRows. + (make_terminal_frame): When setting up the frame's lines and + text height don't count in the menu bar. + (Fmake_terminal_frame): Call adjust_frame_size with menu bar + lines subtracted from height. + (do_switch_frame): Set tty's FrameRows to number of total lines + of frame. + (Fframe_pixel_height, Fframe_pixel_width): If no window system + is used, return total number of lines and columns. + * menu.c (emulate_dialog_with_menu): Use FRAME_TOTAL_LINES instead + of FRAME_LINES. + * term.c (OUTPUT, tty_set_terminal_modes) + (tty_set_terminal_window, tty_set_scroll_region) + (tty_clear_to_end, tty_write_glyphs, tty_write_glyphs_with_face) + (tty_ins_del_lines, tty_menu_display, tty_menu_activate): + Use FRAME_TOTAL_LINES instead of FRAME_LINES. + (Fresume_tty): Use FRAME_TOTAL_LINES instead of FRAME_LINES. + Call change_frame_size with frame's menu bar lines subtracted + from height. + * w32console.c (w32con_clear_to_end, w32con_clear_frame) + (w32con_ins_del_lines): Use FRAME_TOTAL_LINES instead of + FRAME_LINES. + +2014-08-09 Reuben Thomas + + * alloc.c (Fmemory_info): Remove a stray brace. + + * process.c: Fix a comment typo. + + * msdos.c, dosfns.c (init_dosfns): Remove support for DJGPP < 2.02. + +2014-08-09 Jan Djärv + + * widgetprv.h (EmacsFramePart): Remove font. + + * widget.c (DEFAULT_FACE_FONT, EmacsFrameSetValues, setup_frame_gcs) + (resources, setup_frame_cursor_bits): Remove unused variables and + functions, esp. wrt. font (Bug#18227). + +2014-08-07 Paul Eggert + + * xterm.c (x_delete_terminal): Plug file descriptor leak (Bug#17691). + +2014-08-07 Reuben Thomas + + Refer to MS-DOS using the same name everywhere. + + * editfns.c: Fix a couple of ``MS-DOG''s missed in the previous + commit. + * xfaces.c: ditto. + +2014-08-05 Martin Rudalics + + * w32term.c (w32_redeem_scroll_bar): + * xterm.c (XTredeem_scroll_bar): Revert part of last change by + not redeeming scroll bars that have been turned off. + +2014-08-05 Dmitry Antipov + + * keyboard.c (safe_run_hooks): Follow the convenient style to bind + inhibit-quit to t and pass 2 args to safe_run_hook_funcall. See + . + (safe_run_hook_funcall): Adjust accordingly. + +2014-08-04 Martin Rudalics + + * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS): + Condition correctly according to toolkit used. + * frame.c (make_initial_frame, make_terminal_frame) + (x_set_horizontal_scroll_bars, x_set_scroll_bar_height) + (Vdefault_frame_horizontal_scroll_bars): Correctly condition + assignments according to presence of toolkit scrollbars. + * window.h (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): + Condition correctly according to toolkit used. + * window.c (set_window_scroll_bars): Set horizontal scroll bar + only if toolkit supports it. + * w32term.c (w32_redeem_scroll_bar): Always redeem scroll bar if + present. + * xterm.c (x_scroll_bar_create): Initialize horizontal slot for + non-toolkit builds. + (XTredeem_scroll_bar): Always redeem scroll bar if present. + +2014-08-04 Dmitry Antipov + + * keyboard.c (safe_run_hook_funcall): Avoid consing around + Vinhibit_quit and prefer internal_condition_case_n to pass args. + (safe_run_hooks_error, safe_run_hooks_1): Adjust accordingly. + (safe_run_hooks): Remove comment which is not relevant any more. + +2014-08-03 Paul Eggert + + Don't let big frames overrun the stack. + * dispnew.c (mirrored_line_dance, mirror_line_dance, scrolling): + Use SAFE_NALLOCA, not alloca. + + Fix bug with clang + directory_files_internal + GC (Bug#16986). + * dired.c (directory_files_internal): Use a volatile variable + to prevent the compiler from optimizing away all copies of a local. + I wonder how many other GC-related bugs like this lurk elsewhere? + + Avoid 100% CPU utilization on ssh session exit (Bug#17691). + * xterm.h (struct x_display_info): New member 'connection'. + * xterm.c (x_term_init, x_delete_terminal): Set and use it, + so that x_delete_terminal has a file descriptor to pass to + delete_keyboard_wait_descriptor. + + Don't mishandle year-9999 dates (Bug#18176). + * editfns.c (decode_time_components): Store an invalid timespec + on overflow, instead of returning false, so that the caller can + distinguish overflow from other errors. + (lisp_time_argument, lisp_seconds_argument): If the time is out + of range, signal a time overflow instead of an invalid time spec. + * keyboard.c (decode_timer): Treat time overflow like other + timespec errors. + + Avoid undefined behavior with signed left shift. + Caught by 'gcc -fsanitize=undefined'. + * dispextern.h, scroll.c (scrolling_max_lines_saved, scrolling_1): + * dispnew.c (line_hash_code, scrolling): + * scroll.c (calculate_scrolling, calculate_direct_scrolling): + Use 'unsigned', not 'int', for line hashes. + (scrolling_max_lines_saved): Avoid mystery constants for hash sizes. + +2014-08-02 Paul Eggert + + Make compare-strings more compatible with old behavior (Bug#17903). + * fns.c (Fcompare_strings): Silently bring too-large ends into range. + +2014-08-02 Jan Djärv + + * gtkutil.c (create_dialog): Force min spacing 10 between buttons. + Don't add label between left and right buttons (Bug#18129). + +2014-08-01 Paul Eggert + + Make functions static that no longer need to be extern. + * frame.c, frame.h (set_menu_bar_lines): + * keyboard.c (Qleftmost, Qrightmost): + * xfns.c, frame.h, menu.h (x_set_menu_bar_lines, x_set_tool_bar_lines) + (x_set_internal_border_width): + Now static. + +2014-08-01 Eli Zaretskii + + Fix display of R2L lines when the last character fits only partially. + See http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00476.html + for the details. + * xdisp.c (extend_face_to_end_of_line): If the last glyph of an + R2L row is visible only partially, give the row a negative x + offset. + (display_line): Fix the calculation of the glyph whose pixel width + is used to decide whether the last produced glyph fits on the + line. When the last glyph fits only partially, give the row a + negative x offset. + + Fix hscroll of R2L lines that begin with a TAB or another wide glyph. + * xdisp.c (append_stretch_glyph): In a R2L glyph row, decrease the + pixel width of the first glyph that is hscrolled from display. + (display_line): In R2L glyph rows, don't give a negative offset to + row->x when the first glyph begins before first_visible_x. + + * xdisp.c (display_line): If called with iterator set up to write + to a marginal area, delay the call to handle_line_prefix until we + switch back to the text area. (Bug#18035) + + * .gdbinit (xwindow): The members total_cols, total_lines, + left_col, and top_line are C integers (and has been so for the + last 1.5 years). + +2014-08-01 Andreas Schwab + + * macros.c (Fstart_kbd_macro): Initialize kbd_macro_ptr and + kbd_macro_end together with kbd_macro_buffer. (Bug#18140) + +2014-08-01 Dmitry Antipov + + * atimer.c (toplevel) [HAVE_TIMERFD]: Include errno.h. + (timerfd_callback): Ignore weird events with no data. Add tight + assertions and comments. + (init_atimer) [HAVE_TIMERFD]: Add environment variable to optionally + disable timerfd-based timer. Use TFD_NONBLOCK for timer descriptor. + +2014-08-01 Paul Eggert + + * frame.c (x_set_frame_parameters): Fix typo in previous patch. + I had confused && with ||. + +2014-07-31 Paul Eggert + + Simplify timerfd configuration and fix some minor glitches. + * atimer.c (TIMERFD_CREATE_FLAGS): Remove; we now assume TFD_CLOEXEC. + (alarm_timer, alarm_timer_ok, set_alarm, init_atimer): + Fall back on timer_create if timerfd_create fails at runtime. + (resolution) [HAVE_CLOCK_GETRES]: Remove; we now rely on the + kernel primitives to do resolution. All uses removed. + (timerfd) [!HAVE_TIMERFD]: Define to be -1, for convenience. + (turn_on_atimers): Clear timer_create-based timers too, + for consistency. + + * frame.c (x_set_frame_parameters): Don't use uninitialized locals. + Without this change, the code can access the local variable 'width' + even when it has not been initialized, and likewise for 'height'; + in either case this leads to undefined behavior. + +2014-07-30 Dmitry Antipov + + * xrdb.c (x_load_resources) [USE_MOTIF]: Although not strictly + necessary, put horizontal scroll bar resources as well. See + . + * xterm.c (x_sync_with_move): Really wait 0.5s, not 0.0005s. + +2014-07-29 Dmitry Antipov + + * xrdb.c (x_load_resources) [!USE_MOTIF]: Put horizontal scroll bar + background value to match the resource of its vertical counterpart. + +2014-07-29 Martin Rudalics + + * frame.c (adjust_frame_size): Use FRAME_WINDOW_P instead of + FRAME_X_WINDOW when calling x_set_window_size (Bug#18138). + +2014-07-28 Martin Rudalics + + * frame.c (x_set_frame_parameters): Revert part of 2014-07-24 + change that added the top margin height to the requested height + and revert (undocumented) part of 2014-07-28 change that changed + the logic of whether a size change occurred. + +2014-07-28 Eli Zaretskii + + * .gdbinit (xwindow): The members total_cols, total_lines, + left_col, and top_line are C integers (and has been so for the + last 1.5 years). + + * .gdbinit (xsubchartable): The members 'depth' and 'min_char' are + now C integers. + +2014-07-28 Dmitry Antipov + + On GNU/Linux, use timerfd for asynchronous timers. + * atimer.c (toplevel) [HAVE_TIMERFD]: Include sys/timerfd.h. + (toplevel): Rename alarm_timer_ok to special_timer_available. + [HAVE_TIMERFD]: Declare timerfd. + [HAVE_CLOCK_GETRES]: Declare resolution. + (start_atimer) [HAVE_CLOCK_GETRES]: Round up timestamp to + system timer resolution. + (set_alarm) [HAVE_TIMERFD]: Use timerfd_settime. + (timerfd_callback) [HAVE_TIMERFD]: New function. + (atimer_result, debug_timer_callback, Fdebug_timer_check) + [ENABLE_CHECKING]: New function for the sake of automated tests. + (init_atimer) [HAVE_TIMERFD]: Setup timerfd. + [HAVE_CLOCK_GETRES]: Likewise for system timer resolution. + [ENABLE_CHECKING]: Defsubr test function. + * atimer.h (timerfd_callback) [HAVE_TIMERFD]: Add prototype. + * lisp.h (add_timer_wait_descriptor) [HAVE_TIMERFD]: Likewise. + * process.c (add_timer_wait_descriptor) [HAVE_TIMERFD]: New function. + + Fix --without-x build and pacify --enable-gcc-warnings. + Problems reported in Bug#18122 and Bug#18124. + * frame.c (get_frame_param): Define even if !HAVE_WINDOW_SYSTEM. + (frame_windows_min_size): Now static. + * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS) [!HAVE_WINDOW_SYSTEM]: + Define as no-op. + (adjust_frame_size): Always declare prototype. + + Fix Gnus-related issues reported by David Kastrup in + . + * atimer.c (timerfd_callback): Always read expiration data. + Add comment. + (turn_on_atimers) [HAVE_TIMERFD]: Disarm timerfd timer. + * process.c (add_timer_wait_descriptor): Add timer descriptor + to input_wait_mask and non_process_wait_mask as well. + +2014-07-28 Paul Eggert + + * frame.c (x_set_frame_parameters): Don't use uninitialized locals. + +2014-07-27 Jan Djärv + + * nsterm.m (applicationDidFinishLaunching antialiasThresholdDidChange): + Reinstate code removed by the prevoius commit to this file. + +2014-07-27 Martin Rudalics + + * buffer.h (struct buffer): New fields scroll_bar_height and + horizontal_scroll_bar_type. + * buffer.c (bset_scroll_bar_height) + (bset_horizontal_scroll_bar_type): New functions. + (Fbuffer_swap_text): Handle old_pointm field. + (init_buffer_once): Set defaults for scroll_bar_height and + horizontal_scroll_bar_type. + (syms_of_buffer): New variables scroll_bar_height and + horizontal_scroll_bar_type. + * dispextern.h (window_part): Rename ON_SCROLL_BAR to + ON_VERTICAL_SCROLL_BAR. Add ON_HORIZONTAL_SCROLL_BAR. + (set_vertical_scroll_bar): Remove prototype. + (x_change_tool_bar_height): Add prototype. + * dispnew.c (adjust_frame_glyphs_for_frame_redisplay) + (window_to_frame_vpos, update_frame_1, scrolling, init_display): + Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS + and FRAME_LINES. + (adjust_frame_glyphs_for_window_redisplay): Rearrange lines. + (update_window): Start mode_line_row->y after horizontal scroll + bar. + (change_frame_size_1): Call adjust_frame_size. + (init_display): When changing the size of a tty frame do not + pass height of menu bar. + (Qframe_windows_min_size): New symbol. + * frame.h (struct frame): List tool bar fields after menu bar + fields. Add official, total_lines, horizontal_scroll_bars, + config_scroll_bar_height and config_scroll_bar_lines fields. + (FRAME_HAS_HORIZONTAL_SCROLL_BARS) + (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES) + (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS) + (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES) + (FRAME_WINDOWS_HEIGHT): New macros. + (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT) + (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES) + (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and + horizontal scroll bar. + (frame_inhibit_resize, adjust_frame_size) + (frame_windows_min_size): Add declarations. + (Qscroll_bar_height, Qhorizontal_scroll_bars) + (x_set_scroll_bar_default_height, x_set_left_fringe) + (x_set_right_fringe, x_set_vertical_scroll_bars) + (x_set_horizontal_scroll_bars, x_set_scroll_bar_width) + (x_set_scroll_bar_height): Add external declarations. + * frame.c: (frame_inhibit_resize, frame_windows_min_size) + (adjust_frame_size): New functions. + (make_frame): Initial horizontal_scroll_bars field. + Use SET_FRAME_LINES. Don't allow horizontal scroll bar in + minibuffer window. + (make_initial_frame, make_terminal_frame): No horizontal scroll + bar in initial and terminal frames. Use adjust_frame_size. + (Fframe_total_cols): Fix doc-string. + (Fframe_total_lines, Fscroll_bar_height): New Lisp functions. + (Fset_frame_height, Fset_frame_width, Fset_frame_size): + Rewrite using adjust_frame_size. + (Qscroll_bar_height, Qhorizontal_scroll_bars) + (Qframe_windows_min_size): New symbols. + (x_set_frame_parameters): Remove call of check_frame_size. + (x_report_frame_params): Return scroll_bar_height value. + (x_set_left_fringe, x_set_right_fringe): New functions. + (adjust_frame_height, x_set_internal_border_width) + (x_set_fringe_width): Remove. + (x_set_internal_border_width, x_set_vertical_scroll_bars) + (x_set_scroll_bar_width, x_set_right_divider_width) + (x_set_bottom_divider_width): Rewrite using adjust_frame_size. + (x_set_horizontal_scroll_bars, x_set_scroll_bar_height): + New functions. + (x_figure_window_size): Rewrite to make frame display the + expected number of lines. + (Vdefault_frame_scroll_bars): Rewrite doc-string. + (Vdefault_frame_horizontal_scroll_bars) + (Vframe_initial_frame_tool_bar_height) + (frame_inhibit_implied_resize): New variables. + * fringe.c (compute_fringe_widths): Remove. + * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define. + (xg_create_horizontal_scroll_bar) + (xg_update_horizontal_scrollbar_pos) + (xg_set_toolkit_horizontal_scroll_bar_thumb) + (xg_get_default_scrollbar_height) + (xg_clear_under_internal_border): Extern. + * gtkutil.c (xg_frame_resized): Don't call + do_pending_window_change. + (xg_frame_set_char_size): Use adjust_frame_size. + (style_changed_cb): Call update_theme_scrollbar_height and + x_set_scroll_bar_default_height. + (x_wm_set_size_hint): Don't call check_frame_size. + (update_theme_scrollbar_height) + (xg_get_default_scrollbar_height) + (xg_create_horizontal_scroll_bar) + (xg_update_horizontal_scrollbar_pos) + (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions. + (xg_create_scroll_bar): Set horizontal slot of bar. + (xg_initialize): Call update_theme_scrollbar_height. + (xg_clear_under_internal_border): No more static. + * insdel.c (adjust_suspend_auto_hscroll): New function. + (adjust_markers_for_delete, adjust_markers_for_insert) + (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll. + * keyboard.c (readable_events, discard_mouse_events) + (make_lispy_event): Handle horizontal scroll bar click events. + (Fsuspend_emacs): When changing the size of a tty frame do not + pass height of menu bar. + (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft) + (Qright, Qleftmost, Qrightmost): New symbols. + * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of + FRAME_LINES. + * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll. + * nsfns.m (x_set_internal_border_width): New function. + * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar): + Remove extended fringe code. + (x_set_window_size, x_new_font): Don't call + compute_fringe_widths. + * term.c (Fresume_tty): When changing the size of a tty frame do + not pass height of menu bar. + (clear_tty_hooks, set_tty_hooks): + Clear horizontal_scroll_bar_hook. + (init_tty): Frame has no horizontal scroll bars. + * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio, + scroll_bar_before_handle, scroll_bar_horizontal_handle, + scroll_bar_after_handle, scroll_bar_left_arrow, + scroll_bar_right_arrow, scroll_bar_to_leftmost and + scroll_bar_to_rightmost entries. + (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT + (struct terminal): Add set_horizontal_scroll_bar_hook. + * w32console.c (initialize_w32_display): + Clear horizontal_scroll_bar_hook. + * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of + FRAME_X_DISPLAY. + (x_clear_under_internal_border, x_set_internal_border_width): + New functions. + (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize. + Set windows_or_buffers_changed when adding the menu bar. + (x_set_tool_bar_lines): Rewrite using adjust_frame_size. + (x_change_tool_bar_height, x_set_scroll_bar_default_height) + (w32_createhscrollbar): New functions. + (w32_createscrollbar): Rename to w32_createvscrollbar. + (w32_createwindow): Init WND_HSCROLLBAR_INDEX. + (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by + WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR. + Add WM_EMACS_SHOWCURSOR. + (w32_wnd_proc): Handle WM_HSCROLL case. In WM_WINDOWPOSCHANGING + case do not artificially impose WM size hints. + Handle WM_EMACS_SHOWCURSOR case. Replace WM_EMACS_CREATESCROLLBAR case + by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR + cases. + (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by + WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX. + (unwind_create_frame_1): Remove. + (Fx_create_frame): Make both scrollbars the system standard + width and height. Use official field of frame structure to + inhibit running window-configuration-change-hook. + (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size + pixelwise. Handle frame's official field. + (w32_frame_parm_handlers): Remove x_set_fringe_width + entries. Add x_set_scroll_bar_height, + x_set_horizontal_scroll_bars, x_set_left_fringe and + x_set_right_fringe. + * w32inevt.c (resize_event, maybe_generate_resize_event): Do not + pass height of menu bar to change_frame_size. + * w32menu.c (set_frame_menubar): Rewrite using + frame_inhibit_resize. + * w32term.h (struct w32_display_info): + Add horizontal_scroll_bar_cursor and cursor_display_counter. + (struct scroll_bar): Add horizontal. + (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT) + (HORIZONTAL_SCROLL_BAR_LEFT_RANGE) + (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH) + (HORIZONTAL_SCROLL_BAR_LEFT_BORDER) + (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER) + (HORIZONTAL_SCROLL_BAR_TOP_BORDER) + (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER) + (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros. + (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR): + Define instead of WM_EMACS_CREATESCROLLBAR. + (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of + WND_SCROLLBAR_INDEX. + * w32term.c (horizontal_scroll_bar_min_handle) + (horizontal_scroll_bar_left_border) + (horizontal_scroll_bar_right_border): New integers. + (x_set_frame_alpha): Replace x_highlight_frame by + w32_focus_frame. + (x_window_to_scroll_bar): New argument "type". Update callers + accordingly. + (w32_set_horizontal_scroll_bar_thumb) + (x_horizontal_scroll_bar_report_motion) + (w32_set_horizontal_scroll_bar) + (w32_horizontal_scroll_bar_handle_click) + (x_horizontal_scroll_bar_report_motion): New functions. + (w32_mouse_position): Discriminate horizontal and vertical + scrollbar cases. + (my_create_scrollbar): Replace with two new functions + my_create_vscrollbar and my_create_hscrollbar. + (x_scroll_bar_create): New argument "horizontal". + Update callers accordingly. + (x_scroll_bar_remove, w32_condemn_scroll_bars) + (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal + scroll bar case. + (w32_read_socket): Handle WM_HSCROLL cae. + (x_new_font): Don't recompute fringe widths. + Use frame_inhibit_resize. Calculate new menu bar height iff we + build without toolkit. Always clear under internal border. + (x_set_window_size): Don't check frame size or recompute + fringes. Reset fullscreen status before applying sizes. + Always resize as requested by pixelwise argument. Don't call + do_pending_window_change. + (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT. + (w32_initialize_display_info): Initialize dpyinfo's + horizontal_scroll_bar_cursor entry. + (w32_create_terminal): Add set_horizontal_scroll_bar_hook. + (w32_initialize): Init horizontal_scroll_bar_min_handle and + horizontal_scroll_bar_left_border. + (w32fullscreen_hook): Intermittently resize window to normal + when switching from fullscreen to maximized state. + (run_window_configuration_change_hook): Don't run it if frame is + not official yet. + (unwind_change_frame): Remove. + (Fset_window_configuration): Rewrite using frame's official field. + * widget.c (set_frame_size): Don't call compute_fringe_widths. + (EmacsFrameSetCharSize): Obey frame_inhibit_resize. + * window.h (struct window): New fields old_pointm, + horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole, + scroll_bar_height and suspend_auto_hscroll. + (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type): + New functions. + (sanitize_window_sizes): Extern. + (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P) + (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR) + (WINDOW_CONFIG_SCROLL_BAR_HEIGHT) + (WINDOW_CONFIG_SCROLL_BAR_LINES) + (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT): + New macros. + (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS) + (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros. + (WINDOW_VERTICAL_SCROLL_BAR_TYPE) + (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT) + (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT) + (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite. + (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT) + (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height. + * window.c (wset_old_pointm, Fwindow_scroll_bar_height) + (Fwindow_old_point, sanitize_window_sizes): New functions. + (Qwindow_sanitize_window_sizes): New symbol. + (window_body_height): Count in horizontal scroll bar. + (set_window_hscroll, Fscroll_left, Fscroll_right): + Set suspend_auto_hscroll slot. + (Fwindow_inside_edges): Count fringes pixelwise. + (coordinates_in_window, Fcoordinates_in_window_p): + Consider horizontal scroll bar. + (check_frame_size, adjust_window_margins): Remove functions and + corresponding calls. + (set_window_buffer): Initialize old_pointm and horizontal scroll bars. + (temp_output_buffer_show): Reset hscroll related fields. + Initialize old_pointm. + (make_parent_window): Initialize old_pointm. + (make_window): Initialize old_pointm, horizontal scroll bar type, + and scroll bar height. + (resize_frame_windows): Don't count top margin in new sizes. + Don't use safe sizes when shrinking a frame; let the window + manager do the clipping. + (Fsplit_window_internal): Inherit horizontal scroll bar type and + height. + (Fdelete_window_internal): Unchain old_pointm marker. + (window_scroll_pixel_based, Fscroll_other_window): + Adjust old_pointm. + (Fwindow_text_width, Fwindow_text_height): New argument + "pixelwise". + (struct saved_window): New fields, old_pointm, hscroll_whole, + suspend_auto_hscroll, scroll_bar_height and + horizontal_scroll_bar_type. + (Fset_window_configuration, save_window_save): Set new fields of + saved_window. + (apply_window_adjustment): Don't call adjust_window_margins. + (set_window_margins): Don't change margins if new sizes don't + fit into window. + (set_window_scroll_bars): New argument "horizontal_type". + Handle horizontal scroll bars. Don't change scroll bars if they + don't fit into window. + (Fset_window_scroll_bars): New argument "horizontal_type". + (Fwindow_scroll_bars): Return values for horizontal scroll bars. + (compare_window_configurations): Compare horizontal scroll bar + settings. + * xdisp.c (window_text_bottom_y, window_box_height): Count in + horizontal scroll bar height. + (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES + instead of FRAME_LINES. + (remember_mouse_glyph): Case ON_SCROLL_BAR changed to + ON_VERTICAL_SCROLL_BAR. + (with_echo_area_buffer): Initialize old_pointm. + (with_echo_area_buffer_unwind_data): Store old_pointm values in + vector. + (unwind_with_echo_area_buffer): Handle old_pointm. + (update_tool_bar): Set do_update when the tool bar window has at + least one line (since this is what the user sets). + (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro. + (redisplay_tool_bar): Return early when toolbar has zero lines. + Call x_change_tool_bar_height. Don't use max_tool_bar_height. + (hscroll_window_tree): Handle suspension of auto_hscroll and + old_pointm. + (set_horizontal_scroll_bar): New function. + (redisplay_window): Set ignore_mouse_drag_p when tool bar has + more than one line. Handle horizontal scroll bars. + (note_mouse_highlight): Handle horizontal scrol bars. + (expose_frame): Set dimensions of XRectangle from frame's text + sizes. + (Vvoid_text_area_pointer): Update doc-string. + * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size. + (x_change_tool_bar_height, x_set_scroll_bar_default_height) + (x_set_internal_border_width): New functions. + (x_set_tool_bar_lines): Call x_change_tool_bar_height. + (unwind_create_frame_1): Remove. + (Fx_create_frame): Handle horizontal scroll bars. Use official + field of frame structure to inhibit running + window-configuration-change-hook. + (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size + pixelwise. Handle frame's official field. + (x_frame_parm_handlers): Add x_set_scroll_bar_height, + x_set_horizontal_scroll_bars, x_set_left_fringe, + x_set_right_fringe. + * xmenu.c (update_frame_menubar, free_frame_menubar): + Use adjust_frame_size. + * xterm.h (struct x_display_info): + Add horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar + slots. + (struct scroll_bar): Add horizontal slot. + (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT) + (HORIZONTAL_SCROLL_BAR_LEFT_RANGE) + (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros. + (HORIZONTAL_SCROLL_BAR_LEFT_BORDER) + (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER) + (HORIZONTAL_SCROLL_BAR_TOP_BORDER) + (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER) + (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define. + (x_clear_under_internal_border): Remove. + * xterm.c (XTmouse_position): Handle horizontal scroll bars. + (x_window_to_scroll_bar): New argument TYPE. Update callers. + (x_send_scroll_bar_event, x_scroll_bar_create): New arguments + HORIZONTAL. Update callers. + (horizontal_action_hook_id): New action hook id. + (x_horizontal_scroll_bar_to_input_event) + (x_create_horizontal_toolkit_scroll_bar) + (xt_horizontal_action_hook) + (x_set_toolkit_horizontal_scroll_bar_thumb) + (XTset_horizontal_scroll_bar, x_net_wm_state) + (x_horizontal_scroll_bar_report_motion): New functions. + (xg_scroll_callback, x_scroll_bar_handle_click): + Handle horizontal scroll bars. + (SCROLL_BAR_HORIZONTAL_NAME): Define. + (XTset_vertical_scroll_bar): Attempt to clear areas not covered + by scroll bar. + (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite. + Handle horizontal scroll bars. + (handle_one_xevent): Handle horizontal scroll bar events. + Call x_net_wm_state. + (x_set_window_size_1, x_wm_set_size_hint): Don't call + check_frame_size. + (x_set_window_size): Don't call check_frame_size and + do_pending_window_change. + (x_term_init): Init horizontal_scroll_bar_cursor display info. + (x_create_terminal): Add set_horizontal_scroll_bar_hook. + (x_scroll_bar_set_handle): Add some checks when calling + x_clear_area. + +2014-07-26 Paul Eggert + + Revert previous change. + There is certainly nothing wrong with writing code like 'lo <= i + && i <= hi', even if LO happens to a constant. There isn't even + anything wrong in general with writing 'a <= b' if A happens to + be a constant. At any rate stylistic changes shouldn't + be done like this without discussion. + +2014-07-26 Andreas Schwab + + * alloc.c (xnmalloc, xnrealloc, xpalloc, make_save_value) + (Fgarbage_collect): Reorder conditions that are written backwards. + * data.c (cons_to_unsigned): Likewise. + * dispnew.c (update_frame_1, sit_for): Likewise. + * fileio.c (file_offset): Likewise. + * filelock.c (read_lock_data, lock_file): Likewise. + * fns.c (larger_vector, make_hash_table, Fmake_hash_table): + Likewise. + * font.c (font_intern_prop, font_style_symbolic): Likewise. + * lisp.h (FIXNUM_OVERFLOW_P): Likewise. + * lread.c (read1): Likewise. + * minibuf.c (read_minibuf_noninteractive): Likewise. + * nsterm.m (x_set_frame_alpha): Likewise. + * process.c (wait_reading_process_output): Likewise. + * region-cache.c (delete_cache_boundaries): Likewise. + * xterm.c (x_set_frame_alpha): Likewise. + +2014-07-25 Paul Eggert + + * dispextern.h, xdisp.c (hourglass_shown_p, hourglass_atimer): + Now static. + +2014-07-26 Dmitry Antipov + + * atimer.c (set_alarm) [HAVE_ITIMERSPEC]: Use TIMER_ABSTIME + because atimer expiration is absolute rather than relative. + +2014-07-25 Eli Zaretskii + + * w32term.h (current_popup_menu, menubar_in_use): + Move declarations from w32term.c. + +2014-07-25 Martin Rudalics + + * w32fns.c (menubar_in_use): No more static. + * w32term.c (current_popup_menu, menubar_in_use): Declare. + +2014-07-25 Dmitry Antipov + + Move hourglass machinery to RIF. + * dispextern.h (struct redisplay_interface): New members + show_hourglass and hide_hourglass. Indent comments. + (show_hourglass, hide_hourglass): Remove prototypes. + * nsterm.m (show_hourgass, hide_hourglass): Refactor to ... + (ns_show_hourglass, ns_hide_hourglass): ... new no-ops. + (ns_redisplay_interface): Add them. + * w32fns.c (show_hourglass, hide_hourglass): Refactor to ... + * w32term.c (w32_show_hourglass, w32_hide_hourglass): ... these. + (w32_arrow_cursor): New function to hack around non-GUI frames. + (w32_redisplay_interface): Add new functions. + * w32term.h (w32_arror_cursor): Add prototype. + * xdisp.c (show_hourglass): New function, refactored out from + platform-dependent code. + (cancel_hourglass): Now call to RIF function. + * xfns.c (show_hourglass, hide_hourglass): Refactor to ... + * xterm.c (x_show_hourglass, x_hide_hourglass): ... these. + (x_redisplay_interface): Add new functions. + +2014-07-24 Dmitry Antipov + + Fix error reported by Angelo Graziosi in + + and complete previous change. + * frame.c (adjust_frame_height): New function. + (Fset_frame_height, Fset_frame_size): Use it. + (x_set_frame_parameters): Take frame top margin into account. + +2014-07-23 Dmitry Antipov + + * frame.c (Fset_frame_height): Take frame top margin into account. + Incorrect behavior was reported by Martin Rudalics in + + +2014-07-22 Dmitry Antipov + + * xterm.h (struct x_output) [USE_X_TOOLKIT || USE_GTK]: Define + menubar_height as such. Tweak comment. + [USE_LUCID && USE_TOOLKIT_SCROLL_BARS]: Likewise for + scroll_bar_top_shadow_pixel and scroll_bar_bottom_shadow_pixel. + All related users changed. + (FRAME_MENUBAR_HEIGHT) [!USE_X_TOOLKIT && !USE_GTK]: No-op. + * xterm.c (handle_one_xevent): + * gtkutil.c (xg_event_is_for_menubar): + * xfns.c (x_window) [USE_X_TOOLKIT]: + * xmenu.c (set_frame_menubar, free_frame_menubar): + Prefer to use FRAME_MENUBAR_HEIGHT. + +2014-07-21 Dmitry Antipov + + * frame.c (Fframe_parameters): Always report frame height without + menu and tool bar lines. + +2014-07-21 Jan Djärv + + * nsterm.m (applicationDidFinishLaunching:): Call + antialiasThresholdDidChange, register for antialias changes (Bug#17534). + (antialiasThresholdDidChange:): New method for EmacsApp. + + * nsterm.h (EmacsApp): Add antialiasThresholdDidChange. + + * macfont.m (macfont_update_antialias_threshold): Remove static. + + * macfont.h (macfont_update_antialias_threshold): Declare. + +2014-07-21 Eli Zaretskii + + * w32select.c (setup_windows_coding_system): + Apply CODING_ANNOTATION_MASK to the common_flags member of struct + coding_system. Reported by martin rudalics . + + * w16select.c (Fw16_get_clipboard_data): + Apply CODING_ANNOTATION_MASK to the common_flags member of struct + coding_system. + + * xdisp.c (init_iterator): Initialize it->stop_charpos to the + buffer position where we are to start the iteration. + (handle_invisible_prop): Record in it->stop_charpos the position + where the invisible text ends. (Bug#18035) + (hscroll_window_tree): Don't try hscrolling windows whose cursor + row has zero buffer position as their start position. + Reported by martin rudalics . + + * xdisp.c (move_it_vertically_backward, move_it_by_lines): Prevent + infinite looping in redisplay when display lines don't have enough + space to display even a single character. (Bug#18036) + +2014-07-20 Dmitry Antipov + + * frame.h (struct frame) [USE_X_TOOLKIT]: New member shell_position. + * xfns.c (x_window): Use it to allow xfree later. + (x_encode_text): Drop 3rd arg; unused. Tweak comment and adjust users + where appropriate. Use bool for booleans and remove redundant checks. + (Fx_backspace_delete_keys_p): Use XkbFreeKeyboard; explain why. + * xterm.c (x_free_frame_resources): Free shell_position. + +2014-07-19 K. Handa + + * xfaces.c (realize_x_face): Call font_load_for_lface with no + mandatory font spec (Bug#17973). + +2014-07-19 Stefan Monnier + + * font.c (font_score): Return the worst score if the size of + ENTITY is wrong by more than a factor 2 (Bug#17973). + +2014-07-18 Dmitry Antipov + + * frame.c (frame_unspecified_color): New function + refactored out from ... + (Fframe_parameters, Fframe_parameter): ... adjusted users. + (x_fullscreen_adjust, set_frame_param): Move Windows-specific + function to ... + * w32term.c (x_fullscreen_adjust, set_frame_param): ... static here. + * frame.h (x_fullscreen_adjust) [HAVE_NTGUI]: + * lisp.h (set_frame_param): Remove prototype. + * xterm.c (x_display_pixel_width, x_display_pixel_height): Now ... + * xterm.h (x_display_pixel_width, x_display_pixel_height): ... + inlined from here. + + Prefer 'x_display_info *' to 'Display *' in X selection code. + This helps to avoid unneeded calls to x_display_info_for_display. + * xterm.h (struct selection_input_event): Record 'x_display_info *' + instead of 'Display *'. + (SELECTION_EVENT_DPYINFO): New macro. + (SELECTION_EVENT_DISPLAY): Now inline function to prohibit using + it as an lvalue. Mention this in comment. + * xterm.c (handle_one_xevent): Use SELECTION_EVENT_DPYINFO. + * xselect.c (x_get_window_property_as_lisp_data, x_atom_to_symbol) + (selection_data_to_lisp_data, receive_incremental_selection): + Convert to use 'x_display_info *'. Adjust users where appropriate. + (lisp_data_to_selection_data): Likewise. Also pass 'struct + selection data *' as last arg to not return values in args. + (unexpect_property_change): Use common removal technique. + +2014-07-17 Dmitry Antipov + + * print.c (print_preprocess): Adjust to match changed + sub char-table structure and avoid crash (Bug#18038). + + * data.c (wrong_choice): Not static any more. + * lisp.h (wrong_choice): Add prototype. + * frame.h (struct frame) [USE_X_TOOLKIT || HAVE_NTGUI]: + Declare namebuf as such. Tweak comment. + [USE_GTK]: Likewise for tool_bar_position. + (fset_tool_bar_position) [USE_GTK]: Ditto. + (FRAME_TOOL_BAR_POSITION): New macro. + * frame.c (x_report_frame_params): + * gtkutil.c (update_frame_tool_bar): + * xfns.c (Fx_create_frame): Use it. + (x_set_tool_bar_position): Add meaningful diagnostic messages. + +2014-07-16 Eli Zaretskii + + * xdisp.c (decode_mode_spec): Call file-remote-p on the current + buffer's default-directory only if it is a string. (Bug#17986) + +2014-07-16 Dmitry Antipov + + More precise control over values of some buffer-local variables. + * keyboard.c (Qvertical_scroll_bar): + * frame.c (Qleft, Qright): Move to ... + * buffer.c (Qleft, Qright, Qvertical_scroll_bar): ... here. + * buffer.c (Qchoice, Qrange, Qoverwrite_mode, Qfraction): New symbols. + (syms_of_buffer): DEFSYM all of the above, attach special properties. + Use special symbols to DEFVAR_PER_BUFFER overwrite-mode, + vertical-scroll-bar, scroll-up-aggressively + and scroll-down-aggressively. + * buffer.h (Qchoice, Qrange, Qleft, Qright, Qvertical_scroll_bar): + Add declarations. + * nsfns.m, frame.h (Qleft, Qright): + * nsterm.m (Qleft): Remove declarations. + * gtkutil.c (toplevel): Include buffer.h. + * data.c (wrong_choice, wrong_range): New functions. + (store_symval_forwarding): Handle special properties of buffer-local + variables and use functions from the above to signal error, if any. + + * frame.h (enum fullscreen_type) [HAVE_WINDOW_SYSTEM]: Use more natural + values. Add comment. + (struct frame): Re-arrange layout to avoid extra padding and use bit + fields for output_method, want_fullscreen and vertical_scroll_bar_type. + (FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS) + (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT) + (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT) [!HAVE_WINDOW_SYSTEM]: + Define as no-ops because there are no scroll bars anyway. + * frame.c (make_frame, make_terminal_frame, make_initial_frame): + Adjust users. + + * font.c (fset_font_data) [HAVE_XFT || HAVE_FREETYPE]: + Add convenient setter. + (font_put_frame_data, font_get_frame_data): Use it. + +2014-07-15 Daiki Ueno + + * nsgui.h (XCHAR2B_BYTE1): Add missing parentheses around + pointer argument, before dereferencing. + (XCHAR2B_BYTE2): Likewise. + +2014-07-15 Dmitry Antipov + + * xmenu.c (toplevel): Use LWLIB_ID for next_menubar_widget_id. + (pop_down_menu) [USE_X_TOOLKIT]: Accept integer arg. + (create_and_show_popup_menu, create_and_show_dialog) [USE_X_TOOLKIT]: + Use record_unwind_protect_int and avoid consing. + (syms_of_xmenu) [USE_X_TOOLKIT]: Declare WIDGET_ID_TICK_START. + + * regex.c (re_search_2): Use ssize_t to avoid integer overflow. + +2014-07-14 Paul Eggert + + Use binary-io module, O_BINARY, and "b" flag (Bug#18006). + * callproc.c (create_temp_file): Use mkostemp's O_BINARY flag. + * emacs.c [MSDOS]: + * emacs.c (main) [DOS_NT]: Don't mess with _fmode. + (main) [MSDOS]: Use SET_BINARY instead of setmode. + * minibuf.c: Include binary-io.h instead of fcntl.h. + (read_minibuf_noninteractive): + Use set_binary_mode instead of handcrafted code. + Don't call emacs_set_tty if emacs_get_tty failed. + * sysdep.c, systty.h (emacs_get_tty): Return int, not void. + * sysdep.c (emacs_open, emacs_pipe): Use O_BINARY. + * w32.c (pipe2): Adjust eassert to include O_BINARY. + + * macros.c (Fstart_kbd_macro): Avoid need for overflow check. + This works around a GCC compiler bug when Emacs is configured with + --enable-gcc-warnings. + +2014-07-14 Dmitry Antipov + + * lisp.h (CHECK_VECTOR_OR_STRING): Return number of elements + or characters in string, respectively. Add comment. + * fringe.c (Fdefine_fringe_bitmap): + * fns.c (Fsubstring, substring_both): Use it. + * keymap.c (Fdefine_key, Flookup_key): + * macros.c (Fstart_kbd_macro): Likewise. Avoid call to Flength. + + * term.c (tty_menu_add_pane, tty_menu_add_selection): + Use menu_item_width. + (tty_menu_show): Simplify because tty_menu_create never return NULL. + +2014-07-13 Paul Eggert + + Improve behavior of 'bzr up; cd src; make -k'. + * Makefile.in (top_srcdir): New var. + (ntsource, lispsource, ALL_CFLAGS, gl-stamp, emacs.res): + Use '$(top_srcdir)' instead of '$(srcdir)/..'; + its expansion is a bit shorter. + (../config.status): Actually build config.status instead of + just complaining. + (ACLOCAL_INPUTS, AUTOCONF_INPUTS): + New macros, copied and relocated from ../Makefile.in. + ($(top_srcdir)/aclocal.m4, $(top_srcdir)/configure, config.in) + (../config.status, Makefile): New dependencies and rules, + copied with relocation from ../Makefile.in. This should be more + likely to rebuild the build machinery properly if you do a 'make' + in the src directory. + +2014-07-12 Eli Zaretskii + + * xdisp.c (display_line): Don't call FETCH_BYTE with argument less + than 1. (Bug#17962) + + * w32fns.c (Fx_file_dialog): Mention in the doc string the + behavior on Windows 7 and later when the function is repeatedly + invoked with the same value of DIR. (Bug#17950) + + * xfns.c (Fx_file_dialog) [USE_MOTIF, USE_GTK]: Update the doc + string to match the one in w32fns.c. + + * minibuf.c (read_minibuf_noninteractive) [WINDOWSNT]: Switch + stdin to binary mode only if it is connected to a terminal. + +2014-07-11 Paul Eggert + + Coalesce extern decls. + * minibuf.c (emacs_get_tty, emacs_set_tty, suppress_echo_on_tty): + * sysdep.c (emacs_get_tty, emacs_set_tty): + Move duplicate extern decls from here ... + * systty.h: ... to here, so that there's just one copy. + +2014-07-11 Jan Djärv + + * nsterm.m (changeFont:): Add ifdef NS_IMPL_COCOA. + + * nsfns.m (Fns_popup_font_panel): Ditto. + +2014-07-11 Eli Zaretskii + + * minibuf.c (read_minibuf_noninteractive): Finish reading on '\r', + not only on '\n'. + [WINDOWSNT]: Switch stdin to binary mode when not echoing input. + + * sysdep.c (emacs_get_tty, emacs_set_tty, suppress_echo_on_tty) + [DOS_NT]: Implement for WINDOWSNT. + + * systty.h (struct emacs_tty) [DOS_NT]: The struct member is now + unsigned. + +2014-07-11 Michael Albinus + + * sysdep.c (suppress_echo_on_tty): New function. + * minibuf.c (read_minibuf_noninteractive): Use it. + +2014-07-11 Dmitry Antipov + + * alloc.c (Fmemory_info) [HAVE_LINUX_SYSINFO]: Return nil if + sysinfo failed. Adjust docstring. + +2014-07-11 Eli Zaretskii + + Implement memory-info for MS-DOS. + * dosfns.c (dos_memory_info): New function. + * dosfns.h (dos_memory_info): Add prototype. + * alloc.c (Fmemory_info) [MSDOS]: Call dos_memory_info. + * vm-limit.c (get_lim_data) [MSDOS]: Call dos_memory_info, instead + of doing some of its job. + + * minibuf.c (read_minibuf_noninteractive) [WINDOWSNT]: Don't + reference termios structure members. + +2014-07-11 Michael Albinus + + * sysdep.c (emacs_get_tty, emacs_set_tty): Make them externally visible. + + * minibuf.c (top): Include systty.h. Declare external + emacs_get_tty and emacs_set_tty. + (Vread_hide_char): New lisp variable. + (read_minibuf_noninteractive): Hide characters with + Vread_hide_char if it is a character. (Bug#17839) + +2014-07-10 Eli Zaretskii + + Implement memory-info for MS-Windows. + * w32.c (w32_memory_info): New function. + * w32.h (w32_memory_info): Prototype it. + * alloc.c (Fmemory_info) [WINDOWSNT]: Call it. + +2014-07-10 Dmitry Antipov + + * coding.h (struct coding_system): Remove 'error_positions' (unused) + and 'errors' (set but unused) fields. Use bitfields for 'eol_seen', + 'mode', 'common_flags' and 'result' fields, adjust layout to avoid + extra padding and shrink struct coding_system by 56 bytes (x86_64). + * coding.c (decode_coding_utf_8, decode_coding_utf_16) + (decode_coding_emacs_mule, decode_coding_iso_2022, decode_coding_sjis) + (decode_coding_big5, decode_coding_charset, decode_coding) + (encode_coding): Adjust users. + + * alloc.c (Fmemory_info): New function. + +2014-07-09 Paul Eggert + + * syntax.c (back_comment): Use more-natural location for label. + + * font.c, font.h (font_unparse_fcname): Now static. + Define only if HAVE_XFT || HAVE_FREETYPE || HAVE_NS. + +2014-07-09 Dmitry Antipov + + Next minor cleanup of font subsystem. + * font.h (enum font_property_index): Remove FONT_ENTITY_INDEX (no + users) and FONT_FORMAT_INDEX (set by a few font drivers but never + really used). + (FONT_ENTITY_NOT_LOADABLE, FONT_ENTITY_SET_NOT_LOADABLE): Remove; + unused. + * ftfont.h (ftfont_font_format): Remove prototype. + * ftfont.c (ftfont_font_format): Remove; now unused. + (ftfont_open): + * nsfont.m (nsfont_open): + * w32font.c (w32font_open_internal): + * w32uniscribe.c (uniscribe_open): + * xfont.c (xfont_open): + * xftfont.c (xftfont_open): All users changed. + + * coding.c (ALLOC_CONVERSION_WORK_AREA): Prefer ptrdiff_t to int and + so avoid integer overflow if decoded gap size exceeds INT_MAX bytes. + +2014-07-09 Eli Zaretskii + + * xdisp.c (move_it_to): Adjust calculation of line_start_x to what + x_produce_glyphs does when it generates a stretch glyph that + represents a TAB. (Bug#17969) + + * xdisp.c (pos_visible_p): If CHARPOS is at beginning of window, + and there is a display property at that position, don't call + move_it_to to move to a position before window start. (Bug#17942) + Fix condition for finding CHARPOS by the first call to move_it_to. + (Bug#17944) + +2014-07-09 Stefan Monnier + + * syntax.c (find_defun_start): Try the cache even + if !open_paren_in_column_0_is_defun_start. + (back_comment): If find_defun_start was pessimistic, use the + scan_sexps_forward result to improve the cache (bug#16526). + +2014-07-09 Eli Zaretskii + + * xdisp.c (redisplay_window): If redisplay of a window ends up + with point in a partially visible line at end of the window, make + sure the amended position of point actually has smaller Y + coordinate; if not, give up and scroll the display. (Bug#17905) -2014-10-20 Stefan Monnier + * window.c (window_scroll_pixel_based): When point ends up at the + last fully visible line, don't let move_it_to stop at the left + edge of the line and dupe us into thinking point is inside the + scroll margin. - * xdisp.c (redisplay_window): Re-run pre-redisplay-function after we - move point. + * w32.c (network_interface_info): Make sure the argument is a + Lisp string. -2014-10-20 Glenn Morris +2014-07-08 Paul Eggert - * Version 24.4 released. + * process.c (read_and_dispose_of_process_output): Fix typo + in previous patch: we want nonnegative fds, not nonzero fds. -2014-10-17 Eli Zaretskii +2014-07-08 Dmitry Antipov - * xterm.c (x_draw_hollow_cursor): Fix display of hollow cursor on - 1-pixel R2L characters. - Reported by Dmitry Antipov , see - http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00518.html. + * chartab.c (char_table_translate): Move to... + * character.h (char_table_translate): ... inline function here. + Avoid Faref and assume that args are always valid. This helps to + speedup search, which is especially important for a huge buffers. + * lisp.h (char_table_translate): Remove prototype. -2014-10-10 Paul Eggert + * nsfont.m (nsfont_close): Free glyphs and metrics arrays as well. + * font.c (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]: + New function, with an intention to avoid code duplication between + a few font drivers. + * font.h (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]: + Add prototype. + * ftfont.c (ftfont_open): + * macfont.m (macfont_open): + * xftfont.c (xftfont_open): Use it. + +2014-07-08 Paul Eggert + + * process.c: Add sanity checks for file descriptors (Bug#17844). + (wait_reading_process_output, Fprocess_filter_multibyte_p): + Check that infd is nonnegative before using it as an fd. + (read_and_dispose_of_process_output, Fprocess_send_eof): + Likewise, for outfd. + (wait_reading_process_output): Omit unnecessary check of infd. + +2014-07-07 Paul Eggert + + Minor fixups related to usage of the 'long' type. + * gnutls.c (emacs_gnutls_handshake): + * xfaces.c (dump_realized_face): + Work even if 'long' is narrower than 'void *'. + * termcap.c (scan_file): + * xselect.c (x_decline_selection_request) + (x_reply_selection_request, x_get_window_property): + * xterm.c (x_set_frame_alpha): + Remove unnecessary 'L' suffixes of integer constants. + * xfns.c (hack_wm_protocols): + * xselect.c (x_fill_property_data): + * xterm.c (x_set_offset, x_set_window_size_1, x_make_frame_invisible): + Remove unnecessary casts to 'long'. + (set_machine_and_pid_properties): Don't assume pid_t fits in 32 bits. + + Minor ImageMagick safety fixes. + * image.c (imagemagick_compute_animated_image): + Remove useless assignment to local. Avoid problems if dest_width is 0. + (imagemagick_load_image): Use int for pixel counts that can't + exceed INT_MAX. Avoid problem if PixelGetNextIteratorRow returns + a row width greater than the image width (or greater than LONG_MAX!). + +2014-07-04 K. Handa + + * coding.c (MIN_CHARBUF_SIZE): Delete it. + (MAX_CHARBUF_EXTRA_SIZE): New macro. + (ALLOC_CONVERSION_WORK_AREA): Use MAX_CHARBUF_EXTRA_SIZE. + +2014-07-04 Dmitry Antipov + + * font.h (struct font_driver): Remove get_outline and free_outline; + not used by any font driver. + * ftfont.c (ftfont_driver): + * macfont.m (macfont_driver): + * nsfont.m (nsfont_driver): + * w32font.c (w32font_driver): + * w32uniscribe.c (uniscribe_font_driver): + * xfont.c (xfont_driver): Related users changed. + * xselect.c (x_get_window_property): Use convenient xmalloc. + Call to xfree only if some data was really allocated. + +2014-07-03 Dmitry Antipov + + On MS-Windows, display busy cursor on all GUI frames. + This is similar to what we have on X. Quickly tested by Dani Moncayo. + * w32fns.c (toplevel): Remove hourglass_hwnd; no longer used. + (w32_show_hourglass, w32_hide_hourglass, w32_note_current_window): + Likewise. + (hide_hourglass, show_hourglass): Redesign to match X counterparts. + * xdisp.c (start_hourglass): Remove Windows-specific bits. + +2014-07-03 Dmitry Antipov + + Use convenient alists to manage per-frame font driver-specific data. + * frame.h (struct frame): Rename font_data_list to... + [HAVE_XFT || HAVE_FREETYPE]: ... font_data, which is a Lisp_Object now. + * font.h (struct font_data_list): Remove; no longer need a special + data type. + (font_put_frame_data, font_get_frame_data) [HAVE_XFT || HAVE_FREETYPE]: + Adjust prototypes. + * font.c (font_put_frame_data, font_get_frame_data) + [HAVE_XFT || HAVE_FREETYPE]: Prefer alist functions to ad-hoc list + management. + * xftfont.c (xftfont_get_xft_draw, xftfont_end_for_frame): + Related users changed. + * ftxfont.c (ftxfont_get_gcs, ftxfont_end_for_frame): Likewise. + Prefer convenient xmalloc and xfree. - Fix port to Debian GNU/kFreeBSD 7 (wheezy) (Bug#18666). - * process.c (accept4) [!HAVE_ACCEPT4]: New macro. +2014-07-03 Eli Zaretskii -2014-10-09 Stefan Monnier + * dispnew.c (prepare_desired_row): Accept 2 additional arguments: + the window whose glyph row is being prepared and a flag whether it + is for mode/header line. Make sure the glyph row's marginal areas + are in sync with what the window wants. + (Bug#17892) - * frame.c (Fmouse_pixel_position): Call Vmouse_position_function - (bug#18638). + * xdisp.c (display_line, display_mode_line): + Call prepare_desired_row with additional arguments, as appropriate. -2014-10-08 K. Handa + * dispextern.h (prepare_desired_row): Adjust prototype. - * coding.c (detect_coding_iso_2022): Set coding->rejected - correctly when an invalid escape sequence is found (Bug#18610). +2014-07-03 Dmitry Antipov -2014-10-03 Dmitry Antipov + * xfaces.c (init_frame_faces): Always realize basic faces (Bug#17889). + * menu.c (Fx_popup_dialog): Set Vmenu_updating_frame to avoid crash + caused by xw_popup_dialog in daemon mode (Bug#17891). - * font.c (font_list_entities): Do not add empty vector to font cache. - (font_matching_entity): Likewise. If matching entity is found, insert - 1-item vector with this entity instead of an entity itself (Bug#17125). +2014-07-03 Eli Zaretskii -2014-10-02 Eli Zaretskii + * frame.c (do_switch_frame): When switching to another TTY frame, + make sure FrameCols and FrameRows are in sync with the new frame's + data. (Bug#17875) - * xdisp.c (move_it_by_lines): Call reseat_1 after moving the - iterator backwards, to resync the bidi iterator. (Bug#18584) +2014-07-02 Dmitry Antipov + + Shrink Lisp_Sub_Char_Table by preferring C integers to Lisp_Objects. + * lisp.h (struct Lisp_Sub_Char_Table): Use C integers for depth and + min_char slots. Adjust comment. + (enum char_table_specials): Rename from CHAR_TABLE_STANDARD_SLOTS. + Add SUB_CHAR_TABLE_OFFSET member. + (make_uninit_sub_char_table): New function. + (toplevel): Add compile-time assert to verify suitable member layout + in Lisp_Sub_Char_Table. + * alloc.c (mark_char_table): Add extra argument to denote char table + subtype. Adjust to match new layout of sub char-table. + (mark_object): Always mark sub char-tables with mark_char_table. + * chartab.c (make_sub_char_table, copy_sub_char_table) + (sub_char_table_ref, sub_char_table_ref_and_range, sub_char_table_set) + (sub_char_table_set_range, optimize_sub_char_table, map_sub_char_table) + (map_sub_char_table_for_charset, uniprop_table_uncompress): + All related users changed. + * lread.c (read1): Adjust to match new layout of sub char-table. + * print.c (print_object): Likewise (Bug#17898). -2014-10-01 Jan Djärv +2014-07-02 Stefan Monnier - * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to - make a font_object from a tty frame (Bug#18573). - (Finternal_set_lisp_face_attribute): Add FIXME comment. + * keymap.c (get_keyelt): Simplify. + (copy_keymap_item): Remove left-over code for when we had + key-shortcut caches. -2014-09-30 Eli Zaretskii +2014-06-30 Jan Djärv - * w32fns.c (w32_createwindow): Accept an additional argument, an - array of 2 values specifying the coordinates of the frame's - top-left corner. Use these values instead of calling x_get_arg, - which can cons Lisp objects, and therefore cannot be called except - from the main thread. Remove redundant tests for the default values. - (my_create_window): Move the calculation of the coordinates of the - frame's top-left edge here. Pass them to the input thread via the - second parameter of the WM_EMACS_CREATEWINDOW message. - See http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00892.html - for the details. + * nsterm.m (judge): EmacsScroller: Move dealloc code here. + (dealloc): Remove for EmacsScroller. -2014-09-29 Eli Zaretskii + * nsterm.h (EmacsScroller): Remove dealloc. - * xdisp.c (cursor_row_fully_visible_p): Update commentary. - (redisplay_window): Treat the frame's frozen_window_starts flag - the same way as the optional_new_start flag for the window: only - obey it if the glyph row showing point will be fully visible. - Likewise when the window start is in a continuation line. If, - after trying everything under the 'force_start' label, point is - still not fully visible, give up and scroll the window. - Add debugging traces. (Bug#18545) +2014-06-30 Eli Zaretskii - * window.c (Frecenter): Set the window's redisplay flag. + * coding.c (MIN_CHARBUF_SIZE): Enlarge to 32. (Bug#17881) -2014-09-24 Eli Zaretskii +2014-06-30 Jan Djärv - * w32term.c (w32_read_socket): Don't use frame dimensions for - resizing if GetClientRect returned an empty (0, 0, 0, 0) - rectangle. Check the return value of GetClientRect, and don't use - the results if it didn't succeed. + * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO + when setNeedsDisplay is called so we don't trigger redisplay for every + tool bar update. - * dispnew.c (change_frame_size_1): Recompute the frame dimensions - in columns and lines after correcting the pixel dimensions in - check_frame_size. - (adjust_decode_mode_spec_buffer): Add assertion to avoid passing - negative values to xrealloc. (Bug#18528) + * nsterm.m (any_help_event_p): New variable. + (mouseMoved:): Set any_help_event_p to YES if help event is + generated. Remove else with empty help event that triggered redisplay + for every mouse move. + (windowDidResignKey:): If any_help_event_p, generate empty help event. -2014-09-22 Dmitry Antipov +2014-06-29 Dmitry Antipov - On OSX, do not free font-specific data more than once (Bug#18501). - * macfont.m (macfont_close): Release and free font-specific data - only if it wasn't previously freed. + * xfns.c (Qsuppress_icon): Remove; no real users. + (syms_of_xfns): Don't DEFSYM it. Remove ancient comments. + * w32fns.c (Qsuppress_icon): Remove, for the same reason. + (syms_of_w32fns): Don't DEFSYM it. -2014-09-21 David Caldwell (tiny change) +2014-06-29 Glenn Morris - * unexmacosx.c (dump_it): Improve error message. + * Makefile.in (ns-app): Mark as PHONY. -2014-09-18 Juri Linkov +2014-06-28 Glenn Morris - * image.c (imagemagick_load_image): Add delay to imagemagick metadata. - (Bug#10747, bug#18334) + * Makefile.in (mostlyclean): There are no libXMenu11.a, + liblw.a in this directory. -2014-09-18 Eli Zaretskii +2014-06-28 Andreas Schwab - * frame.c (Fmouse_position, Fset_mouse_position): Clarify the - units in which the position is measured. (Bug#18493) + * coding.c (encode_coding_utf_8): Correctly count produced_chars + also in unibyte case. (Bug#17865) - * xdisp.c (redisplay_internal): Force redisplay of all windows - that show a buffer whose narrowing has changed. (Bug#18490) +2014-06-28 K. Handa -2014-09-16 Eli Zaretskii + * coding.c (MAX_CHARBUF_SIZE): Rename from CHARBUF_SIZE. + (MIN_CHARBUF_SIZE): New macro. + (ALLOC_CONVERSION_WORK_AREA): New arg SIZE. Callers changed. - * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor): - * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor): In R2L - lines, draw the hollow-box and hbar cursors on the right side of - cursor-glyph. Thanks to martin rudalics for - testing on X. +2014-06-27 Glenn Morris - * xterm.c (x_draw_stretch_glyph_string): - * w32term.c (x_draw_stretch_glyph_string): Fix a thinko that - caused the block cursor to disappear on a TAB in R2L lines in - every window except the leftmost one. Reported by Martin Rudalics - . + * Makefile.in: Replace BOOTSTRAPEMACS sleight-of-hand + with an order-only dependence on bootstrap-emacs. (Bug#2151) + (.el.elc): Replace suffix rule with pattern rule. + (%.elc): New pattern rule, with order-only prerequisite. + ($(lisp)): No more need to depend on BOOTSTRAPEMACS. + ($(lispsource)/loaddefs.el): Use an order-only prerequisite + in place of BOOTSTRAPEMACS. -2014-09-16 Dmitry Antipov +2014-06-26 Dmitry Antipov - Always use matched specpdl entry to record call arguments (Bug#18473). - * lisp.h (record_in_backtrace): Adjust prototype. - * eval.c (record_in_backtrace): Return current specpdl level. - (set_backtrace_args, set_backtrace_nargs): Merge. Adjust all users. - (eval_sub, Ffuncall): Record call arguments in matched specpdl - entry and use that entry in call to backtrace_debug_on_exit. - (apply_lambda): Likewise. Get current specpdl level as 3rd arg. - (do_debug_on_call): Get current specpdl level as 2nd arg. + * fns.c (Fcompare_strings): Use FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE. - Prefer ptrdiff_t to int and avoid integer overflows. - * fileio.c (make_temp_name): - * font.c (font_parse_family_registry): Avoid integer - overflow on string size calculation. - * data.c (Faset): Likewise for byte index. +2014-06-25 Dmitry Antipov -2014-09-15 Eli Zaretskii + Consistently use validate_subarray to verify substring. + * fns.c (validate_substring): Not static any more. Adjust to + use ptrdiff_t, not EMACS_INT, because string and vector limits + can't exceed ptrdiff_t even if EMACS_INT is wider. + (Fcompare_strings, Fsubstring, Fsubstring_no_properties) + (secure_hash): Adjust user. + * lisp.h (validate_subarray): Add prototype. + * coding.c (Fundecodable_char_position): + * composite.c (Fcomposition_get_gstring, Fcompose_string_internal): + Use validate_subarray. Adjust comment to mention substring. - Fix display of R2L lines in partial-width windows. - * xdisp.c (init_iterator): Don't use it->bidi_p before it is - assigned the correct value. - (extend_face_to_end_of_line): Account for truncation and - continuation glyphs in R2L rows when one of the fringes is not - displayed. - (display_line): Don't assign negative X offset to a row if we are - going to produce a truncation glyph for it. When handling - truncated R2L rows, consider the width of the left fringe instead - of the right one. - (produce_special_glyphs): Fix bogus assignments. +2014-06-25 Dmitry Antipov -2014-09-14 Eli Zaretskii + Do not allow out-of-range character position in Fcompare_strings. + * fns.c (validate_subarray): Add prototype. + (Fcompare_substring): Use validate_subarray to check ranges. + Adjust comment to mention that the semantics was changed. Also see + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00447.html. - * w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of - pipes. - (sys_write): When a write to a non-blocking pipe returns ENOSPC, - set errno to EAGAIN instead, to allow the caller to retry the - write after some waiting. Fixes deadlocks when Emacs exchanges a - lot of data through the pipe. (Bug#18420) +2014-06-24 Paul Eggert -2014-09-13 Eli Zaretskii + Be more consistent about the 'Qfoo' naming convention. + * image.c (Fimagemagick_types): + * lisp.h (lisp_h_CHECK_TYPE, CHECK_TYPE, CHECK_ARRAY): + * process.c (Fmake_network_process): + Rename C local identifier 'Qfoo to avoid giving the false + impression that it stands for the symbol 'foo'. - * sound.c (Fplay_sound_internal): Encode the sound file name in - the ANSI codepage. Expand it against data-directory, as per docs, - not against the current directory. No need to make a local copy - of the file name; pass the encoded file name directly to - do_play_sound. (Bug#18463) +2014-06-23 Dmitry Antipov - * w32.c (ansi_encode_filename): If w32_get_short_filename returns - NULL, and the file name is not encodable in ANSI codepage, return - the string with "?" replacement characters, which will fail the - caller. This avoids returning a random value in that case. + Simplify and cleanup character conversion stuff. + * lisp.h (multibyte_char_to_unibyte, multibyte_char_to_unibyte_safe): + Remove prototypes. + * character.c (multibyte_char_to_unibyte) + (multibyte_char_to_unibyte_safe): Remove; no longer used. + * character.h (make_char): Remove; unused. + (CHAR_TO_BYTE8, CHAR_TO_BYTE_SAFE): Simplify. + (ASCII_BYTE_P): Remove; ASCII_CHAR_P does the same thing. + * buffer.c, charset.c, charset.h, cmds.c, coding.c, editfns.c: + * fileio.c, indent.c, insdel.c, keyboard.c, lread.c, print.c: + * search.c, term.c, xdisp.c, xterm.c: Related users changed. + +2014-06-22 Mario Lang + + * w32fns.c (Fw32_shell_execute): The the -> the. + +2014-06-22 Dmitry Antipov + + * xmenu.c (mouse_position_for_popup): + * xselect.c (mouse_position_for_drop): Do not duplicate ... + * xfns.c (x_relative_mouse_position): ... and prefer this function. + * menu.c (Fx_popup_menu): + * xselect.c (x_handle_dnd_message): Adjust users. + * menu.h (mouse_position_for_popup): Remove prototype. + * xterm.h (x_relative_mouse_position): Add prototype. + * xterm.c (x_find_topmost_parent): Break from the loop and do not + call XFree if XQueryTree returns zero. -2014-09-11 Martin Rudalics +2014-06-21 Eli Zaretskii - * window.c (Fresize_mini_window_internal): Set w->total_lines - from w->pixel_height (Bug#18422). + * indent.c (Fvertical_motion): Doc fix. + Move to the goal column, if any, with a single call to + move_it_in_display_line, not in two calls. Doing this with two + calls causes move_it_in_display_line apply the line-prefix + handling twice instead of just once. (Bug#17823) -2014-09-09 Jan Djärv +2014-06-21 Paul Eggert - * nsterm.m (updateFrameSize:, initFrameFromEmacs:) - (toggleFullScreen:): Take frame_resize_pixelwise into account when - setting resize increments (Bug#18435). + Port to OS X ACLs (Bug#17810). + * fileio.c (Ffile_acl): Port to OS X, where acl_get_file (..., + ACL_TYPE_ACCESS) doesn't work. -2014-09-09 Eli Zaretskii +2014-06-21 Stefan Monnier - * xdisp.c (pos_visible_p): Properly save and restore the iterator - state around the call to line_bottom, since it can move the - iterator to another screen line. This fixes off-by-one errors in - the reported row in some rare cases. + * keyboard.c (read_key_sequence): Don't invoke Vprefix_help_command + before checking key-translation-map (bug#17659). -2014-09-07 Eli Zaretskii +2014-06-21 Dmitry Antipov - * dispnew.c (prepare_desired_row): When MODE_LINE_P is zero, - always make sure the marginal areas of the row are in sync with - what the window wants. (Bug#18419) + * font.c (font_make_object): Avoid dangling pointer which may + crash GC (Bug#17771). -2014-09-04 Eli Zaretskii +2014-06-21 Eli Zaretskii - * data.c (set_internal): Use assq_no_quit, not Fassq, to find an - existing binding of a variable, to avoid silently aborting - commands that use specbind. (Bug#18331) + * image.c [5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)]: Declare the + prototype of DGifCloseFile as appropriate for older and newer + versions of giflib. + (gif_close): New function, encapsulates the differences in the + calling sequence of DGifCloseFile before v5.1.0 and after it. + (gif_load): Call gif_close instead of DGifCloseFile. Divulge the + error string where appropriate. (Bug#17790) -2014-09-02 Eli Zaretskii + * xdisp.c (Fmove_point_visually): Instead of testing for keyboard + macro execution, make sure point didn't move since last complete + redisplay, as the condition for using the glyph matrix + information. (Bug#17777) - * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in - the reported row in the case of a window with a header line, by - improving on the fix committed in 2011-10-08T10:58:50Z!eliz@gnu.org - eliz@gnu.org-20111008105850-ht4tvsayohvr1kjc. (Bug#18384) +2014-06-19 Dmitry Antipov -2014-09-02 Paul Eggert + Minor cleanup of fonset code. + * fontset.c (FONTSET_ID, set_fontset_id, FONTSET_NAME) + (set_fontset_name, FONTSET_ASCII, set_fontset_ascii) + (FONTSET_BASE, set_fontset_base, FONTSET_FRAME) + (set_fontset_frame, FONTSET_NOFONT_FACE, set_fontset_nofont_face) + (FONTSET_DEFAULT, set_fontset_default, FONTSET_FALLBACK) + (set_fontset_fallback): Reorder extra slots and avoid unused slots. + (free_realized_fontset): Remove because a no-op since 2008. + (free_face_fontset): Adjust user. + (syms_of_fontset): Shrink fontset by one extra slot. + +2014-06-17 Paul Eggert + + Omit redundant extern decls. + Most of this patch is from Dmitry Antipov, in: + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00263.html + * commands.h (update_mode_lines): + * frame.h (Qbackground_color, Qforeground_color) + (x_set_menu_bar_lines): + * ftfont.c (ftfont_font_format): + * intervals.h (Qkeymap, Qfont): + * keyboard.c (timer_check, safe_run_hooks, Qregion_extract_function): + * lisp.h (Ffboundp, Qnil, Qt, Qlambda, Qintegerp, Qwholenump) + (Qsymbolp, Qlisp, Qconsp, Qstringp, Qarrayp, Qbufferp, Qmarkerp) + (Qvectorp, Qbuffer_or_string_p, Qchar_table_p, Qvector_or_char_table_p) + (Qfloatp, Qnumberp, Qfont_spec, Qfont_entity, Qfont_object) + (Fbyteorder, wrong_type_argument, Fmax_char, syms_of_composite) + (Fidentity, extract_float, init_display, syms_of_display, Qdisplay): + (Qimage, Qbox, redisplay_preserve_echo_area, char_table_ref) + (char_table_set, char_table_translate, Qautoload, Qbottom, Qtop) + (Qvisible, Qfont, Qfront_sticky, Qrear_nonsticky, init_sigio) + (Qtool_bar, Qheader_line): + * macros.c (Fexecute_kbd_macro): + * xdisp.c (Ftool_bar_height, Ftool_bar_height): + * xterm.c (x_delete_terminal, XSetIMValues): + * xterm.h (x_set_window_size, x_query_color, x_get_focus_frame) + (x_implicitly_set_name, popup_activated) + (widget_store_internal_border): + Remove redundant decls. + * frame.c [USE_X_TOOLKIT]: Include widget.h. + * keyboard.c (Fexit_recursive_edit, Fabort_recursive_edit): + Remove _Noreturn, as make-docfile now does that for us. + * lisp.h (DEFUN): Don't declare fnname here; rely on make-docfile. + (Qregion_extract_function): New decl. + * window.c, xfns.c: Include menu.h. + +2014-06-17 Stefan Monnier + + * callint.c (Fcall_interactively): Fix up last change (bug#17701). + +2014-06-17 Dmitry Antipov + + * fileio.c (Fread_file_name): Do not pass redundant args and ... + * callint.c (read_file_name): ... convert to static here. + * lisp.h (Fread_file_name): Do not EXFUN it. + (STRING_COPYIN): Remove; unused. + * composite.c (CHAR_COMPOSABLE_P): Replace unsafe macro with ... + (char_composable_p): ... static function. All users changed. + * eval.c (toplevel): Remove redundant #include directives. + * xterm.c (x_initialize): Add static to match prototype. + * ccl.c (Fccl_execute_on_string): + * font.c (fon_intern_prop): Use make_specified_string. - * eval.c (internal_lisp_condition_case): Don't overrun the stack - when configured --with-wide-int on typical 32-bit platforms. +2014-06-16 Paul Eggert -2014-08-31 Eli Zaretskii + * Makefile.in (ns-app): Fix typo that broke build on OS X. + Reported by David Caldwell in: + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00251.html - * xdisp.c (display_and_set_cursor): Call erase_phys_cursor also - when HPOS is negative, for the benefit of R2L glyph rows whose - newline overflows into the fringe. +2014-06-16 Dmitry Antipov + + Do not ask for XRender extension each time XFT font is opened. + * xftfont.c (xftfont_open): Move call to XRenderQueryExtension ... + * xterm.c (x_term_init) [HAVE_XFT]: ... to here. Adjust comment. + +2014-06-15 Glenn Morris + + * Makefile.in: Use `make -C' rather than `cd && make' throughout. + +2014-06-15 Eli Zaretskii + + * xdisp.c (Fmove_point_visually): Don't use the glyph matrix + information if we are in the middle of executing a keyboard macro, + since redisplay doesn't update the screen until the macro is + finished. (Bug#17777) + + * alloc.c (cleanup_vector): Don't dereference a font driver + pointer if it is NULL. (Bug#17771) + +2014-06-13 Glenn Morris + + * Makefile.in ($(leimdir)/leim-list.el, $(srcdir)/macuvs.h) + ($(lispsource)/international/charprop.el) + ($(libsrc)/make-docfile$(EXEEXT), $(lwlibdir)/liblw.a) + ($(oldXMenudir)/libXMenu11.a, ns-app, .el.elc) + ($(lispsource)/loaddefs.el, bootstrap-emacs$(EXEEXT)): + GNU make automatically passes command-line arguments to sub-makes. + +2014-06-13 Paul Eggert + + Avoid hangs in accept-process-output (Bug#17647). + * lisp.h, process.c (wait_reading_process_input): + Return int, not bool. All uses changed. + * process.c (SELECT_CANT_DO_WRITE_MASK): + Remove macro, replacing with ... + (SELECT_CAN_DO_WRITE_MASK): ... new constant, with inverted sense. + All uses changed. + (status_notify): New arg WAIT_PROC. Return int, not void. + All uses changed. + +2014-06-13 Eli Zaretskii + + * menu.c (Fx_popup_menu): Don't call the frame's menu_show_hook if + the frame is the initial frame, because the hook is not set up + then, and Emacs crashes. + Reported by Fabrice Popineau . + +2014-06-12 Stefan Monnier + + * keymap.c (silly_event_symbol_error): Don't recommend the use + of strings. + +2014-06-11 Eli Zaretskii + + * xdisp.c (set_cursor_from_row): Fix an off-by-one error when + matching overlay strings with 'cursor' property against buffer + positions traversed in the glyph row. (Bug#17744) + +2014-06-11 Jan Djärv + + * nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst + on Cocoa. + + * nsterm.m (run): Always compile for Cocoa. Use runtime check to + determine 10.9 (Bug#17751). + + * macfont.m (macfont_draw): Positions were not freed. + +2014-06-10 Dmitry Antipov + + * dispextern.h (PREPARE_FACE_FOR_DISPLAY): Remove as a duplicate of ... + * xfaces.c (prepare_face_for_display) [HAVE_WINDOW_SYSTEM]: ... this + function. Also adjust comment. + * fringe.c, w32term.c, xdisp.c, xterm.c: All users changed. + + * dispextern.h (struct face) [HAVE_XFT]: Ifdef 'extra' member. + * font.c (font_done_for_face): + * xfaces.c (realize_non_ascii_face): Adjust user. + * font.h (struct font_driver): Convert 'prepare_face' to return + void because its return value is never used anyway. + * xfont.c (xfont_prepare_face): Return void. + * xftfont.c (xftfont_prepare_face): Likewise. Use xmalloc. + (xftfont_done_face): Use xfree. + + * dispextern.h (last_tool_bar_item): Remove declaration. + * frame.h (struct frame): New member last_tool_bar_item. + * frame.c (make_frame): Initialize it. + * xdisp.c (toplevel): Remove last_tool_bar_item. + (handle_tool_bar_click, note_tool_bar_highlight): + * w32term.c (w32_read_socket, w32_initialize): + * xterm.c (handle_one_xevent, x_initialize): Adjust users. + + * frame.h (window_system_available) [!HAVE_WINDOW_SYSTEM]: Always false. + * frame.c (window_system_available) [HAVE_WINDOW_SYSTEM]: Now here. + +2014-06-09 Paul Eggert + + Say (accept-process-output P)'s result pertains to P if P is non-nil. + * process.c (Faccept_process_output) + (wait_reading_process_output): Mention that if PROCESS is non-nil, + the return value is about PROCESS, not about other processes. + +2014-06-09 Dmitry Antipov + + Further adjustments to mark_object and friends. + Now the mark_object's stack is just 32 bytes on a 64-bit + system, which means extra 20% off the stack usage. + * alloc.c (mark_save_value): As before, refactored out from ... + (mark_object): ... adjusted user. Also add comment. + +2014-06-09 Paul Eggert + + Fix core dump after a dropped X connection (Bug#17704). + * sysdep.c (stuff_char): Don't abort merely because the selected frame + is dead, as we may be shutting down. + +2014-06-08 Glenn Morris + + * fileio.c (write-region-inhibit-fsync): Doc tweak. + + * data.c (Flss, Fgtr, Fleq, Fgeq): Doc tweaks. + +2014-06-08 Paul Eggert + + If a C name must be extern on some platforms, make it extern on all. + * dispextern.h (set_vertical_scroll_bar, erase_phys_cursor) + (load_color): + * font.h (ftxfont_driver) [HAVE_XFT]: + * keyboard.h (menu_items_inuse, ignore_mouse_drag_p, make_ctrl_char): + * lisp.h (get_frame_param): + * menu.h (tty_menu_show): + * process.h (conv_sockaddr_to_lisp, catch_child_signal): + * termhooks.h (encode_terminal_code): + * xterm.h (x_menu_wait_for_event): + Always declare. + * frame.c (get_frame_param): + * fringe.c (max_used_fringe_bitmap): + * ftxfont.c (ftxfont_driver): + * keyboard.c (ignore_mouse_drag_p, make_ctrl_char): + * menu.c (menu_items_inuse): + * process.c (conv_sockaddr_to_lisp, catch_child_signal): + * term.c (encode_terminal_code, tty_menu_show): + * xdisp.c (set_vertical_scroll_bar, erase_phys_cursor): + * xfaces.c (load_color): + * xmenu.c (x_menu_wait_for_event): + Now always extern. + +2014-06-08 Dmitry Antipov + + Change object marking routines to minimize stack usage. + This change moves a few cold paths from mark_object to NO_INLINE + functions and adjusts symbol marking loop. According to GCC 4.8.2 + -Wstack-usage, this reduces mark_object's stack usage from 80 to + 48 bytes on a 64-bit system. For a long byte-force-recompile runs, + stack usage at the mark phase is reduced up to 28%. Surprisingly, + it also gains up to 3% in speed (with default '-O2 -g3' flags). + * alloc.c (mark_compiled, mark_localized_symbol): New functions, + refactored out from ... + (mark_object): ... adjusted user. Also mark symbols in a tight + inner loop. + (mark_face_cache): Add NO_INLINE. + +2014-06-08 Eli Zaretskii + + * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter + contains garbage on WINDOWSNT (which could potentially infloop at + exit). -2014-08-30 Ken Brown + Minimize cursor motion during TTY menu updates. + * term.c (tty_menu_display): Don't position cursor here. + Instead, pass the cursor coordinates to update_frame_with_menu. + (tty_menu_activate): Send the hide cursor command only once in an + iteration through the outer 'while' loop. - * conf_post.h (strnicmp) [CYGWIN && HAVE_NTGUI]: Define. - (Bug#18366) + * dispnew.c (update_frame_1): Accept an additional argument + SET_CURSOR_P, and position the cursor at the end of the frame + update only if that argument is non-zero. All callers changed to + provide the additional argument as non-zero, except for + update_frame_with_menu. + (update_frame_with_menu): Accept 2 additional arguments ROW and + COL; if they are non-negative, instruct update_frame_1 not to + position the cursor, and instead position it according to ROW and COL. -2014-08-28 Eli Zaretskii + * dispextern.h (update_frame_with_menu): Update prototype. - * syntax.c (scan_lists): Don't examine positions before BEGV. - (Bug#18339) +2014-06-08 Stefan Monnier -2014-08-25 Eli Zaretskii + * callproc.c (call_process): Don't check read-only if we don't insert + anything (bug#17666). - * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Don't define. +2014-06-08 Eli Zaretskii -2014-08-18 Eli Zaretskii + * dispnew.c (update_frame_with_menu): Set display_completed. - * xdisp.c (handle_stop): Improve commentary. +2014-06-07 Eli Zaretskii - * indent.c (Fvertical_motion): Fix vertical motion up through a - display property after a newline. (Bug#18276) + * term.c (tty_menu_show) [WINDOWSNT]: Make tty_menu_show extern + only for WINDOWSNT. + * menu.h (tty_menu_show) [WINDOWSNT]: Declare extern only for WINDOWSNT. -2014-08-17 Eli Zaretskii +2014-06-06 Paul Eggert - * xdisp.c (display_line): Don't assume that the call to - reseat_at_next_visible_line_start ends up at a character - immediately following the newline on the previous line. - Avoids setting the ends_at_zv_p flag on screen lines that are not at or - beyond ZV, which causes infloop in redisplay. For the details, see - http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00368.html. + * term.c (tty_menu_show) [!HAVE_NTGUI]: Now static. + * menu.h (tty_menu_show) [!HAVE_NTGUI]: Omit extern decl. - * dispnew.c (buffer_posn_from_coords): Fix mirroring of X - coordinate for hscrolled R2L screen lines. (Bug#18277) +2014-06-06 Stefan Monnier -2014-08-11 Ken Brown + * window.c (Frecenter): Signal an error if window-buffer is not + current-buffer. - * gmalloc.c (_malloc_mutex, _aligned_blocks_mutex) [CYGWIN]: Use - ERRORCHECK mutexes. (Bug#18222) + * keyboard.c (make_lispy_position): Don't include a buffer position in + mode/header-line mouse events. -2014-08-11 Glenn Morris + * keyboard.c (read_char): Handle (t . ) in the second use of + Vunread_command_events (bug#17650). - * fileio.c: Revert 2013-01-31 change, which chose coding system for - writing before backing up, since it causes a more serious problem - than the one it solves. (Closes Bug#18141, reopens Bug#13522.) - (choose_write_coding_system): No longer callable from Lisp. - Move last piece back here from Fwrite_region. - (Fwrite_region, syms_of_fileio): Update for above changes. +2014-06-06 Dmitry Antipov -2014-08-09 Martin Rudalics + * xterm.c (x_setup_pointer_blanking): + Conditionally probe Xfixes until this stuff is stabilized (Bug#17609). - * window.c (Fwindow_new_total, Fwindow_new_normal) - (Fwindow_new_pixel, Fset_window_new_pixel) - (Fset_window_new_total, Fset_window_new_normal): Second attempt - to fix the doc-strings of these functions. See: - http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html +2014-06-05 Dmitry Antipov -2014-08-08 Martin Rudalics + * keyboard.c, process.c: Do not define POLL_FOR_INPUT here + because it will be defined in generated config.h if needed. - * window.c (Fwindow_valid_p): Fix doc-string (Bug#18194). - (Fwindow_new_total, Fwindow_normal_size, Fwindow_new_normal) - (Fwindow_new_pixel, Fset_window_new_pixel) - (Fset_window_new_total, Fset_window_new_normal) - (Fwindow_resize_apply): Fix doc-strings (see Bug#18112). +2014-06-04 Dmitry Antipov -2014-08-07 Eli Zaretskii + Use terminal-specific hooks to display popup dialogs. + * termhooks.h (struct terminal): New field popup_dialog_hook. + * menu.c (emulate_dialog_with_menu): New function, refactored from ... + (Fx_popup_dialog): ... adjusted user. Also remove old #if 0 + code and use popup_dialog_hook. + * nsmenu.m (ns_popup_dialog): Make hook-compatible. + * nsterm.h (ns_popup_dialog): Adjust prototype. + * nsterm.m (ns_create_terminal): + * w32term.c (w32_create_terminal): + * xterm.c (x_create_terminal) [USE_X_TOOLKIT || USE_GTK]: + Setup popup_dialog_hook. - * fontset.c (Finternal_char_font): Recompute basic faces if the - frame's face cache was cleared. (Bug#18162) +2014-06-04 Eli Zaretskii -2014-08-05 Dmitry Antipov + * w32heap.c (report_temacs_memory_usage): Improve the report by + reporting the large blocks that are actually occupied at dump time. - Fix bug with uninitialized undo list of an indirect buffer (Bug#18180). - * buffer.c (Fmake_indirect_buffer): Initialize undo list with the - base buffer's undo list. + * w32console.c (initialize_w32_display): Set the console + menu_show_hook, otherwise TTY menus are broken on w32. -2014-08-03 Dmitry Antipov +2014-06-04 Dmitry Antipov - Fix bug with an attempt to select uninitialized frame (Bug#18161). - * xfns.c (Fx_create_frame): Move call to change_frame_size to - a section where Lisp evaluation is disabled. This way a pointer - to uninitialized frame is not accessible from Lisp, which becomes - critical if following call to x_figure_window_size throws an error. + Use terminal-specific hooks to display menus. + * termhooks.h (struct terminal): New field menu_show_hook. + * menu.h (): Bit flags for menu hooks. + (x_menu_show, w32_menu_show, ns_menu_show, tty_menu_show): + Adjust prototypes. + * menu.c (Fx_popup_menu): Use bit flags and menu_show_hook. + * nsmenu.m (ns_menu_show): + * w32menu.c (w32_menu_show): + * xmenu.c (x_menu_show): + * term.c (tty_menu_show): Adjust to use bit flags. + (set_tty_hooks): Set menu_show_hook. + * xterm.c (x_create_terminal): + * nsterm.m (ns_create_terminal): + * msdos.c (initialize_msdos_display): + * w32term.c (w32_create_terminal): Likewise. -2014-08-02 Paul Eggert +2014-06-03 Juanma Barranquero - Fix bug with clang + directory_files_internal + GC (Bug#16986). - * dired.c (directory_files_internal): Use a volatile variable - to prevent the compiler from optimizing away all copies of a local. - I wonder how many other GC-related bugs like this lurk elsewhere? + * w32heap.c (DUMPED_HEAP_SIZE) [!_WIN64]: Reduce to 11 MB. - Avoid 100% CPU utilization on ssh session exit (Bug#17691). - * xterm.h (struct x_display_info): New member 'connection'. - * xterm.c (x_term_init, x_delete_terminal): Set and use it, - so that x_delete_terminal has a file descriptor to pass to - delete_keyboard_wait_descriptor. +2014-06-03 Eli Zaretskii -2014-08-01 Eli Zaretskii + * sysselect.h (fd_CLR, fd_ISSET, fd_SET, FD_CLR, FD_ISSET) + (FD_SET): Don't define on WINDOWSNT. - Fix display of R2L lines when the last character fits only partially. - See http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00476.html - for the details. - * xdisp.c (extend_face_to_end_of_line): If the last glyph of an - R2L row is visible only partially, give the row a negative x - offset. - (display_line): Fix the calculation of the glyph whose pixel width - is used to decide whether the last produced glyph fits on the - line. When the last glyph fits only partially, give the row a - negative x offset. +2014-06-03 Paul Eggert -2014-07-29 Eli Zaretskii + * emacs.c: Include "sysselect.h", to define its inline functions. + Reported by Glenn Morris in: + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00077.html - Fix hscroll of R2L lines that begin with a TAB or another wide glyph. - * xdisp.c (append_stretch_glyph): In a R2L glyph row, decrease the - pixel width of the first glyph that is hscrolled from display. - (display_line): In R2L glyph rows, don't give a negative offset to - row->x when the first glyph begins before first_visible_x. + Do not require libXt-devel when building with gtk. + * gtkutil.h, menu.h: Include lwlib-widget.h, not lwlib-h, to avoid + dependency on libXt-devel. + * menu.h [HAVE_NTGUI]: Include lwlib-widget.h in this case too. + (enum button_type, widget_value) [HAVE_NTGUI]: Remove, as + lwlib-widget.h now does this. + * nsmenu.m (ns_menu_show): "enabled" -> "enable" to fix typo. -2014-07-29 Andreas Schwab +2014-06-03 Paul Eggert - * macros.c (Fstart_kbd_macro): Initialize kbd_macro_ptr and - kbd_macro_end together with kbd_macro_buffer. (Bug#18140) + If ENABLE_CHECKING, range-check args of FD_CLR, FD_ISSET, FD_SET. + * process.c (add_read_fd, delete_read_fd, add_write_fd) + (delete_write_fd, wait_reading_process_output): + Remove now-redundant easserts. + * sysselect.h (SYSSELECT_H): New macro, to avoid double-inclusion woes. + Use INLINE_HEADER_BEGIN, INLINE_HEADER_END. + (fd_CLR, fd_ISSET, fd_SET): New inline functions. + (FD_CLR, FD_ISSET, FD_SET): Redefine in terms of these functions. -2014-07-28 Eli Zaretskii +2014-06-03 Eli Zaretskii - * xdisp.c (display_line): If called with iterator set up to write - to a marginal area, delay the call to handle_line_prefix until we - switch back to the text area. (Bug#18035) + * w32heap.c (DUMPED_HEAP_SIZE): Move from w32heap.h. Don't use + HEAPSIZE; instead, define separate values for the 32- and 64-bit builds. + (calloc): Don't undef, it is never defined. + (HEAP_ENTRY_SHIFT): Remove unused macro. - * .gdbinit (xwindow): The members total_cols, total_lines, - left_col, and top_line are C integers (and has been so for the - last 1.5 years). + * Makefile.in (C_HEAP_SWITCH): Remove. + (ALL_CFLAGS): Don't use $(C_HEAP_SWITCH). -2014-07-20 Jan Djärv + Fix MS-Windows build broken by menu changes on 2014-06-02. + * w32menu.c (w32_menu_show): Fix a typo that broke compilation. - * nsterm.m (applicationDidFinishLaunching:): Call - antialiasThresholdDidChange, register for antialias changes (Bug#17534). - (antialiasThresholdDidChange:): New method for EmacsApp. + * menu.h (enum button_type, struct _widget_value) [HAVE_NTGUI]: + Define instead of including ../lwlib/lwlib.h, which causes + compilation errors due to missing X11 headers. - * nsterm.h (EmacsApp): Add antialiasThresholdDidChange. +2014-06-03 Paul Eggert - * macfont.m (macfont_update_antialias_threshold): Remove static. + * process.c (wait_reading_process_output): Omit incorrect test of + p->infd against zero. Add easserts for infd having a plausible value. - * macfont.h (macfont_update_antialias_threshold): Declare. +2014-06-02 Dmitry Antipov -2014-07-17 Eli Zaretskii + Adjust to match recent lwlib changes. + * menu.h (xmalloc_widget_value): Replace by ... + (make_widget_value): ... new prototype. + * menu.c (xmalloc_widget_value): Replace by ... + (make_widget_value): ... new function. + (free_menubar_widget_value_tree, digest_single_submenu): Adjust users. + * gtkutil.c (malloc_widget_value, free_widget_value): + (widget_value_free_list, malloc_cpt): Remove old lwlib-compatible code. + * keyboard.h (enum button_type, struct _widget_value): + * gtkutil.h, nsgui.h, w32gui.h (malloc_widget_value, free_widget_value): + Likewise. + * nsmenu.m (ns_update_menubar, ns_menu_show): + * w32menu.c (set_frame_menubar, w32_menu_show, w32_dialog_show): + * xmenu.c (set_frame_menubar, xmenu_show, x_dialog_show): Adjust users. + * xterm.h (XtParent) [USE_GTK]: Remove unused macro. - * w32select.c (setup_windows_coding_system): - Apply CODING_ANNOTATION_MASK to the common_flags member of struct - coding_system. Reported by martin rudalics . +2014-06-02 Dmitry Antipov - * w16select.c (Fw16_get_clipboard_data): - Apply CODING_ANNOTATION_MASK to the common_flags member of struct - coding_system. + * image.c (x_query_frame_background_color) + [HAVE_PNG || HAVE_NS || HAVE_IMAGEMAGICK || HAVE_RSVG]: + Fix --enable-gcc-warnings compilation without image libraries. - * xdisp.c (init_iterator): Initialize it->stop_charpos to the - buffer position where we are to start the iteration. - (handle_invisible_prop): Record in it->stop_charpos the position - where the invisible text ends. (Bug#18035) - (hscroll_window_tree): Don't try hscrolling windows whose cursor - row has zero buffer position as their start position. - Reported by martin rudalics . +2014-06-02 Eli Zaretskii -2014-07-16 Eli Zaretskii + * w32heap.c (malloc_after_dump, realloc_after_dump): Update the + emulated break value only if it goes up. + (sbrk): Add assertion that the INCREMENT argument is strictly + zero. Improve and correct the commentary. - * xdisp.c (move_it_vertically_backward, move_it_by_lines): Prevent - infinite looping in redisplay when display lines don't have enough - space to display even a single character. (Bug#18036) +2014-06-02 Paul Eggert -2014-07-13 Eli Zaretskii + Improve AIX-related merge from emacs-24. + * conf_post.h (FLEXIBLE_ARRAY_MEMBER): Fix comment. + * lisp.h (ENUMABLE) [!_AIX]: Don't define to 0 merely because we're + not on AIX; since we're on the trunk we can use enums more broadly. - * xdisp.c (decode_mode_spec): Call file-remote-p on the current - buffer's default-directory only if it is a string. (Bug#17986) + * frame.c (x_set_frame_parameters): Don't read uninitialized storage. -2014-07-12 Eli Zaretskii +2014-06-02 Jan Djärv - * xdisp.c (display_line): Don't call FETCH_BYTE with argument less - than 1. (Bug#17962) + * xterm.c (xg_scroll_callback): Remove position, for jump set portion + to min(value, whole). - * w32fns.c (Fx_file_dialog): Mention in the doc string the - behavior on Windows 7 and later when the function is repeatedly - invoked with the same value of DIR. (Bug#17950) +2014-06-02 Paul Eggert - * xfns.c (Fx_file_dialog) [USE_MOTIF, USE_GTK]: Update the doc - string to match the one in w32fns.c. + Bring back the changes to GDB-visible symbols, but only on AIX. + And only if it's not pre-4.2 GCC. + * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros. + (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them. + (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val): + New macros. -2014-07-08 Eli Zaretskii +2014-06-02 Eli Zaretskii - * xdisp.c (move_it_to): Adjust calculation of line_start_x to what - x_produce_glyphs does when it generates a stretch glyph that - represents a TAB. (Bug#17969) + * fileio.c (Finsert_file_contents): Call prepare_to_modify_buffer + with PT, not GPT. (Bug#16433) -2014-07-05 Eli Zaretskii + Revert last changes to GDB-visible symbols. + * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): Delete macros. + (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Don't use them. + (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val): + Delete macros. - * xdisp.c (pos_visible_p): If CHARPOS is at beginning of window, - and there is a display property at that position, don't call - move_it_to to move to a position before window start. (Bug#17942) - Fix condition for finding CHARPOS by the first call to move_it_to. - (Bug#17944) +2014-06-02 Glenn Morris -2014-07-05 Stefan Monnier + * cmds.c (Fself_insert_command): Allow zero repeat count. (Bug#17649) - * syntax.c (find_defun_start): Try the cache even - if !open_paren_in_column_0_is_defun_start. - (back_comment): If find_defun_start was pessimistic, use the - scan_sexps_forward result to improve the cache (bug#16526). +2014-06-02 Paul Eggert -2014-07-04 Daniel Colascione + Fix port to 32-bit AIX with xlc (Bug#17598). + * alloc.c (gdb_make_enums_visible): Remove FLOAT_TO_STRING_BUFSIZE. + * conf_post.h (FLEXIBLE_ARRAY_MEMBER) [__IBMC__]: Don't define to empty. + * lisp.h (FLOAT_TO_STRING_BUFSIZE): Make it a macro, instead of an enum, + to work around a compiler bug in IBM xlc 12.1. - Backport from trunk. - * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC - only if xic_style calls for it. This change allows Emacs to work - with ibus. Also, don't leak resources if create_frame_xic fails, - and stop caching xic_style across different displays (Bug#17928). - (supported_xim_styles): Make const. - (best_xim_style): Remove first parameter: it's always just - supported_xim_styles. Change to look at supported_xim_styles directly. +2014-06-02 Eli Zaretskii -2014-07-04 Eli Zaretskii + * xterm.c (x_update_window_end): Don't invalidate the entire + mouse-highlight info, just signal frame_up_to_date_hook that mouse + highlight needs to be redisplayed. (Bug#17588) - * xdisp.c (redisplay_window): If redisplay of a window ends up - with point in a partially visible line at end of the window, make - sure the amended position of point actually has smaller Y - coordinate; if not, give up and scroll the display. (Bug#17905) +2014-06-02 Paul Eggert - * window.c (window_scroll_pixel_based): When point ends up at the - last fully visible line, don't let move_it_to stop at the left - edge of the line and dupe us into thinking point is inside the - scroll margin. + Port the GDB-visible symbols to AIX. + Without them, GDB doesn't work to debug Emacs, since the AIX linker + optimizes away the relevant external symbols. Use enums instead; + this suffices for the AIX port, which is 32-bit-only anyway. + * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros. + (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them. + (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val): + New macros. - * w32.c (network_interface_info): Make sure the argument is a - Lisp string. + Include sources used to create macuvs.h. + * Makefile.in ($(srcdir)/macuvs.h): New rule. + * macuvs.h: Use automatically-generated header. -2014-07-01 Eli Zaretskii +2014-06-01 Paul Eggert - * dispnew.c (prepare_desired_row): Accept 2 additional arguments: - the window whose glyph row is being prepared and a flag whether it - is for mode/header line. Make sure the glyph row's marginal areas - are in sync with what the window wants. - (Bug#17892) + Port signal-handling to DragonFly BSD (Bug#17646). + * callproc.c, sysdep.c (block_child_signal, unblock_child_signal): + Move implementations from callproc.c to sysdep.c. + * process.h, syssignal.h (block_child_signal, unblock_child_signal): + Move declarations from process.h to syssignal.h. - * xdisp.c (display_line, display_mode_line): - Call prepare_desired_row with additional arguments, as appropriate. +2014-06-01 Juanma Barranquero - * dispextern.h (prepare_desired_row): Adjust prototype. + * callint.c (Ffuncall_interactively): Add usage. -2014-07-01 Dmitry Antipov +2014-06-01 Jan Djärv - * xfaces.c (init_frame_faces): Always realize basic faces (Bug#17889). - * menu.c (Fx_popup_dialog): Set Vmenu_updating_frame to avoid crash - caused by xw_popup_dialog in daemon mode (Bug#17891). + * nsfns.m (ns_appkit_version_str): Add os version for Cocoa. -2014-06-30 Eli Zaretskii +2014-05-30 Eli Zaretskii - * frame.c (do_switch_frame): When switching to another TTY frame, - make sure FrameCols and FrameRows are in sync with the new frame's - data. (Bug#17875) + * w32heap.c (malloc_before_dump, malloc_after_dump) + (malloc_before_dump, realloc_after_dump, realloc_before_dump) + (mmap_alloc, mmap_realloc): Check for errors more thoroughly and + set errno where appropriate to emulate CRT functions. -2014-06-28 Andreas Schwab +2014-05-30 Dmitry Antipov - * coding.c (encode_coding_utf_8): Correctly count produced_chars - also in unibyte case. (Bug#17865) + Debugging facility to check whether 'const char *' points to + relocatable data of non-pure Lisp string. + * alloc.c (maybe_lisp_pointer): New function, refactored out of ... + (mark_maybe_pointer): ... adjusted user. + (relocatable_string_data_p): New function. + * lisp.h (relocatable_string_data_p): Add prototype. + * xdisp.c (message_with_string): If ENABLE_CHECKING, make sure + the pointer to relocatable Lisp data is not used. -2014-06-25 Glenn Morris +2014-05-30 Paul Eggert - * puresize.h (BASE_PURESIZE): Increase a bit. (Bug#17846) + Don't let SIGINT handling block SIGCHLD indefinitely (Bug#17561). + * atimer.c (block_atimers): + * callproc.c (block_child_signal): Block SIGINT too; + otherwise, its handler might now unblock signals that it shouldn't. + * keyboard.c (read_char): Clear signal mask, since we may + be in a SIGINT handler, and many signals may be masked. + * keyboard.c (handle_interrupt): + * sysdep.c (handle_arith_signal): + Clear signal mask instead of just unblocking the signal that + was received, since several signals may be blocked at this point. -2014-06-21 Eli Zaretskii +2014-05-29 Eli Zaretskii - * indent.c (Fvertical_motion): Doc fix. - Move to the goal column, if any, with a single call to - move_it_in_display_line, not in two calls. Doing this with two - calls causes move_it_in_display_line apply the line-prefix - handling twice instead of just once. (Bug#17823) + * Makefile.in (TEMACS_POST_LINK): Remove target. + (emacs$(EXEEXT)): Remove $(ADDSECTION) from prerequisites. + (temacs$(EXEEXT)): Remove $(TEMACS_POST_LINK) from the recipe. -2014-06-21 Paul Eggert +2014-05-29 Dmitry Antipov - Port to OS X ACLs (Bug#17810). - * fileio.c (Ffile_acl): Port to OS X, where acl_get_file (..., - ACL_TYPE_ACCESS) doesn't work. + * xmenu.c (xdialog_show): Remove prototype, rename to + x_dialog_show, remove 2nd arg because it's always zero + and simplify accordingly. + (xw_popup_dialog): Adjust user. + * w32menu.c (w32_dialog_show): Adjust prototype, remove + 2nd arg because it's always zero and simplify accordingly. + (w32_popup_dialog): Adjust user. -2014-06-19 Stefan Monnier +2014-05-29 Eli Zaretskii - * keyboard.c (read_key_sequence): Don't invoke Vprefix_help_command - before checking key-translation-map (bug#17659). + * w32heap.c (report_temacs_memory_usage): New function. -2014-06-19 Dmitry Antipov + * unexw32.c (unexec) [ENABLE_CHECKING]: + Call report_temacs_memory_usage. - * font.c (font_make_object): Avoid dangling pointer which may - crash GC (Bug#17771). + * w32heap.h (report_temacs_memory_usage): Add prototype. -2014-06-18 Eli Zaretskii +2014-05-29 Paul Eggert - * image.c [5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)]: Declare the - prototype of DGifCloseFile as appropriate for older and newer - versions of giflib. - (gif_close): New function, encapsulates the differences in the - calling sequence of DGifCloseFile before v5.1.0 and after it. - (gif_load): Call gif_close instead of DGifCloseFile. Divulge the - error string where appropriate. (Bug#17790) + Don't substitute sigprocmask for pthread_sigmask (Bug#17561). + * Makefile.in (LIB_PTHREAD_SIGMASK): Remove; all uses removed. -2014-06-16 Eli Zaretskii +2014-05-29 Eli Zaretskii - * xdisp.c (Fmove_point_visually): Instead of testing for keyboard - macro execution, make sure point didn't move since last complete - redisplay, as the condition for using the glyph matrix - information. (Bug#17777) + * buffer.c (init_buffer): Accept an argument 'initialized'. + [USE_MMAP_FOR_BUFFERS]: If 'initialized' is non-zero, reset + mmap_regions and mmap_fd, to avoid referencing stale data from the + dump phase. Add an assertion for buffer text of buffers created + in temacs before this function is called. (Bug#17622) + (mmap_regions_1, mmap_fd_1): Remove unused variables. -2014-06-14 Eli Zaretskii + * lisp.h (init_buffer): Update prototype. - * xdisp.c (Fmove_point_visually): Don't use the glyph matrix - information if we are in the middle of executing a keyboard macro, - since redisplay doesn't update the screen until the macro is - finished. (Bug#17777) + * emacs.c (main): Pass 'initialized' as the argument to init_buffer. -2014-06-13 Eli Zaretskii +2014-05-29 Dmitry Antipov - * alloc.c (cleanup_vector): Don't dereference a font driver - pointer if it is NULL. (Bug#17771) + * alloc.c (Fgarbage_collect): Fix compilation with + GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE. -2014-06-11 Eli Zaretskii +2014-05-29 Paul Eggert - * xdisp.c (set_cursor_from_row): Fix an off-by-one error when - matching overlay strings with 'cursor' property against buffer - positions traversed in the glyph row. (Bug#17744) + * frame.c, frame.h (frame_char_to_pixel_position) + (frame_set_mouse_position): Now static, and made private in + frame.c rather than public in frame.h. -2014-06-08 Glenn Morris +2014-05-28 Dmitry Antipov - * fileio.c (write-region-inhibit-fsync): Doc tweak. + Refactor mouse positioning stuff to avoid code duplication. + * frame.h (frame_char_to_pixel_position): New function. + (x_set_mouse_position): Rename to... + (frame_set_mouse_position): ...new function. + (frame_set_mouse_pixel_position): Add prototype. + * nsterm.m, w32term.c, xterm.c (x_set_mouse_pixel_position): + Rename to frame_set_mouse_pixel_position. + * frame.c (Fset_mouse_pixel_position, Fset_mouse_position): + Adjust users. + * xterm.h, w32term.h ( x_set_mouse_position) + (x_set_mouse_pixel_position): Remove prototypes. - * data.c (Flss, Fgtr, Fleq, Fgeq): Doc tweaks. +2014-05-28 Dmitry Antipov -2014-06-04 Eli Zaretskii + On X, always make pointer visible when deleting frame (Bug#17609). + * frame.c (frame_make_pointer_visible, frame_make_pointer_invisible): + Pass frame as arg. + * frame.h (frame_make_pointer_visible, frame_make_pointer_invisible): + Adjust prototypes. + * cmds.c (Fself_insert_command): Use SELECTED_FRAME. + * keyboard.c (gobble_input): If there is no terminal input error, + make sure the pointer is visible for all frames on this terminal. + * xterm.c (x_free_frame_resources): Enable pointer visibility if + it was previously disabled. - * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter - contains garbage on WINDOWSNT (which could potentially infloop at - exit). +2014-05-28 Stefan Monnier - Minimize cursor motion during TTY menu updates. - * term.c (tty_menu_display): Don't position cursor here. Instead, - pass the cursor coordinates to update_frame_with_menu. - (tty_menu_activate): Send the hide cursor command only once in an - iteration through the outer 'while' loop. + * data.c (Fzerop): Move to Elisp. + (syms_of_data): Don't defsubr it. + * keyboard.c (echo_keystrokes_p): New function. + (read_char, record_menu_key, read_key_sequence): Use it. - * dispnew.c (update_frame_1): Accept an additional argument - SET_CURSOR_P, and position the cursor at the end of the frame - update only if that argument is non-zero. All callers changed to - provide the additional argument as non-zero, except for - update_frame_with_menu. - (update_frame_with_menu): Accept 2 additional arguments ROW and - COL; if they are non-negative, instruct update_frame_1 not to - position the cursor, and instead position it according to ROW and - COL. + * callint.c (Qfuncall_interactively): New var. + (Qcall_interactively): Remove. + (Ffuncall_interactively): New function. + (Fcall_interactively): Use it. + (syms_of_callint): Defsubr it. - * dispextern.h (update_frame_with_menu): Update prototype. +2014-05-27 Stefan Monnier -2014-06-02 Stefan Monnier + * bytecode.c (FETCH) [BYTE_CODE_SAFE]: Check the bytecode wasn't + relocated from under us. - * callproc.c (call_process): Don't check read-only if we don't insert - anything (bug#17666). +2014-05-27 Fabrice Popineau -2014-06-02 Eli Zaretskii + Use mmap(2) emulation for allocating buffer text on MS-Windows. + * Makefile.in (C_HEAP_SWITCH): Get the predefined heap size from + configure, not from HEAPSIZE. + (ADDSECTION, MINGW_TEMACS_POST_LINK): Remove, no longer used. - * dispnew.c (update_frame_with_menu): Set display_completed. + * lisp.h (NONPOINTER_BITS): Modify the condition to define to zero + for MinGW, since it no longer uses gmalloc. -2014-06-01 Paul Eggert + * buffer.c: Do not define mmap allocations functions for Windows. + Remove mmap_find which is unused. Remove mmap_set_vars which does + nothing useful. + [WINDOWSNT]: Include w32heap.h. + (init_buffer): Always allocate new memory for buffers. - * frame.c (x_set_frame_parameters): Don't read uninitialized storage. + * emacs.c: Remove mmap_set_vars calls. -2014-06-01 Jan Djärv + * image.c (free_image): Undef free for Windows because it is + redirected to our private version. - * xterm.c (xg_scroll_callback): Remove position, for jump set portion - to min(value, whole). + * unexw32.c (COPY_PROC_CHUNK): Use %p format for 64bits compatibility. + (copy_executable_and_dump_data): Remove dumping the heap section. + (unexec): Restore using_dynamic_heap after dumping. -2014-06-01 Paul Eggert + * w32heap.c (dumped_data_commit, malloc_after_dump) + (malloc_before_dump, realloc_after_dump, realloc_before_dump) + (free_after_dump, free_before_dump, mmap_alloc, mmap_realloc) + (mmap_free): New functions. - Bring back the changes to GDB-visible symbols, but only on AIX. - And only if it's not pre-4.2 GCC. - * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros. - (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them. - (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val): - New macros. + * w32heap.h: Declare dumped_data and mmap_* function prototypes. -2014-05-31 Eli Zaretskii +2014-05-27 Paul Eggert - * fileio.c (Finsert_file_contents): Call prepare_to_modify_buffer - with PT, not GPT. (Bug#16433) + * image.c (imagemagick_load_image): Use MagickRealType for local + 'color_scale', instead of double, to avoid a GCC warning about + double promotion. - Revert last changes to GDB-visible symbols. - * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): Delete macros. - (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Don't use them. - (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val): - Delete macros. + * xfns.c (Fx_window_property): Remove unused local. -2014-05-31 Glenn Morris + Don't kill already-reaped process (Bug#17561). + * process.c (process_send_signal): Fix race condition where a + subprocess was reaped by a signal handler between the check for + liveness and calling 'kill', which meant that Emacs could in + theory kill an innocent bystander process. Do the fix by blocking + SIGCHLD in a critical section that checks liveness before killing. - * cmds.c (Fself_insert_command): Allow zero repeat count. (Bug#17649) +2014-05-26 Eli Zaretskii -2014-05-30 Paul Eggert + * w32.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Define only if undefined. - Fix port to 32-bit AIX with xlc (Bug#17598). - * alloc.c (gdb_make_enums_visible): Remove FLOAT_TO_STRING_BUFSIZE. - * conf_post.h (FLEXIBLE_ARRAY_MEMBER) [__IBMC__]: Don't define to empty. - * lisp.h (FLOAT_TO_STRING_BUFSIZE): Make it a macro, instead of an enum, - to work around a compiler bug in IBM xlc 12.1. +2014-05-26 Ken Brown -2014-05-29 Eli Zaretskii + * w32term.c (x_delete_display): Don't free dpyinfo->w32_id_name, + even if !CYGWIN (see bug#17510). - * xterm.c (x_update_window_end): Don't invalidate the entire - mouse-highlight info, just signal frame_up_to_date_hook that mouse - highlight needs to be redisplayed. (Bug#17588) +2014-05-26 Jan Djärv -2014-05-29 Paul Eggert + * nsfns.m (Fns_do_applescript): Surround NSApp run + with calls to ns_init_events, ns_finish_events (Bug#17424). - Port the GDB-visible symbols to AIX. - Without them, GDB doesn't work to debug Emacs, since the AIX linker - optimizes away the relevant external symbols. Use enums instead; - this suffices for the AIX port, which is 32-bit-only anyway. - * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros. - (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them. - (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val): - New macros. + * nsterm.h (ns_init_events, ns_finish_events): Declare. -2014-05-26 Paul Eggert + * nsterm.m (ns_init_events, ns_finish_events): New functions. + (ns_read_socket, ns_select): Call ns_init_events, ns_finish_events. - Include sources used to create macuvs.h. - * Makefile.in ($(srcdir)/macuvs.h): New rule. - * macuvs.h: Use automatically-generated header. + * nsfns.m (ns_do_applescript): Surround executeAndReturnError + with calls to ns_init_events, ns_finish_events (Bug#17424). -2014-05-25 Eli Zaretskii +2014-05-26 Eli Zaretskii * xdisp.c (move_it_in_display_line_to): Don't record wrap position if we are iterating over an object that generates glyphs for diff --cc src/xdisp.c index 3f57841ac1,5e552ca2fd..5ef839eb86 --- a/src/xdisp.c +++ b/src/xdisp.c @@@ -3241,8 -3434,7 +3241,7 @@@ handle_stop (struct it *it it->dpvec = NULL; it->current.dpvec_index = -1; handle_overlay_change_p = !it->ignore_overlay_strings_at_pos_p; - it->ignore_overlay_strings_at_pos_p = false; - it->ellipsis_p = 0; + it->ellipsis_p = false; /* Use face of preceding text for ellipsis (if invisible) */ if (it->selective_display_ellipsis_p) @@@ -3331,10 -3524,9 +3330,9 @@@ pop_it (it); else { - it->ignore_overlay_strings_at_pos_p = true; - it->string_from_display_prop_p = 0; - it->from_disp_prop_p = 0; - handle_overlay_change_p = 0; + it->string_from_display_prop_p = false; + it->from_disp_prop_p = false; + handle_overlay_change_p = false; } handled = HANDLED_RECOMPUTE_PROPS; break; @@@ -7286,13 -7471,9 +7282,9 @@@ set_iterator_to_next (struct it *it, bo /* Skip over characters which were displayed via IT->dpvec. */ if (it->dpvec_char_len < 0) - reseat_at_next_visible_line_start (it, 1); + reseat_at_next_visible_line_start (it, true); else if (it->dpvec_char_len > 0) { - if (it->method == GET_FROM_STRING - && it->current.overlay_string_index >= 0 - && it->n_overlay_strings > 0) - it->ignore_overlay_strings_at_pos_p = true; it->len = it->dpvec_char_len; set_iterator_to_next (it, reseat_p); } @@@ -7916,8 -8102,7 +7913,7 @@@ static boo next_element_from_image (struct it *it) { it->what = IT_IMAGE; - it->ignore_overlay_strings_at_pos_p = false; - return 1; + return true; }