* etc/NEWS: Document `delayed-warnings-list' and `delayed-warnings-hook'.
* lisp/subr.el (display-delayed-warnings): New function.
(delayed-warnings-hook): New variable.
* src/keyboard.c (Qdelayed_warnings_hook): Define.
(command_loop_1): Run `delayed-warnings-hook' if Vdelayed_warnings_list
is non-nil.
(syms_of_keyboard) <delayed-warnings-hook>: DEFSYM it.
(syms_of_keyboard) <delayed-warnings-list>: DEFVAR_LISP it.
Stefan Monnier [Thu, 28 Apr 2011 15:32:28 +0000 (12:32 -0300)]
Make MH-E use completion-at-point
* lisp/mh-e/mh-letter.el (mh-letter-completion-at-point): New function,
extracted from mh-letter-complete
(mh-letter-mode, mh-letter-complete, mh-letter-complete-or-space): Use it.
(mh-complete-word): Only use the common-substring arg when it works.
(mh-folder-expand-at-point):
* lisp/mh-e/mh-alias.el (mh-alias-letter-expand-alias): Return data suitable
for completion-at-point-functions.
* lisp/mh-e/mh-utils.el (mh-folder-completion-function): Make it work like
file-name completion, so partial-completion can do its job.
* lisp/minibuffer.el (completion-at-point, completion-help-at-point):
Don't presume that a given completion-at-point-function will always
use the same calling convention.
Eli Zaretskii [Wed, 27 Apr 2011 18:15:29 +0000 (21:15 +0300)]
Improve `doprnt' and its usage. (Bug#8545)
src/doprnt.c (doprnt): Make sure `format' is never accessed beyond
`format_end'. Remove support for %l as a conversion specifier.
Don't use xrealloc. Improve diagnostics when the %l size modifier
is used. Update the commentary.
src/eval.c (verror): Simplify calculation of size_t.
src/coding.c (Ffind_operation_coding_system): Fix diagnostic error
messages.
* calendar/icalendar.el (diary-lib): Added require statement.
(icalendar--create-uid): Read out a uid from a text-property on
the first character in the entry. This allows for code to add its
own uid to the entry.
(icalendar--convert-float-to-ical): Add export of
`diary-float'-entries save for those with the optional DAY
Stefan Monnier [Tue, 26 Apr 2011 13:50:09 +0000 (10:50 -0300)]
Make ERC use completion-at-point
* lisp/erc/erc.el (erc-mode-map): Use completion-at-point.
(erc-mode): Tell completion-at-point to obey erc-complete-functions.
(erc-complete-word-at-point): New function.
(erc-complete-word): Make it obsolete.
* lisp/erc/erc-pcomplete.el (erc-pcompletions-at-point): New function.
(pcomplete): Use it.
* lisp/erc/erc-dcc.el (erc-dcc-chat-mode-map): Use completion-at-point.
(erc-dcc-chat-mode): Tell completion-at-point to obey
erc-complete-functions.
* lisp/erc/erc-button.el (erc-button-next-function): New function extracted from
erc-button-next.
(button, erc-button-next): Use it.
Paul Eggert [Tue, 26 Apr 2011 07:12:16 +0000 (00:12 -0700)]
* gnutls.c (emacs_gnutls_handshake): Don't return a garbage value.
Expect the caller to check whether GNUTLS_STAGE_HANDSHAKE_CANDO <=
proc->gnutls_initstage, if the check is needed. The check isn't
needed for one caller, Fgnutls_boot.
(emacs_gnutls_read): Do that check. This is the other caller.
Paul Eggert [Mon, 25 Apr 2011 21:34:39 +0000 (14:34 -0700)]
* lisp.h: (XVECTOR_SIZE): Remove. All uses replaced with ASIZE.
(ASIZE): Now contains previous implementation of XVECTOR_SIZE
instead of invoking XVECTOR_SIZE.
Michael Albinus [Mon, 25 Apr 2011 18:10:17 +0000 (20:10 +0200)]
* net/tramp.el (tramp-process-actions): Add POS argument. Delete
region between POS and (pos).
* net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use
`nil' position in `tramp-process-actions' call.
(tramp-maybe-open-connection): Call `tramp-process-actions' with pos.
* net/tramp-smb.el (tramp-smb-maybe-open-connection): Use `nil'
position in `tramp-process-actions' call.
Stefan Monnier [Mon, 25 Apr 2011 16:29:31 +0000 (13:29 -0300)]
Fix octave-inf completion problems reported by Alexander Klimov.
* lisp/progmodes/octave-inf.el (inferior-octave-mode-syntax-table):
Inherit from octave-mode-syntax-table.
(inferior-octave-mode): Set info-lookup-mode.
(inferior-octave-completion-at-point): New function.
(inferior-octave-complete): Use it and completion-in-region.
(inferior-octave-dynamic-complete-functions): Use it as well, and use
comint-filename-completion.
* lisp/progmodes/octave-mod.el (octave-mode-syntax-table): Use _ syntax for
symbol elements which shouldn't be word elements.
(octave-font-lock-keywords, octave-beginning-of-defun)
(octave-function-header-regexp): Adjust regexps accordingly.
(octave-mode-map): Also use info-lookup-symbol for C-c C-h.
Eli Zaretskii [Mon, 25 Apr 2011 08:04:22 +0000 (11:04 +0300)]
Improve doprnt and its use in verror. (Bug#8545)
src/doprnt.c (doprnt): Document the set of format control sequences
supported by the function. Use SAFE_ALLOCA instead of always
using `alloca'.
src/eval.c (verror): Don't limit the buffer size at size_max-1, that
is one byte too soon. Don't use xrealloc; instead xfree and
xmalloc anew.
Paul Eggert [Mon, 25 Apr 2011 07:14:46 +0000 (00:14 -0700)]
lisp.h: Fix a problem with aliasing and vector headers.
GCC 4.6.0 optimizes based on type-based alias analysis. For
example, if b is of type struct buffer * and v of type struct
Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
!= &v->size, and therefore "v->size = 1; b->size = 2; return
v->size;" must therefore return 1. This assumption is incorrect
for Emacs, since it type-puns struct Lisp_Vector * with many other
types. To fix this problem, this patch adds a new type struct
vector_header that documents the constraints on layout of vectors
and pseudovectors, and helps optimizing compilers not get fooled
by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE
XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
* lisp.h (XVECTOR_SIZE): New convenience macro. All previous uses of
XVECTOR (foo)->size replaced to use this macro, to avoid the hassle
of writing XVECTOR (foo)->header.size.
(XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
(XSETTYPED_PVECTYPE): New macro, specifying the name of the size
member.
(XSETPVECTYPE): Rewrite in terms of new macro.
(XSETPVECTYPESIZE): New macro, specifying both type and size.
This is a bit clearer, and further avoids the possibility of
undesirable aliasing.
(XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
(XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
and XVECTOR_HEADER_SIZE.
(XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
since Lisp_Subr is a special case (no "next" field).
(ASIZE): Rewrite in terms of XVECTOR_SIZE.
(struct vector_header): New type.
(TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
object, to help avoid aliasing.
(PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
(SUBRP): Likewise, since Lisp_Subr is a special case.
* lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
(struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
(struct Lisp_Hash_Table): Combine first two members into a single
struct vector_header member. All uses of "size" and "next" members
changed to be "header.size" and "header.next".
* buffer.h (struct buffer): Likewise.
* font.h (struct font_spec, struct font_entity, struct font): Likewise.
* frame.h (struct frame): Likewise.
* process.h (struct Lisp_Process): Likewise.
* termhooks.h (struct terminal): Likewise.
* window.c (struct save_window_data, struct saved_window): Likewise.
* window.h (struct window): Likewise.
* alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
* buffer.c (init_buffer_once): Likewise.
* lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
special case.
* process.c (Fformat_network_address): Use local var for size,
for brevity.
Add GnuTLS support for W32 and certificate and hostname verification in GnuTLS.
* src/gnutls.c: Renamed global_initialized to
gnutls_global_initialized. Added internals for the
:verify-hostname-error, :verify-error, and :verify-flags
parameters of `gnutls-boot' and documented those parameters in the
docstring. Start callback support.
(emacs_gnutls_handshake): Add Woe32 support. Retry handshake
unless a fatal error occured. Call gnutls_alert_send_appropriate
on error. Return error code.
(emacs_gnutls_write): Call emacs_gnutls_handle_error.
(emacs_gnutls_read): Likewise.
(Fgnutls_boot): Return handshake error code.
(emacs_gnutls_handle_error): New function.
(wsaerror_to_errno): Likewise.
* src/gnutls.h: Add GNUTLS_STAGE_CALLBACKS enum to denote we're in the
callbacks stage.
* src/w32.c (emacs_gnutls_pull): New function for GnuTLS on Woe32.
(emacs_gnutls_push): Likewise.
* nt/configure.bat: New options --without-gnutls and --lib, new build
variable USER_LIBS, automatically detect GnuTLS. Copies the PNG
library setup with trivial modifications.
* nt/INSTALL: Add instructions for GnuTLS support.
* nt/gmake.defs: Prefix USER_LIBS with -l.
Add vc-annotate-goto-line.
* vc/vc-annotate.el (vc-annotate-goto-line): New command. Based
on a previous implementation by Juanma Barranquero (Bug#8366).
(vc-annotate-mode-map): Bind it to RET.
Eli Zaretskii [Sun, 24 Apr 2011 16:59:37 +0000 (19:59 +0300)]
Minor cleanup in src/xdisp.c.
src/xdisp.c (handle_single_display_spec): Rename the
display_replaced_before_p argument into display_replaced_p, to
make it consistent with the commentary. Fix typos in the
commentary.
Eli Zaretskii [Sun, 24 Apr 2011 16:28:57 +0000 (19:28 +0300)]
Minor cleanup in src/textprop.c.
src/textprop.c (syms_of_textprop): Remove dead code.
(copy_text_properties): Delete obsolete commentary about an
interface that was deleted long ago. Fix typos in the description
of arguments.
Eli Zaretskii [Sun, 24 Apr 2011 12:48:30 +0000 (15:48 +0300)]
Repair the MSDOS build following latest changes.
msdos/sedlibmk.inp (am_libgnu_a_OBJECTS): Edit out
allocator.$(OBJEXT). Add editing for the new GNULIB_* and
REPLACE_* variables.
src/msdos.c (XMenuActivate, XMenuAddSelection): Adjust argument list
to changes in oldXMenu/XMenu.h from 2011-04-16.
<menu_help_message, prev_menu_help_message>: Constify.
(IT_menu_make_room): menu->help_text is now `const char **';
adjust.
src/msdos.h (XMenuActivate, XMenuAddSelection): Adjust prototypes
to changes in oldXMenu/XMenu.h from 2011-04-16.
(struct XMenu): Declare `help_text' `const char **'.
src/xfaces.c <Qunspecified>: Make extern again.
src/syntax.c: Include sys/types.h before including regex.h, as
required by Posix.
Eli Zaretskii [Sun, 24 Apr 2011 09:00:03 +0000 (12:00 +0300)]
Fallout from resurrecting doprnt.
src/doc.c (get_doc_string): Improve the format passed to `error'.
src/doprnt.c (doprnt): Improve commentary.
src/term.c (init_tty) [MSDOS]: Fix 1st argument to maybe_fatal.
src/Makefile.in (TAGS): Depend on $(M_FILE) and $(S_FILE), and scan
them with etags.
src/makefile.w32-in (TAGS): Depend on $(CURDIR)/m/intel386.h and
$(CURDIR)/s/ms-w32.h.
(TAGS-gmake): Scan $(CURDIR)/m/intel386.h and $(CURDIR)/s/ms-w32.h.
Eli Zaretskii [Sun, 24 Apr 2011 07:11:56 +0000 (10:11 +0300)]
Delete char-direction-table and char-direction.
See http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00675.html
for the reasons.
src/character.c (Fchar_direction): Function deleted.
(syms_of_character): Don't defsubr it.
<char-direction-table>: Deleted.
etc/NEWS: Document the removal.
Eli Zaretskii [Sat, 23 Apr 2011 10:33:28 +0000 (13:33 +0300)]
Fix doprnt so it could be used safely in `verror'. (Bug#8435)
src/doprnt.c: Include limits.h.
(SIZE_MAX): New macro.
(doprnt): Return a size_t value. 2nd arg is now size_t. Many
local variables are now size_t instead of int or unsigned.
Improve overflow protection. Support `l' modifier for integer
conversions. Support %l conversion. Don't assume an EMACS_INT
argument for integer conversions and for %c.
src/lisp.h (doprnt): Restore prototype.
src/makefile.w32-in ($(BLD)/callint.$(O)): Depend on
$(SRC)/character.h.
src/Makefile.in (base_obj): Add back doprnt.o.
src/deps.mk (doprnt.o): Add back prerequisites.
(callint.o): Depend on character.h.
src/eval.c (internal_lisp_condition_case): Include the handler
representation in the error message.
(verror): Call doprnt instead of vsnprintf. Fix an off-by-one bug
when breaking from the loop.
src/xdisp.c (vmessage): Call doprnt instead of vsnprintf.
src/callint.c (Fcall_interactively): When displaying error message
about invalid control letter, pass the character's codepoint, not
a pointer to its multibyte form. Improve display of the character
in octal and display also its hex code.
src/character.c (char_string): Use %x to display the (unsigned)
codepoint of an invalid character, to avoid displaying a bogus
negative value.
src/font.c (check_otf_features): Pass SDATA of SYMBOL_NAME to
`error', not SYMBOL_NAME itself.
src/coding.c (Fencode_sjis_char, Fencode_big5_char): Use %c for
character arguments to `error'.
src/charset.c (check_iso_charset_parameter): Fix incorrect argument
to `error' in error message about FINAL_CHAR argument. Make sure
FINAL_CHAR is a character, and use %c when it is passed as
argument to `error'.