X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/89cb305ef1ef3140164f816e1d0247d6b77c60b8..7a2657fa3bedbd977f4e11fe030cb4a210c04ab4:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index 919e9e7de4..c0c85c15ee 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -19,29 +19,103 @@ * xterm.c (x_draw_glyph_string): Don't use previous underline thickness and position if previous underline type is underwave. -2012-12-31 Glenn Morris +2013-01-04 Stefan Monnier + + * fileio.c (Ffile_acl): Undocument return format. + +2013-01-02 Glenn Morris * keymap.c (Fkey_description): Doc fix. (Bug#13323) -2012-12-29 Andreas Schwab +2013-01-02 Paul Eggert + + Simplify via eabs. + * dired.c (file_name_completion): + * doc.c (get_doc_string): + * floatfns.c (round2): + * font.c (font_score, font_delete_unmatched): + * fringe.c (compute_fringe_widths): + * lread.c (read_list): + * minibuf.c (Ftry_completion): + * term.c (tty_ins_del_lines): + * xterm.c (x_draw_image_foreground, x_draw_image_foreground_1): + Use eabs (x) rather than open-coding it as (x < 0 ? -x : x). + +2012-12-31 Eli Zaretskii + + * w32.c (unsetenv): Set up the string passed to _putenv + correctly. See + http://lists.gnu.org/archive/html/emacs-devel/2012-12/msg00863.html + for the bug this caused. + +2012-12-30 Paul Eggert + + * coding.c (Qmac): Now static. + +2012-12-30 Jan Djärv + + * gtkutil.c (TOOLBAR_TOP_WIDGET): New macro. + (xg_pack_tool_bar): Use TOOLBAR_TOP_WIDGET, condition out use of + handlebox_widget. Set toolbar_in_hbox to false/true, set + toolbar_is_packed to true. + (xg_update_tool_bar_sizes): Use widget returned by TOOLBAR_TOP_WIDGET. + (update_frame_tool_bar): Check toolbar_is_packed for packing. + Show all on TOOLBAR_TOP_WIDGET. + (free_frame_tool_bar): Check toolbar_is_packed. Use widget returned + by TOOLBAR_TOP_WIDGET. + (xg_change_toolbar_position): Use widget returned by TOOLBAR_TOP_WIDGET. + Check toolbar_is_packed. + (xg_have_tear_offs, tearoff_remove, tearoff_activate): Condition on + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_have_tear_offs): When ! HAVE_GTK_TEAROFF_MENU_ITEM_NEW, return + false. + (create_menus): Create tearoff only if HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_update_menubar): Update title only if + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_update_submenu): Skip tearoff only if + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + (xg_initialize): Initialize xg_detached_menus only if + HAVE_GTK_TEAROFF_MENU_ITEM_NEW. + + * xterm.h (struct x_output): Surround handlebox_widget with + #ifdef HAVE_GTK_HANDLE_BOX_NEW. toolbar_is_packed is new, + toolbar_in_hbox is bool. + +2012-12-30 Andreas Schwab * src/Makefile.in (TEMACS_LDFLAGS2): Remove. (LIBS_GNUSTEP): Define. (LIBES): Add $(LIBS_GNUSTEP). (temacs$(EXEEXT)): Use $(LDFLAGS) instead of $(TEMACS_LDFLAGS2). -2012-12-27 Eli Zaretskii +2012-12-30 Eli Zaretskii * xdisp.c (set_cursor_from_row): Don't confuse a truncation or continuation glyph on a TTY with an indication of an empty line. (Bug#13277) +2012-12-29 Eli Zaretskii + + * fileio.c (Fset_file_selinux_context, Fset_file_acl): Return t if + file's SELinux context or ACLs successfully set, nil otherwise. + (Bug#13298) + (Fcopy_file) [WINDOWSNT]: Improve diagnostics when CopyFile fails. + + * w32proc.c (reader_thread): Avoid passing NULL handles to + SetEvent and WaitForSingleObject. + +2012-12-28 Paul Eggert + + Port EXTERNALLY_VISIBLE to Clang 3.2. + * conf_post.h (__has_attribute): New macro. + (EXTERNALLY_VISIBLE): Use it. This ports to Clang 3.2. + 2012-12-27 Glenn Morris * cygw32.c (Fcygwin_convert_file_name_to_windows) (Fcygwin_convert_file_name_from_windows): Doc fixes. -2012-12-24 Eli Zaretskii +2012-12-27 Eli Zaretskii * fileio.c (file_name_as_directory, directory_file_name): Accept an additional argument MULTIBYTE to indicate whether the input C @@ -56,10 +130,100 @@ input strings are multibyte, decode strings obtained from C library functions. +2012-12-26 Dmitry Antipov + + * lisp.h (toplevel): Add two notices to the comment about + defining a new Lisp data type. + * print.c (print_object): If Lisp_Save_Value object's pointer + is the address of a memory area containing Lisp_Objects, try + to print them. + * alloc.c (valid_lisp_object_p): Adjust comment. + +2012-12-26 Dmitry Antipov + + * keyboard.c (record_asynch_buffer_change): Initialize an event + only if it's really needed. + * frame.h (enum output_method): Remove output_mac member since + it's a leftover from the deleted code. + * frame.c (Fframep): Adjust user here ... + * terminal.c (Fterminal_live_p): ... and here. + * coding.c (Qmac): Now here because it's only used to denote + end-of-line encoding type. + (syms_of_coding): DEFSYM it. + * frame.h (Qmac): Remove duplicated declaration. + +2012-12-26 Paul Eggert + + * window.c (select_window_1): Now static, since it's used only here. + +2012-12-25 Eli Zaretskii + + * window.c (window_body_cols): Subtract display margins from the + window body width on TTYs as well. See + http://lists.gnu.org/archive/html/help-gnu-emacs/2012-12/msg00317.html + for the original report. + +2012-12-25 Dmitry Antipov + + * xdisp.c (redisplay_window): Remove inner local variable + because the outer shadowed one has the same meaning. + * xterm.h (struct x_output): Remove toolbar_detached member since it's + set but never used. + * gtkutil.c (xg_tool_bar_detach_callback, xg_tool_bar_attach_callback) + (xg_create_tool_bar): Adjust users. + +2012-12-24 Dmitry Antipov + + * buffer.h (BUF_COMPACT): New macro to follow the common style. + * buffer.c (Fget_buffer_create): Use it to set compact field of + struct buffer_text to avoid accessing an uninitialized value + when compact_buffer is called for the first time. + (compact_buffer): Use convenient BUF_COMPACT and BUF_MODIFF. + (Fset_buffer_modified_p): Use buffer_window_count to check + whether the buffer is displayed in some window. + * xdisp.c (message_dolog): Likewise. + +2012-12-23 Eli Zaretskii + + * w32.c (acl_set_file): If setting the file security descriptor + fails, and the new DACL is identical to the existing one, silently + return success. This fixes problems for users backing up their + own files without having the necessary privileges for setting + security descriptors. + + * w32proc.c (reader_thread): Do not index fd_info[] with negative + values. + (reader_thread): Exit when cp->status becomes STATUS_READ_ERROR + after WaitForSingleObject returns normally. This expedites reader + thread shutdown when delete_child triggers it. + (reap_subprocess): More accurate commentary for why we call + delete_child only when cp->fd is negative. + + * w32.c (sys_close): Do not call delete_child on a subprocess + whose handle is not yet closed. Instead, set its file descriptor + to a negative value, so that reap_subprocess will call + delete_child on that subprocess when its SIGCHLD arrives. This + avoids closing handles used for communications between sys_select + and reader_thread, which doesn't give sys_select a chance to + notice that the process exited and invoke the SIGCHLD handler for + it. + +2012-12-23 Jan Djärv + + * nsfns.m (Fns_do_applescript): Run event loop until script has + been executed (Bug#12969). + (ns_run_ascript): Chech as_script for nil, set to nil after + executing script. + 2012-12-22 Martin Rudalics * window.c (Fselect_window): Reword doc-string (Bug#13248). +2012-12-22 Eli Zaretskii + + * w32term.c (w32fullscreen_hook): New function. + (w32_create_terminal): Plug it into the terminal's fullscreen_hook. + 2012-12-21 Eli Zaretskii * fileio.c (Finsert_file_contents): Doc fix. @@ -77,11 +241,9 @@ * buffer.c (Fset_buffer_major_mode): Doc fix (Bug#13231). -2012-12-15 Chong Yidong - * fns.c (Fcompare_strings): Doc fix (Bug#13081). -2012-12-14 Eli Zaretskii +2012-12-21 Eli Zaretskii * w32.c (get_name_and_id): Always pass NULL as the first argument of lookup_account_sid. Avoids crashes with UNC file names that @@ -90,23 +252,424 @@ (get_file_owner_and_group): Remove now unused argument FNAME; all callers changed. -2012-12-11 Eli Zaretskii +2012-12-21 Chong Yidong + + * editfns.c (Finsert_char): Since read-char-by-name now signals an + error for invalid chars, don't check for a nil return value. + +2012-12-20 Dmitry Antipov + + Avoid calls to CHAR_TO_BYTE if byte position is known. + * editfns.c (make_buffer_string_both): Use move_gap_both. + (Fbuffer_string): Use make_buffer_string_both. + * marker.c (buf_charpos_to_bytepos): Convert to eassert. + Adjust comment. + (buf_bytepos_to_charpos): Likewise. + (charpos_to_bytepos): Remove. + * fileio.c (Finsert_file_contents): Use move_gap_both. + * search.c (Freplace_match): Likewise. + * process.c (process_send_region): Likewise. Use convenient + names for byte positions. + * lisp.h (charpos_to_bytepos): Remove prototype. + * indent.c (scan_for_column): Use CHAR_TO_BYTE. + * insdel.c (move_gap): Likewise. + +2012-12-20 Paul Eggert + + * xdisp.c (redisplay_internal): Remove now-unused local. + +2012-12-20 Stefan Monnier + + * xdisp.c (select_frame_for_redisplay, ensure_selected_frame): Remove. + (redisplay_internal): Don't bother selecting the frame to get the + proper value of frame-local variables (bug#13225). + +2012-12-20 Dmitry Antipov + + * textprop.c (set_text_properties_1): Do not allow NULL interval. + Rename 4th argument since it may be buffer or string. Adjust comment. + * intervals.c (graft_intervals_info_buffer): Find an interval here. + +2012-12-19 Dmitry Antipov + + * coding.c (Fdetect_coding_region): Do not check start and end with + CHECK_NUMBER_COERCE_MARKER since validate_region does that itself. + (code_convert_region): Likewise. + +2012-12-18 Eli Zaretskii + + * w32.c (acl_get_file, acl_set_file): Run the file name through + map_w32_filename, and resolve any symlinks in the file name, like + Posix platforms do. + (acl_set_file): Call revert_to_self, if any privileges were + enabled. + +2012-12-17 Juanma Barranquero + + * makefile.w32-in ($(BLD)/editfns.$(O), $(BLD)/fileio.$(O)) + ($(BLD)/w32.$(O)): Update dependencies. + +2012-12-17 Stefan Monnier + + * xdisp.c (select_frame_for_redisplay): Use select_window_1 to + propagate redisplay's scrolling (if any) to the right window. + (redisplay_internal): Use ensure_selected_frame. + (display_mode_lines): Complete last fix. + * window.c (select_window_1): New func, extracted from select_window. + (select_window): Use it. + * window.h (select_window_1): Declare. + +2012-12-17 Eli Zaretskii + + Emulate Posix ACL APIs on MS-Windows. + * w32.c: Include sddl.h and sys/acl.h. + (SDDL_REVISION_1): Define if not already defined. + (g_b_init_get_security_descriptor_dacl) + (g_b_init_convert_sd_to_sddl, g_b_init_convert_sddl_to_sd) + (g_b_init_is_valid_security_descriptor) + (g_b_init_set_file_security): New static flags. + (globals_of_w32): Initialize them to zero. + (SetFileSecurity_Name): New string constant. + (SetFileSecurity_Proc, GetSecurityDescriptorDacl_Proc) + (ConvertStringSecurityDescriptorToSecurityDescriptor_Proc) + (ConvertSecurityDescriptorToStringSecurityDescriptor_Proc) + (IsValidSecurityDescriptor_Proc): New typedefs. + (get_file_security, get_security_descriptor_owner) + (get_security_descriptor_group): Set errno to ENOTSUP. + (set_file_security, get_security_descriptor_dacl) + (is_valid_security_descriptor, convert_sd_to_sddl) + (convert_sddl_to_sd, acl_valid, acl_to_text, acl_from_text) + (acl_free, acl_get_file, acl_set_file): New functions. + + * fileio.c (Fcopy_file) [WINDOWSNT]: Support copying ACLs. + +2012-12-17 Paul Eggert + + Don't reraise SIGCHLD, as that can now lose (Bug#13192). + With the 2012-12-03 fix for Bug#12980 in place, an old workaround + for some of that bug's symptoms can now cause Emacs to abort. + Remove the workaround. + * process.c (wait_reading_process_output): Don't reraise SIGCHLD. + The bug that caused SIGCHLD to get lost has been fixed, and the + workaround for it can now cause Emacs to abort. + +2012-12-16 Paul Eggert + + * sysdep.c (emacs_abort): Bump backtrace size to 40. + Companion to the 2012-09-30 patch. Suggested by Eli Zaretskii in + . + +2012-12-16 Romain Francoise + + * fileio.c (Ffile_acl, Fset_file_acl): New functions. + (Fcopy_file): Change last arg to `preserve_extended_attributes' + and copy ACL entries of file in addition to SELinux context if set. + (syms_of_fileio): Add `file-acl' and `set-file-acl'. + + * Makefile.in (LIBACL_LIBS): New macro. + (LIBES): Use it. + +2012-12-15 Paul Eggert + + * fileio.c (internal_delete_file): Use bool for boolean. + +2012-12-15 Eli Zaretskii + + Fix bug #13079 on MS-Windows with temp files not being deleted. + * w32.h (_child_process): New members input_file and + pending_deletion. + (register_child): First argument is now pid_t. + (record_infile, record_pending_deletion): New prototypes. + + * w32proc.c (new_child): Initialize input_file and + pending_deletion members of the child. + (delete_child): Delete the child's temporary input file, if any, + that is pending deletion. + (register_child): First argument is now pid_t. + (record_infile, record_pending_deletion): New functions. + (reap_subprocess): Fix a typo in DebPrint string. + (sys_spawnve, sys_kill): Use pid_t for PID arguments. + + * fileio.c (internal_delete_file): Return an int again: non-zero + if delete-file succeeds, zero otherwise. + + * lisp.h (internal_delete_file): Adjust prototype. + + * callproc.c (Fcall_process): Don't overwrite infile with result + of DECODE_FILE. + [WINDOWSNT] If BUFFER is an integer, i.e. we are launching an + asynchronous subprocess, record the name of the input file name, + if any. + (delete_temp_file) [WINDOWSNT]: If internal_delete_file fails to + delete the file, record it as pending deletion when the subprocess + exits. + +2012-12-14 Eli Zaretskii + + * editfns.c [HAVE_PWD_H]: Include grp.h. + + * makefile.w32-in ($(BLD)/editfns.$(O)): Add $(NT_INC)/grp.h. + +2012-12-14 Paul Eggert + + Fix permissions bugs with setgid directories etc. (Bug#13125) + * dired.c (Ffile_attributes): Return t as the 9th attribute, + to mark it as a placeholder. The old value was often wrong. + The only user of this attribute has been changed to use + file-ownership-preserved-p instead, with its new group arg. + * editfns.c (Fgroup_gid, Fgroup_real_gid): New functions. + +2012-12-14 Stefan Monnier + + * xdisp.c (select_frame_for_redisplay, display_mode_lines): + Keep selected_window and selected_frame in sync. + +2012-12-14 Eli Zaretskii + + * w32.c (stat_worker): If w32_stat_get_owner_group is zero, do not + try to get accurate owner and group information from NT file + security APIs. This is to make most callers of 'stat' and + 'lstat', which don't need that information, much faster. + + * dired.c (Ffile_attributes) [WINDOWSNT]: + Set w32_stat_get_owner_group to a non-zero value, to request accurate + owner and group information from 'lstat'. + +2012-12-13 Paul Eggert + + * fileio.c (Finsert_file_contents): Don't put tail into head area, + as that confuses set-auto-coding, so insist on the head-read + returning the full 1024 bytes. Let lseek compute the tail offset; + less work for us. Do not ignore I/O errors when reading the tail. + + * xdisp.c: Minor style fixes. + (init_iterator): Hoist assignment out of if-expression. + (markpos_of_region): Callers now test for sign, not for -1. + +2012-12-13 Dmitry Antipov + + Minor redisplay optimization when the region length is zero. + * xdisp.c (markpos_of_region): New function. + (init_iterator): Do not highlight the region of zero length. + (redisplay_window): Check whether the region is of non-zero length. + (try_cursor_movement): Allow if the region length is zero. + (try_window_reusing_current_matrix, try_window_id): Likewise. + +2012-12-13 Eli Zaretskii * search.c (search_buffer): Check the inverse translations of each character in pattern when the buffer being searched is unibyte. (Bug#13084) -2012-12-10 Paul Eggert +2012-12-13 Paul Eggert * fileio.c (Fvisited_file_modtime): Return (-1 ...) for nonexistent files, fixing a regression from 24.2. (Fverify_visited_file_modtime): Don't read uninitialized st.st_size. -2012-12-08 Jan Djärv +2012-12-13 Paul Eggert + + * fileio.c (Fcopy_file): Make fstat failure as serious as open failure. + fstat shouldn't fail, and if it does fail copy-file should not proceed. + Remove unnecessary S_ISLNK test, as (contra the comments) this + function can't copy symlinks. Improve quality of error message + when attempting to copy files that are neither regular files nor + directories. + +2012-12-12 Dmitry Antipov + + * dispnew.c (set_window_cursor_after_update): Use clip_to_bounds. + * gtkutil.c (xg_set_toolkit_scroll_bar_thumb): + * window.c (Frecenter): + * xdisp.c (resize_mini_window, hscroll_window_tree, draw_glyphs): + * xterm.c (x_set_toolkit_scroll_bar_thumb): Likewise. + +2012-12-12 Daniel Colascione + + * unexcw.c (fixup_executable): Use posix_fallocate to ensure that + the dumped Emacs is not a sparse file, greatly improving Cygwin + "make bootstrap" performance. + +2012-12-11 Michael Albinus + + * inotify.c (inotify_callback): Generate an Emacs event for every + incoming inotify event. + +2012-12-11 Eli Zaretskii + + * xdisp.c (handle_face_prop): Fix logic of computing + it->start_of_box_run_p. + (append_space_for_newline): If the glyph row is R2L, reset the + iterator's end_of_box_run_p flag before prepending the space glyph. + (extend_face_to_end_of_line): If the glyph row is R2L, reset the + iterator's start_of_box_run_p flag before prepending the stretch. + (append_glyph, produce_image_glyph, append_composite_glyph) + (append_stretch_glyph, append_glyphless_glyph): Reverse the + left_box_line_p and right_box_line_p flags of the glyph for R2L + glyph rows. (Bug#13011) + +2012-12-11 Dmitry Antipov + + * buffer.c (Fset_buffer_multibyte): Do not force redisplay + if changed buffer is not shown in a window. + * insdel.c (prepare_to_modify_buffer): Likewise. + * window.c (replace_buffer_in_windows_safely): Do nothing + if buffer is not shown in a window. + (Fforce_window_update): Likewise if string or buffer argument + is passed. + +2012-12-11 Eli Zaretskii + + * inotify.c (Finotify_add_watch): Rename decoded_file_name to + encoded_file_name, which is what it is. + +2012-12-11 Dmitry Antipov + + Consistently use marker_position and marker_byte_position. + * fringe.c (Ffringe_bitmaps_at_pos): + * indent.c (Fvertical_motion): + * insdel.c (prepare_to_modify_buffer): + * keyboard.c (make_lispy_position): + * window.c (Fwindow_end, Fpos_visible_in_window_p, unshow_buffer) + (window_scroll_pixel_based, displayed_window_lines) + (Fset_window_configuration): + * xdisp.c (message_dolog, with_echo_area_buffer_unwind_data) + (mark_window_display_accurate_1, redisplay_window, decode_mode_spec): + Replace direct access to marker fields with calls + to marker_position and/or marker_byte_position. + +2012-12-11 Juanma Barranquero + + * makefile.w32-in (SIG2STR_H): New macro. + (SYSWAIT_H, $(BLD)/emacs.$(O), $(BLD)/process.$(O)) + ($(BLD)/w32notify.$(O)): Update dependencies. + +2012-12-10 Daniel Colascione + + * w32term.c, keyboard.c: Fix build break in cygw32 by omitting + Windows file notification functionality unless WINDOWSNT. + + * w32gui.h (hprevinst, lpCmdLine, nCmdShow): Remove unused + declarations. + + * w32fns.c (cache_system_info): Initialize the global hinst + variable here so various initialization calls DTRT. + + * unexw32.c (hprevinst, lpCmdLine, nCmdShow): Remove unused variables. + (hinst): Remove unneeded extern declaration. + (_start): Remove initialization of above variables; remove + initialization of hinst, as cache_system_info now does that. + + * emacs.c (main): Call cache_system_info early in startup; we + previously weren't calling it in Cygwin builds. + + * Makefile.in (ntsource, WINDRES, W32_RES, W#@_RES_LINK): + Teach the autoconf build system how to compile a Windows resource file + and link it to Emacs. + +2012-12-10 Dmitry Antipov + + Per-buffer window counters. + * buffer.h (struct buffer): New member window_count. + (buffer_window_count): New function. + * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): + Initialize window_count. + (Fkill_buffer): Verify window_count for the buffer being killed. + (modify_overlay): Do not force redisplay if buffer is not shown + in any window. + (init_buffer_once): Initialize window_count for buffer_defaults + and buffer_local_symbols. + * window.h (buffer_shared): Remove declaration. + (wset_buffer): Convert from inline ... + * window.c (wset_buffer): ... to an ordinary function. + (adjust_window_count): New function. + (make_parent_window): Use it. + * xdisp.c (buffer_shared): Remove. + (redisplay_internal, redisplay_window): Adjust users. + (buffer_shared_and_changed): Use per-buffer window counter. + +2012-12-10 Eli Zaretskii + + Support for filesystem notifications on MS-Windows. + * w32proc.c (sys_select): If drain_message_queue returns non-zero, + and this is a TTY frame, signal the caller that keyboard input is + available. + + * w32xfns.c (drain_message_queue): Now returns an int: an + indication whether any WM_EMACS_FILENOTIFY messages were found in + the queue. + + * w32inevt.c (handle_file_notifications): New function. + (w32_console_read_socket): Call it to process file notifications. + + * w32console.c (initialize_w32_display): Record the main thread ID + in dwMainThreadId. + + * deps.mk (inotify.o): New dependency list. + + * Makefile.in (SOME_MACHINE_OBJECTS): Add w32notify.o. + + * w32term.h (WM_EMACS_FILENOTIFY): New custom message. + (WM_EMACS_END): Bump value by 1. + (notification_buffer_in_use, file_notifications) + (notifications_size, notifications_desc): Declare. + (w32_get_watch_object, lispy_file_action, globals_of_w32notify): + Add prototypes. + + * w32term.c (lispy_file_action, queue_notifications): New functions. + (syms_of_w32term) + : New symbols. + (w32_read_socket): Handle the WM_EMACS_FILENOTIFY message. + + * w32notify.c: New file, implements file event notifications for + MS-Windows. + + * w32fns.c (w32_wnd_proc): Handle the WM_EMACS_FILENOTIFY message + by posting it to the w32_read_socket queue. + + * termhooks.h (enum event_kind) [HAVE_NTGUI]: Support FILE_NOTIFY_EVENT. + + * makefile.w32-in (OBJ2): Add $(BLD)/w32notify.$(O). + (GLOBAL_SOURCES): Add w32notify.c + ($(BLD)/w32notify.$(O)): New set of dependencies. + + * lisp.h (syms_of_w32notify) [WINDOWSNT]: Add prototype. + + * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]: + Handle FILE_NOTIFY_EVENT. + (syms_of_keyboard) [HAVE_NTGUI] : New symbol. + (keys_of_keyboard) [WINDOWSNT]: Bind file-notify to + w32notify-handle-event by default. + + * emacs.c (main) [WINDOWSNT]: Call globals_of_w32notify and + syms_of_w32notify. + +2012-12-10 Rüdiger Sonderfeld + + Support for filesystem notifications on GNU/Linux via inotify. + * termhooks.h (enum event_kind) [HAVE_INOTIFY]: Add FILE_NOTIFY_EVENT. + + * lisp.h (syms_of_inotify) [HAVE_INOTIFY]: Add prototype. + + * keyboard.c (Qfile_inotify) [HAVE_INOTIFY]: New variable. + (syms_of_keyboard): DEFSYM it. + (kbd_buffer_get_event) [HAVE_INOTIFY]: Generate FILE_NOTIFY_EVENT. + (make_lispy_event): Support FILE_NOTIFY_EVENT by generating + Qfile_inotify events. + (keys_of_keyboard) [HAVE_INOTIFY]: Bind file-inotify events in + special-event-map to inotify-handle-event. + + * emacs.c (main) [HAVE_INOTIFY]: Call syms_of_inotify. + + * Makefile.in (base_obj): Add inotify.o. + + * inotify.c: New file. + +2012-12-10 Jan Djärv * nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103). -2012-12-08 Fabrice Popineau +2012-12-10 Fabrice Popineau * w32fns.c (cache_system_info): Cast sysinfo_cache.dwPageSize to DWORD_PTR, for compatibility with 64-bit builds. @@ -116,21 +679,154 @@ (system_process_attributes): Use SIZE_T rather than DWORD, for compatibility with 64-bit builds. -2012-12-08 Christopher Schmidt +2012-12-10 Christopher Schmidt * lread.c (Vload_source_file_function): Doc fix (Bug#11647). -2012-12-07 Eli Zaretskii +2012-12-10 Eli Zaretskii * indent.c (Fvertical_motion): If a display string will be displayed on the left or the right margin, don't consider it as a factor in cursor positioning. (Bug#13108) -2012-12-07 Martin Rudalics +2012-12-10 Martin Rudalics * editfns.c (Fcompare_buffer_substrings): Reword doc-string. -2012-12-05 Eli Zaretskii +2012-12-10 Paul Eggert + + * fileio.c (Fsubstitute_in_file_name): Use ptrdiff_t, not int, + for string length. + +2012-12-08 Eli Zaretskii + + * w32.c (unsetenv): Return 0 if the input string is too long. + +2012-12-08 Paul Eggert + + Use putenv+unsetenv instead of modifying environ directly (Bug#13070). + * alloc.c (xputenv): New function. + * dbusbind.c (Fdbus_init_bus): + * emacs.c (main): + * xterm.c (x_term_init): + Use xputenv instead of setenv or putenv, to detect memory exhaustion. + * editfns.c (initial_tz): Move static var decl up. + (tzvalbuf_in_environ): New static var. + (init_editfns): Initialize these two static vars. + (Fencode_time): Don't assume arbitrary limit on EMACS_INT width. + Save old TZ value on stack, if it's small. + (Fencode_time, set_time_zone_rule): Don't modify 'environ' directly; + instead, use xputenv+unsetenv to set and restore TZ. + (environbuf): Remove static var. All uses removed. + (Fset_time_zone_rule): Do not save TZ and environ; + no longer needed here. + (set_time_zone_rule_tz1, set_time_zone_rule_tz2) [LOCALTIME_CACHE]: + Move to inside set_time_zone_rule; they don't need file scope any more. + (set_time_zone_rule): Maintain the TZ=value string separately. + (syms_of_editfns): Don't initialize initial_tz; + init_editfns now does it. + * emacs.c (dump_tz) [HAVE_TZSET]: Now const. + * lisp.h (xputenv): New decl. + +2012-12-08 Fabrice Popineau + + * w32fns.c (emacs_abort): Don't do arithmetics on void pointers. + +2012-12-08 Eli Zaretskii + + * w32.c (unsetenv, sys_putenv): New functions. + +2012-12-08 Chong Yidong + + * editfns.c (Finsert_char): Make the error message more + informative (Bug#12992). + +2012-12-08 Paul Eggert + + Simplify get_lim_data. + * vm-limit.c (get_lim_data): Combine RLIMIT_AS and RLIMIT_DATA methods. + Remove USG and vlimit methods; no longer used these days. + Add #error catchall just in case. + + Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026). + Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN, + SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these. + * process.c [subprocesses]: Include , . + (deleted_pid_list, Fdelete_process, create_process) + (record_child_status_change, handle_child_signal, deliver_child_signal) + (init_process_emacs, syms_of_process): + Assume SIGCHLD is defined. + (parse_signal): Remove. All uses removed. + (abbr_to_signal): New static function. + (Fsignal_process): Use it to convert signal names to ints. + * sysdep.c (sys_suspend) [!DOS_NT]: Use kill (0, ...) rather than + kill (getpgrp (), ...). + (emacs_sigaction_init): Assume SIGCHLD is defined. + (init_signals): Assume SIGALRM, SIGCHLD, SIGHUP, SIGKILL, + SIGPIPE, and SIGQUIT are defined. Do not worry about SIGCLD any more. + * syssignal.h (EMACS_KILLPG): Remove. + All uses replaced by 'kill' with a negative pid. + (SIGCHLD): Remove definition, as we now assume SIGCHLD. + * w32proc.c (sys_kill): Support negative pids compatibly with POSIX. + +2012-12-07 Paul Eggert + + * sysdep.c (get_child_status): Abort on internal error (Bug#13086). + This will cause a production Emacs to dump core instead of + infinite-looping. + +2012-12-07 Dmitry Antipov + + * frame.c (make_frame): Do not set window's buffer to t. + * window.c (Fsplit_window_internal): Likewise. Previously it was + used to indicate that the window is being set up. Now we use + set_window_buffer for all new windows, so the condition in ... + (Fset_window_buffer): ... is always true and can be removed. + +2012-12-07 Dmitry Antipov + + Convenient macro to check whether the buffer is hidden. + * buffer.h (BUFFER_HIDDEN_P): New macro. + * frame.c (make_frame): Use it. Adjust comment. + * buffer.c (candidate_buffer): New function. + (Fother_buffer, other_buffer_safely): Use it. + +2012-12-06 Eli Zaretskii + + * w32proc.c (waitpid): Avoid busy-waiting when called with WNOHANG + if the child process is still running. Instead, exit the wait + loop and return zero. (Bug#13086) + +2012-12-06 Dmitry Antipov + + * frame.h (x_char_width, x_char_height): Remove prototypes. + * w32term.h (x_char_width, x_char_height): Likewise. + * xfns.c (x_char_width, x_char_height): Remove. + * w32fns.c (x_char_width, x_char_height): Likewise. + * nsfns.c (x_char_width, x_char_height): Likewise. + * frame.c (Fframe_char_width): Use FRAME_COLUMN_WIDTH for + all window frames. + (Fframe_char_height): Likewise with FRAME_LINE_HEIGHT. + * keyboard.c (command_loop_1): Remove prototype. + (command_loop_2, top_level_1): Add static to match prototype. + +2012-12-06 Paul Eggert + + Fix a recently-introduced delete-process race condition. + * callproc.c, process.h (record_kill_process): + New function, containing part of the old call_process_kill. + (call_process_kill): Use it. + This does not change call_process_kill's behavior. + * process.c (Fdelete_process): Use record_kill_process to fix a + race condition that could cause Emacs to lose track of a child. + +2012-12-06 Dmitry Antipov + + Avoid code duplication between prev_frame and next_frame. + * frame.c (candidate_frame): New function. Add comment. + (prev_frame, next_frame): Use it. Adjust comment. + +2012-12-06 Eli Zaretskii * callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp fails, signal an error instead of continuing with an empty @@ -138,23 +834,139 @@ Encode expanded temp file pattern before passing it to mkstemp or mktemp. -2012-12-04 Eli Zaretskii - * fileio.c (file_name_as_directory, directory_file_name) [DOS_NT]: Encode the file name before passing it to dostounix_filename, in case it will downcase it (under w32-downcase-file-names). (Bug#12933) -2012-12-01 Chong Yidong +2012-12-05 Paul Eggert + + Minor call-process cleanups. + * callproc.c (Fcall_process): Do record-unwind-protect on MSDOS + at the same time as other platforms, to simplify analysis. + No need for fd0_volatile since we have synch_process_fd. + Avoid needless emacs_close; arg is always negative. + +2012-12-04 Andreas Schwab + + * callproc.c (Fcall_process): Fix specpdl nesting for asynchronous + processes. + +2012-12-04 Dmitry Antipov + + * lisp.h (Mouse_HLInfo): Remove set-but-unused mouse_face_image_state + member. Adjust users. Convert mouse_face_past_end, mouse_face_defer + and mouse_face_hidden members to a bitfields. + * frame.h (struct frame): Remove set-but-not-used space_width member. + (FRAME_SPACE_WIDTH): Remove. + * nsterm.m, w32term.c, xterm.c: Adjust users. + * termchar.h (struct tty_display_info): Remove set-but-unused se_is_so + member. Adjust users. Convert term_initted, delete_in_insert_mode, + costs_set, insert_mode, standout_mode, cursor_hidden and flow_control + members to a bitfields. + +2012-12-03 Paul Eggert + + Don't let call-process be a zombie factory (Bug#12980). + Fixing this bug required some cleanup of the signal-handling code. + As a side effect, this change also fixes a longstanding rare race + condition whereby Emacs could mistakenly kill unrelated processes, + and it fixes a bug where a second C-g does not kill a recalcitrant + synchronous process in GNU/Linux and similar platforms. + The patch should also fix the last vestiges of Bug#9488, + a bug which has mostly been fixed on the trunk by other changes. + * callproc.c, process.h (synch_process_alive, synch_process_death) + (synch_process_termsig, sync_process_retcode): + Remove. All uses removed, to simplify analysis and so that + less consing is done inside critical sections. + * callproc.c (call_process_exited): Remove. All uses replaced + with !synch_process_pid. + * callproc.c (synch_process_pid, synch_process_fd): New static vars. + These take the role of what used to be in unwind-protect arg. + All uses changed. + (block_child_signal, unblock_child_signal): + New functions, to avoid races that could kill innocent-victim processes. + (call_process_kill, call_process_cleanup, Fcall_process): Use them. + (call_process_kill): Record killed processes as deleted, so that + zombies do not clutter up the system. Do this inside a critical + section, to avoid a race that would allow the clutter. + (call_process_cleanup): Fix code so that the second C-g works again + on common platforms such as GNU/Linux. + (Fcall_process): Create the child process in a critical section, + to fix a race condition. If creating an asynchronous process, + record it as deleted so that zombies do not clutter up the system. + Do unwind-protect for WINDOWSNT too, as that's simpler in the + light of these changes. Omit unnecessary call to emacs_close + before failure, as the unwind-protect code does that. + * callproc.c (call_process_cleanup): + * w32proc.c (waitpid): Simplify now that synch_process_alive is gone. + * process.c (record_deleted_pid): New function, containing + code refactored out of Fdelete_process. + (Fdelete_process): Use it. + (process_status_retrieved): Remove. All callers changed to use + child_status_change. + (record_child_status_change): Remove, folding its contents into ... + (handle_child_signal): ... this signal handler. Now, this + function is purely a handler for SIGCHLD, and is not called after + a synchronous waitpid returns; the synchronous code is moved to + wait_for_termination. There is no need to worry about reaping + more than one child now. + * sysdep.c (get_child_status, child_status_changed): New functions. + (wait_for_termination): Now takes int * status and bool + interruptible arguments, too. Do not record child status change; + that's now the caller's responsibility. All callers changed. + Reimplement in terms of get_child_status. + (wait_for_termination_1, interruptible_wait_for_termination): + Remove. All callers changed to use wait_for_termination. + * syswait.h: Include , for bool. + (record_child_status_change, interruptible_wait_for_termination): + Remove decls. + (record_deleted_pid, child_status_changed): New decls. + (wait_for_termination): Adjust to API changes noted above. + + * bytecode.c, lisp.h (Qbytecode): Remove. + No longer needed after 2012-11-20 interactive-p changes. + +2012-12-03 Eli Zaretskii + + * xdisp.c (redisplay_window): If the cursor is visible, but inside + the scroll margin, move point outside the margin. (Bug#13055) + +2012-12-03 Jan Djärv + + * gtkutil.c (my_log_handler): New function. + (xg_set_geometry): Set log handler to my_log_handler (Bug#11177). + +2012-12-03 Dmitry Antipov + + * lisp.h (modify_region): Rename to... + (modify_region_1): ...new prototype. + * textprop.c (modify_region): Now static. Adjust users. + * insdel.c (modify_region): Rename to... + (modify_region_1): ...new function to work with current buffer. + Adjust comment and users. Use true and false for booleans. + +2012-12-03 Dmitry Antipov + + * alloc.c (free_save_value): New function. + (safe_alloca_unwind): Use it. + * lisp.h (free_save_value): New prototype. + * editfns.c (save_excursion_save): Use Lisp_Misc_Save_Value. + Add comment. + (save_excursion_restore): Adjust to match saved data structure. + Use free_save_value to offload some work from GC. Drop obsolete + #if 0 code. + +2012-12-03 Chong Yidong * fileio.c (Vauto_save_list_file_name): Doc fix. -2012-11-30 Fabrice Popineau +2012-12-03 Fabrice Popineau * w32fns.c: Remove prototype of atof. - (syspage_mask): Declared DWORD_PTR, for compatibility with 64-bit + (syspage_mask): Make it DWORD_PTR, for compatibility with 64-bit builds. - (file_dialog_callback): Declared UINT_PTR. + (file_dialog_callback): Make it UINT_PTR. * w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility with 64-bit builds. @@ -163,83 +975,117 @@ (FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already defined. -2012-11-27 Glenn Morris +2012-12-03 Glenn Morris * data.c (Fboundp, Fsymbol_value): Doc fix re lexical-binding. -2012-11-26 Eli Zaretskii +2012-12-02 Paul Eggert - * fontset.c (Finternal_char_font): Return nil on non-GUI frames. - (Bug#11964) + Fix xpalloc confusion after memory is exhausted. + * alloc.c (xpalloc): Comment fix. + * charset.c (Fdefine_charset_internal): If xpalloc exhausts memory + and signals an error, do not clear charset_table_size, as + charset_table is still valid. + * doprnt.c (evxprintf): Clear *BUF after freeing it. -2012-11-24 Paul Eggert + Use execve to avoid need to munge environ (Bug#13054). + * callproc.c (Fcall_process): + * process.c (create_process): + Don't save and restore environ; no longer needed. + * callproc.c (child_setup): + Use execve, not execvp, to preserve environ. - Revert recent change for Bug#8855. - As reported by Harald Hanche-Olsen in - - the change introduces a further bug, of creating lots of zombie - processes in some cases. Further work is needed to come up with a - better fix for Bug#8855. +2012-12-01 Paul Eggert -2012-11-24 Eli Zaretskii + * xterm.c (x_draw_image_relief): Remove unused locals (Bug#10500). + +2012-12-01 YAMAMOTO Mitsuharu + + * xterm.c (x_draw_relief_rect, x_draw_image_relief): Fix relief + display for sliced images (Bug#10500). + + * w32term.c (w32_draw_relief_rect, x_draw_image_relief): Likewise. + +2012-11-30 Juanma Barranquero + + * doc.c (Fdocumentation): Re-add handling of function-documentation, + accidentally removed in 2012-11-09T04:10:16Z!monnier@iro.umontreal.ca (bug#13034). + +2012-11-29 Dmitry Antipov + + * xdisp.c (window_outdated): Remove eassert since it hits + some suspicious corner cases (see Bug#13007 and Bug#13012). + (mode_line_update_needed): New function. + (redisplay_internal, redisplay_window): Use it. + (ensure_selected_frame): New function. + (redisplay_internal, unwind_redisplay): Use it. + (redisplay_internal): Move comment about buffer_shared... + (buffer_shared_and_changed): ...near to its real use. + +2012-11-29 Paul Eggert + + * callproc.c (Fcall_process): Don't misreport vfork failure. + +2012-11-28 Paul Eggert + + * callproc.c (Fcall_process): Fix vfork portability problems. + Do not assume that fd[0], count, filefd, and save_environ survive + vfork. Fix bug whereby wrong errno value could be reported for + pipe failure. Some minor cleanups, too, as follows. Move buf and + bufsize to the context where they're needed. Change new_argv to + be of type char **, as this is more convenient and avoids casts. + (CALLPROC_BUFFER_SIZE_MIN, CALLPROC_BUFFER_SIZE_MAX): + Now local constants, not macros. + +2012-11-18 Kenichi Handa + + * font.c (font_unparse_xlfd): Fix previous change. Keep "const" + for the variable "f". + +2012-11-13 Kenichi Handa + + * font.c (font_unparse_xlfd): Exclude special characters from the + generating XLFD name. + +2012-11-27 Paul Eggert + + Assume POSIX 1003.1-1988 or later for grp.h, pwd.h. + * dired.c (stat_uname, stat_gname): + * fileio.c (Fexpand_file_name): Remove no-longer-needed casts. + + Assume POSIX 1003.1-1988 or later for errno.h (Bug#12968). + * dired.c (directory_files_internal, file_name_completion): + Assume EAGAIN and EINTR are defined. + + * fileio.c (Fcopy_file): Assume EISDIR is defined. + * gmalloc.c (ENOMEM, EINVAL): Assume they're defined. + * gnutls.c (emacs_gnutls_write): Assume EAGAIN is defined. + * lread.c (readbyte_from_file): Assume EINTR is defined. + * process.c (wait_reading_process_output, send_process) [subprocesses]: + Assume EIO and EAGAIN are defined. + * unexcoff.c (write_segment): Assume EFAULT is defined. + +2012-11-27 Eli Zaretskii + + * fontset.c (Finternal_char_font): Return nil on non-GUI frames. + (Bug#11964) * xdisp.c (draw_glyphs): Don't draw in mouse face if mouse highlighting on the frame was cleared. Prevents assertion violations when repeatedly clicking on the "Top" link of the "bread-crumbs" in Info buffers. -2012-11-23 Paul Eggert - Eli Zaretskii - - Fix a race condition with glib (Bug#8855). - The symptom is a diagnostic "GLib-WARNING **: In call to - g_spawn_sync(), exit status of a child process was requested but - SIGCHLD action was set to SIG_IGN and ECHILD was received by - waitpid(), so exit status can't be returned." The diagnostic - is partly wrong, as the SIGCHLD action is not set to SIG_IGN. - The real bug is a race condition between Emacs and glib: Emacs - does a waitpid (-1, ...) and reaps glib's subprocess by mistake, - so that glib can't find it. Work around the bug by invoking - waitpid only on subprocesses that Emacs itself creates. +2012-11-25 Paul Eggert - This is a backport from the trunk, consisting of: + * sysdep.c (sys_subshell): Don't assume pid_t fits in int. - * w32proc.c (create_child): Don't clip the PID of the child - process to fit into an Emacs integer, as this is no longer a - restriction. - (waitpid): Rename from sys_wait. Emulate a Posix 'waitpid' by - reaping only the process specified by PID argument, if that is - positive. Use PID instead of dead_child to know which process to - reap. Wait for the child to die only if WNOHANG is not in - OPTIONS. - (sys_select): Don't set dead_child. +2012-11-24 Ken Brown - * sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion, - as it is no longer needed. + * keyboard.c (HAVE_MOUSE): + * frame.c (HAVE_MOUSE): Remove, and rewrite code as if HAVE_MOUSE + were always defined. - * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions, - no longer needed. - (create_process, record_child_status_change): Don't use special - value -1 in pid field, as the caller now must know the pid rather - than having the callee infer it. The inference was sometimes - incorrect anyway, due to another race. - (create_process): Set new 'alive' member if child is created. - (process_status_retrieved): New function. - (record_child_status_change): Use it. - Accept negative 1st argument, which means to wait for the - processes that Emacs already knows about. Move special-case code - for DOS_NT (which lacks WNOHANG) here, from caller. Keep track of - processes that have already been waited for, by testing and - clearing new 'alive' member. Remove the setting of - record_at_most_one_child for the !WNOHANG case. - (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change - now does this internally. - (handle_child_signal): Let record_child_status_change do all - the work, since we do not want to reap all exited child processes, - only the child processes that Emacs itself created. - * process.h (Lisp_Process): New boolean member 'alive'. - -2012-11-23 Eli Zaretskii +2012-11-24 Eli Zaretskii * xdisp.c (set_cursor_from_row): Skip step 2 only if point is not between bpos_covered and bpos_max. This fixes cursor display when @@ -249,79 +1095,265 @@ pointer to string data, rather than the value of the string object itself (which barfs under CHECK_LISP_OBJECT_TYPE). -2012-11-21 Eli Zaretskii - * indent.c (Fvertical_motion): If the starting position is covered by a display string, return to one position before that, to avoid overshooting it inside move_it_to. (Bug#12930) -2012-11-20 Daniel Colascione +2012-11-23 Dmitry Antipov + + * frame.h (struct frame): Remove display_preempted member + since all users are dead long ago. + * nsterm.h (struct x_output): Use the only dummy member. + * w32menu.c (pending_menu_activation): Remove since not + really used. + (set_frame_menubar): Adjust user. + * w32term.h (struct x_output): Drop outdated #if 0 code. + (struct w32_output): Use bitfields for explicit_parent, + asked_for_visible and menubar_active members. + Drop unused pending_menu_activation member. + * xterm.h (struct x_output): Drop outdated #if 0 code. + Use bitfields for explicit_parent, asked_for_visible, + has_been_visible and net_wm_state_hidden_seen members. - * w32fns.c (Fx_file_dialog): - (Fx_file_dialog): Accomodate rename of cygwin_convert_path* to - cygwin_convert_file_name*. +2012-11-23 Eli Zaretskii - * cygw32.c (Fcygwin_convert_path_to_windows, syms_of_cygw32): - Rename cygwin_convert_path* to cygwin_convert_file_name*. + * makefile.w32-in (globals.h, gl-stamp): Use $(SWITCHCHAR) instead + of a literal "/". (Bug#12955) + (gl-stamp): Invoke fc.exe directly, not through cmd. + +2012-11-23 Paul Eggert + + Assume POSIX 1003.1-1988 or later for dirent.h (Bug#12958). + * dired.c: Assume HAVE_DIRENT_H. + (NAMLEN): Remove, replacing with ... + (dirent_namelen): New function. All uses changed. Use the GNU macro + _D_EXACT_NAMELEN if available, as it's faster than strlen. + (DIRENTRY): Remove, replacing all uses with 'struct dirent'. + (DIRENTRY_NONEMPTY): Remove. All callers now assume it's nonzero. + * makefile.w32-in (DIR_H): Remove. All uses replaced with + $(NT_INC)/dirent.h. + ($(BLD)/w32.$(O)): Do not depend on $(SRC)/ndir.h. + * ndir.h: Rename to ../nt/inc/dirent.h. + * sysdep.h (closedir) [!HAVE_CLOSEDIR]: Remove. + Do not include ; no longer needed. + * w32.c: Include rather than "ndir.h". + +2012-11-23 Chong Yidong + + * xftfont.c (xftfont_open): Remove duplicate assignment. + +2012-11-22 Dmitry Antipov + + * alloc.c (Fgarbage_collect): Unblock input after clearing + gc_in_progress to avoid note_mouse_highlight glitch with GC. + * frame.h (FRAME_MOUSE_UPDATE): New macro. + * msdos.c (IT_frame_up_to_date): Use it here... + * w32term.c (w32_frame_up_to_date): ...here... + * xterm.c (XTframe_up_to_date): ...and here... + * nsterm.m (ns_frame_up_to_date): ...but not here. + * lisp.h (Mouse_HLInfo): Remove mouse_face_deferred_gc member. + Adjust users. + * xdisp.c (message2_nolog, message3_nolog, note_mouse_highlight): + Do not check whether GC is in progress. + +2012-11-22 Dmitry Antipov + + * xdisp.c (window_buffer_changed): New function. + (update_menu_bar, update_tool_bar): Use it to + simplify large 'if' statements. + (redisplay_internal): Generalize commonly used + 'tail' and 'frame' local variables. + +2012-11-22 Eli Zaretskii + + * w32.c (getcwd): Fix the 2nd argument type, to prevent conflicts + with Windows system header. -2012-11-20 Ken Brown +2012-11-21 Paul Eggert + + Assume POSIX 1003.1-1988 or later for unistd.h (Bug#12945). + * alloc.c: Assume unistd.h exists. + * fileio.c (Fexpand_file_name) [DOS_NT]: Use getcwd, not getwd. + * sysdep.c (get_current_dir_name): Assume getcwd exists. + (getwd) [USG]: Remove; no longer needed. + (sys_subshell) [DOS_NT]: Use getcwd, not getwd. + * w32.c (getcwd): Rename from getwd, and switch to getcwd's API. + * w32.h (getcwd): Remove decl. + +2012-11-21 Stefan Monnier + + * xdisp.c (fast_set_selected_frame): Rename from update_tool_bar_unwind. + Make it set selected_window as well. + (update_tool_bar): Use it. + +2012-11-21 Ken Brown * emacs.c (main): Set the G_SLICE environment variable for all Cygwin builds, not just GTK builds. See https://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00368.html. -2012-11-19 Eli Zaretskii - - * xdisp.c (start_hourglass) [HAVE_NTGUI]: Don't mix declaration of - w32_note_current_window with code. (Backport from trunk.) +2012-11-21 Eli Zaretskii * w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED) (FILE_ANY_ACCESS, CTL_CODE, FSCTL_GET_REPARSE_POINT) [_MSC_VER]: Define for the MSVC compiler. - * w32term.h (EnumSystemLocalesW) [_MSC_VER]: Add a missing - semi-colon. - -2012-11-18 Eli Zaretskii + * w32term.h (EnumSystemLocalesW) [_MSC_VER]: Add a missing semi-colon. * fileio.c (Fsubstitute_in_file_name, Ffile_name_directory) (Fexpand_file_name) [DOS_NT]: Pass encoded file name to dostounix_filename. Prevents crashes down the road, because - dostounix_filename assumes it gets a unibyte string. Reported by - Michel de Ruiter , see + dostounix_filename assumes it gets a unibyte string. + Reported by Michel de Ruiter , see http://lists.gnu.org/archive/html/help-emacs-windows/2012-11/msg00017.html -2012-11-17 Eli Zaretskii +2012-11-20 Stefan Monnier + + Conflate Qnil and Qunbound for `symbol-function'. + * alloc.c (Fmake_symbol): Initialize `function' to Qnil. + * lread.c (init_obarray): Set `function' fields to Qnil. + * eval.c (Fcommandp): Ignore Qunbound. + (Fautoload, eval_sub, Fapply, Ffuncall, Fmacroexpand): + * data.c (Ffset, Ffboundp, indirect_function, Findirect_function): + Test NILP rather than Qunbound. + (Ffmakunbound): Set to Qnil. + (Fsymbol_function): Never signal an error. + (Finteractive_form): Ignore Qunbound. + +2012-11-20 Paul Eggert + + * eval.c (interactive_p): Remove no-longer-used decl. + +2012-11-20 Dmitry Antipov + + * xdisp.c (buffer_shared): Adjust comment. + (buffer_shared_and_changed): New function. + (prepare_menu_bars, redisplay_internal): Use it to + decide whether all windows or frames should be updated. + (window_outdated): New function. + (text_outside_line_unchanged_p, redisplay_window): Use it. + (redisplay_internal): Likewise. Fix indentation. + +2012-11-20 Stefan Monnier + + * eval.c (Finteractive_p, Fcalled_interactively_p, interactive_p): Remove. + (syms_of_eval): Remove corresponding defsubr. + * bytecode.c (exec_byte_code): `interactive-p' is now a Lisp function. + +2012-11-19 Daniel Colascione + + * w32fns.c (Fx_file_dialog): + (Fx_file_dialog): Accomodate rename of cygwin_convert_path* to + cygwin_convert_file_name*. + + * cygw32.c (Fcygwin_convert_path_to_windows, syms_of_cygw32): + Rename cygwin_convert_path* to cygwin_convert_file_name*. + +2012-11-18 Paul Eggert + + * nsterm.m (ns_select): Send SIGIO only to self, not to process group. + +2012-11-18 Eli Zaretskii * w32select.c: Include w32common.h before w32term.h, so that windows.h gets included before w32term.h uses some of its features, see below. - * w32term.h (LOCALE_ENUMPROCA, LOCALE_ENUMPROCW) [_MSC_VER]: New - typedefs. - (EnumSystemLocalesA, EnumSystemLocalesW) [_MSC_VER]: New - prototypes. + * w32term.h (LOCALE_ENUMPROCA, LOCALE_ENUMPROCW) [_MSC_VER]: + New typedefs. + (EnumSystemLocalesA, EnumSystemLocalesW) [_MSC_VER]: + New prototypes. (EnumSystemLocales) [_MSC_VER]: Define if undefined. (Bug#12878) -2012-11-17 Jan Djärv +2012-11-18 Jan Djärv * nsterm.m (hold_event): Set send_appdefined to YES (Bug#12834). (ns_select): Return at once if events are held (Bug#12834). -2012-11-16 enami tsugutomo +2012-11-18 enami tsugutomo * unexelf.c (ELFSIZE) [__NetBSD__ && _LP64]: Set to 64. Needed following 2012-10-20 change. (Bug#12902) +2012-11-18 Juanma Barranquero + + * w32proc.c (waitpid): Remove unused label get_result. + +2012-11-17 Juanma Barranquero + + * makefile.w32-in (SYSWAIT_H): New macro. + ($(BLD)/callproc.$(O), $(BLD)/w32proc.$(O), $(BLD)/process.$(O)) + ($(BLD)/sysdep.$(O)): Update dependencies. + +2012-11-17 Paul Eggert + + Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881). + * callproc.c (relocate_fd): Assume F_DUPFD. + * emacs.c, term.c (O_RDWR): Remove. + * keyboard.c (tty_read_avail_input): Use O_NONBLOCK rather than + O_NDELAY, since O_NONBLOCK is the standard name for this flag. + * nsterm.m: Assume exists. + * process.c (NON_BLOCKING_CONNECT, allocate_pty, create_process) + (create_pty, Fmake_network_process, server_accept_connection) + (wait_reading_process_output, init_process_emacs): + Assume O_NONBLOCK. + (wait_reading_process_output): Put in a special case for WINDOWSNT + to mimick the older behavior where it had O_NDELAY but not O_NONBLOCK. + It's not clear this is needed, but it's a more-conservative change. + (create_process): Assume FD_CLOEXEC. + (create_process, create_pty): Assume O_NOCTTY. + * sysdep.c (init_sys_modes, reset_sys_modes): Assume F_SETFL. + (reset_sys_modes): Use O_NONBLOCK rather than O_NDELAY. + Omit if not DOS_NT, since F_GETFL is not defined there. + (serial_open): Assume O_NONBLOCK and O_NOCTTY. + * term.c: Include , for flags like O_NOCTTY. + (O_NOCTTY): Remove. + (init_tty): Assume O_IGNORE_CTTY is defined to 0 on platforms that + lack it, since gnulib guarantees this. + * w32.c (fcntl): Test for O_NONBLOCK rather than O_NDELAY. + +2012-11-17 Eli Zaretskii + + * w32.c (faccessat): Pretend that directories have the execute bit + set. Emacs expects that, e.g., in files.el:cd-absolute. + + * w32proc.c (create_child): Don't clip the PID of the child + process to fit into an Emacs integer, as this is no longer a + restriction. + (waitpid): Rename from sys_wait. Emulate a Posix 'waitpid' by + reaping only the process specified by PID argument, if that is + positive. Use PID instead of dead_child to know which process to + reap. Wait for the child to die only if WNOHANG is not in + OPTIONS. + (sys_select): Don't set dead_child. + + * sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion, + as it is no longer needed. + + * process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions, + no longer needed. + (record_child_status_change): Remove the setting of + record_at_most_one_child for the !WNOHANG case. + +2012-11-17 Paul Eggert + + Fix problems in ns port found by static checking. + * nsterm.m: Include , for pthread_mutex_lock etc. + (hold_event, setPosition:portion:whole:): Send SIGIO only to self, + not to process group. + (ns_select): Use emacs_write, not write, as that's more robust + in the presence of signals. + (fd_handler:): Check for read errors. + 2012-11-16 Glenn Morris * editfns.c (Fmessage): Mention message-log-max. (Bug#12849) -2012-11-15 Stefan Monnier +2012-11-16 Stefan Monnier * eval.c (Finteractive_p): Revert lexbind-merge mishap. -2012-11-14 Eli Zaretskii +2012-11-16 Eli Zaretskii * w32proc.c (timer_loop): Make sure SuspendThread and ResumeThread use the same value of thread handle. @@ -333,12 +1365,121 @@ (getitimer): Don't duplicate the caller thread's handle here. (Bug#12832) -2012-11-13 Jan Djärv +2012-11-16 Jan Djärv * nsterm.m (hold_event): Send SIGIO to make sure ns_read_socket is called (Bug#12834). -2012-11-12 Eli Zaretskii +2012-11-16 Paul Eggert + + Remove no-longer-used pty_max_bytes variable. + * process.c (pty_max_bytes): Remove; unused. + (send_process): Do not set it. + +2012-11-15 Juanma Barranquero + + * makefile.w32-in ($(BLD)/dispnew.$(O), $(BLD)/emacs.$(O)): + Update dependencies. + +2012-11-15 Paul Eggert + + * eval.c (mark_backtrace) [BYTE_MARK_STACK]: Remove stray '*'. + This follows up on the 2012-09-29 patch that removed indirection + for the 'function' field. Reported by Sergey Vinokurov in + . + +2012-11-14 Eli Zaretskii + + * w32.c (faccessat): Rename from sys_faccessat. (No need to use a + different name, as the MS runtime does not have such a function, + and probably never will.) All callers changed. Ignore DIRFD + value if PATH is an absolute file name, to match Posix spec + better. If AT_SYMLINK_NOFOLLOW is set in FLAGS, don't resolve + symlinks. + +2012-11-14 Dmitry Antipov + + * xdisp.c (echo_area_display, redisplay_internal): + Omit redundant check whether frame_garbaged is set. + +2012-11-14 Paul Eggert + + Use faccessat, not access, when checking file permissions (Bug#12632). + This fixes a bug that has been present in Emacs since its creation. + It was reported by Chris Torek in 1983 even before GNU Emacs existed, + which must set some sort of record. (Torek's bug report was against + a predecessor of GNU Emacs, but GNU Emacs happened to have the + same common flaw.) See Torek's Usenet posting + "setuid/setgid programs & Emacs" Article-I.D.: sri-arpa.858 + Posted: Fri Apr 8 14:18:56 1983. + * Makefile.in (LIB_EACCESS): New macro. + (LIBES): Use it. + * callproc.c (init_callproc): + * charset.c (init_charset): + * fileio.c (check_existing, check_executable, check_writable) + (Ffile_readable_p): + * lread.c (openp, load_path_check): + * process.c (allocate_pty): + * xrdb.c (file_p): + Use effective UID when checking permissions, not real UID. + * callproc.c (init_callproc): + * charset.c (init_charset): + * lread.c (load_path_check, init_lread): + Test whether directories are accessible, not merely whether they exist. + * conf_post.h (GNULIB_SUPPORT_ONLY_AT_FDCWD): New macro. + * fileio.c (check_existing, check_executable, check_writable) + (Ffile_readable_p): + Use symbolic names instead of integers for the flags, as they're + portable now. + (check_writable): New arg AMODE. All uses changed. + Set errno on failure. + (Ffile_readable_p): Use faccessat, not stat + open + close. + (Ffile_writable_p): No need to call check_existing + check_writable. + Just call check_writable and then look at errno. This saves a syscall. + dir should never be nil; replace an unnecessary runtime check + with an eassert. When checking the parent directory of a nonexistent + file, check that the directory is searchable as well as writable, as + we can't create files in unsearchable directories. + (file_directory_p): New function, which uses 'stat' on most platforms + but faccessat with D_OK (for efficiency) if WINDOWSNT. + (Ffile_directory_p, Fset_file_times): Use it. + (file_accessible_directory_p): New function, which uses a single + syscall for efficiency. + (Ffile_accessible_directory_p): Use it. + * xrdb.c (file_p): Use file_directory_p. + * lisp.h (file_directory_p, file_accessible_directory_p): New decls. + * lread.c (openp): When opening a file, use fstat rather than + stat, as that avoids a permissions race. When not opening a file, + use file_directory_p rather than stat. + (dir_warning): First arg is now a usage string, not a format. + Use errno. All uses changed. + * nsterm.m (ns_term_init): Remove unnecessary call to file-readable + that merely introduced a race. + * process.c, sysdep.c, term.c: All uses of '#ifdef O_NONBLOCK' + changed to '#if O_NONBLOCK', to accommodate gnulib O_* style, + and similarly for the other O_* flags. + * w32.c (sys_faccessat): Rename from sys_access and switch to + faccessat's API. All uses changed. + * xrdb.c: Do not include ; no longer needed. + (magic_db): Rename from magic_file_p. + (magic_db, search_magic_path): Return an XrmDatabase rather than a + char *, so that we don't have to test for file existence + separately from opening the file for reading. This removes a race + fixes a permission-checking problem, and simplifies the code. + All uses changed. + (file_p): Remove; no longer needed. + +2012-11-13 Dmitry Antipov + + Omit glyphs initialization at startup. + * dispnew.c (glyphs_initialized_initially_p): Remove. + (adjust_frame_glyphs_initially): Likewise. Adjust users. + (Fredraw_frame): Move actual code from here... + (redraw_frame): ...to here. Add eassert. Adjust comment. + (Fredraw_display): Use redraw_frame. + * xdisp.c (clear_garbaged_frames): Likewise. + +2012-11-13 Eli Zaretskii * xdisp.c (decode_mode_spec): Limit the value of WIDTH argument passed to pint2str and pint2hrstr to be at most the size of the @@ -346,15 +1487,69 @@ large values of FIELD_WIDTH argument to decode_mode_spec. (Bug#12867) -2012-11-07 Martin Rudalics +2012-11-13 Paul Eggert + + Fix a race with verify-visited-file-modtime (Bug#12863). + Since at least 1991 Emacs has ignored an mtime difference of no + more than one second, but my guess is that this was to work around + file system bugs that were fixed long ago. Since the race is + causing problems now, let's remove that code. + * fileio.c (Fverify_visited_file_modtime): Do not accept a file + whose time stamp is off by no more than a second. Insist that the + file time stamps match exactly. + +2012-11-12 Dmitry Antipov + + * frame.h (struct frame): Convert external_tool_bar member to + 1-bit unsigned bitfield. + * termhooks.h (struct terminal): Remove mouse_moved member since + all users are long dead. Adjust comment on mouse_position_hook. + +2012-11-12 Dmitry Antipov + + Simplify by using FOR_EACH_FRAME here and there. + * frame.c (next_frame, prev_frame, other_visible_frames) + (delete_frame, visible-frame-list): Use FOR_EACH_FRAME. + * w32term.c (x_window_to_scroll_bar): Likewise. + * window.c (window_list): Likewise. + * xdisp.c (x_consider_frame_title): Likewise. + * xfaces.c ( Fdisplay_supports_face_attributes_p): Likewise. + * xfns.c (x_window_to_frame, x_any_window_to_frame) + (x_menubar_window_to_frame, x_top_window_to_frame): Likewise. + * xmenu.c (menubar_id_to_frame): Likewise. + * xselect.c (frame_for_x_selection): Likewise. + * xterm.c (x_frame_of_widget, x_window_to_scroll_bar) + (x_window_to_menu_bar): Likewise. + * w32fns.c (x_window_to_frame): Likewise. Adjust comment. + +2012-11-12 Paul Eggert + + * data.c (Qdefalias_fset_function): Now static. + + Another tweak to vectorlike_header change. + * alloc.c (struct Lisp_Vectorlike_Free, NEXT_IN_FREE_LIST): + Remove, and replace all uses with ... + (next_in_free_list, set_next_in_free_list): + New functions, which respect C's aliasing rules better. + +2012-11-11 Paul Eggert + + * window.c (list4i): Rename from 'quad'. All uses changed. + Needed because defines 'quad' on Solaris 10. + +2012-11-11 Juanma Barranquero + + * xdisp.c (start_hourglass) [HAVE_NTGUI]: Add block to silence + warning about mixing declarations and code in ISO C90. + +2012-11-10 Martin Rudalics * window.c (Fsplit_window_internal): Set combination limit of new parent window to t iff Vwindow_combination_limit is t; fixing a regression introduced with the change from 2012-09-22. - (Fwindow_combination_limit, Fset_window_combination_limit): - Fix doc-strings. + (Fset_window_combination_limit): Fix doc-string. -2012-11-06 Eli Zaretskii +2012-11-10 Eli Zaretskii * xdisp.c (try_scrolling): Fix correction of aggressive-scroll amount when the scroll margins are too large. When scrolling @@ -364,12 +1559,375 @@ point is positioned many lines beyond the window top/bottom. (Bug#12811) -2012-11-05 Eli Zaretskii - * ralloc.c (relinquish): If real_morecore fails to return memory to the system, don't crash; instead, leave the last heap unchanged and return. (Bug#12774) +2012-11-09 Stefan Monnier + + * lisp.h (AUTOLOADP): New macro. + * eval.c (Fautoload): Don't attach to loadhist, call Fdefalias instead. + * data.c (Ffset): Remove special ad-advice-info handling. + (Fdefalias): Handle autoload definitions and new Qdefalias_fset_function. + (Fsubr_arity): CSE. + (Finteractive_form): Simplify. + (Fquo): Don't insist on having at least 2 arguments. + (Qdefalias_fset_function): New var. + +2012-11-09 Jan Djärv + + * image.c (xpm_make_color_table_h): Change to hashtest_equal. + + * nsfont.m (Qcondensed, Qexpanded): New variables. + (ns_descriptor_to_entity): Restore Qcondensed, Qexpanded setting. + (syms_of_nsfont): Defsym Qcondensed, Qexpanded. + +2012-11-09 Dmitry Antipov + + Fix recently introduced crash on MS-Windows (Bug#12839). + * w32term.h (struct scroll_bar): Use convenient header. + (SCROLL_BAR_VEC_SIZE): Remove. + * w32term.c (x_scroll_bar_create): Use VECSIZE. + +2012-11-09 Dmitry Antipov + + Tweak last vectorlike_header change. + * alloc.c (struct Lisp_Vectorlike_Free): Special type to represent + vectorlike object on the free list. This is introduced to avoid + some (but not all) pointer casting and aliasing problems, see + http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00105.html. + * .gdbinit (pvectype, pvecsize): New commands to examine vectorlike + objects. + (xvectype, xvecsize): Use them to examine Lisp_Object values. + +2012-11-09 Jan Djärv + + * nsfont.m (ns_descriptor_to_entity): Qcondensed and Qexpanded has + been removed, so remove them here also. + +2012-11-09 Stefan Monnier + + * doc.c (Fdocumentation): Handle new property + dynamic-docstring-function to replace the old ad-advice-info. + +2012-11-09 Paul Eggert + + * fns.c (Qeql, hashtest_eq): Now static. + +2012-11-08 Stefan Monnier + + * lisp.h (XHASH): Redefine to be imperfect and fit in a Lisp int. + * fns.c (hashfn_eq, hashfn_eql, sxhash): + * profiler.c (hashfn_profiler): Don't use XUINT on non-integers. + * buffer.c (compare_overlays): Use XLI rather than XHASH. + +2012-11-08 Paul Eggert + + Use same hash function for hashfn_profiler as for hash_string etc. + * fns.c (SXHASH_COMBINE): Remove. All uses replaced by sxhash_combine. + * lisp.h (sxhash_combine): New inline function, with the contents + of the old SXHASH_COMBINE. + * profiler.c (hashfn_profiler): Use it, instead of having a + special hash function containing a comparison that always yields 1. + +2012-11-08 Stefan Monnier + + * xfaces.c (Qultra_light, Qreverse_oblique, Qreverse_italic) + (Qultra_condensed, Qextra_condensed, Qcondensed, Qsemi_condensed) + (Qsemi_expanded, Qextra_expanded, Qexpanded, Qultra_expanded): + Remove unused vars. + +2012-11-08 Jan Djärv + + * image.c (xpm_make_color_table_h): Fix compiler error because + make_hash_table changed. + +2012-11-08 Thomas Kappler (tiny change) + + * nsfont.m (ns_findfonts): Handle empty matchingDescs (Bug#11541). + +2012-11-08 Stefan Monnier + + Use ad-hoc comparison function for the profiler's hash-tables. + * profiler.c (Qprofiler_backtrace_equal, hashtest_profiler): New vars. + (make_log): Use them. + (handle_profiler_signal): Don't inhibit quit any longer since we don't + call Fequal any more. + (Ffunction_equal): New function. + (cmpfn_profiler, hashfn_profiler): New functions. + (syms_of_profiler): Initialize them. + * lisp.h (struct hash_table_test): New struct. + (struct Lisp_Hash_Table): Use it. + * alloc.c (mark_object): Mark hash_table_test fields of hash tables. + * fns.c (make_hash_table): Take a struct to describe the test. + (cmpfn_eql, cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql) + (hashfn_equal, hashfn_user_defined): Adjust to new calling convention. + (hash_lookup, hash_remove_from_table): Move assertion checking of + hashfn result here. Check hash-equality before calling cmpfn. + (Fmake_hash_table): Adjust call to make_hash_table. + (hashtest_eq, hashtest_eql, hashtest_equal): New structs. + (syms_of_fns): Initialize them. + * emacs.c (main): Move syms_of_fns earlier. + * xterm.c (syms_of_xterm): + * category.c (hash_get_category_set): Adjust call to make_hash_table. + * print.c (print_object): Adjust to new hash-table struct. + * composite.c (composition_gstring_put_cache): Adjust to new hashfn. + +2012-11-08 Eli Zaretskii + + * w32fns.c (modifier_set): Fix handling of Scroll Lock when the + value of w32-scroll-lock-modifier is neither nil nor one of the + known key modifiers. (Bug#12806) + +2012-11-08 Dmitry Antipov + + Shrink struct vectorlike_header to the only size field. + * lisp.h (enum pvec_type): Avoid explicit enum member values. + Adjust comment. + (enum More_Lisp_Bits): Change PSEUDOVECTOR_SIZE_BITS and + PVEC_TYPE_MASK to arrange new bitfield in the vector header. + (PSEUDOVECTOR_REST_BITS, PSEUDOVECTOR_REST_MASK): New members. + (PSEUDOVECTOR_AREA_BITS): New member used to extract subtype + information from the vector header. Adjust comment. + (XSETPVECTYPE, XSETPVECTYPESIZE, XSETTYPED_PSEUDOVECTOR) + (PSEUDOVECTOR_TYPEP, DEFUN): Adjust to match new vector header + layout. + (XSETSUBR, SUBRP): Adjust to match new Lisp_Subr layout. + (struct vectorlike_header): Remove next member. Adjust comment. + (struct Lisp_Subr): Add convenient header. Adjust comment. + (allocate_pseudovector): Adjust prototype. + * alloc.c (mark_glyph_matrix, mark_face_cache, allocate_string) + (sweep_string, lisp_malloc): Remove useless prototypes. + (enum mem_type): Adjust comment. + (NEXT_IN_FREE_LIST): New macro. + (SETUP_ON_FREE_LIST): Adjust XSETPVECTYPESIZE usage. + (Fmake_bool_vector): Likewise. + (struct large_vector): New type to represent allocation unit for + the vectors with the memory footprint more than VBLOOCK_BYTES_MAX. + (large_vectors): Change type to struct large_vector. + (allocate_vector_from_block): Simplify. + (PSEUDOVECTOR_NBYTES): Replace with... + (vector_nbytes): ...new function. Adjust users. + (sweep_vectors): Adjust processing of large vectors. + (allocate_vectorlike): Likewise. + (allocate_pseudovector): Change type of 3rd arg to enum pvec_type. + Add easserts. Adjust XSETPVECTYPESIZE usage. + (allocate_buffer): Use BUFFER_PVEC_INIT. + (live_vector_p): Adjust to match large vector. + * buffer.c (init_buffer_once): Use BUFFER_PVEC_INIT. + * buffer.h (struct buffer): Add next member. + (BUFFER_LISP_SIZE, BUFFER_REST_SIZE, BUFFER_PVEC_INIT): + New macros. + (FOR_EACH_BUFFER): Adjust to match struct buffer change. + * fns.c (internal_equal): Adjust to match enum pvec_type change. + (copy_hash_table): Adjust to match vector header change. + * lread.c (defsubr): Use XSETPVECTYPE. + * .gdbinit (xpr, xbacktrace): Adjust to match vector header change. + (xvectype): Likewise. Print PVEC_NORMAL_VECTOR for regular vectors. + (xvecsize): New command. + +2012-11-08 Dmitry Antipov + + * keyboard.c (event_to_kboard): Do not dereference + frame_or_window field of SELECTION_REQUEST_EVENT + and SELECTION_CLEAR_EVENT events (Bug#12814). + * xterm.h (struct selection_input_event): Adjust comment. + +2012-11-07 Eli Zaretskii + + * w32fns.c (modifier_set): Don't report modifiers from toggle key, + such as Scroll Lock, if the respective keys are treated as + function keys, not as modifiers. This avoids destroying non-ASCII + keyboard input when Scroll Lock is toggled ON. (Bug#12806) + +2012-11-07 Dmitry Antipov + + * xfns.c (Fx_wm_set_size_hint): Use check_x_frame. Adjust docstring. + +2012-11-06 Paul Eggert + + Restore some duplicate definitions (Bug#12814). + This undoes part of the 2012-11-03 changes. Some people build + with plain -g rather than with -g3, and they need the duplicate + definitions for .gdbinit to work; see . + * lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): + Define as macros, as well as as enums or as constants. + +2012-11-06 Jan Djärv + + * nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask + to keypad keys (Bug#12816). + +2012-11-06 Paul Eggert + + Minor adjustments of recently-changed frame functions. + * buffer.c (Fbuffer_list): Omit CHECK_FRAME, since arg is already + known to be a frame (we're in the FRAMEP branch). + * lisp.h (Qframep): Remove decl. frame.h declares this. + * window.c (quad): Args are of type EMACS_INT, not ptrdiff_t, + since they're meant for Lisp fixnum values. + +2012-11-06 Dmitry Antipov + + * window.c (Fwindow_combination_limit): Revert to the only + required argument and adjust docstring as suggested in + http://lists.gnu.org/archive/html/emacs-diffs/2012-11/msg01082.html + by Martin Rudalics . + +2012-11-06 Dmitry Antipov + + Widely used frame validity and checking functions. + * frame.h (decode_live_frame, decode_any_frame): Add prototypes. + * frame.c (decode_live_frame, decode_any_frame): New functions. + (delete_frame, Fredirect_frame_focus, Fframe_parameters) + (Fframe_parameter, Fframe_char_height, Fframe_char_width) + (Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width) + (Fframe_pointer_visible_p): Use decode_any_frame. + (Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame) + (Fraise_frame, Flower_frame, Fmodify_frame_parameters) + (Fset_frame_height, Fset_frame_width): Use decode_live_frame. + (Fframe_focus): Likewise. Allow zero number of arguments. + Adjust docstring. + (frame_buffer_list, frame_buffer_predicate): Remove. + * lisp.h (frame_buffer_predicate): Remove prototype. + * buffer.c (Fother_buffer): Use decode_any_frame. + * xdisp.c (Ftool_bar_lines_needed): Likewise. + * xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise. + * font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font) + (Fclose_font, Ffont_info): Use decode_live_frame. + * fontset.c (check_fontset_name): Likewise. + * terminal.c (Fframe_terminal): Likewise. + * w32fns.c (check_x_frame): Likewise. + * window.c (Fminibuffer_window, Fwindow_at) + (Fcurrent_window_configuration): Likewise. + (Frun_window_configuration_change_hook, Fwindow_resize_apply): + Likewise. Allow zero number of arguments. Adjust docstring. + * dispnew.c (Fredraw_frame): Likewise. + * xfaces.c (frame_or_selected_frame): Remove. + (Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font) + (Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p) + (Fframe_face_alist): Use decode_live_frame. + * xfns.c (check_x_frame): Likewise. + +2012-11-06 Dmitry Antipov + + * window.c (quad): New function. + (Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges) + (Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges) + (Fwindow_inside_pixel_edges, Fpos_visible_in_window_p) + (Fwindow_line_height): Use it. + (Fwindow_fringes): Use list3. + (Fwindow_scroll_bars): Use list4. + (Fwindow_frame, Fwindow_top_child, Fwindow_left_child) + (Fwindow_combination_limit): Allow zero number of arguments. + +2012-11-05 Eli Zaretskii + + * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h. + + * w32fns.c: Include unistd.h, to avoid compiler warnings on Cygwin. + (emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use + file descriptor 2 for standard error. (Bug#12805) + +2012-11-05 Chong Yidong + + * process.c (wait_reading_process_output): Revert previous change. + +2012-11-05 Paul Eggert + + Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800). + This removes code that has been obsolete since around 1990. + * callproc.c (Fcall_process): + * emacs.c (main): + * process.c (create_process): + * term.c (dissociate_if_controlling_tty): + Assume setsid exists. + * callproc.c (child_setup): Assume setpgid exists and behaves as + per POSIX.1-1988 or later. + * conf_post.h (setpgid) [!HAVE_SETPGID]: Remove. + * emacs.c (shut_down_emacs): + * sysdep.c (sys_suspend, init_foreground_group): + Assume getpgrp behaves as per POSIX.1-1998 or later. + * msdos.c (setpgrp): Remove. + (tcgetpgrp, setpgid, setsid): New functions. + * systty.h (EMACS_GETPGRP): Remove. All callers now use getpgrp. + * term.c (no_controlling_tty): Remove; unused. + * w32proc.c (setpgrp): Remove. + (setsid, tcgetpgrp): New functions. + + Simplify by assuming __fpending. + * dispnew.c: Include , not . + (update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT. + Do not assume that __fpending's result fits in int. + +2012-11-04 Paul Eggert + + Remove EMACS_OUTQSIZE+sleep hack. + * dispnew.c (update_frame_1): Remove hack for terminals slower + than 2400 bps, which throttled Emacs by having it sleep. + This code hasn't worked since at least 2007, when the multi-tty stuff + was added, and anyway those old terminals are long dead. + * systty.h (EMACS_OUTQSIZE): Remove; unused. The macro isn't used even + without the dispnew.c change, as dispnew.c doesn't include systty.h. + + Fix data-loss with --version (Bug#9574). + * emacs.c (close_output_streams): Use strerror, not emacs_strerror, + as we can't assume that emacs_strerror is initialized, and strerror + is good enough here. + (main): Invoke atexit earlier, to catch earlier instances of + sending data to stdout and exiting, e.g., "emacs --version >/dev/full". + +2012-11-04 Michael Marchionna + + * nsterm.m: Add NSClearLineFunctionKey and keypad keys (Bug#8680). + (keyDown): Remap keypad keys to X11 virtual key codes. + +2012-11-03 Paul Eggert + + Fix data-loss with --batch (Bug#9574). + * emacs.c: Include . + (close_output_streams): New function. + (main): Pass it to atexit, so that Emacs closes stdout and stderr + and handles errors appropriately. + (Fkill_emacs): Don't worry about flushing, as close_output_stream + does that now. + + Fix a race condition that causes Emacs to mess up glib (Bug#8855). + The symptom is a diagnostic "GLib-WARNING **: In call to + g_spawn_sync(), exit status of a child process was requested but + SIGCHLD action was set to SIG_IGN and ECHILD was received by + waitpid(), so exit status can't be returned." The diagnostic + is partly wrong, as the SIGCHLD action is not set to SIG_IGN. + The real bug is a race condition between Emacs and glib: Emacs + does a waitpid (-1, ...) and reaps glib's subprocess by mistake, + so that glib can't find it. Work around the bug by invoking + waitpid only on subprocesses that Emacs itself creates. + * process.c (create_process, record_child_status_change): + Don't use special value -1 in pid field, as the caller now must + know the pid rather than having the callee infer it. + The inference was sometimes incorrect anyway, due to another race. + (create_process): Set new 'alive' member if child is created. + (process_status_retrieved): New function. + (record_child_status_change): Use it. + Accept negative 1st argument, which means to wait for the + processes that Emacs already knows about. Move special-case code + for DOS_NT (which lacks WNOHANG) here, from caller. Keep track of + processes that have already been waited for, by testing and + clearing new 'alive' member. + (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change + now does this internally. + (handle_child_signal): Let record_child_status_change do all + the work, since we do not want to reap all exited child processes, + only the child processes that Emacs itself created. + * process.h (Lisp_Process): New boolean member 'alive'. + + Omit duplicate definitions no longer needed with gcc -g3. + * lisp.h (GCTYPEBITS, GCALIGNMENT, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG) + (VALMASK, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM): + Define only as macros. There's no longer any need to also define + these symbols as enums or as constants, since we now assume + gcc -g3 when debugging. + 2012-11-03 Eli Zaretskii * lisp.mk: Adjust comments to the fact that term/internal is now @@ -388,13 +1946,80 @@ iterator when starting in the middle of a display or overlay string. (Bug#12745) -2012-11-03 Jan Djärv +2012-11-03 Chong Yidong + + * process.c (wait_reading_process_output): Clean up the last + change. + +2012-11-03 Jim Paris (tiny change) + + * process.c (wait_reading_process_output): Avoid a race condition + with SIGIO delivery (Bug#11536). + +2012-11-03 Chong Yidong + + * buffer.c (cursor_type): Untabify docstring. + +2012-11-03 Dmitry Antipov + + * frame.h (struct frame): Drop can_have_scroll_bars member + which is meaningless for a long time. Adjust comments. + (FRAME_CAN_HAVE_SCROLL_BARS): Remove. + * frame.c, nsfns.m, term.c, w32fns.c, xfns.c: Adjust users. + +2012-11-03 Dmitry Antipov + + * window.c (decode_next_window_args): Update window arg after + calling decode_live_window and so fix crash reported at + http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00035.html + by Juanma Barranquero . + (Fwindow_body_width, Fwindow_body_height): Simplify a bit. + * font.c (Ffont_at): Likewise. + +2012-11-01 Jan Djärv * widget.c (resize_cb): New function. (EmacsFrameRealize): Add resize_cb as event handler (Bug#12733). (EmacsFrameResize): Check if all is up to date before changing frame size. +2012-11-02 Eli Zaretskii + + Implement backtrace output for fatal errors on MS-Windows. + * w32fns.c (CaptureStackBackTrace_proc): New typedef. + (BACKTRACE_LIMIT_MAX): New macro. + (w32_backtrace): New function. + (emacs_abort): Use w32_backtrace when the user chooses not to + attach a debugger. Update the text of the abort dialog. + +2012-11-02 Dmitry Antipov + + Window-related stuff cleanup here and there. + * dispnew.c (Finternal_show_cursor, Finternal_show_cursor_p): + Use decode_any_window. + * fringe.c (Ffringe_bitmaps_at_pos): Likewise. + * xdisp.c (Fformat_mode_line): Likewise. + * font.c (Ffont_at): Use decode_live_window. + * indent.c (Fcompute_motion, Fvertical_motion): Likewise. + * window.c (decode_next_window_args): Likewise. + (decode_any_window): Remove static. + * window.h (decode_any_window): Add prototype. + * lisp.h (CHECK_VALID_WINDOW, CHECK_LIVE_WINDOW): Move from here... + * window.h: ...to here, redefine via WINDOW_VALID_P and WINDOW_LIVE_P, + respectively. + +2012-11-02 Dmitry Antipov + + Remove pad from struct input_event. + * termhooks.h (struct input_event): Remove padding field. + Adjust comment. + * keyboard.c (event_to_kboard): Simplify because frame_or_window + member is never cons for a long time. Adjust comment. + (mark_kboards): Adjust because SELECTION_REQUEST_EVENT and + SELECTION_CLEAR_EVENT has no Lisp_Objects to mark. Add comment. + * xterm.c (handle_one_xevent): Do not initialize frame_or_window + field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT. + 2012-11-01 Eli Zaretskii * w32proc.c (getpgrp, setpgid): New functions. (Bug#12776) @@ -574,7 +2199,7 @@ 2012-10-19 Stefan Monnier - * fns.c (Fnreverse): Include the problem element when signalling an + * fns.c (Fnreverse): Include the problem element when signaling an error (bug#12677). 2012-10-18 Jan Djärv @@ -1025,7 +2650,7 @@ now a supported configuration. * Makefile.in: consolidate image variables into LIBIMAGE; add - W32_OBJ and W32_LIBS. Compile new files. + W32_OBJ and W32_LIBS. Compile new files. * conf_post.h: (_DebPrint) declare tracing facility for W32 debugging. We need @@ -9465,7 +11090,7 @@ 2012-05-09 Michael Albinus * dbusbind.c (xd_registered_buses): New internal Lisp object. - Rename all occurences of Vdbus_registered_buses to xd_registered_buses. + Rename all occurrences of Vdbus_registered_buses to xd_registered_buses. (syms_of_dbusbind): Remove declaration of Vdbus_registered_buses. Initialize xd_registered_buses.