Merge from emacs-24; up to 2012-04-24T21:47:24Z!michael.albinus@gmx.de

This commit is contained in:
Chong Yidong 2012-05-31 14:08:06 +08:00
commit efc00ab16e
17 changed files with 150 additions and 58 deletions

View file

@ -1,3 +1,9 @@
2012-05-31 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in ($(BLD)/emacsclientw.exe): Use $(MWINDOWS)
instead of a literal -mwindows, which is not supported by MSVC.
(Bug#11405)
2012-05-30 Stefan Monnier <monnier@iro.umontreal.ca>
* make-docfile.c: Improve comment style.

View file

@ -65,7 +65,7 @@ $(BLD)/emacsclient.exe: $(ECLIENTOBJS)
$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(CLIENTRES)
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(CLIENTRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(COMCTL32) $(LIBS)
$(LINK) $(LINK_OUT)$@ $(CLIENTRES) $(MWINDOWS) $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(COMCTL32) $(LIBS)
$(BLD)/emacsclient.$(O): emacsclient.c
$(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c

View file

@ -1,3 +1,19 @@
2012-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/bytecomp.el (byte-compile-fix-header): Handle
arbitrary file name lengths (Bug#11585).
2012-05-31 Martin Rudalics <rudalics@gmx.at>
* desktop.el (desktop-read): Clear previous and next buffers for
all windows and bury *Messages* buffer (bug#11556).
2012-05-31 Eli Zaretskii <eliz@gnu.org>
* mail/sendmail.el (mail-yank-region): Recognize
rmail-yank-current-message in addition to insert-buffer. Fixes
mail-mode's "C-c C-r" that otherwise does nothing when invoked in
2012-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
Add `declare' for `defun'. Align `defmacro's with it.

View file

@ -1020,6 +1020,18 @@ Using it may cause conflicts. Use it anyway? " owner)))))
(format ", %d to restore lazily"
(length desktop-buffer-args-list))
""))
;; Bury the *Messages* buffer to not reshow it when burying
;; the buffer we switched to above.
(when (buffer-live-p (get-buffer "*Messages*"))
(bury-buffer "*Messages*"))
;; Clear all windows' previous and next buffers, these have
;; been corrupted by the `switch-to-buffer' calls in
;; `desktop-restore-file-buffer' (bug#11556). This is a
;; brute force fix and should be replaced by a more subtle
;; strategy eventually.
(walk-window-tree (lambda (window)
(set-window-prev-buffers window nil)
(set-window-next-buffers window nil)))
t))
;; No desktop file found.
(desktop-clear)

View file

@ -1937,7 +1937,7 @@ and will be removed soon. See (elisp)Backquote in the manual."))
(byte-compile-fix-header byte-compile-current-file))))
byte-compile--outbuffer)))
(defun byte-compile-fix-header (filename)
(defun byte-compile-fix-header (_filename)
"If the current buffer has any multibyte characters, insert a version test."
(when (< (point-max) (position-bytes (point-max)))
(goto-char (point-min))
@ -1962,12 +1962,10 @@ and will be removed soon. See (elisp)Backquote in the manual."))
;; don't try to check the version number.
" (< (aref emacs-version (1- (length emacs-version))) ?A)\n"
(format " (string-lessp emacs-version \"%s\")\n" minimum-version)
" (error \"`"
;; prin1-to-string is used to quote backslashes.
(substring (prin1-to-string (file-name-nondirectory filename))
1 -1)
(format "' was compiled for Emacs %s or later\"))\n\n"
minimum-version))
;; Because the header must fit in a fixed width, we cannot
;; insert arbitrary-length file names (Bug#11585).
" (error \"`%s' was compiled for "
(format "Emacs %s or later\" load-file-name))\n\n" minimum-version))
;; Now compensate for any change in size, to make sure all
;; positions in the file remain valid.
(setq delta (- (point-max) old-header-end))

View file

@ -1,3 +1,20 @@
2012-05-31 Eli Zaretskii <eliz@gnu.org>
* configure.bat (genmakefiles): Move the redirection away from the
end of the command, to avoid excess whitespace at the end of Make
variables created at configure time, and also avoid things like
"FOO1>>config.settings", where "1" gets interpreted as the file
descriptor and eaten up. This fixes breakage introduced by the
last change, without reintroducing the bug fixed by that change.
2012-05-31 Eli Zaretskii <eliz@gnu.org>
* nmake.defs (MWINDOWS): Define as
"-subsystem:windows -entry:mainCRTStartup". Suggested by Fabrice
Popineau <fabrice.popineau@supelec.fr>. (Bug#11405)
* gmake.defs (MWINDOWS): Define as "-mwindows".
2012-05-28 Eli Zaretskii <eliz@gnu.org>
* config.nt (HAVE_SYSINFO): Remove; unused.

View file

@ -753,29 +753,36 @@ if %COMPILER% == gcc set MAKECMD=gmake
if %COMPILER% == cl set MAKECMD=nmake
rem Pass on chosen settings to makefiles.
rem NB. Be very careful to not have a space before redirection symbols
rem except when there is a preceding digit, when a space is required.
rem
rem The weird place we put the redirection is to make sure no extra
rem whitespace winds up at the end of the Make variables, since some
rem variables, e.g. INSTALL_DIR, cannot stand that. Yes, echo will
rem write the blanks between the end of command arguments and the
rem redirection symbol to the file. OTOH, we cannot put the
rem redirection immediately after the last character of the command,
rem because environment variable expansion can yield a digit there,
rem which will then be misinterpreted as the file descriptor to
rem redirect...
echo # Start of settings from configure.bat >config.settings
echo COMPILER=%COMPILER% >>config.settings
if not "(%mf%)" == "()" echo MCPU_FLAG=%mf% >>config.settings
if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo% >>config.settings
if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings
if (%noopt%) == (Y) echo NOOPT=1 >>config.settings
if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings
if (%profile%) == (Y) echo PROFILE=1 >>config.settings
if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings
if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix% >>config.settings
if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles% >>config.settings
>>config.settings echo COMPILER=%COMPILER%
if not "(%mf%)" == "()" >>config.settings echo MCPU_FLAG=%mf%
if not "(%dbginfo%)" == "()" >>config.settings echo DEBUG_INFO=%dbginfo%
if (%nodebug%) == (Y) >>config.settings echo NODEBUG=1
if (%noopt%) == (Y) >>config.settings echo NOOPT=1
if (%enablechecking%) == (Y) >>config.settings echo ENABLECHECKS=1
if (%profile%) == (Y) >>config.settings echo PROFILE=1
if (%nocygwin%) == (Y) >>config.settings echo NOCYGWIN=1
if not "(%prefix%)" == "()" >>config.settings echo INSTALL_DIR=%prefix%
if not "(%distfiles%)" == "()" >>config.settings echo DIST_FILES=%distfiles%
rem We go thru docflags because usercflags could be "-DFOO=bar" -something
rem and the if command cannot cope with this
for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y
if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags% >>config.settings
if (%docflags%)==(Y) echo ESC_USER_CFLAGS=%escusercflags% >>config.settings
if (%docflags%)==(Y) >>config.settings echo USER_CFLAGS=%usercflags%
if (%docflags%)==(Y) >>config.settings echo ESC_USER_CFLAGS=%escusercflags%
for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y
if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags% >>config.settings
if (%doldflags%)==(Y) >>config.settings echo USER_LDFLAGS=%userldflags%
for %%v in (%extrauserlibs%) do if not (%%v)==() set doextralibs=Y
if (%doextralibs%)==(Y) echo USER_LIBS=%extrauserlibs% >>config.settings
if (%doextralibs%)==(Y) >>config.settings echo USER_LIBS=%extrauserlibs%
echo # End of settings from configure.bat>>config.settings
echo. >>config.settings

View file

@ -210,6 +210,8 @@ else
CHECKING_CFLAGS =
endif
MWINDOWS = -mwindows
CFLAGS = -I. $(ARCH_CFLAGS) $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(PROFILE_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)
ESC_CFLAGS = -I. $(ARCH_CFLAGS) $(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(PROFILE_CFLAGS) $(ESC_USER_CFLAGS) $(LOCAL_FLAGS)
EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1

View file

@ -151,6 +151,8 @@ CHECKING_CFLAGS = -DENABLE_CHECKING -DXASSERTS
CHECKING_CFLAGS =
!endif
MWINDOWS = -subsystem:windows -entry:mainCRTStartup
CFLAGS = -I. $(ARCH_CFLAGS) \
$(DEBUG_CFLAGS) $(CHECKING_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)
ESC_CFLAGS = -I. $(ARCH_CFLAGS) \

View file

@ -1,3 +1,34 @@
2012-05-31 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (handle_stop): Detect whether we have overlay strings
loaded by testing it->current.overlay_string_index to be
non-negative, instead of checking whether n_overlay_strings is
positive. (Bug#11587)
2012-05-31 Chong Yidong <cyd@gnu.org>
* keymap.c (describe_map_tree): Revert 2011-07-07 change (Bug#1169).
* doc.c (Fsubstitute_command_keys): Doc fix.
2012-05-31 Eli Zaretskii <eliz@gnu.org>
* search.c (search_buffer): Remove calls to
r_alloc_inhibit_buffer_relocation, as it is now called by
maybe_unify_char, which was the cause of relocation of buffer text
in bug#11519.
2012-05-31 Eli Zaretskii <eliz@gnu.org>
* charset.c (maybe_unify_char): Inhibit relocation of buffer text
for the duration of call to load_charset, to avoid problems with
callers of maybe_unify_char that access buffer text through C
pointers.
* ralloc.c (r_alloc_inhibit_buffer_relocation): Increment and
decrement the inhibition flag, instead of just setting or
resetting it.
2012-05-31 Paul Eggert <eggert@cs.ucla.edu>
Remove obsolete '#define static' cruft.

View file

@ -1633,6 +1633,12 @@ maybe_unify_char (int c, Lisp_Object val)
return c;
CHECK_CHARSET_GET_CHARSET (val, charset);
#ifdef REL_ALLOC
/* The call to load_charset below can allocate memory, which screws
callers of this function through STRING_CHAR_* macros that hold C
pointers to buffer text, if REL_ALLOC is used. */
r_alloc_inhibit_buffer_relocation (1);
#endif
load_charset (charset, 1);
if (! inhibit_load_charset_map)
{
@ -1648,6 +1654,9 @@ maybe_unify_char (int c, Lisp_Object val)
if (unified > 0)
c = unified;
}
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
return c;
}

View file

@ -705,18 +705,23 @@ the same file name is found in the `doc-directory'. */)
DEFUN ("substitute-command-keys", Fsubstitute_command_keys,
Ssubstitute_command_keys, 1, 1, 0,
doc: /* Substitute key descriptions for command names in STRING.
Substrings of the form \\=\\[COMMAND] replaced by either: a keystroke
sequence that will invoke COMMAND, or "M-x COMMAND" if COMMAND is not
on any keys.
Substrings of the form \\=\\{MAPVAR} are replaced by summaries
\(made by `describe-bindings') of the value of MAPVAR, taken as a keymap.
Substrings of the form \\=\\<MAPVAR> specify to use the value of MAPVAR
Each substring of the form \\=\\[COMMAND] is replaced by either a
keystroke sequence that invokes COMMAND, or "M-x COMMAND" if COMMAND
is not on any keys.
Each substring of the form \\=\\{MAPVAR} is replaced by a summary of
the value of MAPVAR as a keymap. This summary is similar to the one
produced by `describe-bindings'. The summary ends in two newlines
\(used by the helper function `help-make-xrefs' to find the end of the
summary).
Each substring of the form \\=\\<MAPVAR> specifies the use of MAPVAR
as the keymap for future \\=\\[COMMAND] substrings.
\\=\\= quotes the following character and is discarded;
thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ into the output.
Returns original STRING if no substitutions were made. Otherwise,
a new string, without any text properties, is returned. */)
Return the original STRING if no substitutions are made.
Otherwise, return a new string, without any text properties. */)
(Lisp_Object string)
{
char *buf;

View file

@ -2996,9 +2996,9 @@ You type Translation\n\
If MENTION_SHADOW is nonzero, then when something is shadowed by SHADOW,
don't omit it; instead, mention it but say it is shadowed.
Return whether something was inserted or not. */
Any inserted text ends in two newlines (used by `help-make-xrefs'). */
int
void
describe_map_tree (Lisp_Object startmap, int partial, Lisp_Object shadow,
Lisp_Object prefix, const char *title, int nomenu, int transl,
int always_title, int mention_shadow)
@ -3108,8 +3108,10 @@ key binding\n\
skip: ;
}
if (something)
insert_string ("\n");
UNGCPRO;
return something;
}
static int previous_description_column;

View file

@ -47,7 +47,7 @@ EXFUN (Fcurrent_active_maps, 2);
extern Lisp_Object access_keymap (Lisp_Object, Lisp_Object, int, int, int);
extern Lisp_Object get_keymap (Lisp_Object, int, int);
EXFUN (Fset_keymap_parent, 2);
extern int describe_map_tree (Lisp_Object, int, Lisp_Object, Lisp_Object,
extern void describe_map_tree (Lisp_Object, int, Lisp_Object, Lisp_Object,
const char *, int, int, int, int);
extern ptrdiff_t current_minor_maps (Lisp_Object **, Lisp_Object **);
extern void initial_define_key (Lisp_Object, int, const char *);

View file

@ -1142,7 +1142,12 @@ r_alloc_reset_variable (POINTER *old, POINTER *new)
void
r_alloc_inhibit_buffer_relocation (int inhibit)
{
use_relocatable_buffers = !inhibit;
if (use_relocatable_buffers < 0)
use_relocatable_buffers = 0;
if (inhibit)
use_relocatable_buffers++;
else if (use_relocatable_buffers > 0)
use_relocatable_buffers--;
}

View file

@ -1160,24 +1160,12 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
{
ptrdiff_t val;
#ifdef REL_ALLOC
/* re_search_2 below is passed C pointers to buffer text.
If some code called by it causes memory (re)allocation,
buffer text could be relocated on platforms that use
REL_ALLOC, which invalidates those C pointers. So we
inhibit relocation of buffer text for as long as
re_search_2 runs. */
r_alloc_inhibit_buffer_relocation (1);
#endif
val = re_search_2 (bufp, (char *) p1, s1, (char *) p2, s2,
pos_byte - BEGV_BYTE, lim_byte - pos_byte,
(NILP (Vinhibit_changing_match_data)
? &search_regs : &search_regs_1),
/* Don't allow match past current point */
pos_byte - BEGV_BYTE);
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
if (val == -2)
{
matcher_overflow ();
@ -1217,19 +1205,11 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
{
ptrdiff_t val;
#ifdef REL_ALLOC
/* See commentary above for the reasons for inhibiting
buffer text relocation here. */
r_alloc_inhibit_buffer_relocation (1);
#endif
val = re_search_2 (bufp, (char *) p1, s1, (char *) p2, s2,
pos_byte - BEGV_BYTE, lim_byte - pos_byte,
(NILP (Vinhibit_changing_match_data)
? &search_regs : &search_regs_1),
lim_byte - BEGV_BYTE);
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
if (val == -2)
{
matcher_overflow ();

View file

@ -3170,7 +3170,7 @@ handle_stop (struct it *it)
onto the stack one more time, which is not
expected by the rest of the code that processes
overlay strings. */
|| (it->n_overlay_strings <= 0
|| (it->current.overlay_string_index < 0
? !get_overlay_strings_1 (it, 0, 0)
: 0))
{