1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-06 07:31:13 -08:00
Commit graph

13042 commits

Author SHA1 Message Date
Juanma Barranquero
0eeb69fe15 (lib-src,src,lib)/makefile.w32-in: Update dependencies. 2012-12-11 03:06:53 +01:00
Daniel Colascione
8db4b52f05 Fix cygw32 build break 2012-12-10 12:46:20 -08:00
Daniel Colascione
743fa5cbdd Move fix for cygw32 icon issue from emacs-24 branch to trunk as Stefan Monnier requests 2012-12-10 09:52:35 -08:00
Dmitry Antipov
98a0705655 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 21:34:47 +04:00
Eli Zaretskii
2b8c906403 Final cleanups and updated ChangeLog entries. 2012-12-10 15:25:17 +02:00
Eli Zaretskii
3907e630a7 Merge from trunk + rename the event. Not tested yet. 2012-12-10 14:08:02 +02:00
Rüdiger Sonderfeld
81606b1050 Support filesystem notification through inotify on GNU/Linux.
configure.ac (inotify): New option.
 (HAVE_INOTIFY): Test for inotify.

 src/termhooks.h (enum event_kind) [HAVE_INOTIFY]: Add
 FILE_NOTIFY_EVENT.
 src/lisp.h (syms_of_inotify) [HAVE_INOTIFY]: Add prototype.
 src/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.
 src/emacs.c (main) [HAVE_INOTIFY]: Call syms_of_inotify.
 src/Makefile.in (base_obj): Add inotify.o.
 src/inotify.c: New file.

 lisp/subr.el (inotify-event-p, inotify-handle-event): New functions.

 test/automated/inotify-test.el: New test.
2012-12-10 06:17:21 -05:00
Daniel Colascione
1cf1bbd51e Compile Windows resources into cygw32 Emacs 2012-12-09 23:11:21 -08:00
Glenn Morris
265c2fbf11 Merge from emacs-24; up to 2012-11-26T19:56:14Z!monnier@iro.umontreal.ca 2012-12-09 18:00:42 -08:00
Paul Eggert
5f460827dd * fileio.c (Fsubstitute_in_file_name): Use ptrdiff_t, not int,
for string length.
2012-12-09 17:44:32 -08:00
Jan Djärv
a06ae17da2 * nsterm.m (fd_handler:): FD_ZERO fds.
Fixes: debbugs:13103
2012-12-08 20:02:30 +01:00
Eli Zaretskii
a16e75cd3c Fix putenv and unsetenv on MS-Windows.
src/w32.c (unsetenv): Return 0 if the input string is too long.

 nt/inc/ms-w32.h (sys_putenv): Add prototype.

Fixes: debbugs:13070
2012-12-08 20:27:37 +02:00
Paul Eggert
5745a7df2b Use putenv+unsetenv instead of modifying environ directly.
* admin/merge-gnulib (GNULIB_MODULES): Add putenv, unsetenv.
* lib/putenv.c, lib/unsetenv.c, m4/putenv.m4, m4/setenv.m4:
New files, copied automatically from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* src/alloc.c (xputenv): New function.
* src/dbusbind.c (Fdbus_init_bus):
* src/emacs.c (main):
* src/xterm.c (x_term_init):
Use xputenv instead of setenv or putenv, to detect memory exhaustion.
* src/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.
* src/emacs.c (dump_tz) [HAVE_TZSET]: Now const.
* src/lisp.h (xputenv): New decl.

Fixes: debbugs:13070
2012-12-08 09:19:51 -08:00
Fabrice Popineau
c56efa4074 w32fns.c (emacs_abort): Don't do arithmetics on void pointers. 2012-12-08 14:11:29 +02:00
Fabrice Popineau
cb576b5cd0 Fix incompatibilities with 64-bit Windows builds.
src/w32fns.c (cache_system_info): Cast sysinfo_cache.dwPageSize to
 DWORD_PTR, for compatibility with 64-bit builds.
 src/w32.c (_PROCESS_MEMORY_COUNTERS_EX): 
 (GetProcessWorkingSetSize_Proc, get_process_working_set_size)
 (system_process_attributes): Use SIZE_T rather than DWORD, for
 compatibility with 64-bit builds.
