Chong Yidong [Fri, 30 Nov 2012 08:24:53 +0000 (16:24 +0800)]
In Shell mode, reapply ansi colorization if the mode is re-enabled.
* shell.el (shell-apply-ansi-color, shell-reapply-ansi-color): New functions.
(shell-mode): Use them to reapply ansi colorization if Shell mode is re-enabled.
Eric Hanchrow [Fri, 30 Nov 2012 04:18:22 +0000 (12:18 +0800)]
New ERC option to avoid sending accidentally-pasted text to the server.
* erc.el (erc-last-input-time): New variable.
(erc-accidental-paste-threshold-seconds): New option to avoid
sending accidentally-pasted text to the server.
(erc-send-current-line): Use it.
Also,
* erc.el (erc-lurker-cleanup, erc-lurker-p): Use float-time.
Jambunathan K [Thu, 29 Nov 2012 21:32:24 +0000 (16:32 -0500)]
* lisp/icomplete.el: Change separator; add ido-style commands.
(icomplete-show-key-bindings): Remove custom var.
(icomplete-get-keys): Remove function.
(icomplete-forward-completions, icomplete-backward-completions):
New commands.
(icomplete-minibuffer-map): New var.
(icomplete-minibuffer-setup): Use it.
(icomplete-exhibit): Don't delay if the list of completions is known.
(icomplete-separator): New custom.
(icomplete-completions): Use it.
* lisp/minibuffer.el (completion-all-sorted-completions): Delete duplicates.
(minibuffer-force-complete-and-exit): New command.
(minibuffer--complete-and-exit): New function extracted from
minibuffer-complete-and-exit.
(minibuffer-complete-and-exit): Use it.
Dmitry Antipov [Thu, 29 Nov 2012 06:00:21 +0000 (10:00 +0400)]
* 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.
Glenn Morris [Thu, 29 Nov 2012 01:16:51 +0000 (20:16 -0500)]
Add desktop support for restoring vc-dir buffers (bug#10606)
* lisp/vc/vc-dir.el (vc-dir-mode): Autoload it (for desktop restore).
Set buffer-local value of desktop-save-buffer.
(vc-dir-desktop-buffer-misc-data, vc-dir-restore-desktop-buffer):
New functions.
(desktop-buffer-mode-handlers): Add vc-dir-mode entry.
* lisp/desktop.el (desktop-save-buffer-p): Treat vc-dir like dired.
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.
Fix Imenu regression.
* progmodes/python.el:
(python-nav-beginning-of-defun): Fix forward movement when
statement(s) separates point from defun.
(python-imenu-prev-index-position): New function.
Stefan Monnier [Mon, 26 Nov 2012 19:56:14 +0000 (14:56 -0500)]
* lisp/emacs-lisp/advice.el (ad-should-compile): Don't compile advice if the
base function is not yet defined.
(ad-activate-advised-definition): Use ad-compile-function.
(ad-activate): Use cond.
Vincent Belaïche [Sun, 25 Nov 2012 05:05:34 +0000 (06:05 +0100)]
* textmodes/reftex-parse.el (reftex-parse-from-file): Use variable reftex-section-info-function in order to be compatible with Texinfo integration.
* textmodes/reftex.el (reftex-section-pre-regexp, reftex-section-post-regexp, reftex-section-info-function): New variable. (reftex-compile-variables): Use variables reftex-section-pre-regexp, reftex-section-post-regexp, and reftex-section-info-function in order to be compatible with Texinfo integration.
* textmodes/reftex-toc.el (reftex-toc-promote-action): use reftex-section-pre-regexp variable in order to be compatible with Texinfo integration.
Chong Yidong [Sun, 25 Nov 2012 04:50:20 +0000 (12:50 +0800)]
Revamp face-spec-set to be more analogous to setq for faces.
* lisp/faces.el (face-spec-set): Change the third arg to specify
whether this function is being called via defface, customize, or a
third party. Set the appropriate symbol properties. Clear the
override spec if setting via Custom. Initialize face if necessary.
(face-spec-recalc): Allow theme faces to completely replace the defface spec, in the same way as custom faces (Bug#8454).
* lisp/cus-edit.el (custom-face-set, custom-face-mark-to-save)
(custom-face-reset-saved, custom-face-mark-to-reset-standard):
Simplify by using the new arg to face-spec-set.
* lisp/cus-face.el (custom-declare-face): Move face initialization to
face-spec-set.
(custom-theme-set-faces): Don't initialize the face name here, as
that is now done in face-spec-set.
* lisp/emacs-lisp/lisp-mode.el (eval-defun-1): When evaluating defface,
reset face-override-spec too, and use custom-declare-face.
Bill Wohler [Sun, 25 Nov 2012 04:13:04 +0000 (20:13 -0800)]
* mh-compat.el (mh-define-obsolete-variable-alias)
(mh-make-obsolete-variable): New macros to fix XEmacs compiler
warnings.
* mh-letter.el (mh-yank-hooks): Use new mh-make-obsolete-variable
macro.
* mh-e.el (mh-kill-folder-suppress-prompt-hooks): Use new
mh-define-obsolete-variable-alias macro.
* mh-compat.el (mh-cl-flet): New alias for cl-flet on Emacs 24 and
flet elsewhere.
* mh-thread.el (mh-thread-set-tables): Replace flet with new alias
mh-cl-flet.
* mh-show.el (mh-gnus-article-highlight-citation): Replace flet with
new alias mh-cl-flet.
* mh-mime.el (mh-display-with-external-viewer, mh-mime-display)
(mh-press-button, mh-push-button, mh-display-emphasis): Replace flet
with new alias mh-cl-flet.
Jeffrey C Honig [Sun, 25 Nov 2012 02:21:02 +0000 (21:21 -0500)]
(mh-edit-again): Use the components file to specify
default values for missing headers in the draft.
(mh-regexp-in-field-syntax-table, mh-fcc-syntax-table)
(mh-addr-syntax-table, mh-regexp-in-field-p): Use a syntax table
so we'll properly parse non-address fields.
(mh-components-to-list, mh-extract-header-field): New functions to
read components file.
(mh-find-components, mh-send-sub): Move code to locate components
file into a new function.
(mh-insert-auto-fields, mh-modify-header-field): New syntax for
calling mh-regexp-in-field-p.
(closes SF #1708292)
Paul Eggert [Sat, 24 Nov 2012 08:24:11 +0000 (00:24 -0800)]
Revert recent change for Bug#8855.
As reported by Harald Hanche-Olsen in
<http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00445.html>
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.
Chong Yidong [Sat, 24 Nov 2012 08:15:00 +0000 (16:15 +0800)]
Fix follow-mouse clicks on undraggable mode/header lines.
* mouse.el (mouse-drag-line): Even if the line is not draggable,
keep reading until we get the up-event anyway, in order to process
the up-event for mouse-1-click-follows-link.
Eli Zaretskii [Sat, 24 Nov 2012 07:25:52 +0000 (09:25 +0200)]
Fix assertion violations when clicking on Info bread-crumbs.
src/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.
Chong Yidong [Sat, 24 Nov 2012 03:46:29 +0000 (11:46 +0800)]
Fix dependency sorting in custom-theme-set-variables.
* lisp/custom.el (custom-theme-set-variables): Use a topological sort
for ordering by custom dependencies.
(custom--sort-vars, custom--sort-vars-1): New functions.
Paul Eggert [Fri, 23 Nov 2012 22:20:31 +0000 (14:20 -0800)]
Fix a race condition with glib (Bug#8855).
This is a backport from the trunk, consisting of:
2012-11-17 Eli Zaretskii <eliz@gnu.org>
* nt/inc/sys/wait.h: New file, with prototype of waitpid and
definitions of macros it needs.
* nt/inc/ms-w32.h (wait): Don't define, 'wait' is not used anymore.
(sys_wait): Remove prototype.
* nt/config.nt (HAVE_SYS_WAIT_H): Define to 1.
* src/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.
* src/sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion,
as it is no longer needed.
* src/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-03 Paul Eggert <eggert@cs.ucla.edu>
Fix a race condition that causes Emacs to mess up glib (Bug#8855).
This is a backport from the trunk.
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.
* src/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.
* src/process.h (Lisp_Process): New boolean member 'alive'.
Dmitry Antipov [Fri, 23 Nov 2012 15:39:48 +0000 (19:39 +0400)]
* 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.
Eli Zaretskii [Fri, 23 Nov 2012 08:27:05 +0000 (10:27 +0200)]
Fix cursor display when several display strings follow each other.
src/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
several display strings follow each other.
Eli Zaretskii [Fri, 23 Nov 2012 07:54:33 +0000 (09:54 +0200)]
Fix pgx in .gdbinit when CHECK_LISP_OBJECT_TYPE is defined.
src/.gdbinit (pgx): If the glyph's object is a string, display the
pointer to string data, rather than the value of the string object
itself (which barfs under CHECK_LISP_OBJECT_TYPE).
Paul Eggert [Fri, 23 Nov 2012 07:48:43 +0000 (23:48 -0800)]
Assume POSIX 1003.1-1988 or later for dirent.h.
* admin/CPP-DEFINES (HAVE_CLOSEDIR, HAVE_DIRENT_H): Remove.
* admin/notes/copyright: Adjust to src/ndir.h -> nt/inc/dirent.h renaming.
* configure.ac: Do not check for dirent.h or closdir.
* nt/inc/dirent.h: Rename from ../src/ndir.h, with these changes:
(struct dirent): Rename from struct direct. All uses changed.
* nt/inc/sys/dir.h: Remove.
* src/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.
* src/makefile.w32-in (DIR_H): Remove. All uses replaced with
$(NT_INC)/dirent.h.
($(BLD)/w32.$(O)): Do not depend on $(SRC)/ndir.h.
* src/ndir.h: Rename to ../nt/inc/dirent.h.
* src/sysdep.h (closedir) [!HAVE_CLOSEDIR]: Remove.
Do not include <dirent.h>; no longer needed.
* src/w32.c: Include <dirent.h> rather than "ndir.h".
Juri Linkov [Fri, 23 Nov 2012 07:28:37 +0000 (09:28 +0200)]
* lisp/wdired.el: Revert 2012-10-17 change partly and replace it with
Patch by Christopher Schmidt <christopher@ch.ristopher.com>.
(wdired-finish-edit): Add marks for new file names to
`wdired-old-marks'. Restore marks using `dired-mark-remembered'
after `revert-buffer'.
(wdired-do-renames): Remove calls to `dired-remove-file',
`dired-add-file', `dired-add-entry'.