Eli Zaretskii [Sat, 3 Nov 2012 20:43:29 +0000 (22:43 +0200)]
Fix Windows build as fallout from 2012-11-03T18:54:17Z!eggert@cs.ucla.edu.
nt/config.nt (PENDING_OUTPUT_N_BYTES): Define.
lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/fpending.$(O) and
$(BLD)/close-stream.$(O).
($(BLD)/close-stream.$(O)):
($(BLD)/fpending.$(O)): New dependencies.
Paul Eggert [Sat, 3 Nov 2012 18:54:17 +0000 (11:54 -0700)]
Fix data-loss with --batch.
* admin/merge-gnulib (GNULIB_MODULES): Add close-stream.
* lib/close-stream.c, lib/close-stream.h, lib/fpending.c
* lib/fpending.h, m4/close-stream.m4, m4/fpending.m4:
New files, from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* src/emacs.c: Include <close-stream.h>.
(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.
Paul Eggert [Sat, 3 Nov 2012 18:32:41 +0000 (11:32 -0700)]
Fix a race condition that causes Emacs to mess up glib.
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'.
Paul Eggert [Sat, 3 Nov 2012 18:19:50 +0000 (11:19 -0700)]
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.
Glenn Morris [Sat, 3 Nov 2012 17:56:30 +0000 (10:56 -0700)]
Further edits for doc/misc/cl.texi
* cl.texi: Further general copyedits.
(List Functions): Remove copy-tree, standard elisp for some time.
(Efficiency Concerns): Comment out examples that no longer apply.
(Compiler Optimizations): Rename from "Optimizing Compiler"; reword.
Eli Zaretskii [Sat, 3 Nov 2012 13:58:33 +0000 (15:58 +0200)]
Adapt MSDOS port to latest changes.
config.bat: Copy lib/execinfo.in.h to lib/execinfo.in-h if needed.
msdos/sedlibmk.inp: Sync with changes in lib/Makefile.in.
(HAVE_DECL_ENVIRON, GNULIB_ENVIRON): Edit to require declaration
through lib/unistd.h.
msdos/sed1v2.inp: Sync with changes in src/Makefile.in.
msdos/sed2v2.inp: Sync with changes in src/config.in.
src/lisp.mk: Adjust comments to the fact that term/internal is now
loaded from loadup.el.
src/msdos.c (msdos_abort): Rename from emacs_abort, and make static.
(msdos_fatal_signal): New function.
(XMenuActivate): Adjust the call to kbd_buffer_events_waiting to
its argument list.
src/conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Define to "inline"
for GCC versions before 4.
(emacs_raise): Define to call msdos_fatal_signal.
lisp/term/pc-win.el: Don't load term/internal from here.
lisp/loadup.el: Load term/internal from here.
Jan Djärv [Sat, 3 Nov 2012 11:33:28 +0000 (12:33 +0100)]
Backport from trunk.
* widget.c (resize_cb): New function.
(EmacsFrameRealize): Add resize_cb as event handler.
(EmacsFrameResize): Check if all is up to date before changing frame
size.
Chong Yidong [Sat, 3 Nov 2012 11:02:43 +0000 (19:02 +0800)]
Clarify documentation about escape sequences in strings.
* objects.texi (General Escape Syntax): Clarify the explanation of
escape sequences.
(Non-ASCII in Strings): Clarify when a string is unibyte vs
multibyte. Hex escapes do not automatically make a string multibyte.
Dmitry Antipov [Sat, 3 Nov 2012 05:59:17 +0000 (09:59 +0400)]
* 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.
Dmitry Antipov [Sat, 3 Nov 2012 05:11:34 +0000 (09:11 +0400)]
* 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 <lekktu@gmail.com>.
(Fwindow_body_width, Fwindow_body_height): Simplify a bit.
* font.c (Ffont_at): Likewise.
Glenn Morris [Sat, 3 Nov 2012 01:19:40 +0000 (21:19 -0400)]
* doc/misc/cl.texi: Further general copyedits.
Eg, no longer distinguish between "the optimizing compiler" and "the
non-optimizing compiler" like they were different entities.
Gnus developers [Fri, 2 Nov 2012 23:37:02 +0000 (23:37 +0000)]
Merge changes made in Gnus master
2012-10-05 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi (Mail Source Specifiers):
Document :leave keyword used for pop mail source.
2012-10-25 Tassilo Horn <tsdh@gnu.org>
* gnus-dired.el (gnus-dired-attach): Attach to last used message buffer
by default. Patch provided by Stephen Eglen.
2012-10-05 Katsumi Yamaoka <yamaoka@jpl.org>
New UIDL implementation.
* mail-source.el (mail-sources, mail-source-keyword-map):
Add :leave as a pop3 keyword.
(mail-source-fetch-pop): Bind pop3-leave-mail-on-server.
* pop3.el (pop3-leave-mail-on-server): Allow number.
(pop3-uidl-file, pop3-uidl-file-backup): New user options.
(pop3-movemail): Add UIDL support.
(pop3-send-streaming-command): Take a list of mail numbers instead of
the number of mails.
(pop3-write-to-file): Add X-UIDL header.
(pop3-uidl-stat, pop3-uidl-dele, pop3-uidl-load, pop3-uidl-save)
(pop3-uidl-add-xheader): New functions.
* message.el (message-ignored-resent-headers):
Add X-Content-Length and X-UIDL headers.
Jan Djärv [Thu, 1 Nov 2012 22:44:53 +0000 (23:44 +0100)]
* widget.c (resize_cb): New function.
(EmacsFrameRealize): Add resize_cb as event handler.
(EmacsFrameResize): Check if all is up to date before changing frame
size.
Eli Zaretskii [Fri, 2 Nov 2012 14:00:45 +0000 (16:00 +0200)]
Implement backtrace output for fatal errors on MS-Windows.
src/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.
Dmitry Antipov [Fri, 2 Nov 2012 09:44:08 +0000 (13:44 +0400)]
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.
Glenn Morris [Thu, 1 Nov 2012 07:16:32 +0000 (00:16 -0700)]
More edits for cl.texi
* doc/misc/cl.texi: More copyedits, plus:
(Time of Evaluation, Iteration): Add xref to Emacs Lisp manual.
(Macro Bindings, Blocks and Exits): Acknowledge existence of lexical-binding.
(Iteration): Mainly defer to doc of standard dolist, dotimes.
Paul Eggert [Wed, 31 Oct 2012 17:27:29 +0000 (10:27 -0700)]
Fix crash when using Emacs as commit editor for git.
* callproc.c (setpgrp): Remove macro, as we now use setpgid
and it is configured in conf_post.h.
(Fcall_process): Don't invoke both setsid and setpgid; the former
is enough, if it exists.
* callproc.c (Fcall_process, child_setup):
* process.c (create_process): Use setpgid.
* conf_post.h (setpgid) [!HAVE_SETPGID]: New macro, which substitutes
for the real thing.
* dispnew.c (init_display): Initialize the foreground group
if we are running a tty display.
* emacs.c (main): Do not worry about setpgrp; init_display does it now.
* lisp.h (init_foreground_group): New decl.
* sysdep.c (inherited_pgroup): New static var.
(init_foreground_group, tcsetpgrp_without_stopping)
(narrow_foreground_group, widen_foreground_group): New functions.
(init_sys_modes): Narrow foreground group.
(reset_sys_modes): Widen foreground group.
Martin Rudalics [Wed, 31 Oct 2012 10:02:51 +0000 (11:02 +0100)]
Install fixes for Bug#12764 and Bug#12766.
* window.el (quit-restore-window): If the window has been
created on an existing frame and ended up as the sole window on
that frame, do not delete it (Bug#12764).
* minibuf.c (read_minibuf): Restore current buffer since
choose_minibuf_frame calling Fset_frame_selected_window may
change it (Bug#12766).
Glenn Morris [Wed, 31 Oct 2012 07:25:18 +0000 (00:25 -0700)]
Document cl-flet and cl-labels in doc/misc/cl.texi
* doc/misc/cl.texi (Function Bindings): Update for cl-flet and cl-labels.
(Obsolete Lexical Binding): Rename section from "Lexical Bindings".
(Obsolete Macros): Rename section from "Obsolete Lexical Macros".
Reword, and add details of flet and labels.
Glenn Morris [Tue, 30 Oct 2012 07:34:37 +0000 (00:34 -0700)]
Doc and manual updates for cl-letf and letf Fixes: debbugs:12760
* doc/misc/cl.texi (Modify Macros): Update for cl-letf changes.
(Obsolete Lexical Macros): Say a little more about letf/cl-letf.
cygw32.h, cygw32.c (Qutf_16le, from_unicode, to_unicode): In
preparation for fixing bug#12739, move these functions from
here...
* coding.h, coding.c: ... to here, and compile them only when
WINDOWSNT or HAVE_NTGUI. Moving these functions out of cygw32
proper lets us write cygw32-agnostic code for the HAVE_NTGUI case.
Stefan Monnier [Mon, 29 Oct 2012 00:06:39 +0000 (20:06 -0400)]
* lisp/progmodes/sh-script.el (sh-font-lock-paren): Also put punctuation
syntax to the matching opener, if any.
(sh-smie-sh-forward-token, sh-smie-sh-backward-token): Recognize this
matching open as a "case-(".
(sh-smie-rc-grammar): Add a corresponding rule for it.
Eli Zaretskii [Sun, 28 Oct 2012 17:42:52 +0000 (19:42 +0200)]
Don't use CLOCKS_PER_SEC in w32 timers.
src/w32proc.c (TIMER_TICKS_PER_SEC): New macro.
(timer_loop, getitimer, setitimer): Use it instead of
CLOCKS_PER_SEC, which is no longer pertinent, since we don't use
'clock'.
(w32_get_timer_time): Use 10*TIMER_TICKS_PER_SEC instead of a
literal 10000.