2012-12-08 14:06:46 +02:00
Eli Zaretskii
75ceee0567 Provide unsetenv for MS-Windows and make putenv Posix-compatible.
src/w32.c (unsetenv, sys_putenv): New functions.

 nt/inc/ms-w32.h (putenv): Redirect to sys_putenv.
 nt/config.nt (HAVE_UNSETENV): Define to 1.

Fixes: debbugs:13070
2012-12-08 13:32:10 +02:00
Chong Yidong
1b6dbfeb19 * src/editfns.c (Finsert_char): Make the error message more informative.
Fixes: debbugs:12992
2012-12-08 19:05:39 +08:00
Paul Eggert
7be78020e3 Simplify get_lim_data.
* admin/CPP-DEFINES (ULIMIT_BREAK_VALUE): Remove.
* configure.ac (ULIMIT_BREAK_VALUE): Remove.
* src/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.
2012-12-07 22:56:26 -08:00
Christopher Schmidt
76b92feef1 * lread.c (Vload_source_file_function): Doc fix.
Fixes: debbugs:11647
2012-12-08 11:16:45 +08:00
Paul Eggert
d983a10b9a Assume POSIX 1003.1-1988 or later for signal.h.
Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN,
SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these.
* admin/CPP-DEFINES (SIGALRM, SIGCHLD, SIGHUP, SIGKILL, SIGPIPE, SIGQUIT):
Remove.
(SIGTRAP): Remove this one too, as config.h no longer defines it.
* admin/merge-gnulib (GNULIB_MODULES): Add sig2str.
* configure.ac (PTY_OPEN, PTY_TTY_NAME_SPRINTF):
Use SIGCHLD rather than SIGCLD.
* lib/sig2str.c, lib/sig2str.h, m4/sig2str.m4: New files, from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* lib/makefile.w32-in (GNULIBOBJS): Add $(BUILD)/sig2str.$(O).
* src/process.c [subprocesses]: Include <c-ctype.h>, <sig2str.h>.
(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.
* src/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.
* src/syssignal.h (EMACS_KILLPG): Remove.
All uses replaced by 'kill' with a negative pid.
(SIGCHLD): Remove definition, as we now assume SIGCHLD.
* src/w32proc.c (sys_kill): Support negative pids compatibly with POSIX.

Fixes: debbugs:13026
2012-12-07 18:30:51 -08:00
Paul Eggert
9cdde1e2df * 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 09:53:17 -08:00
Eli Zaretskii
81d8cc5377 Fix bug #13108 introduced by the fix to bug #12930.
src/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.
2012-12-07 17:28:20 +02:00
Martin Rudalics
2cec368c81 Reword doc-string of Fcompare_buffer_substrings.
* editfns.c (Fcompare_buffer_substrings): Reword doc-string.
2012-12-07 10:45:03 +01:00
Dmitry Antipov
822995f8b9 * 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 12:13:49 +04:00
Dmitry Antipov
ed08365b9e 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-07 11:16:32 +04:00
Eli Zaretskii
e86f51344b Avoid busy-waiting for child processes on Windows. (Bug#13086)
src/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.
2012-12-06 20:36:22 +02:00
Dmitry Antipov
1700db3c71 * 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 17:48:11 +04:00
Paul Eggert
35fb805045 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-05 23:31:58 -08:00
Dmitry Antipov
565212e598 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 10:23:51 +04:00
Glenn Morris
d8ad4d3ff9 Merge from emacs-24; up to 2012-11-24T16:58:43Z!cyd@gnu.org 2012-12-05 22:17:10 -08:00
Paul Eggert
644d3f0dbf 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-05 10:29:52 -08:00
Eli Zaretskii
7c2fcf9bad Don't pass un-encoded file name to mkstemp.
src/callproc.c (Fcall_process_region): Encode expanded temp file
 pattern before passing it to mkstemp or mktemp.
2012-12-05 19:39:39 +02:00
Eli Zaretskii
d3cefd1358 Fix one part of bug #13079 with temporary files in call-process-region.
src/callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp
 fails, signal an error instead of continuing with an empty
 string.
2012-12-05 19:10:00 +02:00
Andreas Schwab
396376f1ae * callproc.c (Fcall_process): Fix specpdl nesting for asynchronous
processes.
2012-12-04 22:18:37 +01:00
Eli Zaretskii
2e7cddd303 Fix another instance of bug #12933 with non-ASCII file names on Windows.
src/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).
2012-12-04 20:48:01 +02:00
Dmitry Antipov
350f51adac * 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-04 19:15:30 +04:00
Paul Eggert
bb5f74ee84 Don't let call-process be a zombie factory.
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 <stdbool.h>, 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.

Fixes: debbugs:12980
2012-12-03 13:42:12 -08:00
Paul Eggert
bc9dbce6ee * bytecode.c, lisp.h (Qbytecode): Remove.
No longer needed after 2012-11-20 interactive-p changes.
2012-12-03 13:07:47 -08:00
Eli Zaretskii
3cf3c60796 Fix bug #13055 with cursor positioning inside scroll-margin.
src/xdisp.c (redisplay_window): If the cursor is visible, but inside
 the scroll margin, move point outside the margin.
2012-12-03 22:48:12 +02:00
Jan Djärv
005c8d1340 * gtkutil.c (my_log_handler): New function.
(xg_set_geometry): Set log handler to my_log_handler.

Fixes: debbugs:11177
2012-12-03 20:16:17 +01:00
Dmitry Antipov
20edc1c9ed * 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 boolean arg.
2012-12-03 18:13:06 +04:00
Dmitry Antipov
62c2e5ed3a * 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 12:06:02 +04:00
Glenn Morris
c5bc2d1d05 Merge from emacs-24; up to 2012-11-23T06:23:28Z!cyd@gnu.org 2012-12-02 17:08:31 -08:00
Paul Eggert
2dd2e62273 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-12-02 15:11:42 -08:00
Paul Eggert
21e54a94d7 Use execve to avoid need to munge environ.
* 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.

Fixes: debbugs:13054
2012-12-02 11:16:45 -08:00
Paul Eggert
3e5490f7a5 * xterm.c (x_draw_image_relief): Remove unused locals.
Fixes: debbugs:10500
2012-12-01 17:06:14 -06:00
YAMAMOTO Mitsuharu
75b4f59c27 Fix drawing of relief rects on X and W32.
* xterm.c (x_draw_relief_rect, x_draw_image_relief): Fix relief
display for sliced images.

* w32term.c (w32_draw_relief_rect, x_draw_image_relief): Likewise.

Fixes: debbugs:10500
2012-12-01 10:38:11 +08:00
Chong Yidong
a24580314d * fileio.c (Vauto_save_list_file_name): Minor doc fix. 2012-12-01 09:49:48 +08:00
Juanma Barranquero
f8aff4c6b8 src/doc.c: Fix bug#13034.
(Fdocumentation): Re-add handling of function-documentation,
accidentally removed in 2012-11-09T04:10:16Z!monnier@iro.umontreal.ca.
2012-11-30 18:27:41 +01:00
Fabrice Popineau
c7b36b9550 Fix compilation problems with 64-bit MSVC compiler.
src/w32fns.c: Remove prototype of atof.
 (syspage_mask): Declared DWORD_PTR, for compatibility with 64-bit
 builds.
 (file_dialog_callback): Declared UINT_PTR.
 src/w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility
 with 64-bit builds.
 src/w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED)
 (FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already
 defined.
2012-11-30 17:14:22 +02:00