Merge from emacs-24; up to 2014-05-08T03:34:20Z!rgm@gnu.org
This commit is contained in:
commit
fb3f83f5fd
87 changed files with 513 additions and 254 deletions
|
@ -17,7 +17,7 @@ Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ Permission is granted to copy, distribute and/or modify this document
|
|||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with the
|
||||
Invariant Sections being ``The GNU Manifesto,'' ``Distribution'' and
|
||||
``GNU GENERAL PUBLIC LICENSE,'' with the Front-Cover texts being ``A GNU
|
||||
``GNU GENERAL PUBLIC LICENSE,'' with the Front-Cover Texts being ``A GNU
|
||||
Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the
|
||||
license is included in the section entitled ``GNU Free Documentation
|
||||
License.''
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-05-08 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* internals.texi (C Dialect): New section.
|
||||
(C Integer Types): Mention bool_bf.
|
||||
|
||||
2014-04-30 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* processes.texi (Filter Functions, Sentinels): Advertise add-function.
|
||||
|
|
|
@ -105,7 +105,7 @@ Permission is granted to copy, distribute and/or modify this document
|
|||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with the
|
||||
Invariant Sections being ``GNU General Public License,'' with the
|
||||
Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover
|
||||
Front-Cover Texts being ``A GNU Manual,'' and with the Back-Cover
|
||||
Texts as in (a) below. A copy of the license is included in the
|
||||
section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ internal aspects of GNU Emacs that may be of interest to C programmers.
|
|||
* Pure Storage:: Kludge to make preloaded Lisp functions shareable.
|
||||
* Garbage Collection:: Reclaiming space for Lisp objects no longer used.
|
||||
* Memory Usage:: Info about total size of Lisp objects made so far.
|
||||
* C Dialect:: What C variant Emacs is written in.
|
||||
* Writing Emacs Primitives:: Writing C code for Emacs.
|
||||
* Object Internals:: Data formats of buffers, windows, processes.
|
||||
* C Integer Types:: How C integer types are used inside Emacs.
|
||||
|
@ -575,6 +576,20 @@ The total number of strings that have been allocated so far in this
|
|||
Emacs session.
|
||||
@end defvar
|
||||
|
||||
@node C Dialect
|
||||
@section C Dialect
|
||||
@cindex C programming language
|
||||
|
||||
The C part of Emacs is portable to C89: C99-specific features such as
|
||||
@samp{<stdbool.h>} and @samp{inline} are not used without a check,
|
||||
typically at configuration time, and the Emacs build procedure
|
||||
provides a substitute implementation if necessary. Some C99 features,
|
||||
such as declarations after statements, are too difficult to provide
|
||||
substitutes for, so they are avoided entirely.
|
||||
|
||||
At some point in the not-too-distant future the base C dialect will
|
||||
change from C89 to C99, and eventually it will no doubt change to C11.
|
||||
|
||||
@node Writing Emacs Primitives
|
||||
@section Writing Emacs Primitives
|
||||
@cindex primitive function internals
|
||||
|
@ -1615,12 +1630,6 @@ using a @code{printf}-family function.
|
|||
Prefer @code{intmax_t} for representing values that might be any
|
||||
signed integer value.
|
||||
|
||||
@item
|
||||
In bitfields, prefer @code{unsigned int} or @code{signed int} to
|
||||
@code{int}, as @code{int} is less portable: it might be signed, and
|
||||
might not be. Single-bit bit fields are invariably @code{unsigned
|
||||
int} so that their values are 0 and 1.
|
||||
|
||||
@item
|
||||
Prefer @code{bool}, @code{false} and @code{true} for booleans.
|
||||
Using @code{bool} can make programs easier to read and a bit faster than
|
||||
|
@ -1629,7 +1638,15 @@ and @code{1}, this older style is gradually being phased out. When
|
|||
using @code{bool}, respect the limitations of the replacement
|
||||
implementation of @code{bool}, as documented in the source file
|
||||
@file{lib/stdbool.in.h}, so that Emacs remains portable to pre-C99
|
||||
platforms.
|
||||
platforms. In particular, boolean bitfields should be of type
|
||||
@code{bool_bf}, not @code{bool}, so that they work correctly even when
|
||||
compiling Objective C with standard GCC.
|
||||
|
||||
@item
|
||||
In bitfields, prefer @code{unsigned int} or @code{signed int} to
|
||||
@code{int}, as @code{int} is less portable: it might be signed, and
|
||||
might not be. Single-bit bit fields should be @code{unsigned int} or
|
||||
@code{bool_bf} so that their values are 0 or 1.
|
||||
@end itemize
|
||||
|
||||
@c FIXME Mention src/globals.h somewhere in this file?
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-05-08 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* tramp.texi (Frequently Asked Questions): Mention HISTFILE
|
||||
setting in ~/.ssh/environment.
|
||||
|
||||
2014-05-04 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
||||
* todo-mode.texi: Update, improve exposition, add cross
|
||||
|
|
|
@ -10,7 +10,7 @@ Copyright @copyright{} 1999--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Copyright @copyright{} 2008--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ Copyright @copyright{} 1999--2004, 2012--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ Permission is granted to copy, distribute and/or modify this document
|
|||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with the
|
||||
Invariant Sections being just ``GNU GENERAL PUBLIC LICENSE'', with the
|
||||
Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover
|
||||
Front-Cover Texts being ``A GNU Manual,'' and with the Back-Cover
|
||||
Texts as in (a) below. A copy of the license is included in the section
|
||||
entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -163,7 +163,7 @@ Copyright @copyright{} 1995--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Copyright @copyright{} 1993, 2001--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Copyright @copyright{} 2007--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Copyright @copyright{} 2000--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ Copyright @copyright{} 1995--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Copyright @copyright{} 2007--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Copyright @copyright{} 2012--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Copyright @copyright{} 1998--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Copyright @copyright{} 2007--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Copyright @copyright{} 2005--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Copyright @copyright{} 2008, 2010--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Copyright @copyright{} 1999--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ Copyright @copyright{} 1998, 2000--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ Copyright @copyright{} 2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ Copyright @copyright{} 1989, 1997, 2001--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Copyright @copyright{} 1995--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ Copyright @copyright{} 1999--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Copyright @copyright{} 2013-2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Copyright @copyright{} 1989, 1992, 1996--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ Copyright @copyright{} 2008--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Copyright @copyright{} 1996--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ under the terms of either:
|
|||
@item
|
||||
the GNU Free Documentation License, Version 1.3 or any later version
|
||||
published by the Free Software Foundation; with no Invariant Sections,
|
||||
with the Front-Cover texts being ``A GNU Manual,'' and with the
|
||||
with the Front-Cover Texts being ``A GNU Manual,'' and with the
|
||||
Back-Cover Texts as in (a) below. A copy of the license is included in
|
||||
the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Copyright @copyright{} 2007--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ Copyright @copyright{} 1996--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -264,7 +264,7 @@ Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Copyright @copyright{} 1991--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ Copyright @copyright{} 2001, 2003--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ Copyright @copyright{} 2006--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license is
|
||||
included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ Copyright @copyright{} 1997--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Copyright @copyright{} 2000, 2004--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Copyright @copyright{} 1993, 2001--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Copyright @copyright{} 2002--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Copyright @copyright{} 2001--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ Copyright @copyright{} 2003--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ Copyright @copyright{} 1999--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ Copyright @copyright{} 2007--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Copyright @copyright{} 2013-2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ Copyright @copyright{} 1999--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
@ -3351,6 +3351,13 @@ if [ "$@{HISTSIZE-unset@}" != "unset" ] ; then
|
|||
fi
|
||||
@end example
|
||||
|
||||
Furthermore, if you use an @option{ssh}-based method, you could add
|
||||
the following line to your @file{~/.ssh/environment} file:
|
||||
|
||||
@example
|
||||
HISTFILE=/dev/null
|
||||
@end example
|
||||
|
||||
|
||||
@item There are longish file names to type. How to shorten this?
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ Copyright @copyright{} 1987, 2001--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Copyright @copyright{} 1995--1997, 2001--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Copyright @copyright{} 2000--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual'',
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ of Bison version 1.49.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License''.
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Copyright @copyright{} 2001--2014 Free Software Foundation, Inc.
|
|||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
any later version published by the Free Software Foundation; with no
|
||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||
Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
|
||||
and with the Back-Cover Texts as in (a) below. A copy of the license
|
||||
is included in the section entitled ``GNU Free Documentation License.''
|
||||
|
||||
|
|
|
@ -705,7 +705,7 @@
|
|||
Use _Noreturn rather than NO_RETURN.
|
||||
No need for separate decl merely because of _Noreturn.
|
||||
|
||||
2012-06-24 Samuel Bronson <naesten@gmail.com> (tiny change)
|
||||
2012-06-24 Samuel Bronson <naesten@gmail.com>
|
||||
|
||||
* emacsclient.c (set_local_socket): Fix compiler warning (Bug#7838).
|
||||
|
||||
|
|
|
@ -1,3 +1,81 @@
|
|||
2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* xt-mouse.el: Drop spurious/oddly shaped events (bug#17378).
|
||||
(xterm-mouse--read-event-sequence-1000): Return nil if something
|
||||
looks fishy.
|
||||
(xterm-mouse-event): Propagate it.
|
||||
(xterm-mouse-translate-1): Handle it.
|
||||
|
||||
2014-05-08 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
||||
* calendar/todo-mode.el (todo-insert-item--apply-args): When all
|
||||
four slots of the parameter list are filled, make sure to pass it
|
||||
to the argument list of todo-insert-item--basic.
|
||||
|
||||
2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/package.el (package-compute-transaction): Topological sort.
|
||||
Add optional `seen' argument to detect and break infinite loops.
|
||||
|
||||
2014-05-08 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* emacs-lisp/find-gc.el (find-gc-unsafe, find-unsafe-funcs)
|
||||
(trace-unsafe, trace-use-tree): Make parentheses style be
|
||||
according to Emacs style.
|
||||
|
||||
2014-05-08 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp-sh.el (tramp-remote-process-environment):
|
||||
Remove HISTFILE and HISTSIZE; it's too late to set them here.
|
||||
Add :version entry.
|
||||
(tramp-open-shell): Do not let-bind `tramp-end-of-output'.
|
||||
Add "HISTSIZE=/dev/null" to the shell's env arguments. Do not send
|
||||
extra "PSx=..." commands.
|
||||
(tramp-maybe-open-connection): Setenv HISTFILE to /dev/null.
|
||||
(Bug#17295)
|
||||
|
||||
(tramp-uudecode): Replace the hard-coded temporary file name by a
|
||||
format specifier.
|
||||
(tramp-remote-coding-commands): Enhance docstring.
|
||||
(tramp-find-inline-encoding): Replace "%t" by a temporary file
|
||||
name. (Bug#17415)
|
||||
|
||||
2014-05-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp/find-gc.el (find-gc-source-directory): Give it a value.
|
||||
(find-gc-source-files): Update some names.
|
||||
(trace-call-tree): Simplify and update.
|
||||
Avoid predictable temp-file names. (http://bugs.debian.org/747100)
|
||||
|
||||
2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* minibuffer.el (completion--try-word-completion): Revert fix for
|
||||
Bug#15980 (bug#17375).
|
||||
|
||||
* xt-mouse.el (xterm-mouse--read-event-sequence-1000): (bug#17378)
|
||||
Always store button numbers in the same way in xterm-mouse-last;
|
||||
Don't burp is xterm-mouse-last is not set as expected.
|
||||
Never return negative indices.
|
||||
|
||||
2014-05-08 Dmitry Gutov <dgutov@yandex.ru>
|
||||
|
||||
* progmodes/ruby-mode.el (ruby-syntax-propertize-function):
|
||||
Backtrack one char if the global/char-literal var matcher hits
|
||||
inside a string. The next char could be the beginning of an
|
||||
expression expansion.
|
||||
|
||||
2014-05-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* help-fns.el (describe-function-1): Test for an autoload before a
|
||||
macro, since `macrop' works on autoloads. (Bug#17410)
|
||||
|
||||
2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* electric.el (electric-indent-functions-without-reindent): Add yaml.
|
||||
|
||||
* minibuffer.el (completion-table-with-quoting) <completion--unquote>:
|
||||
Make sure the new point we return is within the new string (bug#17239).
|
||||
|
||||
2014-05-05 Daniel Colascione <dancol@dancol.org>
|
||||
|
||||
* progmodes/compile.el (compilation-error-regexp-alist-alist):
|
||||
|
@ -84,8 +162,8 @@
|
|||
(todo-edit-done-item--param-key-alist): New defconsts.
|
||||
(todo-edit-item--prompt): New variable.
|
||||
(todo-edit-item--next-key): New function.
|
||||
(todo-key-bindings-t): Bind "e" to todo-edit-item. Remove
|
||||
bindings of deleted commands.
|
||||
(todo-key-bindings-t): Bind "e" to todo-edit-item.
|
||||
Remove bindings of deleted commands.
|
||||
|
||||
2014-05-04 Leo Liu <sdl.web@gmail.com>
|
||||
|
||||
|
|
|
@ -5360,7 +5360,8 @@ occupied by `nil'."
|
|||
(list (car (todo-insert-item--argsleft
|
||||
(todo-insert-item--this-key)
|
||||
todo-insert-item--argsleft)))))
|
||||
(arglist (unless (= 4 (length args))
|
||||
(arglist (if (= 4 (length args))
|
||||
args
|
||||
(let ((v (make-vector 4 nil)) elt)
|
||||
(while args
|
||||
(setq elt (pop args))
|
||||
|
|
|
@ -221,7 +221,8 @@ Python does not lend itself to fully automatic indentation.")
|
|||
(defvar electric-indent-functions-without-reindent
|
||||
'(indent-relative indent-to-left-margin indent-relative-maybe
|
||||
py-indent-line coffee-indent-line org-indent-line yaml-indent-line
|
||||
haskell-indentation-indent-line haskell-indent-cycle haskell-simple-indent)
|
||||
haskell-indentation-indent-line haskell-indent-cycle haskell-simple-indent
|
||||
yaml-indent-line)
|
||||
"List of indent functions that can't reindent.
|
||||
If `line-indent-function' is one of those, then `electric-indent-mode' will
|
||||
not try to reindent lines. It is normally better to make the major
|
||||
|
|
|
@ -23,14 +23,15 @@
|
|||
|
||||
;; Produce in find-gc-unsafe-list the set of all functions that may invoke GC.
|
||||
;; This expects the Emacs sources to live in find-gc-source-directory.
|
||||
;; It creates a temporary working directory /tmp/esrc.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defvar find-gc-unsafe-list nil
|
||||
"The list of unsafe functions is placed here by `find-gc-unsafe'.")
|
||||
|
||||
(defvar find-gc-source-directory)
|
||||
(defvar find-gc-source-directory
|
||||
(file-name-as-directory (expand-file-name "src" source-directory))
|
||||
"Directory containing Emacs C sources.")
|
||||
|
||||
(defvar find-gc-subrs-callers nil
|
||||
"Alist of users of subrs, from GC testing.
|
||||
|
@ -59,22 +60,21 @@ Each entry has the form (FUNCTION . FUNCTIONS-IT-CALLS).")
|
|||
"indent.c" "search.c" "regex.c" "undo.c"
|
||||
"alloc.c" "data.c" "doc.c" "editfns.c"
|
||||
"callint.c" "eval.c" "fns.c" "print.c" "lread.c"
|
||||
"abbrev.c" "syntax.c" "unexcoff.c"
|
||||
"syntax.c" "unexcoff.c"
|
||||
"bytecode.c" "process.c" "callproc.c" "doprnt.c"
|
||||
"x11term.c" "x11fns.c"))
|
||||
"xterm.c" "xfns.c"))
|
||||
|
||||
|
||||
(defun find-gc-unsafe ()
|
||||
"Return a list of unsafe functions--that is, which can call GC.
|
||||
Also store it in `find-gc-unsafe'."
|
||||
Also store it in `find-gc-unsafe-list'."
|
||||
(trace-call-tree nil)
|
||||
(trace-use-tree)
|
||||
(find-unsafe-funcs 'Fgarbage_collect)
|
||||
(setq find-gc-unsafe-list
|
||||
(sort find-gc-unsafe-list
|
||||
(function (lambda (x y)
|
||||
(string-lessp (car x) (car y))))))
|
||||
)
|
||||
(string-lessp (car x) (car y)))))))
|
||||
|
||||
;;; This does a depth-first search to find all functions that can
|
||||
;;; ultimately call the function "target". The result is an a-list
|
||||
|
@ -84,8 +84,7 @@ Also store it in `find-gc-unsafe'."
|
|||
|
||||
(defun find-unsafe-funcs (target)
|
||||
(setq find-gc-unsafe-list (list (list target)))
|
||||
(trace-unsafe target)
|
||||
)
|
||||
(trace-unsafe target))
|
||||
|
||||
(defun trace-unsafe (func)
|
||||
(let ((used (assq func find-gc-subrs-callers)))
|
||||
|
@ -96,53 +95,43 @@ Also store it in `find-gc-unsafe'."
|
|||
(memq (car used) find-gc-noreturn-list)
|
||||
(progn
|
||||
(push (cons (car used) func) find-gc-unsafe-list)
|
||||
(trace-unsafe (car used))))))
|
||||
)
|
||||
(trace-unsafe (car used)))))))
|
||||
|
||||
|
||||
|
||||
|
||||
(defun trace-call-tree (&optional already-setup)
|
||||
(defun trace-call-tree (&optional ignored)
|
||||
(message "Setting up directories...")
|
||||
(or already-setup
|
||||
(progn
|
||||
;; Gee, wouldn't a built-in "system" function be handy here.
|
||||
(call-process "csh" nil nil nil "-c" "rm -rf /tmp/esrc")
|
||||
(call-process "csh" nil nil nil "-c" "mkdir /tmp/esrc")
|
||||
(call-process "csh" nil nil nil "-c"
|
||||
(format "ln -s %s/*.[ch] /tmp/esrc"
|
||||
find-gc-source-directory))))
|
||||
(with-current-buffer (get-buffer-create "*Trace Call Tree*")
|
||||
(setq find-gc-subrs-called nil)
|
||||
(let ((case-fold-search nil)
|
||||
(files find-gc-source-files)
|
||||
name entry)
|
||||
(while files
|
||||
(message "Compiling %s..." (car files))
|
||||
(call-process "csh" nil nil nil "-c"
|
||||
(format "gcc -dr -c /tmp/esrc/%s -o /dev/null"
|
||||
(car files)))
|
||||
(erase-buffer)
|
||||
(insert-file-contents (concat "/tmp/esrc/" (car files) ".rtl"))
|
||||
(while (re-search-forward ";; Function \\|(call_insn " nil t)
|
||||
(if (= (char-after (- (point) 3)) ?o)
|
||||
(progn
|
||||
(looking-at "[a-zA-Z0-9_]+")
|
||||
(setq name (intern (buffer-substring (match-beginning 0)
|
||||
(match-end 0))))
|
||||
(message "%s : %s" (car files) name)
|
||||
(setq entry (list name)
|
||||
find-gc-subrs-called (cons entry find-gc-subrs-called)))
|
||||
(if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"")
|
||||
(setq find-gc-subrs-called nil)
|
||||
(let ((case-fold-search nil)
|
||||
(default-directory find-gc-source-directory)
|
||||
(files find-gc-source-files)
|
||||
name entry rtlfile)
|
||||
(dolist (file files)
|
||||
(message "Compiling %s..." file)
|
||||
(call-process "gcc" nil nil nil "-I" "." "-I" "../lib"
|
||||
"-fdump-rtl-expand" "-o" null-device "-c" file)
|
||||
(setq rtlfile
|
||||
(file-expand-wildcards (format "%s.*.expand" file) t))
|
||||
(if (/= 1 (length rtlfile))
|
||||
(message "Error compiling `%s'?" file)
|
||||
(with-temp-buffer
|
||||
(insert-file-contents (setq rtlfile (car rtlfile)))
|
||||
(delete-file rtlfile)
|
||||
(while (re-search-forward ";; Function \\|(call_insn " nil t)
|
||||
(if (= (char-after (- (point) 3)) ?o)
|
||||
(progn
|
||||
(setq name (intern (buffer-substring (match-beginning 1)
|
||||
(match-end 1))))
|
||||
(or (memq name (cdr entry))
|
||||
(setcdr entry (cons name (cdr entry))))))))
|
||||
(delete-file (concat "/tmp/esrc/" (car files) ".rtl"))
|
||||
(setq files (cdr files)))))
|
||||
)
|
||||
|
||||
(looking-at "[a-zA-Z0-9_]+")
|
||||
(setq name (intern (match-string 0)))
|
||||
(message "%s : %s" (car files) name)
|
||||
(setq entry (list name)
|
||||
find-gc-subrs-called
|
||||
(cons entry find-gc-subrs-called)))
|
||||
(if (looking-at ".*\n?.*\"\\([A-Za-z0-9_]+\\)\"")
|
||||
(progn
|
||||
(setq name (intern (match-string 1)))
|
||||
(or (memq name (cdr entry))
|
||||
(setcdr entry (cons name (cdr entry)))))))))))))
|
||||
|
||||
(defun trace-use-tree ()
|
||||
(setq find-gc-subrs-callers (mapcar 'list (mapcar 'car find-gc-subrs-called)))
|
||||
|
@ -153,8 +142,7 @@ Also store it in `find-gc-unsafe'."
|
|||
(while (setq p2 (cdr p2))
|
||||
(if (setq found (assq (car p2) find-gc-subrs-callers))
|
||||
(setcdr found (cons (car (car ptr)) (cdr found)))))
|
||||
(setq ptr (cdr ptr))))
|
||||
)
|
||||
(setq ptr (cdr ptr)))))
|
||||
|
||||
(provide 'find-gc)
|
||||
|
||||
|
|
|
@ -868,7 +868,7 @@ MIN-VERSION should be a version list."
|
|||
;; Also check built-in packages.
|
||||
(package-built-in-p package min-version)))
|
||||
|
||||
(defun package-compute-transaction (packages requirements)
|
||||
(defun package-compute-transaction (packages requirements &optional seen)
|
||||
"Return a list of packages to be installed, including PACKAGES.
|
||||
PACKAGES should be a list of `package-desc'.
|
||||
|
||||
|
@ -880,7 +880,9 @@ version of that package.
|
|||
This function recursively computes the requirements of the
|
||||
packages in REQUIREMENTS, and returns a list of all the packages
|
||||
that must be installed. Packages that are already installed are
|
||||
not included in this list."
|
||||
not included in this list.
|
||||
|
||||
SEEN is used internally to detect infinite recursion."
|
||||
;; FIXME: We really should use backtracking to explore the whole
|
||||
;; search space (e.g. if foo require bar-1.3, and bar-1.4 requires toto-1.1
|
||||
;; whereas bar-1.3 requires toto-1.0 and the user has put a hold on toto-1.0:
|
||||
|
@ -893,15 +895,22 @@ not included in this list."
|
|||
(dolist (pkg packages)
|
||||
(if (eq next-pkg (package-desc-name pkg))
|
||||
(setq already pkg)))
|
||||
(cond
|
||||
(already
|
||||
(when already
|
||||
(if (version-list-<= next-version (package-desc-version already))
|
||||
;; Move to front, so it gets installed early enough (bug#14082).
|
||||
(setq packages (cons already (delq already packages)))
|
||||
;; `next-pkg' is already in `packages', but its position there
|
||||
;; means it might be installed too late: remove it from there, so
|
||||
;; we re-add it (along with its dependencies) at an earlier place
|
||||
;; below (bug#16994).
|
||||
(if (memq already seen) ;Avoid inf-loop on dependency cycles.
|
||||
(message "Dependency cycle going through %S"
|
||||
(package-desc-full-name already))
|
||||
(setq packages (delq already packages))
|
||||
(setq already nil))
|
||||
(error "Need package `%s-%s', but only %s is being installed"
|
||||
next-pkg (package-version-join next-version)
|
||||
(package-version-join (package-desc-version already)))))
|
||||
|
||||
(cond
|
||||
(already nil)
|
||||
((package-installed-p next-pkg next-version) nil)
|
||||
|
||||
(t
|
||||
|
@ -933,12 +942,13 @@ but version %s required"
|
|||
(t (setq found pkg-desc)))))
|
||||
(unless found
|
||||
(if problem
|
||||
(error problem)
|
||||
(error "%s" problem)
|
||||
(error "Package `%s-%s' is unavailable"
|
||||
next-pkg (package-version-join next-version))))
|
||||
(setq packages
|
||||
(package-compute-transaction (cons found packages)
|
||||
(package-desc-reqs found))))))))
|
||||
(package-desc-reqs found)
|
||||
(cons found seen))))))))
|
||||
packages)
|
||||
|
||||
(defun package-read-from-string (str)
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-05-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* gnus-fun.el (gnus-grab-cam-face):
|
||||
Do not use predictable temp-file name. (http://bugs.debian.org/747100)
|
||||
|
||||
2014-05-04 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* gnus-registry.el (gnus-registry-install-p): Doc fix.
|
||||
|
|
|
@ -301,20 +301,21 @@ colors of the displayed X-Faces."
|
|||
(interactive)
|
||||
(shell-command "xawtv-remote snap ppm")
|
||||
(let ((file nil)
|
||||
(tempfile (make-temp-file "gnus-face-" nil ".ppm"))
|
||||
result)
|
||||
(while (null (setq file (directory-files "/tftpboot/sparky/tmp"
|
||||
t "snap.*ppm")))
|
||||
(sleep-for 1))
|
||||
(setq file (car file))
|
||||
(shell-command
|
||||
(format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | pnmscale -width 48 -height 48 | ppmtopgm > /tmp/gnus.face.ppm"
|
||||
file))
|
||||
(format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | pnmscale -width 48 -height 48 | ppmtopgm >> %s"
|
||||
file tempfile))
|
||||
(let ((gnus-convert-image-to-face-command
|
||||
(format "cat '%%s' | ppmquant %%d | ppmchange %s | pnmtopng"
|
||||
(gnus-fun-ppm-change-string))))
|
||||
(setq result (gnus-face-from-file "/tmp/gnus.face.ppm")))
|
||||
(setq result (gnus-face-from-file tempfile)))
|
||||
(delete-file file)
|
||||
;;(delete-file "/tmp/gnus.face.ppm")
|
||||
;;(delete-file tempfile) ; FIXME why are we not deleting it?!
|
||||
result))
|
||||
|
||||
(defun gnus-fun-ppm-change-string ()
|
||||
|
|
|
@ -501,6 +501,11 @@ FILE is the file where FUNCTION was probably defined."
|
|||
;; aliases before functions.
|
||||
(aliased
|
||||
(format "an alias for `%s'" real-def))
|
||||
((autoloadp def)
|
||||
(format "%s autoloaded %s"
|
||||
(if (commandp def) "an interactive" "an")
|
||||
(if (eq (nth 4 def) 'keymap) "keymap"
|
||||
(if (nth 4 def) "Lisp macro" "Lisp function"))))
|
||||
((or (eq (car-safe def) 'macro)
|
||||
;; For advised macros, def is a lambda
|
||||
;; expression or a byte-code-function-p, so we
|
||||
|
@ -513,11 +518,6 @@ FILE is the file where FUNCTION was probably defined."
|
|||
(concat beg "Lisp function"))
|
||||
((eq (car-safe def) 'closure)
|
||||
(concat beg "Lisp closure"))
|
||||
((autoloadp def)
|
||||
(format "%s autoloaded %s"
|
||||
(if (commandp def) "an interactive" "an")
|
||||
(if (eq (nth 4 def) 'keymap) "keymap"
|
||||
(if (nth 4 def) "Lisp macro" "Lisp function"))))
|
||||
((keymapp def)
|
||||
(let ((is-full nil)
|
||||
(elts (cdr-safe def)))
|
||||
|
|
|
@ -519,11 +519,35 @@ for use at QPOS."
|
|||
completions))
|
||||
|
||||
((eq action 'completion--unquote)
|
||||
(let ((ustring (funcall unquote string))
|
||||
(uprefix (funcall unquote (substring string 0 pred))))
|
||||
;; We presume (more or less) that `concat' and `unquote' commute.
|
||||
(cl-assert (string-prefix-p uprefix ustring))
|
||||
(list ustring table (length uprefix)
|
||||
;; PRED is really a POINT in STRING.
|
||||
;; We should return a new set (STRING TABLE POINT REQUOTE)
|
||||
;; where STRING is a new (unquoted) STRING to match against the new TABLE
|
||||
;; using a new POINT inside it, and REQUOTE is a requoting function which
|
||||
;; should reverse the unquoting, (i.e. it receives the completion result
|
||||
;; of using the new TABLE and should turn it into the corresponding
|
||||
;; quoted result).
|
||||
(let* ((qpos pred)
|
||||
(ustring (funcall unquote string))
|
||||
(uprefix (funcall unquote (substring string 0 qpos)))
|
||||
;; FIXME: we really should pass `qpos' to `unuote' and have that
|
||||
;; function give us the corresponding `uqpos'. But for now we
|
||||
;; presume (more or less) that `concat' and `unquote' commute.
|
||||
(uqpos (if (string-prefix-p uprefix ustring)
|
||||
;; Yay!! They do seem to commute!
|
||||
(length uprefix)
|
||||
;; They don't commute this time! :-(
|
||||
;; Maybe qpos is in some text that disappears in the
|
||||
;; ustring (bug#17239). Let's try a second chance guess.
|
||||
(let ((usuffix (funcall unquote (substring string qpos))))
|
||||
(if (string-suffix-p usuffix ustring)
|
||||
;; Yay!! They still "commute" in a sense!
|
||||
(- (length ustring) (length usuffix))
|
||||
;; Still no luck! Let's just choose *some* position
|
||||
;; within ustring.
|
||||
(/ (+ (min (length uprefix) (length ustring))
|
||||
(max (- (length ustring) (length usuffix)) 0))
|
||||
2))))))
|
||||
(list ustring table uqpos
|
||||
(lambda (unquoted-result op)
|
||||
(pcase op
|
||||
(1 ;;try
|
||||
|
@ -853,6 +877,7 @@ completing buffer and file names, respectively."
|
|||
(setq string (pop new))
|
||||
(setq table (pop new))
|
||||
(setq point (pop new))
|
||||
(cl-assert (<= point (length string)))
|
||||
(pop new))))
|
||||
(result
|
||||
(completion--some (lambda (style)
|
||||
|
@ -1365,19 +1390,18 @@ appear to be a match."
|
|||
;; instead, but it was too blunt, leading to situations where SPC
|
||||
;; was the only insertable char at point but minibuffer-complete-word
|
||||
;; refused inserting it.
|
||||
(let* ((exts (mapcar (lambda (str) (propertize str 'completion-try-word t))
|
||||
'(" " "-")))
|
||||
(before (substring string 0 point))
|
||||
(after (substring string point))
|
||||
(comps
|
||||
(delete nil
|
||||
(mapcar (lambda (ext)
|
||||
(completion-try-completion
|
||||
(concat before ext after)
|
||||
table predicate (1+ point) md))
|
||||
exts))))
|
||||
(when (and (null (cdr comps)) (consp (car comps)))
|
||||
(setq comp (car comps)))))
|
||||
(let ((exts (mapcar (lambda (str) (propertize str 'completion-try-word t))
|
||||
'(" " "-")))
|
||||
(before (substring string 0 point))
|
||||
(after (substring string point))
|
||||
tem)
|
||||
;; If both " " and "-" lead to completions, prefer " " so SPC behaves
|
||||
;; a bit more like a self-inserting key (bug#17375).
|
||||
(while (and exts (not (consp tem)))
|
||||
(setq tem (completion-try-completion
|
||||
(concat before (pop exts) after)
|
||||
table predicate (1+ point) md)))
|
||||
(if (consp tem) (setq comp tem))))
|
||||
|
||||
;; Completing a single word is actually more difficult than completing
|
||||
;; as much as possible, because we first have to find the "current
|
||||
|
|
|
@ -1340,6 +1340,9 @@ used instead of `browse-url-new-window-flag'."
|
|||
(kill-buffer nil)))
|
||||
(if (and pid (zerop (signal-process pid 0))) ; Mosaic running
|
||||
(save-excursion
|
||||
;; This is a predictable temp-file name, which is bad,
|
||||
;; but it is what Mosaic uses/used.
|
||||
;; So it's not Emacs's problem. http://bugs.debian.org/747100
|
||||
(find-file (format "/tmp/Mosaic.%d" pid))
|
||||
(erase-buffer)
|
||||
(insert (if (browse-url-maybe-new-window new-window)
|
||||
|
|
|
@ -425,7 +425,7 @@ as given in your `~/.profile'."
|
|||
|
||||
;;;###tramp-autoload
|
||||
(defcustom tramp-remote-process-environment
|
||||
`("HISTFILE=$HOME/.tramp_history" "HISTSIZE=1" "TMOUT=0" "LC_CTYPE=''"
|
||||
`("TMOUT=0" "LC_CTYPE=''"
|
||||
,(format "TERM=%s" tramp-terminal-type)
|
||||
"EMACS=t" ;; Deprecated.
|
||||
,(format "INSIDE_EMACS='%s,tramp:%s'" emacs-version tramp-version)
|
||||
|
@ -440,6 +440,7 @@ which might have been set in the init files like ~/.profile.
|
|||
Special handling is applied to the PATH environment, which should
|
||||
not be set here. Instead, it should be set via `tramp-remote-path'."
|
||||
:group 'tramp
|
||||
:version "24.4"
|
||||
:type '(repeat string))
|
||||
|
||||
(defcustom tramp-sh-extra-args '(("/bash\\'" . "-norc -noprofile"))
|
||||
|
@ -491,9 +492,9 @@ This list is used for copying/renaming with out-of-band methods.
|
|||
See `tramp-actions-before-shell' for more info.")
|
||||
|
||||
(defconst tramp-uudecode
|
||||
"(echo begin 600 /tmp/tramp.$$; tail +2) | uudecode
|
||||
cat /tmp/tramp.$$
|
||||
rm -f /tmp/tramp.$$"
|
||||
"(echo begin 600 %t; tail -n +2) | uudecode
|
||||
cat %t
|
||||
rm -f %t"
|
||||
"Shell function to implement `uudecode' to standard output.
|
||||
Many systems support `uudecode -o /dev/stdout' or `uudecode -o -'
|
||||
for this or `uudecode -p', but some systems don't, and for them
|
||||
|
@ -3726,8 +3727,7 @@ file exists and nonzero exit status otherwise."
|
|||
(with-tramp-progress-reporter
|
||||
vec 5 (format "Opening remote shell `%s'" shell)
|
||||
;; Find arguments for this shell.
|
||||
(let ((tramp-end-of-output tramp-initial-end-of-output)
|
||||
(alist tramp-sh-extra-args)
|
||||
(let ((alist tramp-sh-extra-args)
|
||||
item extra-args)
|
||||
(while (and alist (null extra-args))
|
||||
(setq item (pop alist))
|
||||
|
@ -3735,18 +3735,12 @@ file exists and nonzero exit status otherwise."
|
|||
(setq extra-args (cdr item))))
|
||||
(tramp-send-command
|
||||
vec (format
|
||||
"exec env ENV='' PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s"
|
||||
"exec env ENV='' HISTFILE=/dev/null PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s"
|
||||
(tramp-shell-quote-argument tramp-end-of-output)
|
||||
shell (or extra-args ""))
|
||||
t))
|
||||
(tramp-set-connection-property
|
||||
(tramp-get-connection-process vec) "remote-shell" shell)
|
||||
;; Setting prompts.
|
||||
(tramp-send-command
|
||||
vec (format "PS1=%s" (tramp-shell-quote-argument tramp-end-of-output)) t)
|
||||
(tramp-send-command vec "PS2=''" t)
|
||||
(tramp-send-command vec "PS3=''" t)
|
||||
(tramp-send-command vec "PROMPT_COMMAND=''" t)))
|
||||
(tramp-get-connection-process vec) "remote-shell" shell)))
|
||||
|
||||
(defun tramp-find-shell (vec)
|
||||
"Opens a shell on the remote host which groks tilde expansion."
|
||||
|
@ -4045,7 +4039,7 @@ Each item is a list that looks like this:
|
|||
|
||||
\(FORMAT ENCODING DECODING [TEST]\)
|
||||
|
||||
FORMAT is symbol describing the encoding/decoding format. It can be
|
||||
FORMAT is a symbol describing the encoding/decoding format. It can be
|
||||
`b64' for base64 encoding, `uu' for uu encoding, or `pack' for simple packing.
|
||||
|
||||
ENCODING and DECODING can be strings, giving commands, or symbols,
|
||||
|
@ -4055,9 +4049,11 @@ filename will be put into the command line at that spot. If the
|
|||
specifier is not present, the input should be read from standard
|
||||
input.
|
||||
|
||||
If they are variables, this variable is a string containing a Perl
|
||||
implementation for this functionality. This Perl program will be transferred
|
||||
to the remote host, and it is available as shell function with the same name.
|
||||
If they are variables, this variable is a string containing a
|
||||
Perl or Shell implementation for this functionality. This
|
||||
program will be transferred to the remote host, and it is
|
||||
available as shell function with the same name. A \"%t\" format
|
||||
specifier in the variable value denotes a temporary file.
|
||||
|
||||
The optional TEST command can be used for further tests, whether
|
||||
ENCODING and DECODING are applicable.")
|
||||
|
@ -4136,10 +4132,25 @@ Goes through the list `tramp-local-coding-commands' and
|
|||
(throw 'wont-work-remote nil))
|
||||
|
||||
(when (not (stringp rem-dec))
|
||||
(let ((name (symbol-name rem-dec)))
|
||||
(let ((name (symbol-name rem-dec))
|
||||
(value (symbol-value rem-dec))
|
||||
tmpfile)
|
||||
(while (string-match (regexp-quote "-") name)
|
||||
(setq name (replace-match "_" nil t name)))
|
||||
(tramp-maybe-send-script vec (symbol-value rem-dec) name)
|
||||
(when (string-match "%t" value)
|
||||
(setq tmpfile
|
||||
(make-temp-name
|
||||
(expand-file-name
|
||||
tramp-temp-name-prefix
|
||||
(tramp-get-remote-tmpdir vec)))
|
||||
value
|
||||
(format-spec
|
||||
value
|
||||
(format-spec-make
|
||||
?t
|
||||
(tramp-file-name-handler
|
||||
'file-remote-p tmpfile 'localname)))))
|
||||
(tramp-maybe-send-script vec value name)
|
||||
(setq rem-dec name)))
|
||||
(tramp-message
|
||||
vec 5
|
||||
|
@ -4456,6 +4467,7 @@ connection if a previous connection has died for some reason."
|
|||
(delete-process p))
|
||||
(setenv "TERM" tramp-terminal-type)
|
||||
(setenv "LC_ALL" "en_US.utf8")
|
||||
(setenv "HISTFILE" "/dev/null")
|
||||
(setenv "PROMPT_COMMAND")
|
||||
(setenv "PS1" tramp-initial-end-of-output)
|
||||
(let* ((target-alist (tramp-compute-multi-hops vec))
|
||||
|
|
|
@ -1804,9 +1804,10 @@ It will be properly highlighted even when the call omits parens.")
|
|||
;; $' $" $` .... are variables.
|
||||
;; ?' ?" ?` are character literals (one-char strings in 1.9+).
|
||||
("\\([?$]\\)[#\"'`]"
|
||||
(1 (unless (save-excursion
|
||||
;; Not within a string.
|
||||
(nth 3 (syntax-ppss (match-beginning 0))))
|
||||
(1 (if (save-excursion
|
||||
(nth 3 (syntax-ppss (match-beginning 0))))
|
||||
;; Within a string, skip.
|
||||
(goto-char (match-end 1))
|
||||
(string-to-syntax "\\"))))
|
||||
;; Part of symbol when at the end of a method name.
|
||||
("[!?]"
|
||||
|
|
105
lisp/xt-mouse.el
105
lisp/xt-mouse.el
|
@ -63,8 +63,8 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
|
|||
|
||||
(defun xterm-mouse-translate-1 (&optional extension)
|
||||
(save-excursion
|
||||
(save-window-excursion
|
||||
(deactivate-mark)
|
||||
(save-window-excursion ;FIXME: Why?
|
||||
(deactivate-mark) ;FIXME: Why?
|
||||
(let* ((xterm-mouse-last nil)
|
||||
(down (xterm-mouse-event extension))
|
||||
(down-command (nth 0 down))
|
||||
|
@ -73,10 +73,10 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
|
|||
(down-binding (key-binding (if (symbolp down-where)
|
||||
(vector down-where down-command)
|
||||
(vector down-command))))
|
||||
(is-click (string-match "^mouse" (symbol-name (car down)))))
|
||||
(is-down (string-match "down" (symbol-name (car down)))))
|
||||
|
||||
;; Retrieve the expected preface for the up-event.
|
||||
(unless is-click
|
||||
(unless is-down
|
||||
(unless (cond ((null extension)
|
||||
(and (eq (read-event) ?\e)
|
||||
(eq (read-event) ?\[)
|
||||
|
@ -88,14 +88,17 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
|
|||
(error "Unexpected escape sequence from XTerm")))
|
||||
|
||||
;; Process the up-event.
|
||||
(let* ((click (if is-click down (xterm-mouse-event extension)))
|
||||
(let* ((click (if is-down (xterm-mouse-event extension) down))
|
||||
(click-data (nth 1 click))
|
||||
(click-where (nth 1 click-data)))
|
||||
(if (memq down-binding '(nil ignore))
|
||||
(if (and (symbolp click-where)
|
||||
(consp click-where))
|
||||
(vector (list click-where click-data) click)
|
||||
(vector click))
|
||||
(cond
|
||||
((null down) nil)
|
||||
((memq down-binding '(nil ignore))
|
||||
(if (and (symbolp click-where)
|
||||
(consp click-where))
|
||||
(vector (list click-where click-data) click)
|
||||
(vector click)))
|
||||
(t
|
||||
(setq unread-command-events
|
||||
(append (if (eq down-where click-where)
|
||||
(list click)
|
||||
|
@ -114,7 +117,7 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
|
|||
(if (and (symbolp down-where)
|
||||
(consp down-where))
|
||||
(vector (list down-where down-data) down)
|
||||
(vector down))))))))
|
||||
(vector down)))))))))
|
||||
|
||||
;; These two variables have been converted to terminal parameters.
|
||||
;;
|
||||
|
@ -153,7 +156,8 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
|
|||
;; Normal terminal mouse click reporting: expect three bytes, of the
|
||||
;; form <BUTTON+32> <X+32> <Y+32>. Return a list (EVENT-TYPE X Y).
|
||||
(defun xterm-mouse--read-event-sequence-1000 ()
|
||||
(list (let ((code (- (read-event) 32)))
|
||||
(let* ((code (- (read-event) 32))
|
||||
(type
|
||||
(intern
|
||||
;; For buttons > 3, the release-event looks differently
|
||||
;; (see xc/programs/xterm/button.c, function EditorButton),
|
||||
|
@ -161,21 +165,21 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
|
|||
(cond ((>= code 64)
|
||||
(format "mouse-%d" (- code 60)))
|
||||
((memq code '(8 9 10))
|
||||
(setq xterm-mouse-last code)
|
||||
(setq xterm-mouse-last (- code 8))
|
||||
(format "M-down-mouse-%d" (- code 7)))
|
||||
((= code 11)
|
||||
(format "M-mouse-%d" (- xterm-mouse-last 7)))
|
||||
((= code 3)
|
||||
;; For buttons > 5 xterm only reports a
|
||||
;; button-release event. Avoid error by mapping
|
||||
;; them all to mouse-1.
|
||||
(format "mouse-%d" (+ 1 (or xterm-mouse-last 0))))
|
||||
(t
|
||||
((and (= code 11) xterm-mouse-last)
|
||||
(format "M-mouse-%d" (1+ xterm-mouse-last)))
|
||||
((and (= code 3) xterm-mouse-last)
|
||||
;; For buttons > 5 xterm only reports a button-release event.
|
||||
;; Drop them since they're not usable and can be spurious.
|
||||
(format "mouse-%d" (1+ xterm-mouse-last)))
|
||||
((memq code '(0 1 2))
|
||||
(setq xterm-mouse-last code)
|
||||
(format "down-mouse-%d" (+ 1 code))))))
|
||||
;; x and y coordinates
|
||||
(- (read-event) 33)
|
||||
(- (read-event) 33)))
|
||||
(x (- (read-event) 33))
|
||||
(y (- (read-event) 33)))
|
||||
(and type (wholenump x) (wholenump y)
|
||||
(list type x y))))
|
||||
|
||||
;; XTerm's 1006-mode terminal mouse click reporting has the form
|
||||
;; <BUTTON> ; <X> ; <Y> <M or m>, where the button and ordinates are
|
||||
|
@ -222,32 +226,33 @@ which is the \"1006\" extension implemented in Xterm >= 277."
|
|||
((eq extension 1006)
|
||||
(xterm-mouse--read-event-sequence-1006))
|
||||
(t
|
||||
(error "Unsupported XTerm mouse protocol"))))
|
||||
(type (nth 0 click))
|
||||
(x (nth 1 click))
|
||||
(y (nth 2 click))
|
||||
;; Emulate timestamp information. This is accurate enough
|
||||
;; for default value of mouse-1-click-follows-link (450msec).
|
||||
(timestamp (xterm-mouse-truncate-wrap
|
||||
(* 1000
|
||||
(- (float-time)
|
||||
(or xt-mouse-epoch
|
||||
(setq xt-mouse-epoch (float-time)))))))
|
||||
(w (window-at x y))
|
||||
(ltrb (window-edges w))
|
||||
(left (nth 0 ltrb))
|
||||
(top (nth 1 ltrb)))
|
||||
(set-terminal-parameter nil 'xterm-mouse-x x)
|
||||
(set-terminal-parameter nil 'xterm-mouse-y y)
|
||||
(setq
|
||||
last-input-event
|
||||
(list type
|
||||
(let ((event (if w
|
||||
(posn-at-x-y (- x left) (- y top) w t)
|
||||
(append (list nil 'menu-bar)
|
||||
(nthcdr 2 (posn-at-x-y x y))))))
|
||||
(setcar (nthcdr 3 event) timestamp)
|
||||
event)))))
|
||||
(error "Unsupported XTerm mouse protocol")))))
|
||||
(when click
|
||||
(let* ((type (nth 0 click))
|
||||
(x (nth 1 click))
|
||||
(y (nth 2 click))
|
||||
;; Emulate timestamp information. This is accurate enough
|
||||
;; for default value of mouse-1-click-follows-link (450msec).
|
||||
(timestamp (xterm-mouse-truncate-wrap
|
||||
(* 1000
|
||||
(- (float-time)
|
||||
(or xt-mouse-epoch
|
||||
(setq xt-mouse-epoch (float-time)))))))
|
||||
(w (window-at x y))
|
||||
(ltrb (window-edges w))
|
||||
(left (nth 0 ltrb))
|
||||
(top (nth 1 ltrb)))
|
||||
(set-terminal-parameter nil 'xterm-mouse-x x)
|
||||
(set-terminal-parameter nil 'xterm-mouse-y y)
|
||||
(setq
|
||||
last-input-event
|
||||
(list type
|
||||
(let ((event (if w
|
||||
(posn-at-x-y (- x left) (- y top) w t)
|
||||
(append (list nil 'menu-bar)
|
||||
(nthcdr 2 (posn-at-x-y x y))))))
|
||||
(setcar (nthcdr 3 event) timestamp)
|
||||
event)))))))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode xterm-mouse-mode
|
||||
|
|
|
@ -1,3 +1,29 @@
|
|||
2014-05-08 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* minibuf.c (read_minibuf): Avoid C99ism in previous patch (Bug#17430).
|
||||
|
||||
2014-05-08 Jarek Czekalski <jarekczek@poczta.onet.pl>
|
||||
|
||||
Fix initialization of minibuffer history variable (Bug#17430).
|
||||
* minibuf.c (read_minibuf): Initialize histval to Qnil if unbound.
|
||||
Move the initialization up to prevent any "value void" message.
|
||||
|
||||
2014-05-08 Samuel Bronson <naesten@gmail.com>
|
||||
|
||||
* keyboard.c (Frecursive_edit): Ensure inc&dec of command_loop_level
|
||||
are matched (bug#17413).
|
||||
|
||||
2014-05-08 Jarek Czekalski <jarekczek@poczta.onet.pl>
|
||||
|
||||
Stop tooltips pulling Emacs window to front (Bug#17408).
|
||||
* w32fns.c (Fx_show_tip): Add SWP_NOOWNERZORDER flag to
|
||||
SetWindowPos invocations.
|
||||
|
||||
2014-05-08 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* nsselect.m (Fx_selection_exists_p): Just return Qnil if window system
|
||||
not initialized (Bug#17398).
|
||||
|
||||
2014-05-07 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* image.c: Include <png.h> before <setjmp.h> (Bug#17429).
|
||||
|
|
|
@ -825,22 +825,25 @@ This function is called by the editor initialization to begin editing. */)
|
|||
if (input_blocked_p ())
|
||||
return Qnil;
|
||||
|
||||
command_loop_level++;
|
||||
update_mode_lines = 17;
|
||||
|
||||
if (command_loop_level
|
||||
if (command_loop_level >= 0
|
||||
&& current_buffer != XBUFFER (XWINDOW (selected_window)->contents))
|
||||
buffer = Fcurrent_buffer ();
|
||||
else
|
||||
buffer = Qnil;
|
||||
|
||||
/* Don't do anything interesting between the increment and the
|
||||
record_unwind_protect! Otherwise, we could get distracted and
|
||||
never decrement the counter again. */
|
||||
command_loop_level++;
|
||||
update_mode_lines = 17;
|
||||
record_unwind_protect (recursive_edit_unwind, buffer);
|
||||
|
||||
/* If we leave recursive_edit_1 below with a `throw' for instance,
|
||||
like it is done in the splash screen display, we have to
|
||||
make sure that we restore single_kboard as command_loop_1
|
||||
would have done if it were left normally. */
|
||||
if (command_loop_level > 0)
|
||||
temporarily_switch_to_single_kboard (SELECTED_FRAME ());
|
||||
record_unwind_protect (recursive_edit_unwind, buffer);
|
||||
|
||||
recursive_edit_1 ();
|
||||
return unbind_to (count, Qnil);
|
||||
|
|
|
@ -384,6 +384,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
|
|||
EMACS_INT pos = 0;
|
||||
/* String to add to the history. */
|
||||
Lisp_Object histstring;
|
||||
Lisp_Object histval;
|
||||
|
||||
Lisp_Object empty_minibuf;
|
||||
Lisp_Object dummy, frame;
|
||||
|
@ -535,6 +536,14 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
|
|||
if (!NILP (Vminibuffer_completing_file_name))
|
||||
Vminibuffer_completing_file_name = Qlambda;
|
||||
|
||||
/* If variable is unbound, make it nil. */
|
||||
histval = find_symbol_value (Vminibuffer_history_variable);
|
||||
if (EQ (histval, Qunbound))
|
||||
{
|
||||
Fset (Vminibuffer_history_variable, Qnil);
|
||||
histval = Qnil;
|
||||
}
|
||||
|
||||
if (inherit_input_method)
|
||||
{
|
||||
/* `current-input-method' is buffer local. So, remember it in
|
||||
|
@ -703,13 +712,6 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
|
|||
{
|
||||
/* If the caller wanted to save the value read on a history list,
|
||||
then do so if the value is not already the front of the list. */
|
||||
Lisp_Object histval;
|
||||
|
||||
/* If variable is unbound, make it nil. */
|
||||
|
||||
histval = find_symbol_value (Vminibuffer_history_variable);
|
||||
if (EQ (histval, Qunbound))
|
||||
Fset (Vminibuffer_history_variable, Qnil);
|
||||
|
||||
/* The value of the history variable must be a cons or nil. Other
|
||||
values are unacceptable. We silently ignore these values. */
|
||||
|
|
|
@ -429,7 +429,9 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
id pb;
|
||||
NSArray *types;
|
||||
|
||||
check_window_system (NULL);
|
||||
if (!window_system_available (NULL))
|
||||
return Qnil;
|
||||
|
||||
CHECK_SYMBOL (selection);
|
||||
if (EQ (selection, Qnil)) selection = QPRIMARY;
|
||||
if (EQ (selection, Qt)) selection = QSECONDARY;
|
||||
|
|
10
src/w32fns.c
10
src/w32fns.c
|
@ -6035,12 +6035,13 @@ Text larger than the specified size is clipped. */)
|
|||
/* Put tooltip in topmost group and in position. */
|
||||
SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOPMOST,
|
||||
root_x, root_y, 0, 0,
|
||||
SWP_NOSIZE | SWP_NOACTIVATE);
|
||||
SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOOWNERZORDER);
|
||||
|
||||
/* Ensure tooltip is on top of other topmost windows (eg menus). */
|
||||
SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOP,
|
||||
0, 0, 0, 0,
|
||||
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||
SWP_NOMOVE | SWP_NOSIZE
|
||||
| SWP_NOACTIVATE | SWP_NOOWNERZORDER);
|
||||
|
||||
unblock_input ();
|
||||
goto start_timer;
|
||||
|
@ -6238,12 +6239,13 @@ Text larger than the specified size is clipped. */)
|
|||
SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOPMOST,
|
||||
root_x, root_y,
|
||||
rect.right - rect.left + FRAME_COLUMN_WIDTH (f),
|
||||
rect.bottom - rect.top, SWP_NOACTIVATE);
|
||||
rect.bottom - rect.top, SWP_NOACTIVATE | SWP_NOOWNERZORDER);
|
||||
|
||||
/* Ensure tooltip is on top of other topmost windows (eg menus). */
|
||||
SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOP,
|
||||
0, 0, 0, 0,
|
||||
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||
SWP_NOMOVE | SWP_NOSIZE
|
||||
| SWP_NOACTIVATE | SWP_NOOWNERZORDER);
|
||||
|
||||
/* Let redisplay know that we have made the frame visible already. */
|
||||
SET_FRAME_VISIBLE (f, 1);
|
||||
|
|
|
@ -1,3 +1,17 @@
|
|||
2014-05-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* automated/vc-bzr.el (vc-bzr-test-bug9726, vc-bzr-test-bug9781)
|
||||
(vc-bzr-test-faulty-bzr-autoloads): Disable bzr logging.
|
||||
|
||||
2014-05-08 Dmitry Gutov <dgutov@yandex.ru>
|
||||
|
||||
* automated/ruby-mode-tests.el (ruby-interpolation-after-dollar-sign):
|
||||
New test.
|
||||
|
||||
2014-05-08 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* automated/help-fns.el: New file.
|
||||
|
||||
2014-05-01 Barry O'Reilly <gundaetiapo@gmail.com>
|
||||
|
||||
* automated/undo-tests.el (undo-test-region-deletion): New test to
|
||||
|
|
37
test/automated/help-fns.el
Normal file
37
test/automated/help-fns.el
Normal file
|
@ -0,0 +1,37 @@
|
|||
;;; help-fns.el --- tests for help-fns.el
|
||||
|
||||
;; Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'ert)
|
||||
|
||||
(autoload 'help-fns-test--macro "help-fns" nil nil t)
|
||||
|
||||
(ert-deftest help-fns-test-bug17410 ()
|
||||
"Test for http://debbugs.gnu.org/17410 ."
|
||||
(describe-function 'help-fns-test--macro)
|
||||
(with-current-buffer "*Help*"
|
||||
(goto-char (point-min))
|
||||
(should (search-forward "autoloaded Lisp macro" (line-end-position)))))
|
||||
|
||||
;;; help-fns.el ends here
|
|
@ -452,6 +452,10 @@ VALUES-PLIST is a list with alternating index and value elements."
|
|||
(ruby-assert-face "%w{foo #@bar}" 8 font-lock-string-face)
|
||||
(ruby-assert-face "%s{foo #@bar}" 8 font-lock-string-face))
|
||||
|
||||
(ert-deftest ruby-interpolation-after-dollar-sign ()
|
||||
(ruby-assert-face "\"$#{balance}\"" 2 'font-lock-string-face)
|
||||
(ruby-assert-face "\"$#{balance}\"" 3 'font-lock-variable-name-face))
|
||||
|
||||
(ert-deftest ruby-no-unknown-percent-literals ()
|
||||
;; No folding of case.
|
||||
(ruby-assert-face "%S{foo}" 4 nil)
|
||||
|
|
|
@ -33,7 +33,9 @@
|
|||
(skip-unless (executable-find vc-bzr-program))
|
||||
(let* ((tempdir (make-temp-file "vc-bzr-test" t))
|
||||
(ignored-dir (expand-file-name "ignored-dir" tempdir))
|
||||
(default-directory (file-name-as-directory tempdir)))
|
||||
(default-directory (file-name-as-directory tempdir))
|
||||
(process-environment (cons (format "BZR_LOG=%s" null-device)
|
||||
process-environment)))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(make-directory ignored-dir)
|
||||
|
@ -64,7 +66,9 @@
|
|||
(let* ((tempdir (make-temp-file "vc-bzr-test" t))
|
||||
(subdir (expand-file-name "subdir" tempdir))
|
||||
(file (expand-file-name "file" tempdir))
|
||||
(default-directory (file-name-as-directory tempdir)))
|
||||
(default-directory (file-name-as-directory tempdir))
|
||||
(process-environment (cons (format "BZR_LOG=%s" null-device)
|
||||
process-environment)))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(call-process vc-bzr-program nil nil nil "init")
|
||||
|
@ -100,7 +104,9 @@
|
|||
(let* ((tempdir (make-temp-file "vc-bzr-test" t))
|
||||
(file (expand-file-name "foo.el" tempdir))
|
||||
(default-directory (file-name-as-directory tempdir))
|
||||
(generated-autoload-file (expand-file-name "loaddefs.el" tempdir)))
|
||||
(generated-autoload-file (expand-file-name "loaddefs.el" tempdir))
|
||||
(process-environment (cons (format "BZR_LOG=%s" null-device)
|
||||
process-environment)))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(call-process vc-bzr-program nil nil nil "init")
|
||||
|
|
Loading…
Add table
Reference in a new issue