Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs

This commit is contained in:
Vincent Belaïche 2016-07-28 18:12:50 +02:00
commit 90ab699c4f
335 changed files with 32035 additions and 7700 deletions

View file

@ -2,7 +2,7 @@
(sentence-end-double-space . t)
(fill-column . 70)))
(c-mode . ((c-file-style . "GNU")
(c-noise-macro-with-parens-names . ("IF_LINT"))))
(c-noise-macro-names . ("NONVOLATILE" "UNINIT"))))
(objc-mode . ((c-file-style . "GNU")))
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
(log-edit-setup-add-author . t)))

File diff suppressed because it is too large Load diff

View file

@ -156,7 +156,6 @@ HAVE_GETLOADAVG
HAVE_GETOPT_H
HAVE_GETOPT_LONG_ONLY
HAVE_GETPAGESIZE
HAVE_GETPEERNAME
HAVE_GETPT
HAVE_GETPWENT
HAVE_GETRLIMIT
@ -234,7 +233,7 @@ HAVE_NET_IF_DL_H
HAVE_NET_IF_H
HAVE_NLIST_H
HAVE_OTF_GET_VARIATION_GLYPHS
HAVE_PERSONALITY_LINUX32
HAVE_PERSONALITY_ADDR_NO_RANDOMIZE
HAVE_PNG
HAVE_PNG_H
HAVE_POSIX_MEMALIGN

View file

@ -45,7 +45,9 @@ files.")
'(
(nil "A\\. N\\. Other") ; unknown author 2014-12-03, later removed
("Aaron S. Hawley" "Aaron Hawley")
("Alan Third" "Alan J Third")
("Alexandru Harsanyi" "Alex Harsanyi")
("Álvar Jesús Ibeas Martín" "Álvar Ibeas")
("Andrew Csillag" "Drew Csillag")
("Anna M. Bigatti" "Anna Bigatti")
("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
@ -61,6 +63,7 @@ files.")
("David J. Biesack" "David Biesack")
("David De La Harpe Golden" "David Golden")
("David Gillespie" "Dave Gillespie")
("David S. Goldberg" "Dave Goldberg")
("David Kågedal" "David K..edal")
("David M. Koppelman" "David Koppelman")
("David M. Smith" "David Smith" "David M Smith")
@ -72,6 +75,7 @@ files.")
("Eric M. Ludlam" "Eric Ludlam")
("Eric S. Raymond" "Eric Raymond")
("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina")
("Francis Litterio" "Fran Litterio")
("Francis J. Wright" "Dr Francis J. Wright" "Francis Wright")
("François Pinard" "Francois Pinard")
("Francesco Potortì" "Francesco Potorti" "Francesco Potorti`")
@ -122,11 +126,12 @@ files.")
("Michaël Cadilhac" "Michael Cadilhac")
("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, p/BSG")
("Michael R. Cook" "Michael Cook")
("Michael Sperber" "Michael Sperber \\[Mr. Preprocessor\\]")
("Michael Sperber" "Mike Sperber" "Michael Sperber \\[Mr. Preprocessor\\]")
("Mikio Nakajima" "Nakajima Mikio")
("Nelson Jose dos Santos Ferreira" "Nelson Ferreira")
("Noorul Islam" "Noorul Islam K M")
;;; ("Tetsurou Okazaki" "OKAZAKI Tetsurou") ; FIXME?
("Óscar Fuentes" "Oscar Fuentes")
("Paul Eggert" "Paul R\\. Eggert")
("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik")
("Pavel Kobiakov" "Pavel Kobyakov")
@ -136,6 +141,7 @@ files.")
("Peter S. Galbraith" "Peter S Galbraith" "Peter Galbraith")
("Peter Runestig" "Peter 'luna' Runestig")
("Piotr Zieliński" "Piotr Zielinski")
("Przemysław Wojnowski" "Przemyslaw Wojnowski")
("Rainer Schöpf" "Rainer Schoepf")
("Raja R. Harinath" "Raja R Harinath")
("Richard G. Bielawski" "Richard G Bielawski" "Richard Bielawski")
@ -143,13 +149,16 @@ files.")
("Richard M. Stallman" "Richard Stallman" "rms@gnu.org")
("Robert J. Chassell" "Bob Chassell")
("Roberto Huelga Díaz" "Roberto Huelga")
("Rodney J. Whitby" "Rod Whitby")
("Roland B. Roberts" "Roland B Roberts" "Roland Roberts")
("Ron Schnell" "Ronnie Schnell")
("Rui-Tao Dong" "Rui-Tao Dong ~{6-HpLN~}")
("Sacha Chua" "Sandra Jean Chua")
("Sam Steingold" "Sam Shteingold")
("Satyaki Das" "Indexed search by Satyaki Das")
("Sébastien Vauban" "Sebastien Vauban")
("Sergey Litvinov" "Litvinov Sergey")
("Shun-ichi Goto" "Shun-ichi GOTO")
;; There are other Stefans.
;;; ("Stefan Monnier" "Stefan")
("Steven L. Baur" "SL Baur" "Steven L Baur")
@ -186,12 +195,14 @@ If REALNAME is nil, ignore that author.")
;; FIXME seems it would be less fragile to check for O', Mc, etc.
(defconst authors-fixed-case
'("Barry O'Reilly"
"Brian McKenna"
"Brian van den Broek"
"Bryan O'Sullivan"
"Christian von Roques"
"Christophe de Dinechin"
"Craig McDaniel"
"Daniel LaLiberte"
"Daniel McClanahan"
"David J. MacKenzie"
"David McCabe"
"David O'Toole"
@ -222,6 +233,7 @@ If REALNAME is nil, ignore that author.")
"Shun-ichi Goto"
"Thomas DeWeese"
"Tijs van Bakel"
"Titus von der Malsburg"
"Yu-ji Hosokawa")
"List of authors whose names cannot be simply capitalized.")
@ -280,6 +292,7 @@ Changes to files matching one of the regexps in this list are not listed.")
"gfdl.1"
"texi/Makefile.in"
"autodeps.mk"
"lwlib/autodeps.mk"
"oldXMenu/autodeps.mk"
"src/autodeps.mk"
"Imakefile" "icons/sink.ico" "aixcc.lex"
@ -371,9 +384,11 @@ Changes to files matching one of the regexps in this list are not listed.")
"lib/qset-acl.c" "lib/qcopy-acl.c" "lib/file-has-acl.c"
;; files from old MS Windows build procedures
"makefile.w32-in"
"admin/unidata/makefile.w32-in"
"unidata/makefile.w32-in"
"lib/makefile.w32-in"
"leim/makefile.w32-in"
"lisp/makefile.w32-in"
"src/makefile.w32-in"
"nt/emacs-src.tags"
"doc/emacs/makefile.w32-in"
@ -692,8 +707,9 @@ Changes to files in this list are not listed.")
"net/zone-mode.el" "xesam.el"
"term/mac-win.el" "sup-mouse.el"
"term/apollo.el"
"term/vt102.el" "term/vt125.el" "term/vt201.el" "term/vt220.el" "term/vt300.el"
"term/vt320.el" "term/vt400.el" "term/vt420.el"
"term/vt102.el" "term/vt125.el" "term/vt201.el" "term/vt220.el"
"term/vt240.el" "term/vt300.el" "term/vt320.el" "term/vt400.el"
"term/vt420.el"
"url-https.el"
"org-mac-message.el" "org-mew.el" "org-w3m.el" "org-vm.el" "org-wl.el"
"org-mks.el" "org-remember.el" "org-xoxo.el" "org-docbook.el"
@ -738,6 +754,7 @@ Changes to files in this list are not listed.")
"emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c"
"test-distrib.c" "testfile"
"tpu-edt.doc" ; see below
"lisp/obsolete/vc-mcvs.el"
)
"File names which are valid, but no longer exist (or cannot be found)
in the repository.")
@ -829,11 +846,14 @@ in the repository.")
("emulation/crisp.el" . "crisp.el")
("emulation/tpu-edt.el" . "tpu-edt.el")
("emulation/tpu-extras.el" . "tpu-extras.el")
("emulation/tpu-mapper.el" . "tpu-mapper.el")
("emulation/vi.el" . "vi.el")
("emulation/vip.el" . "vip.el")
("emulation/ws-mode.el" . "ws-mode.el")
("mail/mailpost.el" . "mailpost.el")
("net/eudcb-ph.el" . "eudcb-ph.el")
("play/bruce.el" . "bruce.el")
("lisp/play/landmark.el" . "landmark.el")
("play/yow.el" . "yow.el")
("patcomp.el" . "patcomp.el")
("emulation/ws-mode.el" . "ws-mode.el")
@ -886,6 +906,8 @@ in the repository.")
("ED.WORSHIP" . "JOKES")
("GNU.JOKES" . "JOKES")
("CHARACTERS" . "TODO")
("lisp/character-fold.el" . "lisp/char-fold.el")
("test/automated/character-fold-tests.el" . "test/automated/char-fold-tests.el")
("images/gnus/mail_send.xpm" . "mail-send.xpm") ; still in images/gnus
;; Renamed within same directory.
("schema/xhtml-basic-form.rnc" . "xhtml-bform.rnc" )
@ -912,6 +934,7 @@ in the repository.")
("grammars" . "grammars")
;; Moved from lisp/emacs-lisp/ to admin/.
("emacs-lisp/authors.el" . "authors.el")
("emacs-lisp/find-gc.el" . "admin/find-gc.el")
;; From etc to lisp/cedet/semantic/.
("grammars/bovine-grammar.el" . "bovine/grammar.el")
("grammars/wisent-grammar.el" . "wisent/grammar.el")

View file

@ -14,6 +14,7 @@ Emacs uses the following files from the Unicode Character Database
. BidiMirroring.txt
. BidiBrackets.txt
. IVD_Sequences.txt
. NormalizationTest.txt
First, these files need to be copied into admin/unidata/, and then
Emacs should be rebuilt for them to take effect. Rebuilding Emacs
@ -48,6 +49,14 @@ might need to be updated because it knows about used and unused ranges
of Unicode codepoints, which a new release of the Unicode Standard
could change.
Finally, test normalization functions against NormalizationTests.txt,
in the test/ directory run:
make lisp/international/ucs-normalize-tests
See commentary in test/lisp/international/ucs-normalize-tests.el
regarding failing lines.
Problems, fixmes and other unicode-related issues
-------------------------------------------------------------
@ -131,8 +140,6 @@ regard to completeness.
* Need multibyte text in menus, e.g. for the above. (Not specific to
Unicode -- see Emacs etc/TODO, but now mostly works with gtk.)
* There's currently no support for Unicode normalization.
* Populate char-width-table correctly for Unicode characters and
worry about what happens when double-width charsets covering
non-CJK characters are unified.

View file

@ -1,6 +1,7 @@
# BidiBrackets-9.0.0.txt
# Date: 2016-01-21, 22:00:00 GMT [AG, LI, KW]
# Date: 2016-06-07, 22:30:00 GMT [AG, LI, KW]
# © 2016 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
@ -28,6 +29,12 @@
# vice versa, and their Bidi_Paired_Bracket_Type (bpt) property values are
# Open (o) and Close (c), respectively.
#
# The brackets with ticks U+298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
# through U+2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER are paired the
# same way their glyphs form mirror pairs, according to their bmg property
# values. They are not paired on the basis of a diagonal or antidiagonal
# matching of the corner ticks inferred from code point order.
#
# For legacy reasons, the characters U+FD3E ORNATE LEFT PARENTHESIS and
# U+FD3F ORNATE RIGHT PARENTHESIS do not mirror in bidirectional display
# and therefore do not form a bracket pair.

File diff suppressed because it is too large Load diff

View file

@ -20,3 +20,7 @@ http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
Blocks.txt
http://www.unicode.org/Public/8.0.0/ucd/Blocks.txt
2014-11-10
NormalizationTest.txt
http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
2016-07-16

View file

@ -20179,10 +20179,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11C34;BHAIKSUKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
11C35;BHAIKSUKI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
11C36;BHAIKSUKI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
11C38;BHAIKSUKI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
11C39;BHAIKSUKI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
11C3A;BHAIKSUKI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
11C3B;BHAIKSUKI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
11C38;BHAIKSUKI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
11C39;BHAIKSUKI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
11C3A;BHAIKSUKI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
11C3B;BHAIKSUKI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
11C3C;BHAIKSUKI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
11C3D;BHAIKSUKI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
11C3E;BHAIKSUKI SIGN VISARGA;Mc;0;L;;;;;N;;;;;

View file

@ -76,7 +76,7 @@
<td valign="top" class="navColCell"><a href="#7">Miscellaneous</a></td>
</tr>
<tr>
<td valign="top" class="navColCell"><a href="#Exhibit1">Data Files and
<td valign="top" class="navColCell"><a href="#License">Data Files and
Software License Agreement (Exhibit 1)</a></td>
</tr>
<tr>
@ -108,7 +108,7 @@
<td>
<blockquote>
<h1>Unicode Terms of Use</h1>
<h1>Unicode® Terms of Use</h1>
<p>For the general privacy policy governing access to this site, see
the&nbsp;
@ -131,7 +131,7 @@ <h1>Unicode Terms of Use</h1>
<ol type="A">
<li><u><a name="1"></a>Unicode Copyright.</u>
<ol>
<li>Copyright © 1991-2014 Unicode, Inc. All rights reserved.</li>
<li>Copyright © 1991-2016 Unicode, Inc. All rights reserved.</li>
<li>Certain documents and files on this website contain a legend
indicating that &quot;Modification is permitted.&quot; Any person is
hereby authorized, without fee, to modify such documents and
@ -139,13 +139,13 @@ <h1>Unicode Terms of Use</h1>
Standard, subject to Terms and Conditions herein.</li>
<li>Any person is hereby authorized, without fee, to view, use,
reproduce, and distribute all documents and files solely for
informational purposes in the creation of products supporting
informational purposes and in the creation of products supporting
the Unicode Standard, subject to the Terms and Conditions
herein.</li>
<li>Further specifications of rights and restrictions pertaining
to the use of the particular set of data files known as the
&quot;Unicode Character Database&quot; can be found in <a href="#Exhibit1">
Exhibit 1</a>.</li>
&quot;Unicode Character Database&quot; can be found in the
<a href="#License">License</a>.</li>
<li>Each version of the Unicode Standard has further
specifications of rights and restrictions of use. For the book
editions (Unicode 5.0 and earlier), these are found on the back
@ -247,35 +247,35 @@ <h1>Unicode Terms of Use</h1>
<blockquote>
<h3 align="center"><a name="Exhibit1">EXHIBIT 1</a><br>
UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE</h3>
<a name="License">UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE</a></h3>
<pre>
Unicode Data Files include all data files under the directories
http://www.unicode.org/Public/, http://www.unicode.org/reports/,
http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
http://www.unicode.org/utility/trac/browser/.
<p>Unicode Data Files include all data files under the directories
<a href="http://www.unicode.org/Public/">http://www.unicode.org/Public/</a>, <a href="http://www.unicode.org/reports/">http://www.unicode.org/reports/</a>, and <a title="http://www.unicode.org/cldr/data/" onClick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://www.unicode.org/cldr/data/">
http://www.unicode.org/cldr/data/</a>.
Unicode Data Files do not include PDF online code charts under the
directory <a href="http://www.unicode.org/Public/">http://www.unicode.org/Public/</a>.
Software includes any source code published in the Unicode Standard
or under the directories <a href="http://www.unicode.org/Public/">http://www.unicode.org/Public/</a>,
<a href="http://www.unicode.org/reports/">http://www.unicode.org/reports/</a>, and <a title="http://www.unicode.org/cldr/data/" onClick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://www.unicode.org/cldr/data/">
http://www.unicode.org/cldr/data/</a>.</p>
directory http://www.unicode.org/Public/.
<p>NOTICE TO USER: Carefully read the following legal agreement.
Software includes any source code published in the Unicode Standard
or under the directories
http://www.unicode.org/Public/, http://www.unicode.org/reports/,
http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
http://www.unicode.org/utility/trac/browser/.
NOTICE TO USER: Carefully read the following legal agreement.
BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT.
IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
THE DATA FILES OR SOFTWARE.</p>
THE DATA FILES OR SOFTWARE.
<div align="center">
COPYRIGHT AND PERMISSION NOTICE
<table class="simple"><tr><td>
<pre>COPYRIGHT AND PERMISSION NOTICE
Copyright © 1991-2014 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in
<a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a>.
Copyright © 1991-2016 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Unicode data files and any associated documentation
@ -284,14 +284,11 @@ <h3 align="center"><a name="Exhibit1">EXHIBIT 1</a><br>
without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, and/or sell copies of
the Data Files or Software, and to permit persons to whom the Data Files
or Software are furnished to do so, provided that
(a) this copyright and permission notice appear with all copies
of the Data Files or Software,
(b) this copyright and permission notice appear in associated
documentation, and
(c) there is clear notice in each modified Data File or in the Software
as well as in the documentation associated with the Data File(s) or
Software that the data or software has been modified.
or Software are furnished to do so, provided that either
(a) this copyright and permission notice appear with all copies
of the Data Files or Software, or
(b) this copyright and permission notice appear in associated
Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
@ -307,10 +304,8 @@ <h3 align="center"><a name="Exhibit1">EXHIBIT 1</a><br>
Except as contained in this notice, the name of a copyright holder
shall not be used in advertising or otherwise to promote the sale,
use or other dealings in these Data Files or Software without prior
written authorization of the copyright holder.</pre>
</td></tr></table>
</div>
written authorization of the copyright holder.
</pre>
</blockquote>

View file

@ -1643,15 +1643,17 @@ AC_CHECK_HEADERS_ONCE(
sys/resource.h
sys/utsname.h pwd.h utmp.h util.h)
AC_MSG_CHECKING(if personality LINUX32 can be set)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
emacs_cv_personality_linux32=yes,
emacs_cv_personality_linux32=no)
AC_MSG_RESULT($emacs_cv_personality_linux32)
if test $emacs_cv_personality_linux32 = yes; then
AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
[Define to 1 if personality LINUX32 can be set.])
AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE],
[emacs_cv_personality_addr_no_randomize],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <sys/personality.h>]],
[[personality (personality (0xffffffff)
| ADDR_NO_RANDOMIZE)]])],
[emacs_cv_personality_addr_no_randomize=yes],
[emacs_cv_personality_addr_no_randomize=no])])
if test $emacs_cv_personality_addr_no_randomize = yes; then
AC_DEFINE([HAVE_PERSONALITY_ADDR_NO_RANDOMIZE], [1],
[Define to 1 if personality flag ADDR_NO_RANDOMIZE exists.])
fi
# Note that Solaris has sys/sysinfo.h which defines struct
@ -2177,8 +2179,8 @@ elif test "$hybrid_malloc" = yes; then
AC_DEFINE(HYBRID_MALLOC, 1,
[Define to use gmalloc before dumping and the system malloc after.])
HYBRID_MALLOC=1
GNU_MALLOC=
GNU_MALLOC_reason="only before dumping"
GNU_MALLOC=no
GNU_MALLOC_reason=" (only before dumping)"
GMALLOC_OBJ=gmalloc.o
VMLIMIT_OBJ=
else
@ -3245,34 +3247,29 @@ fi
### Use -lXpm if available, unless '--with-xpm=no'.
### mingw32 doesn't use -lXpm, since it loads the library dynamically.
### In the Cygwin-w32 build, we need to use /usr/include/noX/X11/xpm.h
### rather than /usr/include/X11/xpm.h, so we set CPPFLAGS (and
### LDFLAGS) accordingly.
### The Cygwin-w32 build uses <noX/xpm.h> instead of <X11/xpm.h>, so
### we need to set LDFLAGS accordingly.
HAVE_XPM=no
LIBXPM=
if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
if test "${with_xpm}" != "no"; then
SAVE_CPPFLAGS="$CPPFLAGS"
SAVE_LDFLAGS="$LDFLAGS"
CPPFLAGS="$CPPFLAGS -I/usr/include/noX"
LDFLAGS="$LDFLAGS -L/usr/lib/noX"
AC_CHECK_HEADER(X11/xpm.h,
AC_CHECK_HEADER(noX/xpm.h,
[AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
if test "${HAVE_XPM}" = "yes"; then
AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
AC_EGREP_CPP(no_return_alloc_pixels,
[#include "X11/xpm.h"
[#include "noX/xpm.h"
#ifndef XpmReturnAllocPixels
no_return_alloc_pixels
#endif
], HAVE_XPM=no, HAVE_XPM=yes)
if test "${HAVE_XPM}" = "yes"; then
REAL_CPPFLAGS="$REAL_CPPFLAGS -I/usr/include/noX"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
CPPFLAGS="$SAVE_CPPFLAGS"
LDFLAGS="$SAVE_LDFLAGS"
fi
fi
@ -3571,9 +3568,9 @@ fi
AC_SUBST(LIBGIF)
dnl Check for required libraries.
MISSING=
WITH_NO=
if test "${HAVE_X11}" = "yes"; then
MISSING=""
WITH_NO=""
test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
MISSING="libXpm" && WITH_NO="--with-xpm=no"
test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
@ -3584,15 +3581,16 @@ if test "${HAVE_X11}" = "yes"; then
MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
if test "X${MISSING}" != X; then
AC_MSG_ERROR([The following required libraries were not found:
fi
test "${with_gnutls}" != "no" && test "${HAVE_GNUTLS}" != "yes" &&
MISSING="$MISSING gnutls" && WITH_NO="$WITH_NO --with-gnutls=no"
if test "X${MISSING}" != X; then
AC_MSG_ERROR([The following required libraries were not found:
$MISSING
Maybe some development libraries/packages are missing?
If you don't want to link with them give
$WITH_NO
as options to configure])
fi
fi
### Use -lgpm if available, unless '--with-gpm=no'.
@ -3848,7 +3846,7 @@ lrand48 random rint \
select getpagesize setlocale newlocale \
getrlimit setrlimit shutdown \
pthread_sigmask strsignal setitimer \
sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
sendto recvfrom getsockname getifaddrs freeifaddrs \
gai_strerror sync \
getpwent endpwent getgrent endgrent \
cfmakeraw cfsetspeed copysign __executable_start log2)
@ -4292,23 +4290,32 @@ else
[Returns true if character is any form of separator.])
fi
AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
case $opsys in
aix4-2)
dnl Unfortunately without libXmu we cannot support EditRes.
if test "x$ac_cv_search_XmuConvertStandardSelection" = xno; then
AC_DEFINE(NO_EDITRES, 1)
if test "$USE_X_TOOLKIT" != "none"; then
have_editres=yes
case $opsys in
hpux*)
dnl Assar Westerlund <assar@sics.se> says this is necessary
dnl for HP-UX 10.20, and that it works for HP-UX 0 as well.
have_editres=no
;;
esac
if test "$have_editres" != no && test ! -z "$LIBXMU"; then
OLDLIBS="$LIBS"
dnl See libXmu.a check above.
if test x$HAVE_X11XTR6 = xyes; then
LIBS="-lXt -lSM -lICE $LIBXMU"
else
OTHERLIBS="-lXt -$LIBXMU"
fi
;;
hpux*)
dnl Assar Westerlund <assar@sics.se> says this is necessary for
dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
AC_DEFINE(NO_EDITRES, 1)
;;
esac
AC_TRY_LINK(
[#include <X11/Intrinsic.h>
#include <X11/Xmu/Editres.h>],
[_XEditResCheckMessages (0, 0, 0, 0);],
[AC_DEFINE([X_TOOLKIT_EDITRES], 1,
[Define to 1 if we should use XEditRes.])])
LIBS=$OLDLIBS
fi
fi
case $opsys in
sol2* | unixware )

View file

@ -550,13 +550,16 @@ Mark (with @samp{*}) all files whose @emph{contents} contain a match for
the regular expression @var{regexp}
(@code{dired-mark-files-containing-regexp}). This command is like
@kbd{% m}, except that it searches the file contents instead of the file
name. Note that if a file is visited in an Emacs buffer, this command
will look in the buffer without revisiting the file, so the results
name. Note that if a file is visited in an Emacs buffer,
and @code{dired-always-read-filesystem} is @code{nil} (the default), this
command will look in the buffer without revisiting the file, so the results
might be inconsistent with the file on disk if its contents has changed
since it was last visited. If you don't want this, you may wish
reverting the files you have visited in your buffers, or turning on
the @code{auto-revert} mode in those buffers, before invoking this
command. @xref{Reverting}.
command. @xref{Reverting}. If you prefer that this command always revisit
the file, without having to revert the file or enable @code{auto-revert}
mode, you might want to set @code{dired-always-read-filesystem} to non-@code{nil}.
@item C-/
@itemx C-x u

View file

@ -853,9 +853,15 @@ to alter the amount of fontification applied by Font Lock mode, for
major modes that support this feature. The value should be a number
(with 1 representing a minimal amount of fontification; some modes
support levels as high as 3); or @code{t}, meaning ``as high as
possible'' (the default). You can also specify different numbers for
particular major modes; for example, to use level 1 for C/C++ modes,
and the default level otherwise, use the value
possible'' (the default). To be effective for a given file buffer,
the customization of @code{font-lock-maximum-decoration} should be
done @emph{before} the file is visited; if you already have the file
visited in a buffer when you customize this variable, kill the buffer
and visit the file again after the customization.
You can also specify different numbers for particular major modes; for
example, to use level 1 for C/C++ modes, and the default level
otherwise, use the value
@example
'((c-mode . 1) (c++-mode . 1)))

View file

@ -701,7 +701,7 @@ after it visits the file. (This marks the buffer as modified, and you
can undo it.) If the value is @code{visit-save}, Emacs adds such
newlines both on visiting and on saving. If the value is @code{nil},
Emacs leaves the end of the file unchanged; any other non-@code{nil}
value means to asks you whether to add a newline. The default is
value means Emacs asks you whether to add a newline. The default is
@code{nil}.
@vindex mode-require-final-newline

View file

@ -97,7 +97,8 @@ ring; on a second click, kill it (@code{mouse-save-then-kill}).
invoked by clicking with the left mouse button, @kbd{mouse-1}, in the
text area of a window. This moves point to the position where you
clicked. If that window was not the selected window, it becomes the
selected window.
selected window. You can also activate a region by double-clicking
mouse-1 (@pxref{Word and Line Mouse}).
@vindex x-mouse-click-focus-ignore-position
Normally, if the frame you clicked in was not the selected frame, it
@ -215,7 +216,7 @@ also copied to the kill ring.
@table @kbd
@item Double-mouse-1
Select the text around the word which you click on.
Select the text around the word or character which you click on.
Double-clicking on a character with symbol syntax (such as
underscore, in C mode) selects the symbol surrounding that character.
@ -226,6 +227,17 @@ ends. Double-clicking on a character with string-delimiter syntax
constant (Emacs uses heuristics to figure out whether that character
is the beginning or the end of it).
Double-clicking on the beginning of a parenthetical grouping or
beginning string-delimiter moves point to the end of the region,
scrolling the buffer display forward if necessary to show the new
location of point. Double-clicking on the end of a parenthetical
grouping or end string-delimiter keeps point at the end of the region
by default, so the beginning of the region will not be visible if it
is above the top of the window; setting the user option
@code{mouse-select-region-move-to-beginning} to non-nil changes this
to move point to the beginning of the region, scrolling the display
backward if necessary.
@item Double-Drag-mouse-1
Select the text you drag across, in the form of whole words.
@ -1011,7 +1023,7 @@ scroll bar height, change the @code{scroll-bar-height} frame parameter
On graphical displays, you can use @dfn{window dividers} in order to
separate windows visually. Window dividers are bars that can be dragged
with the mouse, thus allowing to easily resize adjacent windows.
with the mouse, thus allowing you to easily resize adjacent windows.
@findex window-divider-mode
To toggle the display of window dividers, use the command @kbd{M-x

View file

@ -1923,7 +1923,7 @@ Like @code{lpr-buffer} but print only the current region.
@findex lpr-region
@vindex lpr-switches
@vindex lpr-commands
On most operating system, the above hardcopy commands submit files
On most operating systems, the above hardcopy commands submit files
for printing by calling the @command{lpr} program. To change the
printer program, customize the variable @code{lpr-command}. To
specify extra switches to give the printer program, customize the list

View file

@ -1977,7 +1977,7 @@ in @code{event-modifiers}. For example:
@defun mouse-movement-p object
This function returns non-@code{nil} if @var{object} is a mouse movement
event.
event. @xref{Motion Events}.
@end defun
@defun event-convert-list list

View file

@ -438,7 +438,7 @@ Emacs commands for operating on compiler output can be used on these
messages.
When an error is due to invalid syntax in the program, the byte
compiler might get confused about the errors' exact location. One way
compiler might get confused about the error's exact location. One way
to investigate is to switch to the buffer @w{@file{ *Compiler
Input*}}. (This buffer name starts with a space, so it does not show
up in the Buffer Menu.) This buffer contains the program being

View file

@ -1996,15 +1996,17 @@ newline.
If the property value is @code{t}, the newline character has no
effect on the displayed height of the line---the visible contents
alone determine the height. This is useful for tiling small images
(or image slices) without adding blank areas between the images.
alone determine the height. The @code{line-spacing} property,
described below, is also ignored in this case. This is useful for
tiling small images (or image slices) without adding blank areas
between the images.
If the property value is a list of the form @code{(@var{height}
@var{total})}, that adds extra space @emph{below} the display line.
First Emacs uses @var{height} as a height spec to control extra space
@emph{above} the line; then it adds enough space @emph{below} the line
to bring the total line height up to @var{total}. In this case, the
other ways to specify the line spacing are ignored.
to bring the total line height up to @var{total}. In this case, any
value of @code{line-spacing} property for the newline is ignored.
@cindex height spec
Any other kind of property value is a height spec, which translates
@ -2054,9 +2056,10 @@ overrides line spacings specified for the frame.
@kindex line-spacing @r{(text property)}
Finally, a newline can have a @code{line-spacing} text or overlay
property that overrides the default frame line spacing and the buffer
local @code{line-spacing} variable, for the display line ending in
that newline.
property that can enlarge the default frame line spacing and the
buffer local @code{line-spacing} variable: if its value is larger than
the buffer or frame defaults, that larger value is used instead, for
the display line ending in that newline.
One way or another, these mechanisms specify a Lisp value for the
spacing of each line. The value is a height spec, and it translates
@ -5347,6 +5350,41 @@ that describe the outer circumference of the polygon.
@end lisp
@end defun
@defun svg-text svg text &rest args
Add a text to @var{svg}.
@lisp
(svg-text
svg "This is a text"
:font-size "40"
:font-weight "bold"
:stroke "black"
:fill "white"
:font-family "impact"
:letter-spacing "4pt"
:x 300
:y 400
:stroke-width 1)
@end lisp
@end defun
@defun svg-embed svg image image-type datap &rest args
Add an embedded (raster) image to @var{svg}. If @var{datap} is
@code{nil}, @var{IMAGE} should be a file name; if not, it should be a
binary string containing the image data. @var{image-type} should be a
@acronym{MIME} image type, for instance @samp{"image/jpeg"}.
@lisp
(svg-embed svg "~/rms.jpg" "image/jpeg" nil
:width "100px" :height "100px"
:x "50px" :y "75px")
@end lisp
@end defun
@defun svg-remove svg id
Remove the element with identifier @code{id} from the @code{svg}.
@end defun
Finally, the @code{svg-image} takes an SVG object as its parameter and
returns an image object suitable for use in functions like
@code{insert-image}. Here's a complete example that creates and

View file

@ -3238,7 +3238,9 @@ end position.
One responsibility of @var{from-fn} is to make sure that the beginning
of the file no longer matches @var{regexp}. Otherwise it is likely to
get called again.
get called again. Also, @var{from-fn} must not involve buffers or
files other than the one being decoded, otherwise the internal buffer
used for formatting might be overwritten.
@item to-fn
A shell command or function to encode data in this format---that is, to
@ -3269,6 +3271,10 @@ file, it intermixes the specified annotations at the corresponding
positions. All this takes place without modifying the buffer.
@end itemize
@var{to-fn} must not involve buffers or files other than the one being
encoded, otherwise the internal buffer used for formatting might be
overwritten.
@item modify
A flag, @code{t} if the encoding function modifies the buffer, and
@code{nil} if it works by returning a list of annotations.

View file

@ -341,7 +341,21 @@ lots of bindings; for just a few, the sparse keymap is better.
@end defun
@defun copy-keymap keymap
This function returns a copy of @var{keymap}. Any keymaps that
This function returns a copy of @var{keymap}. This is almost never
needed. If you want a keymap that's like another yet with a few
changes, you should use map inheritance rather than copying.
I.e., something like:
@example
@group
(let ((map (make-sparse-keymap)))
(set-keymap-parent map <theirmap>)
(define-key map ...)
...)
@end group
@end example
When performing @code{copy-keymap}, any keymaps that
appear directly as bindings in @var{keymap} are also copied recursively,
and so on to any number of levels. However, recursive copying does not
take place when the definition of a character is a symbol whose function
@ -1368,7 +1382,7 @@ default global map.
The function @code{substitute-key-definition} scans a keymap for
keys that have a certain binding and rebinds them with a different
binding. Another feature which is cleaner and can often produce the
same results to remap one command into another (@pxref{Remapping
same results is to remap one command into another (@pxref{Remapping
Commands}).
@defun substitute-key-definition olddef newdef keymap &optional oldmap

View file

@ -1556,12 +1556,16 @@ keys may not be symbols:
@end smallexample
@end defun
@defun alist-get key value &optional default
@defun alist-get key value &optional default remove
This function is like @code{assq}, but instead of returning the entire
association for @var{key}, @code{(@var{key} . @var{value})}, it
returns just the @var{value}. It returns @var{default} if @var{key}
is not found in @var{alist}, defaulting to @code{nil} if @var{default}
is omitted.
returns just the @var{value}. If @var{key} is not found in
@var{alist} it returns @var{default}.
This is a generalized variable (@pxref{Generalized Variables}) that
can be used to change a value with @code{setf}. When using it to set
a value, optional argument @var{remove} non-nil means to remove
@var{key} from @var{alist} if the new value is @code{eql} to @var{default}.
@end defun
@defun rassq value alist

View file

@ -848,8 +848,8 @@ loaded, into the current Emacs session. This means that the facilities
associated with @var{feature} are or will be available for other Lisp
programs.
The direct effect of calling @code{provide} is if not already in
@var{features} then to add @var{feature} to the front of that list and
The direct effect of calling @code{provide} is to add @var{feature} to
the front of @code{features} if it is not already in that list and
call any @code{eval-after-load} code waiting for it (@pxref{Hooks for
Loading}). The argument @var{feature} must be a symbol.
@code{provide} returns @var{feature}.

View file

@ -340,10 +340,10 @@ text is inserted at its position. If @var{type} is @code{nil},
This function reports the current insertion type of @var{marker}.
@end defun
Most functions that create markers, without an argument allowing to
specify the insertion type, create them with insertion type
@code{nil}. Also, the mark has, by default, insertion type
@code{nil}.
All functions that create markers without accepting an argument that
specifies the insertion type, create them with insertion type
@code{nil} (@pxref{Creating Markers}). Also, the mark has, by
default, insertion type @code{nil}.
@node Moving Markers
@section Moving Marker Positions

View file

@ -750,8 +750,8 @@ list contains elements of any other type, those are ignored.
If @var{collection} is an obarray (@pxref{Creating Symbols}), the names
of all symbols in the obarray form the set of permissible completions.
If @var{collection} is a hash table, then the keys that are strings
are the possible completions. Other keys are ignored.
If @var{collection} is a hash table, then the keys that are strings or
symbols are the possible completions. Other keys are ignored.
You can also use a function as @var{collection}. Then the function is
solely responsible for performing completion; @code{try-completion}

View file

@ -799,10 +799,9 @@ if @var{parent} is @code{nil}. (Again, a @code{nil} value is
@item :group
If this is specified, the value should be the customization group for
this mode. (Not all major modes have one.) Only the (still
experimental and unadvertised) command @code{customize-mode} currently
uses this. @code{define-derived-mode} does @emph{not} automatically
define the specified customization group.
this mode. (Not all major modes have one.) The command
@code{customize-mode} uses this. @code{define-derived-mode} does
@emph{not} automatically define the specified customization group.
@item :after-hook
This optional keyword specifies a single Lisp form to evaluate as the
@ -913,7 +912,7 @@ follow these conventions: they may run the parent's mode hook too early,
or fail to run @code{after-change-major-mode-hook}. If you encounter
such a major mode, please correct it to follow these conventions.
When you defined a major mode using @code{define-derived-mode}, it
When you define a major mode using @code{define-derived-mode}, it
automatically makes sure these conventions are followed. If you
define a major mode ``by hand'', not using @code{define-derived-mode},
use the following functions to handle these conventions automatically.
@ -1066,7 +1065,7 @@ to invert the sort order.
@defun tabulated-list-init-header
This function computes and sets @code{header-line-format} for the
Tabulated List buffer (@pxref{Header Lines}), and assigns a keymap to
the header line to allow sort entries by clicking on column headers.
the header line to allow sorting entries by clicking on column headers.
Modes derived from Tabulated List mode should call this after setting
the above variables (in particular, only after setting

View file

@ -590,10 +590,12 @@ any buffer, whether or not it is currently displayed in some window.
@deffn Command move-to-window-line count
This function moves point with respect to the text currently displayed
in the selected window. It moves point to the beginning of the screen
line @var{count} screen lines from the top of the window. If
@var{count} is negative, that specifies a position
@w{@minus{}@var{count}} lines from the bottom (or the last line of the
buffer, if the buffer ends above the specified screen position).
line @var{count} screen lines from the top of the window; zero means
the topmost line. If @var{count} is negative, that specifies a
position @w{@minus{}@var{count}} lines from the bottom (or the last
line of the buffer, if the buffer ends above the specified screen
position); thus, @var{count} of -1 specifies the last fully visible
screen line of the window.
If @var{count} is @code{nil}, then point moves to the beginning of the
line in the middle of the window. If the absolute value of @var{count}
@ -604,8 +606,8 @@ location onto the screen.
In an interactive call, @var{count} is the numeric prefix argument.
The value returned is the window line number point has moved to, with
the top line in the window numbered 0.
The value returned is the screen line number point has moved to,
relative to the top line of the window.
@end deffn
@vindex move-to-window-group-line-function

View file

@ -506,7 +506,7 @@ inputinput@point{}
@defun call-process-shell-command command &optional infile destination display
This function executes the shell command @var{command} synchronously.
The arguments are handled as in @code{call-process}. An old calling
convention allowed to pass any number of additional arguments after
convention allowed passing any number of additional arguments after
@var{display}, which were concatenated to @var{command}; this is still
supported, but strongly discouraged.
@end defun
@ -515,7 +515,7 @@ supported, but strongly discouraged.
This function is like @code{call-process-shell-command}, but uses
@code{process-file} internally. Depending on @code{default-directory},
@var{command} can be executed also on remote hosts. An old calling
convention allowed to pass any number of additional arguments after
convention allowed passing any number of additional arguments after
@var{display}, which were concatenated to @var{command}; this is still
supported, but strongly discouraged.
@end defun
@ -1382,10 +1382,10 @@ subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
@end defun
If the process's buffer is displayed in a window, your Lisp program
may wish telling the process the dimensions of that window, so that
may wish to tell the process the dimensions of that window, so that
the process could adapt its output to those dimensions, much as it
adapts to the screen dimensions. The following functions allow to
communicate this kind of information to processes; however, not all
adapts to the screen dimensions. The following functions allow
communicating this kind of information to processes; however, not all
systems support the underlying functionality, so it is best to provide
fallbacks, e.g., via command-line arguments or environment variables.

View file

@ -668,7 +668,7 @@ The strings are compared by the numeric values of their characters.
For instance, @var{str1} is considered less than @var{str2} if
its first differing character has a smaller numeric value. If
@var{ignore-case} is non-@code{nil}, characters are converted to
lower-case before comparing them. Unibyte strings are converted to
upper-case before comparing them. Unibyte strings are converted to
multibyte for comparison (@pxref{Text Representations}), so that a
unibyte string and its conversion to multibyte are always regarded as
equal.
@ -685,7 +685,8 @@ specified portion) is less.
This function works like @code{assoc}, except that @var{key} must be a
string or symbol, and comparison is done using @code{compare-strings}.
Symbols are converted to strings before testing.
If @var{case-fold} is non-@code{nil}, it ignores case differences.
If @var{case-fold} is non-@code{nil}, @var{key} and the elements of
@var{alist} are converted to upper-case before comparison.
Unlike @code{assoc}, this function can also match elements of the alist
that are strings or symbols rather than conses. In particular, @var{alist} can
be a list of strings or symbols rather than an actual alist.
@ -833,7 +834,8 @@ arguments @var{objects} are the computed values to be formatted.
The characters in @var{string}, other than the format specifications,
are copied directly into the output, including their text properties,
if any.
if any. Any text properties of the format specifications are copied
to the produced string representations of the argument @var{objects}.
@end defun
@defun format-message string &rest objects

View file

@ -1376,10 +1376,10 @@ before executing each key sequence, so that each undo normally undoes
the effects of one command. A few exceptional commands are
@dfn{amalgamating}: these commands generally cause small changes to
buffers, so with these a boundary is inserted only every 20th command,
allowing to undo them as a group. By default, commands
allowing the changes to be undone as a group. By default, the commands
@code{self-insert-command}, which produces self-inserting input
characters (@pxref{Commands for Insertion}), and @code{delete-char}
which deletes characters (@pxref{Deletion}) are amalgamating.
characters (@pxref{Commands for Insertion}), and @code{delete-char},
which deletes characters (@pxref{Deletion}), are amalgamating.
Where a command affects the contents of several buffers, as may happen,
for example, when a function on the @code{post-command-hook} affects a
buffer other than the @code{current-buffer}, then @code{undo-boundary}
@ -4614,6 +4614,9 @@ to be inserted between the textual elements.
@item dom-parent @var{dom} @var{node}
Return the parent of @var{node} in @var{dom}.
@item dom-remove @var{dom} @var{node}
Remove @var{node} from @var{dom}.
@end table
The following are functions for altering the @acronym{DOM}.

View file

@ -6727,9 +6727,11 @@ Macros which needn't (or mustn't) be followed by a semicolon when you
invoke them, @dfn{macros with semicolons}, are very common. These can
cause @ccmode{} to parse the next line wrongly as a
@code{statement-cont} (@pxref{Function Symbols}) and thus mis-indent
it.
it. At the top level, a macro invocation before a defun start can
cause, for example, @code{c-beginning-of-defun} (@kbd{C-M-a}) not to
find the correct start of the current function.
You can prevent this by specifying which macros have semicolons. It
You can prevent these by specifying which macros have semicolons. It
doesn't matter whether or not such a macro has a parameter list:
@defopt c-macro-names-with-semicolon

View file

@ -148,6 +148,11 @@ the beginning:
You may wish to add such a statement to your init file, if you
make frequent use of features from this package.
Code that only uses macros from this package can enclose the above in
@code{eval-when-compile}. Internally, this library is divided into
several files, @pxref{Organization}. Your code should only ever load
the main @file{cl-lib} file, which will load the others as needed.
@node Organization
@section Organization
@ -3364,7 +3369,7 @@ was @code{nil} for all elements.
@defun cl-notevery predicate seq &rest more-seqs
This function calls @var{predicate} on each element of the sequence(s)
in turn; it returns a non-@code{nil} value as soon as @var{predicate}
returns @code{nil} for any element, or @code{t} if the predicate was
returns @code{nil} for any element, or @code{nil} if the predicate was
true for all elements.
@end defun

View file

@ -828,6 +828,7 @@ Various
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
* Spam Package:: A package for filtering and processing spam.
* The Gnus Registry:: A package for tracking messages by Message-ID.
* The Gnus Cloud:: A package for synchronizing Gnus marks.
* Other modes:: Interaction with other modes.
* Various Various:: Things that are really various.
@ -22208,6 +22209,7 @@ to you, using @kbd{G b u} and updating the group will usually fix this.
* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
* Spam Package:: A package for filtering and processing spam.
* The Gnus Registry:: A package for tracking messages by Message-ID.
* The Gnus Cloud:: A package for synchronizing Gnus marks.
* Other modes:: Interaction with other modes.
* Various Various:: Things that are really various.
@end menu
@ -26166,6 +26168,100 @@ default this is just @code{(marks)} so the custom registry marks are
precious.
@end defvar
@node The Gnus Cloud
@section The Gnus Cloud
@cindex cloud
@cindex gnus-cloud
@cindex synchronization
@cindex sync
@cindex synch
The Gnus Cloud is a way to synchronize marks and general files and
data across multiple machines.
Very often, you want all your marks (what articles you've read, which
ones were important, and so on) to be synchronized between several
machines. With IMAP, that's built into the protocol, so you can read
nnimap groups from many machines and they are automatically
synchronized. But NNTP, nnrss, and many other backends do not store
marks, so you have to do it locally.
The Gnus Cloud package stores the marks, plus any files you choose, on
an IMAP server in a special folder. It's like a
DropTorrentSyncBoxOakTree(TM).
@menu
* Gnus Cloud Setup::
* Gnus Cloud Usage::
@end menu
@node Gnus Cloud Setup
@subsection Gnus Cloud Setup
Setting up the Gnus Cloud takes less than a minute. From the Group
buffer:
Press @kbd{^} to go to the Server buffer. Here you'll see all the
servers that Gnus knows. @xref{Server Buffer}.
Then press @kbd{i} to mark any servers as cloud-synchronized (their marks are synchronized).
Then press @kbd{I} to mark a single server as the cloud host (it must
be an IMAP server, and will host a special IMAP folder with all the
synchronization data). This will set the variable
@code{gnus-cloud-method} (using the Customize facilities), then ask
you to optionally upload your first CloudSynchronizationDataPack(TM).
@node Gnus Cloud Usage
@subsection Gnus Cloud Usage
After setting up, you can use these shortcuts from the Group buffer:
@table @kbd
@item ~ RET
@item ~ d
@findex gnus-cloud-download-all-data
@cindex cloud, download
Download the latest Gnus Cloud data.
@item ~ u
@item ~ ~
@findex gnus-cloud-upload-all-data
@cindex cloud, download
Upload the local Gnus Cloud data. Creates a new
CloudSynchronizationDataPack(TM).
@end table
But wait, there's more. Of course there's more. So much more. You can
customize all of the following.
@defvar gnus-cloud-synced-files
These are the files that will be part of every
CloudSynchronizationDataPack(TM). They are included in every upload,
so don't synchronize a lot of large files. Files under 100Kb are best.
@end defvar
@defvar gnus-cloud-storage-method
This is a choice from several storage methods. It's highly recommended
to use the EPG facilities. It will be automatic if have GnuPG
installed and EPG loaded. Otherwise, you could use Base64+gzip,
Base64, or no encoding.
@end defvar
@defvar gnus-cloud-interactive
When this is set, and by default it is, the Gnus Cloud package will
ask you for confirmation here and there. Leave it on until you're
comfortable with the package.
@end defvar
@defvar gnus-cloud-method
The name of the IMAP server to store the
CloudSynchronizationDataPack(TM)s. It's easiest to set this from the
Server buffer (@pxref{Gnus Cloud Setup}).
@end defvar
@node Other modes
@section Interaction with other modes

View file

@ -67,7 +67,6 @@ Message mode buffers.
* Interface:: Setting up message buffers.
* Commands:: Commands you can execute in message mode buffers.
* Variables:: Customizing the message buffers.
* Compatibility:: Making Message backwards compatible.
* Appendices:: More technical things.
* GNU Free Documentation License:: The license for this documentation.
* Index:: Variable, function and concept index.
@ -2587,22 +2586,6 @@ An @dfn{action} can be either: a normal function, or a list where the
a form to be @code{eval}ed.
@node Compatibility
@chapter Compatibility
@cindex compatibility
Message uses virtually only its own variables---older @code{mail-}
variables aren't consulted. To force Message to take those variables
into account, you can put the following in your @file{.emacs} file:
@lisp
(require 'messcompat)
@end lisp
This will initialize many Message variables from the values in the
corresponding mail variables.
@node Appendices
@chapter Appendices

View file

@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2016-05-28.16}
\def\texinfoversion{2016-06-18.21}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@ -1192,6 +1192,7 @@
\ifx\pdfescapestring\thisisundefined
% No primitive available; should we give a warning or log?
% Many times it won't matter.
\xdef#1{#1}%
\else
% The expandable \pdfescapestring primitive escapes parentheses,
% backslashes, and other special chars.
@ -1311,8 +1312,10 @@
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
\turnoffactive
\makevalueexpandable
\turnoffactive
% Use ASCII approximations in destination names.
\passthroughcharsfalse
\def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
@ -1357,8 +1360,21 @@
\fi
%
% Also escape PDF chars in the display string.
\edef\pdfoutlinetext{#1}%
\txiescapepdf\pdfoutlinetext
\bgroup
\ifx \declaredencoding \latone
% The PDF format can use an extended form of Latin-1 in bookmark
% strings. See Appendix D of the PDF Reference, Sixth Edition, for
% the "PDFDocEncoding".
\passthroughcharstrue
\fi
\ifx \declaredencoding \utfeight
% TODO: the PDF format can use UTF-16 in bookmark strings, but the
% code for this isn't done yet.
\fi
\globaldefs=1
\edef\pdfoutlinetext{#1}%
\txiescapepdf\pdfoutlinetext
\egroup
%
\pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
@ -5948,18 +5964,32 @@
\global\advance\dimen@ by 1pt
\repeat
}%
\multiply\dimen@ii by 4
\divide\dimen@ii by 5
\ifdim\ht3<\dimen@ii
% Column heights are too different, so don't make their bottoms
% flush with each other. The glue at the end of the second column
% allows a second column to stretch, reducing the difference in
% height between the two.
\setbox0=\vbox to\dimen@{\unvbox1\vfill}%
\setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
\ifdim2\ht1>\vsize
% The left column has come out longer than the page itself. (Note
% that we have doubled \vsize for the double columns, so
% the actual height of the page is 0.5\vsize). Just split the last
% of the double column material roughly in half.
\setbox2=\box0
\setbox0 = \vsplit2 to \dimen@ii
\setbox0=\vbox to\dimen@ii{\unvbox0}%
\setbox2=\vbox to\dimen@ii{\unvbox2}%
\else
\setbox0=\vbox to\dimen@{\unvbox1}%
\setbox2=\vbox to\dimen@{\unvbox3}%
\multiply\dimen@ii by 5
\divide\dimen@ii by 4
\global\setbox3 = \copy0
\global\setbox1 = \vsplit3 to \dimen@ii
\global\setbox\balancedcolumns=\vbox{\pagesofar}%
\ifdim\ht3<\dimen@ii
% Column heights are too different, so don't make their bottoms
% flush with each other. The glue at the end of the second column
% allows a second column to stretch, reducing the difference in
% height between the two.
\setbox0=\vbox to\dimen@{\unvbox1\vfill}%
\setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
\else
\setbox0=\vbox to\dimen@{\unvbox1}%
\setbox2=\vbox to\dimen@{\unvbox3}%
\fi
\fi
\fi
%
@ -10250,7 +10280,7 @@
\countUTFx = "80
\countUTFy = "C2
\def\UTFviiiTmp{%
\gdef~{
\gdef~{%
\ifpassthroughchars $\fi}}%
\UTFviiiLoop
@ -10301,6 +10331,15 @@
\fi
}
% These macros are used here to construct the name of a control
% sequence to be defined.
\def\UTFviiiTwoOctetsName#1#2{%
\csname u8:#1\string #2\endcsname}%
\def\UTFviiiThreeOctetsName#1#2#3{%
\csname u8:#1\string #2\string #3\endcsname}%
\def\UTFviiiFourOctetsName#1#2#3#4{%
\csname u8:#1\string #2\string #3\string #4\endcsname}%
% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX)
% Definition macro to replace the Unicode character
% Definition macro that is used by @U command
@ -10317,17 +10356,18 @@
\countUTFz = "#1\relax
\begingroup
\parseXMLCharref
% Give \u8:... its definition. The sequence of seven \expandafter's
% expands after the \gdef three times, e.g.
%
% Access definitions of characters given UTF-8 sequences
\def\UTFviiiTwoOctets##1##2{%
\csname u8:##1\string ##2\endcsname}%
\def\UTFviiiThreeOctets##1##2##3{%
\csname u8:##1\string ##2\string ##3\endcsname}%
\def\UTFviiiFourOctets##1##2##3##4{%
\csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
\expandafter\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
\gdef\UTFviiiTmp{#2}%
% 1. \UTFviiTwoOctetsName B1 B2
% 2. \csname u8:B1 \string B2 \endcsname
% 3. \u8: B1 B2 (a single control sequence token)
%
\expandafter\expandafter
\expandafter\expandafter
\expandafter\expandafter
\expandafter\gdef \UTFviiiTmp{#2}%
%
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\message{Internal error, already defined: #1}%
@ -10337,37 +10377,53 @@
\expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
\endgroup}
%
% Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp.
% Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp
% to the corresponding UTF-8 sequence.
\gdef\parseXMLCharref{%
\ifnum\countUTFz < "A0\relax
\errhelp = \EMsimple
\errmessage{Cannot define Unicode char value < 00A0}%
\else\ifnum\countUTFz < "800\relax
\parseUTFviiiA,%
\parseUTFviiiB C\UTFviiiTwoOctets.,%
\parseUTFviiiB C\UTFviiiTwoOctetsName.,%
\else\ifnum\countUTFz < "10000\relax
\parseUTFviiiA;%
\parseUTFviiiA,%
\parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
\parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}%
\else
\parseUTFviiiA;%
\parseUTFviiiA,%
\parseUTFviiiA!%
\parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
\parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}%
\fi\fi\fi
}
% Extract a byte from the end of the UTF-8 representation of \countUTFx.
% It must be a non-initial byte in the sequence.
% Change \uccode of #1 for it to be used in \parseUTFviiiB as one
% of the bytes.
\gdef\parseUTFviiiA#1{%
\countUTFx = \countUTFz
\divide\countUTFz by 64
\countUTFy = \countUTFz
\countUTFy = \countUTFz % Save to be the future value of \countUTFz.
\multiply\countUTFz by 64
% \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
% in order to get the last five bits.
\advance\countUTFx by -\countUTFz
% Convert this to the byte in the UTF-8 sequence.
\advance\countUTFx by 128
\uccode `#1\countUTFx
\countUTFz = \countUTFy}
% Used to set \UTFviiiTmp to a UTF-8 byte sequence
% Used to put a UTF-8 byte sequence into \UTFviiiTmp
% #1 is the increment for \countUTFz to yield a the first byte of the UTF-8
% sequence.
% #2 is one of the \UTFviii*OctetsName macros.
% #3 is always a full stop (.)
% #4 is a template for the other bytes in the sequence. The values for these
% bytes is substituted in here with \uppercase using the \uccode's.
\gdef\parseUTFviiiB#1#2#3#4{%
\advance\countUTFz by "#10\relax
\uccode `#3\countUTFz

View file

@ -565,7 +565,7 @@ remote host.
@command{ssh} can also take extra parameters as port numbers. For
example, a host on port 42 is specified as @file{host#42} (the real
host name, a hash sign, then a port number). It is the same as passing
@code{-p 42} to the @command{ssh} command.
@samp{-p 42} to the @command{ssh} command.
@item @option{telnet}
@cindex method telnet
@ -832,7 +832,7 @@ Since SMB shares end in the @code{$} character, @value{tramp} must use
substitutions.
When @value{tramp} is not specific about the share name or uses the
generic remote directory @code{/}, @command{smbclient} returns all
generic remote directory @file{/}, @command{smbclient} returns all
available shares.
Since SMB authentication is based on each SMB share, @value{tramp}
@ -957,6 +957,22 @@ syntax requires a leading volume (share) name, for example:
based on standard protocols, such as HTTP@. @option{davs} does the same
but with SSL encryption. Both methods support the port numbers.
@item @option{gdrive}
@cindex method gdrive
@cindex gdrive method
@cindex Google Drive
Via the @option{gdrive} method it is possible to access your Google
Drive online storage. User and host name of the remote file name are
your email address of the Google Drive credentials, like
@file{@trampfn{gdrive,john.doe@@gmail.com,/}}. These credentials must
be populated in your @command{Online Accounts} application outside Emacs.
Since Google Drive uses cryptic blob file names internally,
@value{tramp} works with the @code{display-name} of the files. This
could produce unexpected behaviour in case two files in the same
directory have the same @code{display-name}, such a situation must be avoided.
@item @option{obex}
@cindex method obex
@cindex obex method
@ -986,8 +1002,8 @@ requires the SYNCE-GVFS plugin.
@vindex tramp-gvfs-methods
This custom option is a list of external methods for GVFS@. By
default, this list includes @option{afp}, @option{dav}, @option{davs},
@option{obex}, @option{sftp} and @option{synce}. Other methods to
include are: @option{ftp} and @option{smb}.
@option{gdrive}, @option{obex}, @option{sftp} and @option{synce}.
Other methods to include are: @option{ftp} and @option{smb}.
@end defopt
@ -1650,13 +1666,16 @@ shown below for @value{tramp} to use when connecting.
Another way to find the remote path is to use the path assigned to the
remote user by the remote host. @value{tramp} does not normally retain
this remote path after logging. However, @code{tramp-own-remote-path}
this remote path after login. However, @code{tramp-own-remote-path}
preserves the path value, which can be used to update
@code{tramp-remote-path}.
@lisp
(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
@end lisp
@strong{Note} that this works only if your remote @command{/bin/sh}
shell supports the login argument @samp{-l}.
@end defopt
When remote search paths are changed, local @value{tramp} caches must
@ -1848,7 +1867,7 @@ install and execute a listener as follows (see @code{tramp-methods}):
@end example
The above command-line syntax has changed with @command{busybox}
versions. If @command{nc} refuses the @command{-p} parameter, then
versions. If @command{nc} refuses the @samp{-p} parameter, then
overwrite as follows:
@lisp
@ -1876,9 +1895,9 @@ Applications such as @code{SSHDroid} that run @command{sshd} process
on the Android device can accept any @option{ssh}-based methods
provided these settings are adjusted:
@code{sh} must be specified for remote shell since Android devices do
not provide @code{/bin/sh}. @code{sh} will then invoke whatever shell is
installed on the device with this setting:
@command{sh} must be specified for remote shell since Android devices
do not provide @command{/bin/sh}. @command{sh} will then invoke
whatever shell is installed on the device with this setting:
@lisp
(add-to-list 'tramp-connection-properties
@ -2854,9 +2873,9 @@ To test if this is the case, open a remote shell and check if the output
of @command{ls} is in color.
To disable @acronym{ANSI} escape sequences from the remote hosts,
disable @option{--color=yes} or @option{--color=auto} in the remote
host's @file{.bashrc} or @file{.profile}. Turn this alias on and off
to see if file name completion works.
disable @samp{--color=yes} or @samp{--color=auto} in the remote host's
@file{.bashrc} or @file{.profile}. Turn this alias on and off to see
if file name completion works.
@item
File name completion does not work in directories with large number of
@ -2869,7 +2888,7 @@ shell's limit on length of command lines and hang. @value{tramp} uses
globbing.
To test if globbing hangs, open a shell on the remote host and then
run @samp{ls -d * ..?* > /dev/null}.
run @command{ls -d * ..?* > /dev/null}.
When testing, ensure the remote shell is the same shell
(@command{/bin/sh}, @command{ksh} or @command{bash}), that

View file

@ -8,7 +8,7 @@
@c In the Tramp GIT, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
@set trampver 2.3.0-pre
@set trampver 2.3.1-pre
@c Other flags from configuration
@set instprefix /usr/local

View file

@ -351,14 +351,13 @@ and changed ada-mode.texi frames.texi generic-x.el texinfo.el
Artem Chuprina: changed message.el
Artur Malabarba: wrote character-fold-tests.el faces-tests.el
isearch-tests.el let-alist.el simple-test.el sort-tests.el
tabulated-list-test.el
and changed package.el isearch.el character-fold.el files.el
tabulated-list.el package-test.el menu-bar.el faces.el files-x.el
help-fns.el replace.el align.el bytecomp.el custom.texi cl-lib-tests.el
custom.el map.el simple.el subr-tests.el variables.texi bindings.el
and 39 other files
Artur Malabarba: wrote char-fold-tests.el faces-tests.el isearch-tests.el
let-alist.el simple-test.el sort-tests.el tabulated-list-test.el
and changed package.el isearch.el lisp/char-fold.el files.el
tabulated-list.el package-test.el menu-bar.el
test/automated/char-fold-tests.el faces.el files-x.el help-fns.el
replace.el align.el bytecomp.el custom.texi cl-lib-tests.el custom.el
map.el simple.el subr-tests.el variables.texi and 40 other files
Arun Persaud: changed org-agenda.el org-src.el
@ -3683,7 +3682,7 @@ Prestoo Ten: changed screen.el
Primoz Peterlin: changed TUTORIAL.sl
Przemyslaw Wojnowski: changed cl-lib-tests.el
Przemysław Wojnowski: changed cl-lib-tests.el
Przemysław Wojnowski: wrote obarray-tests.el sgml-mode-tests.el
and changed obarray.el sgml-mode.el

View file

@ -25,6 +25,9 @@ otherwise leave it unmarked.
* Installation Changes in Emacs 25.2
** By default libgnutls is now required when building Emacs.
Use 'configure --with-gnutls=no' to build even when GnuTLS is missing.
** The new option 'configure --enable-gcc-warnings=warn-only' causes
GCC to issue warnings without stopping the build. This behavior is
now the default in developer builds. As before, use
@ -56,6 +59,13 @@ affected by this, as SGI stopped supporting IRIX in December 2013.
* Changes in Emacs 25.2
+++
** The new user option 'mouse-select-region-move-to-beginning'
controls the position of point when double-clicking mouse-1 on the end
of a parenthetical grouping or string-delimiter: the default value nil
keeps point at the end of the region, setting it to non-nil moves
point to the beginning of the region.
---
** 'find-library-name' will now fall back on looking at 'load-history'
to try to locate libraries that have been loaded with an explicit path
@ -187,9 +197,47 @@ questions, with a handy way to display help texts.
'undo', undo the last replacement; bound to 'u'.
'undo-all', undo all replacements; bound to 'U'.
** 'delete-trailing-whitespace' deletes whitespace after form feed.
In modes where form feed was treated as a whitespace character,
'delete-trailing-whitespace' would keep lines containing it unchanged.
It now deletes whitespace after the last form feed thus behaving the
same as in modes where the character is not whitespace.
* Changes in Specialized Modes and Packages in Emacs 25.2
** Ibuffer
---
*** A new command 'ibuffer-copy-buffername-as-kill'; bound
to 'B'.
---
*** New command 'ibuffer-change-marks'; bound to '* c'.
---
*** A new command 'ibuffer-mark-by-locked' to mark
all locked buffers; bound to '% L'.
---
*** A new option 'ibuffer-locked-char' to indicate
locked buffers; Ibuffer shows a new column displaying
'ibuffer-locked-char' for locked buffers.
---
*** A new command 'ibuffer-unmark-all-marks' to unmark
all buffers without asking confirmation; bound to
'U'; 'ibuffer-do-replace-regexp' bound to 'r'.
---
*** A new command `ibuffer-mark-by-content-regexp' to mark buffers
whose content matches a regexp; bound to '% g'.
---
*** Two new options `ibuffer-never-search-content-name' and
`ibuffer-never-search-content-mode' used by
`ibuffer-mark-by-content-regexp'.
** Compilation mode
---
@ -197,6 +245,14 @@ questions, with a handy way to display help texts.
** Dired
+++
*** A New option 'dired-always-read-filesystem' default to nil.
If non-nil, buffers visiting files are reverted before search them;
for instance, in 'dired-mark-files-containing-regexp' a non-nil value
of this option means the file is revisited in a temporary buffer;
this temporary buffer is the actual buffer searched: the original buffer
visiting the file is not modified.
+++
*** In wdired, when editing files to contain slash characters,
the resulting directories are automatically created. Whether to do
@ -302,6 +358,10 @@ different group ID.
+++
*** New connection method "doas" for OpenBSD hosts.
+++
*** New connection method "gdrive", which allows to access Google
Drive onsite repositories.
---
** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
@ -357,6 +417,13 @@ string is computed dynamically based on 'url-privacy-level'.
colorful faces to make it more obvious to the user what the state is.
See the 'vc-faces' customization group.
** CC mode
*** Opening a .h file will turn C or C++ mode depending on language used.
This is done with the help of 'c-or-c++-mode' function which analyses
contents of the buffer to determine whether it's a C or C++ source
file.
* New Modes and Packages in Emacs 25.2
@ -394,6 +461,9 @@ function 'check-declare-errmsg' has been removed.
* Lisp Changes in Emacs 25.2
** New function undo-amalgamate-change-group to get rid of undo-boundaries
between two states.
** New var `definition-prefixes' is a hashtable mapping prefixes to the
files where corresponding definitions can be found. This can be used
to fetch definitions that are not yet loaded, for example for `C-h f'.
@ -411,9 +481,6 @@ by setting 'autoload-timestamps' to nil.
FIXME As an experiment, nil is the current default.
If no insurmountable problems before next release, it can stay that way.
** 'ert-with-function-mocked' of 'ert-x package allows mocking of functions
in unit tests.
---
** 'gnutls-boot' now takes a parameter :complete-negotiation that says
that negotiation should complete even on non-blocking sockets.
@ -499,6 +566,9 @@ ABBR is a time zone abbreviation. The affected functions are
*** New basic face 'fixed-pitch-serif', for a fixed-width font with serifs.
The Info-quoted and tex-verbatim faces now default to inheriting from it.
** New built-in function `mapcan' which avoids unnecessary consing (and garbage
collection).
* Changes in Emacs 25.2 on Non-Free Operating Systems
@ -2173,7 +2243,8 @@ codeset is "UTF-8" (as in "en_US.UTF-8"). This is needed because
MS-Windows doesn't support UTF-8 as codeset in its locales.
+++
** New function 'alist-get', which is also a valid place (aka lvalue).
** New function 'alist-get', which is a generalized variable
suitable for use with 'setf'.
+++
** New function 'funcall-interactively', which works like 'funcall'

View file

@ -388,7 +388,6 @@ w32_window_app (void)
directly into the argv array of the child process. */
int w32_execvp (const char *, char **);
extern int execvp (const char*, char **);
int
w32_execvp (const char *path, char **argv)

View file

@ -491,7 +491,7 @@ write_c_args (char *func, char *buf, int minargs, int maxargs)
{
char *p;
bool in_ident = false;
char *ident_start IF_LINT (= NULL);
char *ident_start UNINIT;
ptrdiff_t ident_length = 0;
fputs ("(fn", stdout);

View file

@ -98,7 +98,7 @@ getppid (void)
getppid_parent = OpenProcess (SYNCHRONIZE, FALSE, atoi (ppid));
if (!getppid_parent)
{
printf ("Failed to open handle to parent process: %d\n",
printf ("Failed to open handle to parent process: %lu\n",
GetLastError ());
exit (1);
}
@ -115,7 +115,7 @@ getppid (void)
return 1;
case WAIT_FAILED:
default:
printf ("Checking parent status failed: %d\n", GetLastError ());
printf ("Checking parent status failed: %lu\n", GetLastError ());
exit (1);
}
}
@ -258,16 +258,6 @@ fchown (int fd, unsigned uid, unsigned gid)
return 0;
}
/* Place a wrapper around the MSVC version of ctime. It returns NULL
on network directories, so we handle that case here.
(Ulrich Leodolter, 1/11/95). */
char *
sys_ctime (const time_t *t)
{
char *str = (char *) ctime (t);
return (str ? str : "Sun Jan 01 00:00:00 1970");
}
FILE *
sys_fopen (const char * path, const char * mode)
{

View file

@ -222,24 +222,35 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
? (a) < (min) >> (b) \
: (max) >> (b) < (a))
/* True if __builtin_add_overflow (A, B, P) works when P is null. */
#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__)
/* The _GL*_OVERFLOW macros have the same restrictions as the
*_RANGE_OVERFLOW macros, except that they do not assume that operands
(e.g., A and B) have the same type as MIN and MAX. Instead, they assume
that the result (e.g., A + B) has that type. */
#define _GL_ADD_OVERFLOW(a, b, min, max) \
((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
: (a) < 0 ? (b) <= (a) + (b) \
: (b) < 0 ? (a) <= (a) + (b) \
: (a) + (b) < (b))
#define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
: (a) < 0 ? 1 \
: (b) < 0 ? (a) - (b) <= (a) \
: (a) < (b))
#define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
(((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
|| INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
# define _GL_ADD_OVERFLOW(a, b, min, max)
__builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0)
# define _GL_SUBTRACT_OVERFLOW(a, b, min, max)
__builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0)
# define _GL_MULTIPLY_OVERFLOW(a, b, min, max)
__builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0)
#else
# define _GL_ADD_OVERFLOW(a, b, min, max) \
((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
: (a) < 0 ? (b) <= (a) + (b) \
: (b) < 0 ? (a) <= (a) + (b) \
: (a) + (b) < (b))
# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
: (a) < 0 ? 1 \
: (b) < 0 ? (a) - (b) <= (a) \
: (a) < (b))
# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
(((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
|| INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
#endif
#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \
((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
: (a) < 0 ? (b) <= (a) + (b) - 1 \
@ -304,8 +315,12 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
_GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
#define INT_SUBTRACT_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
#define INT_NEGATE_OVERFLOW(a) \
INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL
# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a)
#else
# define INT_NEGATE_OVERFLOW(a) \
INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
#endif
#define INT_MULTIPLY_OVERFLOW(a, b) \
_GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
#define INT_DIVIDE_OVERFLOW(a, b) \
@ -325,7 +340,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
_GL_INT_MINIMUM (0 * (b) + (a)), \
_GL_INT_MAXIMUM (0 * (b) + (a)))
/* Compute A + B, A - B, A * B, respectively, storing the result into *R.
/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R.
Return 1 if the result overflows. See above for restrictions. */
#define INT_ADD_WRAPV(a, b, r) \
_GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, INT_ADD_OVERFLOW)
@ -350,9 +365,10 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
# define _GL__GENERIC_BOGUS 0
#endif
/* Store A <op> B into *R, where OP specifies the operation.
BUILTIN is the builtin operation, and OVERFLOW the overflow predicate.
See above for restrictions. */
/* Store the low-order bits of A <op> B into *R, where OP specifies
the operation. BUILTIN is the builtin operation, and OVERFLOW the
overflow predicate. Return 1 if the result overflows. See above
for restrictions. */
#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow)
# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r)
#elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
@ -403,7 +419,8 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX);
/* Store the low-order bits of A <op> B into *R, where the operation
is given by OP. Use the unsigned type UT for calculation to avoid
overflow problems. *R's type is T, with extremal values TMIN and
TMAX. T must be a signed integer type. */
TMAX. T must be a signed integer type. Return 1 if the result
overflows. */
#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \
(sizeof ((a) op (b)) < sizeof (t) \
? _GL_INT_OP_CALC1 ((t) (a), (t) (b), r, op, overflow, ut, t, tmin, tmax) \

View file

@ -20,15 +20,13 @@
#include <stddef.h>
/* Default for (non-Clang) compilers that lack __has_builtin. */
#ifndef __has_builtin
# define __has_builtin(x) 0
#endif
/* Return 1 if an array of N objects, each of size S, cannot exist due
to size arithmetic overflow. S must be positive and N must be
nonnegative. This is a macro, not a function, so that it
works correctly even when SIZE_MAX < N.
/* True if N * S would overflow in a size calculation.
This expands to a constant expression if N and S are both constants.
By gnulib convention, SIZE_MAX represents overflow in size
calculations, so the conservative dividend to use here is
SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value.
@ -36,12 +34,38 @@
sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
exactly-SIZE_MAX allocations on such hosts; this avoids a test and
branch when S is known to be 1. */
#if 5 <= __GNUC__ || __has_builtin (__builtin_mul_overflow)
# define xalloc_oversized(n, s) \
({ size_t __xalloc_size; __builtin_mul_overflow (n, s, &__xalloc_size); })
#else
# define xalloc_oversized(n, s) \
#define __xalloc_oversized(n, s) \
((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
/* Return 1 if an array of N objects, each of size S, cannot exist due
to size arithmetic overflow. S must be positive and N must be
nonnegative. This is a macro, not a function, so that it
works correctly even when SIZE_MAX < N. */
/* GCC 7 __builtin_mul_overflow should easily compute this. See:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68120 */
#if 7 <= __GNUC__
# define xalloc_oversized(n, s) __builtin_mul_overflow (n, s, (size_t *) NULL)
/* GCC 5 and Clang __builtin_mul_overflow needs a temporary, and
should be used only for non-constant operands, so that
xalloc_oversized is a constant expression if both arguments are.
Do not use this if pedantic, since pedantic GCC issues a diagnostic
for ({ ... }). */
#elif ((5 <= __GNUC__ \
|| (__has_builtin (__builtin_mul_overflow) \
&& __has_builtin (__builtin_constant_p))) \
&& !__STRICT_ANSI__)
# define xalloc_oversized(n, s) \
(__builtin_constant_p (n) && __builtin_constant_p (s) \
? __xalloc_oversized (n, s) \
: ({ size_t __xalloc_size; __builtin_mul_overflow (n, s, &__xalloc_size); }))
/* Other compilers use integer division; this may be slower but is
more portable. */
#else
# define xalloc_oversized(n, s) __xalloc_oversized (n, s)
#endif
#endif /* !XALLOC_OVERSIZED_H_ */

View file

@ -1155,7 +1155,7 @@ FILE is the file from which we obtained this token."
(point-min)
(point-max))))))
(defun auto-source--symbol-keyword (symbol)
(defun auth-source--symbol-keyword (symbol)
(intern (format ":%s" symbol)))
(defun auth-source-netrc-normalize (alist filename)
@ -1191,7 +1191,7 @@ FILE is the file from which we obtained this token."
(setq lexv (funcall token-decoder lexv)))
lexv))))
(setq ret (plist-put ret
(auto-source--symbol-keyword k)
(auth-source--symbol-keyword k)
v))))
ret))
alist))
@ -1268,7 +1268,7 @@ See `auth-source-search' for details on SPEC."
;; fill in the valist with whatever data we may have from the search
;; we complete the first value if it's a list and use the value otherwise
(dolist (br base-required)
(let ((val (plist-get spec (auto-source--symbol-keyword br))))
(let ((val (plist-get spec (auth-source--symbol-keyword br))))
(when val
(let ((br-choice (cond
;; all-accepting choice (predicate is t)
@ -1280,7 +1280,7 @@ See `auth-source-search' for details on SPEC."
;; for extra required elements, see if the spec includes a value for them
(dolist (er create-extra)
(let ((k (auto-source--symbol-keyword er))
(let ((k (auth-source--symbol-keyword er))
(keys (loop for i below (length spec) by 2
collect (nth i spec))))
(when (memq k keys)
@ -1292,7 +1292,7 @@ See `auth-source-search' for details on SPEC."
;; take the first element if the data is a list
(data (or (auth-source-netrc-element-or-first data)
(plist-get current-data
(auto-source--symbol-keyword r))))
(auth-source--symbol-keyword r))))
;; this is the default to be offered
(given-default (auth-source--aget
auth-source-creation-defaults r))
@ -1382,7 +1382,7 @@ See `auth-source-search' for details on SPEC."
(when data
(setq artificial (plist-put artificial
(auto-source--symbol-keyword r)
(auth-source--symbol-keyword r)
(if (eq r 'secret)
(lexical-let ((data data))
(lambda () data))
@ -1840,7 +1840,7 @@ entries for git.gnus.org:
(defun auth-source-macos-keychain-result-append (result generic k v)
(push v result)
(push (auto-source--symbol-keyword
(push (auth-source--symbol-keyword
(cond
((equal k "acct") "user")
;; for generic keychains, creator is host, service is port
@ -1957,7 +1957,7 @@ entries for git.gnus.org:
;; fill in the valist with whatever data we may have from the search
;; we complete the first value if it's a list and use the value otherwise
(dolist (br base-required)
(let ((val (plist-get spec (auto-source--symbol-keyword br))))
(let ((val (plist-get spec (auth-source--symbol-keyword br))))
(when val
(let ((br-choice (cond
;; all-accepting choice (predicate is t)
@ -1969,7 +1969,7 @@ entries for git.gnus.org:
;; for extra required elements, see if the spec includes a value for them
(dolist (er create-extra)
(let ((k (auto-source--symbol-keyword er))
(let ((k (auth-source--symbol-keyword er))
(keys (loop for i below (length spec) by 2
collect (nth i spec))))
(when (memq k keys)
@ -1981,7 +1981,7 @@ entries for git.gnus.org:
;; take the first element if the data is a list
(data (or (auth-source-netrc-element-or-first data)
(plist-get current-data
(auto-source--symbol-keyword r))))
(auth-source--symbol-keyword r))))
;; this is the default to be offered
(given-default (auth-source--aget
auth-source-creation-defaults r))
@ -2041,10 +2041,10 @@ entries for git.gnus.org:
(if (member r base-secret)
(setq secret-artificial
(plist-put secret-artificial
(auto-source--symbol-keyword r)
(auth-source--symbol-keyword r)
data))
(setq artificial (plist-put artificial
(auto-source--symbol-keyword r)
(auth-source--symbol-keyword r)
data))))))
(plstore-put (oref backend data)
(sha1 (format "%s@%s:%s"

View file

@ -1633,6 +1633,7 @@ calc-kill calc-kill-region calc-yank))))
(not (equal var '(calc-mode-save-mode)))
(calc-save-modes))))
(if calc-embedded-info (calc-embedded-modes-change var))
(calc-set-mode-line)
(symbol-value (car var)))))
(defun calc-toggle-banner ()

View file

@ -317,7 +317,9 @@
(list 'calcFunc-hms a))
((math-negp a)
(math-neg (math-to-hms (math-neg a) ang)))
((eq (or ang calc-angle-mode) 'rad)
((eq (or ang
(and (not math-simplifying-units) calc-angle-mode))
'rad)
(math-to-hms (math-div a (math-pi-over-180)) 'deg))
((memq (car-safe a) '(cplx polar)) a)
(t
@ -354,12 +356,16 @@
(if (eq (car-safe a) 'sdev)
(math-make-sdev (math-from-hms (nth 1 a) ang)
(math-from-hms (nth 2 a) ang))
(if (eq (or ang calc-angle-mode) 'rad)
(if (eq (or ang
(and (not math-simplifying-units) calc-angle-mode))
'rad)
(list 'calcFunc-rad a)
(list 'calcFunc-deg a)))))
((math-negp a)
(math-neg (math-from-hms (math-neg a) ang)))
((eq (or ang calc-angle-mode) 'rad)
((eq (or ang
(and (not math-simplifying-units) calc-angle-mode))
'rad)
(math-mul (math-from-hms a 'deg) (math-pi-over-180)))
(t
(math-add (math-div (math-add (math-div (nth 3 a)

View file

@ -763,12 +763,14 @@ If this can't be done, return NIL."
(defun math-to-radians (a) ; [N N]
(cond ((eq (car-safe a) 'hms)
(math-from-hms a 'rad))
((memq calc-angle-mode '(deg hms))
((and (not math-simplifying-units)
(memq calc-angle-mode '(deg hms)))
(math-mul a (math-pi-over-180)))
(t a)))
(defun math-from-radians (a) ; [N N]
(cond ((eq calc-angle-mode 'deg)
(cond ((and (not math-simplifying-units)
(eq calc-angle-mode 'deg))
(if (math-constp a)
(math-div a (math-pi-over-180))
(list 'calcFunc-deg a)))
@ -779,14 +781,16 @@ If this can't be done, return NIL."
(defun math-to-radians-2 (a &optional force-symbolic) ; [N N]
(cond ((eq (car-safe a) 'hms)
(math-from-hms a 'rad))
((memq calc-angle-mode '(deg hms))
((and (not math-simplifying-units)
(memq calc-angle-mode '(deg hms)))
(if (or calc-symbolic-mode force-symbolic)
(math-div (math-mul a '(var pi var-pi)) 180)
(math-mul a (math-pi-over-180))))
(t a)))
(defun math-from-radians-2 (a &optional force-symbolic) ; [N N]
(cond ((memq calc-angle-mode '(deg hms))
(cond ((and (not math-simplifying-units)
(memq calc-angle-mode '(deg hms)))
(if (or calc-symbolic-mode force-symbolic)
(math-div (math-mul 180 a) '(var pi var-pi))
(math-div a (math-pi-over-180))))

View file

@ -191,7 +191,7 @@ TIME should be either a time value or a date-time string."
(time-subtract nil time))
;;;###autoload
(define-obsolete-function-alias 'subtract-time 'time-subtract "26.1")
(define-obsolete-function-alias 'subtract-time 'time-subtract "25.2")
;;;###autoload
(defun date-to-day (date)

View file

@ -532,9 +532,9 @@ non-nil, the amount returned will be relative to past time worked."
(message "%s" string)
string)))
(define-obsolete-function-alias 'timeclock-time-to-seconds 'float-time "26.1")
(define-obsolete-function-alias 'timeclock-time-to-seconds 'float-time "25.2")
(define-obsolete-function-alias 'timeclock-seconds-to-time 'seconds-to-time
"26.1")
"25.2")
;; Should today-only be removed in favor of timeclock-relative? - gm
(defsubst timeclock-when-to-leave (&optional today-only)

View file

@ -5750,8 +5750,11 @@ With non-nil argument FILE prompt for a file and complete only
against categories in that file; otherwise complete against all
categories from `todo-category-completions-files'."
;; Allow SPC to insert spaces, for adding new category names.
(let ((map minibuffer-local-completion-map))
(define-key map " " nil)
(let ((minibuffer-local-completion-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map minibuffer-local-completion-map)
(define-key map " " nil)
map)))
(let* ((add (eq match-type 'add))
(archive (eq match-type 'archive))
(file0 (when (and file (> (length todo-files) 1))

View file

@ -64,12 +64,12 @@
(defcustom project-linux-compile-target-command (concat ede-make-command " -k -C %s SUBDIRS=%s")
"*Default command used to compile a target."
"Default command used to compile a target."
:group 'project-linux
:type 'string)
(defcustom project-linux-compile-project-command (concat ede-make-command " -k -C %s")
"*Default command used to compile a project."
"Default command used to compile a project."
:group 'project-linux
:type 'string)

View file

@ -53,17 +53,17 @@
)
(defcustom project-am-compile-project-command nil
"*Default command used to compile a project."
"Default command used to compile a project."
:group 'project-am
:type '(choice (const nil) string))
(defcustom project-am-compile-target-command (concat ede-make-command " -k %s")
"*Default command used to compile a project."
"Default command used to compile a project."
:group 'project-am
:type 'string)
(defcustom project-am-debug-target-function 'gdb
"*Default Emacs command used to debug a target."
"Default Emacs command used to debug a target."
:group 'project-am
:type 'function) ; make this be a list some day

View file

@ -55,12 +55,12 @@
t)
(defcustom ede-simple-save-directory "~/.ede"
"*Directory where simple EDE project overlays are saved."
"Directory where simple EDE project overlays are saved."
:group 'ede
:type 'directory)
(defcustom ede-simple-save-file-name "ProjSimple.ede"
"*File name used for simple project wrappers."
"File name used for simple project wrappers."
:group 'ede
:type 'string)

View file

@ -296,7 +296,7 @@ Return the defined symbol as a special spp lex token."
;;; Conditional Skipping
;;
(defcustom semantic-c-obey-conditional-section-parsing-flag t
"*Non-nil means to interpret preprocessor #if sections.
"Non-nil means to interpret preprocessor #if sections.
This implies that some blocks of code will not be parsed based on the
values of the conditions in the #if blocks."
:group 'c

View file

@ -149,8 +149,10 @@ compound strings."
(nth 1 form))
(t nil)))
(defvar semantic-elisp-store-documentation-in-tag nil
"*When non-nil, store documentation strings in the created tags.")
(defcustom semantic-elisp-store-documentation-in-tag nil
"When non-nil, store documentation strings in the created tags."
:type 'boolean
:group 'semantic)
(defun semantic-elisp-do-doc (str)
"Return STR as a documentation string IF they are enabled."

View file

@ -568,7 +568,7 @@ if INLINE, then completion is happening inline in a buffer."
(:underline "yellow"))
(((class color) (background light))
(:underline "brown")))
"*Face used to show the region being completed inline.
"Face used to show the region being completed inline.
The face is used in `semantic-complete-inline-tag-engine'."
:group 'semantic-faces)
@ -1370,7 +1370,7 @@ This object type doesn't do focus, so will never have a focus object."
;; Traditional displayor
(defcustom semantic-completion-displayor-format-tag-function
#'semantic-format-tag-name
"*A Tag format function to use when showing completions."
"A Tag format function to use when showing completions."
:group 'semantic
:type semantic-format-tag-custom-list)
@ -1871,7 +1871,7 @@ Use this to enable custom editing.")
(defcustom semantic-complete-inline-analyzer-displayor-class
'semantic-displayor-traditional
"*Class for displayor to use with inline completion."
"Class for displayor to use with inline completion."
:group 'semantic
:type semantic-complete-inline-custom-type
)
@ -2075,7 +2075,7 @@ completion works."
(defcustom semantic-complete-inline-analyzer-idle-displayor-class
'semantic-displayor-ghost
"*Class for displayor to use with inline completion at idle time."
"Class for displayor to use with inline completion at idle time."
:group 'semantic
:type semantic-complete-inline-custom-type
)

View file

@ -902,7 +902,7 @@ instead."
This makes it appear more like the results of a `semantic-find-' call.
This is like `semanticdb-strip-find-results', except the input list RESULTS
will be changed."
(apply #'nconc (mapcar #'cdr results)))
(mapcan #'cdr results))
(defun semanticdb-find-results-p (resultp)
"Non-nil if RESULTP is in the form of a semanticdb search result.

View file

@ -814,7 +814,7 @@ local variable."
;; associated databases.
(defcustom semanticdb-project-roots nil
"*List of directories, where each directory is the root of some project.
"List of directories, where each directory is the root of some project.
All subdirectories of a root project are considered a part of one project.
Values in this string can be overridden by project management programs
via the `semanticdb-project-root-functions' variable."

View file

@ -49,7 +49,7 @@
;;
(defface semantic-decoration-on-includes
nil
"*Overlay Face used on includes that are not in some other state.
"Overlay Face used on includes that are not in some other state.
Used by the decoration style: `semantic-decoration-on-includes'."
:group 'semantic-faces)
@ -119,7 +119,7 @@ Used by the decoration style: `semantic-decoration-on-includes'."
(:background "#900000"))
(((class color) (background light))
(:background "#fff0f0")))
"*Face used to show includes that cannot be found.
"Face used to show includes that cannot be found.
Used by the decoration style: `semantic-decoration-on-unknown-includes'."
:group 'semantic-faces)
@ -182,7 +182,7 @@ Used by the decoration style: `semantic-decoration-on-unknown-includes'."
(:background "#009000"))
(((class color) (background light))
(:background "#f0fdf0")))
"*Face used to show includes that have no file, but do have a DB table.
"Face used to show includes that have no file, but do have a DB table.
Used by the decoration style: `semantic-decoration-on-fileless-includes'."
:group 'semantic-faces)
@ -245,7 +245,7 @@ Used by the decoration style: `semantic-decoration-on-fileless-includes'."
(:background "#555500"))
(((class color) (background light))
(:background "#ffff55")))
"*Face used to show includes that have not yet been parsed.
"Face used to show includes that have not yet been parsed.
Used by the decoration style: `semantic-decoration-on-unparsed-includes'."
:group 'semantic-faces)

View file

@ -455,7 +455,7 @@ Does not provide overlines for prototypes.")
(:overline "cyan"))
(((class color) (background light))
(:overline "blue")))
"*Face used to show long tags in.
"Face used to show long tags in.
Used by decoration style: `semantic-tag-boundary'."
:group 'semantic-faces)
@ -504,7 +504,7 @@ Used by decoration style: `semantic-tag-boundary'."
(:background "#200000"))
(((class color) (background light))
(:background "#8fffff")))
"*Face used to show privately scoped tags in.
"Face used to show privately scoped tags in.
Used by the decoration style: `semantic-decoration-on-private-members'."
:group 'semantic-faces)
@ -526,7 +526,7 @@ Use a primary decoration."
(:background "#000020"))
(((class color) (background light))
(:background "#fffff8")))
"*Face used to show protected scoped tags in.
"Face used to show protected scoped tags in.
Used by the decoration style: `semantic-decoration-on-protected-members'."
:group 'semantic-faces)

View file

@ -559,14 +559,14 @@ Optional argument COLOR means highlight the prototype with font-lock colors."
;;; UML display styles
;;
(defcustom semantic-uml-colon-string " : "
"*String used as a color separator between parts of a UML string.
"String used as a color separator between parts of a UML string.
In UML, a variable may appear as `varname : type'.
Change this variable to change the output separator."
:group 'semantic
:type 'string)
(defcustom semantic-uml-no-protection-string ""
"*String used to describe when no protection is specified.
"String used to describe when no protection is specified.
Used by `semantic-format-tag-uml-protection-to-string'."
:group 'semantic
:type 'string)

View file

@ -146,7 +146,7 @@ Completion options are calculated with `semantic-analyze-possible-completions'."
(defcustom semantic-ia-completion-menu-format-tag-function
'semantic-format-tag-uml-concise-prototype
"*Function used to convert a tag to a string during completion."
"Function used to convert a tag to a string during completion."
:group 'semantic
:type semantic-format-tag-custom-list)

View file

@ -141,7 +141,7 @@ Use the command `semantic-idle-scheduler-mode' to change this variable.")
(make-variable-buffer-local 'semantic-idle-scheduler-mode)
(defcustom semantic-idle-scheduler-max-buffer-size 0
"*Maximum size in bytes of buffers where idle-scheduler is enabled.
"Maximum size in bytes of buffers where idle-scheduler is enabled.
If this value is less than or equal to 0, idle-scheduler is enabled in
all buffers regardless of their size."
:group 'semantic
@ -303,13 +303,13 @@ call additional functions registered with the timer calls."
;; Unlike the shorter timer, the WORK timer will kick of tasks that
;; may take a long time to complete.
(defcustom semantic-idle-work-parse-neighboring-files-flag nil
"*Non-nil means to parse files in the same dir as the current buffer.
"Non-nil means to parse files in the same dir as the current buffer.
Disable to prevent lots of excessive parsing in idle time."
:group 'semantic
:type 'boolean)
(defcustom semantic-idle-work-update-headers-flag nil
"*Non-nil means to parse through header files in idle time.
"Non-nil means to parse through header files in idle time.
Disable to prevent idle time parsing of many files. If completion
is called that work will be done then instead."
:group 'semantic

View file

@ -57,7 +57,7 @@
;;;###autoload
(defcustom semantic-imenu-summary-function 'semantic-format-tag-abbreviate
"*Function to use when creating items in Imenu.
"Function to use when creating items in Imenu.
Some useful functions are found in `semantic-format-tag-functions'."
:group 'semantic-imenu
:type semantic-format-tag-custom-list)
@ -65,20 +65,20 @@ Some useful functions are found in `semantic-format-tag-functions'."
;;;###autoload
(defcustom semantic-imenu-bucketize-file t
"*Non-nil if tags in a file are to be grouped into buckets."
"Non-nil if tags in a file are to be grouped into buckets."
:group 'semantic-imenu
:type 'boolean)
(make-variable-buffer-local 'semantic-imenu-bucketize-file)
(defcustom semantic-imenu-adopt-external-members t
"*Non-nil if types in a file should adopt externally defined members.
"Non-nil if types in a file should adopt externally defined members.
C++ and CLOS can define methods that are not in the body of a class
definition."
:group 'semantic-imenu
:type 'boolean)
(defcustom semantic-imenu-buckets-to-submenu t
"*Non-nil if buckets of tags are to be turned into submenus.
"Non-nil if buckets of tags are to be turned into submenus.
This option is ignored if `semantic-imenu-bucketize-file' is nil."
:group 'semantic-imenu
:type 'boolean)
@ -86,7 +86,7 @@ This option is ignored if `semantic-imenu-bucketize-file' is nil."
;;;###autoload
(defcustom semantic-imenu-expand-type-members t
"*Non-nil if types should have submenus with members in them."
"Non-nil if types should have submenus with members in them."
:group 'semantic-imenu
:type 'boolean)
(make-variable-buffer-local 'semantic-imenu-expand-type-members)
@ -94,7 +94,7 @@ This option is ignored if `semantic-imenu-bucketize-file' is nil."
'semantic-imenu-expand-type-members "23.2")
(defcustom semantic-imenu-bucketize-type-members t
"*Non-nil if members of a type should be grouped into buckets.
"Non-nil if members of a type should be grouped into buckets.
A nil value means to keep them in the same order.
Overridden to nil if `semantic-imenu-bucketize-file' is nil."
:group 'semantic-imenu
@ -104,7 +104,7 @@ Overridden to nil if `semantic-imenu-bucketize-file' is nil."
'semantic-imenu-bucketize-type-members "23.2")
(defcustom semantic-imenu-sort-bucket-function nil
"*Function to use when sorting tags in the buckets of functions.
"Function to use when sorting tags in the buckets of functions.
See `semantic-bucketize' and the FILTER argument for more details on this function."
:group 'semantic-imenu
:type '(radio (const :tag "No Sorting" nil)
@ -120,7 +120,7 @@ See `semantic-bucketize' and the FILTER argument for more details on this functi
(make-variable-buffer-local 'semantic-imenu-sort-bucket-function)
(defcustom semantic-imenu-index-directory nil
"*Non nil to index the entire directory for tags.
"Non nil to index the entire directory for tags.
Doesn't actually parse the entire directory, but displays tags for all files
currently listed in the current Semantic database.
This variable has no meaning if semanticdb is not active."
@ -128,7 +128,7 @@ This variable has no meaning if semanticdb is not active."
:type 'boolean)
(defcustom semantic-imenu-auto-rebuild-directory-indexes nil
"*If non-nil automatically rebuild directory index imenus.
"If non-nil automatically rebuild directory index imenus.
That is when a directory index imenu is updated, automatically rebuild
other buffer local ones based on the same semanticdb."
:group 'semantic-imenu
@ -498,7 +498,7 @@ Clears all imenu menus that may be depending on the database."
"Function to convert semantic tags into `which-function' text.")
(defcustom semantic-which-function-use-color nil
"*Use color when displaying the current function with `which-function'."
"Use color when displaying the current function with `which-function'."
:group 'semantic-imenu
:type 'boolean)

View file

@ -1239,7 +1239,7 @@ of type `spp-macro-undef' is to be created."
;; written yet.
;;
(defcustom semantic-lex-spp-use-headers-flag nil
"*Non-nil means to pre-parse headers as we go.
"Non-nil means to pre-parse headers as we go.
For languages that use the Semantic pre-processor, this can
improve the accuracy of parsed files where include files
can change the state of what's parsed in the current file.
@ -1306,8 +1306,10 @@ where a valid symbol is 'system, or nil."
;;
;; These routines are for saving macro lists into an EIEIO persistent
;; file.
(defvar semantic-lex-spp-macro-max-length-to-save 200
"*Maximum length of an SPP macro before we opt to not save it.")
(defcustom semantic-lex-spp-macro-max-length-to-save 200
"Maximum length of an SPP macro before we opt to not save it."
:type 'integer
:group 'semantic)
;;;###autoload
(defun semantic-lex-spp-table-write-slot-value (value)

View file

@ -739,8 +739,10 @@ a LOCAL option.")
;; Stack of nested blocks.
(defvar semantic-lex-block-stack nil)
;;(defvar semantic-lex-timeout 5
;; "*Number of sections of lexing before giving up.")
;;(defcustom semantic-lex-timeout 5
;; "Number of sections of lexing before giving up."
;; :type 'integer
;; :group 'semantic)
(defsubst semantic-lex-debug-break (token)
"Break during lexical analysis at TOKEN."

View file

@ -263,7 +263,7 @@ If ARG is positive or nil, enable, if it is negative, disable."
'semantic-mru-bookmark-mode (if global-semantic-mru-bookmark-mode 1 -1)))
(defcustom semantic-mru-bookmark-mode-hook nil
"*Hook run at the end of function `semantic-mru-bookmark-mode'."
"Hook run at the end of function `semantic-mru-bookmark-mode'."
:group 'semantic
:type 'hook)

View file

@ -38,7 +38,7 @@
(declare-function semanticdb-file-stream "semantic/db")
(defcustom semantic-sb-autoexpand-length 1
"*Length of a semantic bucket to autoexpand in place.
"Length of a semantic bucket to autoexpand in place.
This will replace the named bucket that would have usually occurred here."
:group 'speedbar
:type 'integer)
@ -49,12 +49,12 @@ Make this buffer local for modes that have different types of tags
that should be ignored.")
(defcustom semantic-sb-button-format-tag-function 'semantic-format-tag-abbreviate
"*Function called to create the text for a but from a token."
"Function called to create the text for a but from a token."
:group 'speedbar
:type semantic-format-tag-custom-list)
(defcustom semantic-sb-info-format-tag-function 'semantic-format-tag-summarize
"*Function called to create the text for info display from a token."
"Function called to create the text for info display from a token."
:group 'speedbar
:type semantic-format-tag-custom-list)

View file

@ -76,10 +76,12 @@
(declare-function ede-up-directory "ede/files")
;;; Code:
(defvar semantic-symref-tool 'detect
"*The active symbol reference tool name.
(defcustom semantic-symref-tool 'detect
"The active symbol reference tool name.
The tool symbol can be 'detect, or a symbol that is the name of
a tool that can be used for symbol referencing.")
a tool that can be used for symbol referencing."
:type 'symbol
:group 'semantic)
(make-variable-buffer-local 'semantic-symref-tool)
;;; TOOL SETUP

View file

@ -81,7 +81,7 @@ Optional argument MODE specifies the `major-mode' to test."
(if (null (cdr args))
args
`("(" ,@args
,@(apply #'nconc (mapcar (lambda (s) `("-o" "-name" ,s)) pat))
,@(mapcan (lambda (s) `("-o" "-name" ,s)) pat)
")"))))))
(defvar grepflags)

View file

@ -187,8 +187,10 @@ If optional LEFT is non-nil insert spaces on left."
(defvar wisent-new-log-flag nil
"Non-nil means to start a new report.")
(defvar wisent-verbose-flag nil
"*Non-nil means to report verbose information on generated parser.")
(defcustom wisent-verbose-flag nil
"Non-nil means to report verbose information on generated parser."
:group 'wisent
:type 'boolean)
(defun wisent-toggle-verbose-flag ()
"Toggle whether to report verbose information on generated parser."
@ -2261,12 +2263,14 @@ tables so that there is no longer a conflict."
(setq i (1+ i))))
rrc-count))
(defvar wisent-expected-conflicts nil
"*If non-nil suppress the warning about shift/reduce conflicts.
(defcustom wisent-expected-conflicts nil
"If non-nil suppress the warning about shift/reduce conflicts.
It is a decimal integer N that says there should be no warning if
there are N shift/reduce conflicts and no reduce/reduce conflicts. A
warning is given if there are either more or fewer conflicts, or if
there are any reduce/reduce conflicts.")
there are any reduce/reduce conflicts."
:group 'wisent
:type '(choice (const nil) integer))
(defun wisent-total-conflicts ()
"Report the total number of conflicts."

View file

@ -127,8 +127,9 @@ POSITIONS are available."
(apply #'max (mapcar #'cdr pl))))))
;;; Reporting
(defvar wisent-parse-verbose-flag nil
"*Non-nil means to issue more messages while parsing.")
(defcustom wisent-parse-verbose-flag nil
"Non-nil means to issue more messages while parsing."
:type 'boolean)
(defun wisent-parse-toggle-verbose-flag ()
"Toggle whether to issue more messages while parsing."

View file

@ -55,7 +55,7 @@ Once an insertion set is done, these fields will be activated.")
(:underline "green"))
(((class color) (background light))
(:underline "green4")))
"*Face used to specify editable fields from a template."
"Face used to specify editable fields from a template."
:group 'semantic-faces)
(defcustom srecode-fields-exit-confirmation nil

View file

@ -197,10 +197,6 @@
:link '(custom-manual "(emacs)Emulation")
:group 'editing)
(defgroup mouse nil
"Mouse support."
:group 'editing)
(defgroup outlines nil
"Support for hierarchical outlining."
:group 'wp)
@ -406,10 +402,6 @@
"Input from the keyboard."
:group 'environment)
(defgroup mouse nil
"Input from the mouse."
:group 'environment)
(defgroup menu nil
"Input from the menus."
:group 'environment)
@ -1072,9 +1064,10 @@ are shown; the contents of those subgroups are initially hidden."
;;;###autoload
(defun customize-mode (mode)
"Customize options related to the current major mode.
If a prefix \\[universal-argument] was given (or if the current major mode has no known group),
then prompt for the MODE to customize."
"Customize options related to a major or minor mode.
By default the current major mode is used. With a prefix
argument or if the current major mode has no known group, prompt
for the MODE to customize."
(interactive
(list
(let ((completion-regexp-list '("-mode\\'"))
@ -1083,8 +1076,8 @@ then prompt for the MODE to customize."
major-mode
(intern
(completing-read (if group
(format "Major mode (default %s): " major-mode)
"Major mode: ")
(format "Mode (default %s): " major-mode)
"Mode: ")
obarray
'custom-group-of-mode
t nil nil (if group (symbol-name major-mode))))))))

View file

@ -312,7 +312,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(const :tag "Always" t)
(repeat (symbol :tag "Parameter")))
"25.1")
(tooltip-reuse-hidden-frame tooltip boolean "26.1")
(tooltip-reuse-hidden-frame tooltip boolean "25.2")
;; fringe.c
(overflow-newline-into-fringe fringe boolean)
;; image.c

View file

@ -277,12 +277,12 @@ This function is semi-obsolete. Use `get-char-code-property'."
'general-category (intern val))
val)))
(list "Combining class"
(let ((val (nth 1 fields)))
(let ((val (nth 2 fields)))
(or (char-code-property-description
'canonical-combining-class (intern val))
val)))
(list "Bidi category"
(let ((val (nth 1 fields)))
(let ((val (nth 3 fields)))
(or (char-code-property-description
'bidi-class (intern val))
val)))

View file

@ -1402,7 +1402,7 @@ after that many seconds of idle time."
(or coding-system-for-read
(cdr (assq 'buffer-file-coding-system
desktop-buffer-locals))))
(buf (find-file-noselect buffer-filename)))
(buf (find-file-noselect buffer-filename :nowarn)))
(condition-case nil
(switch-to-buffer buf)
(error (pop-to-buffer buf)))

View file

@ -39,7 +39,6 @@
;; We need macros in dired.el to compile properly,
;; and we call subroutines in it too.
(require 'dired)
(require 'cl-lib) ; for cl-mapcan
(defvar dired-create-files-failures nil
"Variable where `dired-create-files' records failing file names.
@ -2763,7 +2762,7 @@ REGEXP should use constructs supported by your local `grep' command."
(lambda (s) (concat s "/"))
grep-find-ignored-directories)
grep-find-ignored-files))
(xrefs (cl-mapcan
(xrefs (mapcan
(lambda (file)
(xref-collect-matches regexp "*" file
(and (file-directory-p file)

View file

@ -255,6 +255,18 @@ new Dired buffers."
:version "24.4"
:group 'dired)
(defcustom dired-always-read-filesystem nil
"Non-nil means revert buffers visiting files before searching them.
By default, commands like `dired-mark-files-containing-regexp' will
search any buffers visiting the marked files without reverting them,
even if they were changed on disk. When this option is non-nil, such
buffers are always reverted in a temporary buffer before searching
them: the search is performed on the temporary buffer, the original
buffer visiting the file is not modified."
:type 'boolean
:version "25.2"
:group 'dired)
;; Internal variables
(defvar dired-marker-char ?* ; the answer is 42
@ -303,7 +315,7 @@ The directory name must be absolute, but need not be fully expanded.")
(put 'dired-actual-switches 'safe-local-variable 'dired-safe-switches-p)
(defvar dired-re-inode-size "[0-9 \t]*"
(defvar dired-re-inode-size "[0-9 \t]*[.,0-9]*[BkKMGTPEZY]?[ \t]*"
"Regexp for optional initial inode and file size as made by `ls -i -s'.")
;; These regexps must be tested at beginning-of-line, but are also
@ -3359,7 +3371,8 @@ object files--just `.o' will mark more than you might think."
A prefix argument means to unmark them instead.
`.' and `..' are never marked.
Note that if a file is visited in an Emacs buffer, this command will
Note that if a file is visited in an Emacs buffer, and
`dired-always-read-filesystem' is nil, this command will
look in the buffer without revisiting the file, so the results might
be inconsistent with the file on disk if its contents has changed
since it was last visited."
@ -3379,7 +3392,7 @@ since it was last visited."
(message "Checking %s" fn)
;; For now we do it inside emacs
;; Grep might be better if there are a lot of files
(if prebuf
(if (and prebuf (not dired-always-read-filesystem))
(with-current-buffer prebuf
(save-excursion
(goto-char (point-min))

View file

@ -139,6 +139,16 @@ ATTRIBUTE would typically be `class', `id' or the like."
(cons dom matches)
matches)))
(defun dom-remove-node (dom node)
"Remove NODE from DOM."
;; If we're removing the top level node, just return nil.
(dolist (child (dom-children dom))
(cond
((eq node child)
(delq node dom))
((not (stringp child))
(dom-remove-node child node)))))
(defun dom-parent (dom node)
"Return the parent of NODE in DOM."
(if (memq node (dom-children dom))
@ -151,6 +161,7 @@ ATTRIBUTE would typically be `class', `id' or the like."
result)))
(defun dom-previous-sibling (dom node)
"Return the previous sibling of NODE in DOM."
(when-let (parent (dom-parent dom node))
(let ((siblings (dom-children parent))
(previous nil))

View file

@ -32,7 +32,7 @@
:group 'mail)
(defcustom ecomplete-database-file "~/.ecompleterc"
"*The name of the file to store the ecomplete data."
"The name of the file to store the ecomplete data."
:group 'ecomplete
:type 'file)

View file

@ -736,20 +736,22 @@ FILE's modification time."
package--builtin-versions))
(princ "\n")))))
(goto-char (point-min))
(while (not (eobp))
(skip-chars-forward " \t\n\f")
(cond
((looking-at (regexp-quote generate-autoload-cookie))
;; If not done yet, figure out where to insert this text.
(unless output-start
(setq output-start (autoload--setup-output
otherbuf outbuf absfile load-name)))
(autoload--print-cookie-text output-start load-name file))
((looking-at ";")
;; Don't read the comment.
(forward-line 1))
(t
;; Do not insert autoload entries for excluded files.
(unless (member absfile autoload-excludes)
(goto-char (point-min))
(while (not (eobp))
(skip-chars-forward " \t\n\f")
(cond
((looking-at (regexp-quote generate-autoload-cookie))
;; If not done yet, figure out where to insert this text.
(unless output-start
(setq output-start (autoload--setup-output
otherbuf outbuf absfile load-name)))
(autoload--print-cookie-text output-start load-name file))
((looking-at ";")
;; Don't read the comment.
(forward-line 1))
(t
;; Avoid (defvar <foo>) by requiring a trailing space.
;; Also, ignore this prefix business
;; for ;;;###tramp-autoload and friends.
@ -767,8 +769,8 @@ FILE's modification time."
"define-erc-response-handler"
"defun-rcirc-command"))))
(push (match-string 2) defs))
(forward-sexp 1)
(forward-line 1))))))
(forward-sexp 1)
(forward-line 1)))))))
(when (and autoload-compute-prefixes defs)
;; This output needs to always go in the main loaddefs.el,
@ -1058,9 +1060,7 @@ write its autoloads into the specified file instead."
((not (stringp file)))
((or (not (file-exists-p file))
;; Remove duplicates as well, just in case.
(member file done)
;; If the file is actually excluded.
(member (expand-file-name file) autoload-excludes))
(member file done))
;; Remove the obsolete section.
(setq changed t)
(autoload-remove-section (match-beginning 0)))
@ -1086,7 +1086,6 @@ write its autoloads into the specified file instead."
(let ((no-autoloads-time (or last-time '(0 0 0 0))) file-time)
(dolist (file files)
(cond
((member (expand-file-name file) autoload-excludes) nil)
;; Passing nil as second argument forces
;; autoload-generate-file-autoloads to look for the right
;; spot where to insert each autoloads section.

View file

@ -173,7 +173,9 @@ the elements themselves.
(defun cl-mapcan (cl-func cl-seq &rest cl-rest)
"Like `cl-mapcar', but nconc's together the values returned by the function.
\n(fn FUNCTION SEQUENCE...)"
(apply 'nconc (apply 'cl-mapcar cl-func cl-seq cl-rest)))
(if cl-rest
(apply 'nconc (apply 'cl-mapcar cl-func cl-seq cl-rest))
(mapcan cl-func cl-seq)))
;;;###autoload
(defun cl-mapcon (cl-func cl-list &rest cl-rest)

View file

@ -353,6 +353,26 @@ the specializer used will be the one returned by BODY."
,nbody))))))
(f (error "Unexpected macroexpansion result: %S" f))))))
(put 'cl-defmethod 'function-documentation
'(cl--generic-make-defmethod-docstring))
(defun cl--generic-make-defmethod-docstring ()
;; FIXME: Copy&paste from pcase--make-docstring.
(let* ((main (documentation (symbol-function 'cl-defmethod) 'raw))
(ud (help-split-fundoc main 'cl-defmethod)))
;; So that eg emacs -Q -l cl-lib --eval "(documentation 'pcase)" works,
;; where cl-lib is anything using pcase-defmacro.
(require 'help-fns)
(with-temp-buffer
(insert (or (cdr ud) main))
(insert "\n\n\tCurrently supported forms for TYPE:\n\n")
(dolist (method (reverse (cl--generic-method-table
(cl--generic 'cl-generic-generalizers))))
(let* ((info (cl--generic-method-info method)))
(when (nth 2 info)
(insert (nth 2 info) "\n\n"))))
(let ((combined-doc (buffer-string)))
(if ud (help-add-fundoc-usage combined-doc (car ud)) combined-doc)))))
;;;###autoload
(defmacro cl-defmethod (name args &rest body)
@ -370,15 +390,17 @@ modifies how the method is combined with other methods, including:
:after - Method will be called after the primary
:around - Method will be called around everything else
The absence of QUALIFIER means this is a \"primary\" method.
The set of acceptable qualifiers and their meaning is defined
\(and can be extended) by the methods of `cl-generic-combine-methods'.
TYPE can be one of the basic types (see the full list and their
hierarchy in `cl--generic-typeof-types'), CL struct type, or an
EIEIO class.
ARGS can also include so-called context specializers, introduced by
`&context' (which should appear right after the mandatory arguments,
before any &optional or &rest). They have the form (EXPR TYPE) where
EXPR is an Elisp expression whose value should match TYPE for the
method to be applicable.
Other than that, TYPE can also be of the form `(eql VAL)' in
which case this method will be invoked when the argument is `eql'
to VAL, or `(head VAL)', in which case the argument is required
to be a cons with VAL as its head.
The set of acceptable TYPEs (also called \"specializers\") is defined
\(and can be extended) by the various methods of `cl-generic-generalizers'.
\(fn NAME [QUALIFIER] ARGS &rest [DOCSTRING] BODY)"
(declare (doc-string 3) (indent 2)
@ -464,7 +486,8 @@ to be a cons with VAL as its head.
(cons method mt)
;; Keep the ordering; important for methods with :extra qualifiers.
(mapcar (lambda (x) (if (eq x (car me)) method x)) mt)))
(cl-pushnew `(cl-defmethod . (,(cl--generic-name generic) . ,specializers))
(cl-pushnew `(cl-defmethod . (,(cl--generic-name generic)
,qualifiers . ,specializers))
current-load-list :test #'equal)
;; FIXME: Try to avoid re-constructing a new function if the old one
;; is still valid (e.g. still empty method cache)?
@ -737,7 +760,7 @@ methods.")
(fset 'cl-generic-combine-methods #'cl--generic-standard-method-combination))
(cl-defmethod cl-generic-generalizers (specializer)
"Support for the catch-all t specializer."
"Support for the catch-all t specializer which always matches."
(if (eq specializer t) (list cl--generic-t-generalizer)
(error "Unknown specializer %S" specializer)))
@ -909,8 +932,9 @@ MET-NAME is a cons (SYMBOL . SPECIALIZERS)."
(let* ((info (cl--generic-method-info method)))
;; FIXME: Add hyperlinks for the types as well.
(insert (format "%s%S" (nth 0 info) (nth 1 info)))
(let* ((met-name (cons function
(cl--generic-method-specializers method)))
(let* ((met-name `(,function
,(cl--generic-method-qualifiers method)
. ,(cl--generic-method-specializers method)))
(file (find-lisp-object-file-name met-name 'cl-defmethod)))
(when file
(insert (substitute-command-keys " in `"))
@ -994,7 +1018,8 @@ The value returned is a list of elements of the form
(lambda (tag &rest _) (if (eq (car-safe tag) 'head) (list tag))))
(cl-defmethod cl-generic-generalizers :extra "head" (specializer)
"Support for the `(head VAL)' specializers."
"Support for (head VAL) specializers.
These match if the argument is a cons cell whose car is `eql' to VAL."
;; We have to implement `head' here using the :extra qualifier,
;; since we can't use the `head' specializer to implement itself.
(if (not (eq (car-safe specializer) 'head))
@ -1014,7 +1039,8 @@ The value returned is a list of elements of the form
(lambda (tag &rest _) (if (eq (car-safe tag) 'eql) (list tag))))
(cl-defmethod cl-generic-generalizers ((specializer (head eql)))
"Support for the `(eql VAL)' specializers."
"Support for (eql VAL) specializers.
These match if the argument is `eql' to VAL."
(puthash (cadr specializer) specializer cl--generic-eql-used)
(list cl--generic-eql-generalizer))
@ -1069,7 +1095,7 @@ The value returned is a list of elements of the form
#'cl--generic-struct-specializers)
(cl-defmethod cl-generic-generalizers :extra "cl-struct" (type)
"Support for dispatch on cl-struct types."
"Support for dispatch on types defined by `cl-defstruct'."
(or
(when (symbolp type)
;; Use the "cl--struct-class*" (inlinable) functions/macros rather than
@ -1113,7 +1139,8 @@ The value returned is a list of elements of the form
(and (symbolp tag) (assq tag cl--generic-typeof-types))))
(cl-defmethod cl-generic-generalizers :extra "typeof" (type)
"Support for dispatch on builtin types."
"Support for dispatch on builtin types.
See the full list and their hierarchy in `cl--generic-typeof-types'."
;; FIXME: Add support for other types accepted by `cl-typep' such
;; as `character', `atom', `face', `function', ...
(or
@ -1151,7 +1178,8 @@ The value returned is a list of elements of the form
#'cl--generic-derived-specializers)
(cl-defmethod cl-generic-generalizers ((_specializer (head derived-mode)))
"Support for the `(derived-mode MODE)' specializers."
"Support for (derived-mode MODE) specializers.
Used internally for the (major-mode MODE) context specializers."
(list cl--generic-derived-generalizer))
(cl-generic-define-context-rewriter major-mode (mode &rest modes)

View file

@ -851,9 +851,9 @@ This is compatible with Common Lisp, but note that `defun' and
"The Common Lisp `loop' macro.
Valid clauses include:
For clauses:
for VAR from/upfrom/downfrom EXPR1 to/upto/downto/above/below EXPR2 by EXPR3
for VAR from/upfrom/downfrom EXPR1 to/upto/downto/above/below EXPR2 [by EXPR3]
for VAR = EXPR1 then EXPR2
for VAR in/on/in-ref LIST by FUNC
for VAR in/on/in-ref LIST [by FUNC]
for VAR across/across-ref ARRAY
for VAR being:
the elements of/of-ref SEQUENCE [using (index VAR2)]
@ -1808,6 +1808,27 @@ Labels have lexical scope and dynamic extent."
`(throw ',catch-tag ',label))))
,@macroexpand-all-environment)))))
(defun cl--prog (binder bindings body)
(let (decls)
(while (eq 'declare (car-safe (car body)))
(push (pop body) decls))
`(cl-block nil
(,binder ,bindings
,@(nreverse decls)
(cl-tagbody . ,body)))))
;;;###autoload
(defmacro cl-prog (bindings &rest body)
"Run BODY like a `cl-tagbody' after setting up the BINDINGS.
Shorthand for (cl-block nil (let BINDINGS (cl-tagbody BODY)))"
(cl--prog 'let bindings body))
;;;###autoload
(defmacro cl-prog* (bindings &rest body)
"Run BODY like a `cl-tagbody' after setting up the BINDINGS.
Shorthand for (cl-block nil (let* BINDINGS (cl-tagbody BODY)))"
(cl--prog 'let* bindings body))
;;;###autoload
(defmacro cl-do-symbols (spec &rest body)
"Loop over all symbols.

View file

@ -116,6 +116,16 @@
(defun cl-reduce (cl-func cl-seq &rest cl-keys)
"Reduce two-argument FUNCTION across SEQ.
\nKeywords supported: :start :end :from-end :initial-value :key
Return the result of calling FUNCTION with the first and the
second element of SEQ, then calling FUNCTION with that result and
the third element of SEQ, then with that result and the fourth
element of SEQ, etc.
If :INITIAL-VALUE is specified, it is added to the front of SEQ.
If SEQ is empty, return :INITIAL-VALUE and FUNCTION is not
called.
\n(fn FUNCTION SEQ [KEYWORD VALUE]...)"
(cl--parsing-keywords (:from-end (:start 0) :end :initial-value :key) ()
(or (listp cl-seq) (setq cl-seq (append cl-seq nil)))

View file

@ -154,7 +154,6 @@
every
some
mapcon
mapcan
mapl
maplist
map

View file

@ -1065,6 +1065,7 @@ method invocation orders of the involved classes."
(eieio--class-precedence-list (symbol-value tag))))))
(cl-defmethod cl-generic-generalizers :extra "class" (specializer)
"Support for dispatch on types defined by EIEIO's `defclass'."
;; CLHS says:
;; A class must be defined before it can be used as a parameter
;; specializer in a defmethod form.
@ -1093,6 +1094,8 @@ method invocation orders of the involved classes."
#'eieio--generic-subclass-specializers)
(cl-defmethod cl-generic-generalizers ((_specializer (head subclass)))
"Support for (subclass CLASS) specializers.
These match if the argument is the name of a subclass of CLASS."
(list eieio--generic-subclass-generalizer))
(provide 'eieio-core)

View file

@ -285,46 +285,6 @@ BUFFER defaults to current buffer. Does not modify BUFFER."
(kill-buffer clone)))))))
(defmacro ert-with-function-mocked (name mock &rest body)
"Mocks function NAME with MOCK and run BODY.
Once BODY finishes (be it normally by returning a value or
abnormally by throwing or signaling), the old definition of
function NAME is restored.
BODY may further change the mock with `fset'.
If MOCK is nil, the function NAME is mocked with a function
`ert-fail'ing when called.
For example:
;; Regular use, function is mocked inside the BODY:
(should (eq 2 (+ 1 1)))
(ert-with-function-mocked ((+ (lambda (a b) (- a b))))
(should (eq 0 (+ 1 1))))
(should (eq 2 (+ 1 1)))
;; Macro correctly recovers from a throw or signal:
(should
(catch 'done
(ert-with-function-mocked ((+ (lambda (a b) (- a b))))
(should (eq 0 (+ 1 1))))
(throw 'done t)))
(should (eq 2 (+ 1 1)))
"
(declare (indent 2))
(let ((old-var (make-symbol "old-var"))
(mock-var (make-symbol "mock-var")))
`(let ((,old-var (symbol-function (quote ,name))) (,mock-var ,mock))
(fset (quote ,name)
(or ,mock-var (lambda (&rest _)
(ert-fail (concat "`" ,(symbol-name name)
"' unexpectedly called.")))))
(unwind-protect
(progn ,@body)
(fset (quote ,name) ,old-var)))))
(provide 'ert-x)
;;; ert-x.el ends here

View file

@ -261,7 +261,7 @@ Assumes the caller has bound `macroexpand-all-environment'."
(format "%s quoted with ' rather than with #'"
(list 'lambda (nth 1 f) '...))
(macroexp--expand-all `(,fun ,arg1 ,f . ,args))))
(`(funcall (,(or 'quote 'function) ,(and f (pred symbolp)) . ,_) . ,args)
(`(funcall #',(and f (pred symbolp)) . ,args)
;; Rewrite (funcall #'foo bar) to (foo bar), in case `foo'
;; has a compiler-macro.
(macroexp--expand-all `(,f . ,args)))

View file

@ -4,7 +4,7 @@
;; Author: Nicolas Petton <nicolas@petton.fr>
;; Keywords: convenience, map, hash-table, alist, array
;; Version: 1.0
;; Version: 1.1
;; Package: map
;; Maintainer: emacs-devel@gnu.org
@ -43,6 +43,7 @@
;;; Code:
(require 'seq)
(eval-when-compile (require 'cl-lib))
(pcase-defmacro map (&rest args)
"Build a `pcase' pattern matching map elements.
@ -200,6 +201,16 @@ MAP can be a list, hash-table or array."
function
map))
(defun map-do (function map)
"Apply FUNCTION to each element of MAP and return nil.
FUNCTION.is called with two arguments, the key and the value."
(funcall (map--dispatch map
:list #'map--do-alist
:hash-table #'maphash
:array #'map--do-array)
function
map))
(defun map-keys-apply (function map)
"Return the result of applying FUNCTION to each key of MAP.
@ -249,7 +260,7 @@ MAP can be a list, hash-table or array."
:hash-table (zerop (hash-table-count map))))
(defun map-contains-key (map key &optional testfn)
"Return non-nil if MAP contain KEY, nil otherwise.
"If MAP contain KEY return KEY, nil otherwise.
Equality is defined by TESTFN if non-nil or by `equal' if nil.
MAP can be a list, hash-table or array."
@ -282,27 +293,33 @@ MAP can be a list, hash-table or array."
"Merge into a map of type TYPE all the key/value pairs in MAPS.
MAP can be a list, hash-table or array."
(let (result)
(let ((result (map-into (pop maps) type)))
(while maps
;; FIXME: When `type' is `list', we get an O(N^2) behavior.
;; For small tables, this is fine, but for large tables, we
;; should probably use a hash-table internally which we convert
;; to an alist in the end.
(map-apply (lambda (key value)
(setf (map-elt result key) value))
(pop maps)))
(map-into result type)))
(setf (map-elt result key) value))
(pop maps)))
result))
(defun map-merge-with (type function &rest maps)
"Merge into a map of type TYPE all the key/value pairs in MAPS.
When two maps contain the same key, call FUNCTION on the two
values and use the value returned by it.
MAP can be a list, hash-table or array."
(let (result)
(let ((result (map-into (pop maps) type))
(not-found (cons nil nil)))
(while maps
(map-apply (lambda (key value)
(setf (map-elt result key)
(if (map-contains-key result key)
(funcall function (map-elt result key) value)
value)))
(pop maps)))
(map-into result type)))
(cl-callf (lambda (old)
(if (eq old not-found)
value
(funcall function old value)))
(map-elt result key not-found)))
(pop maps)))
result))
(defun map-into (map type)
"Convert the map MAP into a map of type TYPE.
@ -347,6 +364,20 @@ MAP can be a list, hash-table or array."
(setq index (1+ index))))
map)))
(defun map--do-alist (function alist)
"Private function used to iterate over ALIST using FUNCTION."
(seq-do (lambda (pair)
(funcall function
(car pair)
(cdr pair)))
alist))
(defun map--do-array (function array)
"Private function used to iterate over ARRAY using FUNCTION."
(seq-do-indexed (lambda (elt index)
(funcall function index elt))
array))
(defun map--into-hash-table (map)
"Convert MAP into a hash-table."
(let ((ht (make-hash-table :size (map-length map)

View file

@ -114,7 +114,10 @@ Each element has the form (WHERE BYTECODE STACK) where:
(usage (help-split-fundoc origdoc function)))
(setq usage (if (null usage)
(let ((arglist (help-function-arglist flist)))
(help--make-usage-docstring function arglist))
;; "[Arg list not available until function
;; definition is loaded]", bug#21299
(if (stringp arglist) t
(help--make-usage-docstring function arglist)))
(setq origdoc (cdr usage)) (car usage)))
(help-add-fundoc-usage (concat docstring origdoc) usage))))

View file

@ -103,6 +103,47 @@
(if (integerp val) `(t . ,val) val)
i))))
;; (defun radix-tree--trim (tree string i)
;; (if (= i (length string))
;; tree
;; (pcase tree
;; (`((,prefix . ,ptree) . ,rtree)
;; (let* ((ni (+ i (length prefix)))
;; (cmp (compare-strings prefix nil nil string i ni))
;; ;; FIXME: We could compute nrtree more efficiently
;; ;; whenever cmp is not -1 or 1.
;; (nrtree (radix-tree--trim rtree string i)))
;; (if (eq t cmp)
;; (pcase (radix-tree--trim ptree string ni)
;; (`nil nrtree)
;; (`((,pprefix . ,pptree))
;; `((,(concat prefix pprefix) . ,pptree) . ,nrtree))
;; (nptree `((,prefix . ,nptree) . ,nrtree)))
;; (let ((n (if (< cmp 0) (- -1 cmp) (- cmp 1))))
;; (cond
;; ((equal (+ n i) (length string))
;; `((,prefix . ,ptree) . ,nrtree))
;; (t nrtree))))))
;; (val val))))
(defun radix-tree--prefixes (tree string i prefixes)
(pcase tree
(`((,prefix . ,ptree) . ,rtree)
(let* ((ni (+ i (length prefix)))
(cmp (compare-strings prefix nil nil string i ni))
;; FIXME: We could compute prefixes more efficiently
;; whenever cmp is not -1 or 1.
(prefixes (radix-tree--prefixes rtree string i prefixes)))
(if (eq t cmp)
(radix-tree--prefixes ptree string ni prefixes)
prefixes)))
(val
(if (null val)
prefixes
(cons (cons (substring string 0 i)
(if (eq (car-safe val) t) (cdr val) val))
prefixes)))))
(defun radix-tree--subtree (tree string i)
(if (equal (length string) i) tree
(pcase tree
@ -143,6 +184,16 @@ If not found, return nil."
"Return the subtree of TREE rooted at the prefix STRING."
(radix-tree--subtree tree string 0))
;; (defun radix-tree-trim (tree string)
;; "Return a TREE which only holds entries \"related\" to STRING.
;; \"Related\" is here defined as entries where there's a `string-prefix-p' relation
;; between STRING and the key."
;; (radix-tree-trim tree string 0))
(defun radix-tree-prefixes (tree string)
"Return an alist of all bindings in TREE for prefixes of STRING."
(radix-tree--prefixes tree string 0 nil))
(eval-and-compile
(pcase-defmacro radix-tree-leaf (vpat)
;; FIXME: We'd like to use a negative pattern (not consp), but pcase
@ -181,8 +232,15 @@ PREFIX is only used internally."
(defun radix-tree-count (tree)
(let ((i 0))
(radix-tree-iter-mappings tree (lambda (_ _) (setq i (1+ i))))
(radix-tree-iter-mappings tree (lambda (_k _v) (setq i (1+ i))))
i))
(defun radix-tree-from-map (map)
;; Aka (cl-defmethod map-into (map (type (eql radix-tree)))) ...)
(require 'map)
(let ((rt nil))
(map-apply (lambda (k v) (setq rt (radix-tree-insert rt k v))) map)
rt))
(provide 'radix-tree)
;;; radix-tree.el ends here

View file

@ -4,7 +4,7 @@
;; Author: Nicolas Petton <nicolas@petton.fr>
;; Keywords: sequences
;; Version: 2.14
;; Version: 2.18
;; Package: seq
;; Maintainer: emacs-devel@gnu.org
@ -117,6 +117,16 @@ Return SEQUENCE."
(defalias 'seq-each #'seq-do)
(defun seq-do-indexed (function sequence)
"Apply FUNCTION to each element of SEQUENCE and return nil.
Unlike `seq-map', FUNCTION takes two arguments: the element of
the sequence, and its index within the sequence."
(let ((index 0))
(seq-do (lambda (elt)
(funcall function elt index)
(setq index (1+ index)))
sequence)))
(cl-defgeneric seqp (sequence)
"Return non-nil if SEQUENCE is a sequence, nil otherwise."
(sequencep sequence))
@ -339,7 +349,8 @@ found or not."
"Return the first element in SEQUENCE that is equal to ELT.
Equality is defined by TESTFN if non-nil or by `equal' if nil."
(seq-some (lambda (e)
(funcall (or testfn #'equal) elt e))
(when (funcall (or testfn #'equal) elt e)
e))
sequence))
(cl-defgeneric seq-position (sequence elt &optional testfn)
@ -471,10 +482,7 @@ If no element is found, return nil."
(cl-defmethod seq-drop ((list list) n)
"Optimized implementation of `seq-drop' for lists."
(while (and list (> n 0))
(setq list (cdr list)
n (1- n)))
list)
(nthcdr n list))
(cl-defmethod seq-take ((list list) n)
"Optimized implementation of `seq-take' for lists."

View file

@ -198,6 +198,171 @@ to bind a single value, BINDINGS can just be a plain tuple."
(substring string 0 (- (length string) (length suffix)))
string))
(defun read-multiple-choice (prompt choices)
"Ask user a multiple choice question.
PROMPT should be a string that will be displayed as the prompt.
CHOICES is an alist where the first element in each entry is a
character to be entered, the second element is a short name for
the entry to be displayed while prompting (if there's room, it
might be shortened), and the third, optional entry is a longer
explanation that will be displayed in a help buffer if the user
requests more help.
This function translates user input into responses by consulting
the bindings in `query-replace-map'; see the documentation of
that variable for more information. In this case, the useful
bindings are `recenter', `scroll-up', and `scroll-down'. If the
user enters `recenter', `scroll-up', or `scroll-down' responses,
perform the requested window recentering or scrolling and ask
again.
The return value is the matching entry from the CHOICES list.
Usage example:
\(read-multiple-choice \"Continue connecting?\"
'((?a \"always\")
(?s \"session only\")
(?n \"no\")))"
(let* ((altered-names nil)
(full-prompt
(format
"%s (%s): "
prompt
(mapconcat
(lambda (elem)
(let* ((name (cadr elem))
(pos (seq-position name (car elem)))
(altered-name
(cond
;; Not in the name string.
((not pos)
(format "[%c] %s" (car elem) name))
;; The prompt character is in the name, so highlight
;; it on graphical terminals...
((display-supports-face-attributes-p
'(:underline t) (window-frame))
(setq name (copy-sequence name))
(put-text-property pos (1+ pos)
'face 'read-multiple-choice-face
name)
name)
;; And put it in [bracket] on non-graphical terminals.
(t
(concat
(substring name 0 pos)
"["
(upcase (substring name pos (1+ pos)))
"]"
(substring name (1+ pos)))))))
(push (cons (car elem) altered-name)
altered-names)
altered-name))
(append choices '((?? "?")))
", ")))
tchar buf wrong-char answer)
(save-window-excursion
(save-excursion
(while (not tchar)
(message "%s%s"
(if wrong-char
"Invalid choice. "
"")
full-prompt)
(setq tchar
(if (and (display-popup-menus-p)
last-input-event ; not during startup
(listp last-nonmenu-event)
use-dialog-box)
(x-popup-dialog
t
(cons prompt
(mapcar
(lambda (elem)
(cons (capitalize (cadr elem))
(car elem)))
choices)))
(condition-case nil
(let ((cursor-in-echo-area t))
(read-char))
(error nil))))
(setq answer (lookup-key query-replace-map (vector tchar) t))
(setq tchar
(cond
((eq answer 'recenter)
(recenter) t)
((eq answer 'scroll-up)
(ignore-errors (scroll-up-command)) t)
((eq answer 'scroll-down)
(ignore-errors (scroll-down-command)) t)
((eq answer 'scroll-other-window)
(ignore-errors (scroll-other-window)) t)
((eq answer 'scroll-other-window-down)
(ignore-errors (scroll-other-window-down)) t)
(t tchar)))
(when (eq tchar t)
(setq wrong-char nil
tchar nil))
;; The user has entered an invalid choice, so display the
;; help messages.
(when (and (not (eq tchar nil))
(not (assq tchar choices)))
(setq wrong-char (not (memq tchar '(?? ?\C-h)))
tchar nil)
(when wrong-char
(ding))
(with-help-window (setq buf (get-buffer-create
"*Multiple Choice Help*"))
(with-current-buffer buf
(erase-buffer)
(pop-to-buffer buf)
(insert prompt "\n\n")
(let* ((columns (/ (window-width) 25))
(fill-column 21)
(times 0)
(start (point)))
(dolist (elem choices)
(goto-char start)
(unless (zerop times)
(if (zerop (mod times columns))
;; Go to the next "line".
(goto-char (setq start (point-max)))
;; Add padding.
(while (not (eobp))
(end-of-line)
(insert (make-string (max (- (* (mod times columns)
(+ fill-column 4))
(current-column))
0)
?\s))
(forward-line 1))))
(setq times (1+ times))
(let ((text
(with-temp-buffer
(insert (format
"%c: %s\n"
(car elem)
(cdr (assq (car elem) altered-names))))
(fill-region (point-min) (point-max))
(when (nth 2 elem)
(let ((start (point)))
(insert (nth 2 elem))
(unless (bolp)
(insert "\n"))
(fill-region start (point-max))))
(buffer-string))))
(goto-char start)
(dolist (line (split-string text "\n"))
(end-of-line)
(if (bolp)
(insert line "\n")
(insert line))
(forward-line 1)))))))))))
(when (buffer-live-p buf)
(kill-buffer buf))
(assq tchar choices)))
(provide 'subr-x)
;;; subr-x.el ends here

View file

@ -316,6 +316,9 @@ END) suitable for `syntax-propertize-function'."
(unless (eq funs
(cdr syntax-propertize-extend-region-functions))
(setq funs syntax-propertize-extend-region-functions)))))
;; Flush ppss cache between the original value of `start' and that
;; set above by syntax-propertize-extend-region-functions.
(syntax-ppss-flush-cache start)
;; Move the limit before calling the function, so the function
;; can use syntax-ppss.
(setq syntax-propertize--done end)

View file

@ -631,7 +631,7 @@
(viper-over-whitespace-line))
(indent-to-left-margin))
(viper-add-newline-at-eob-if-necessary)
(viper-complete-complex-command-for-undo)
(viper-adjust-undo)
(if (eq viper-current-state 'emacs-state)
(viper-restore-cursor-color 'after-emacs-mode)
@ -1570,7 +1570,7 @@ If the prefix argument ARG is non-nil, it is used instead of `val'."
(if (and (eolp) (not (bolp)))
(backward-char 1))
))
(viper-complete-complex-command-for-undo) ; take care of undo
(viper-adjust-undo) ; take care of undo
;; If the prev cmd was rotating the command ring, this means that `.' has
;; just executed a command from that ring. So, push it on the ring again.
;; If we are just executing previous command , then don't push viper-d-com
@ -1670,7 +1670,6 @@ invokes the command before that, etc."
(undo-start)
(undo-more 2)
(viper-complete-complex-command-for-undo)
;;(setq undo-beg-posn (or undo-beg-posn (point))
;; undo-end-posn (or undo-end-posn (point)))
;;(setq undo-beg-posn (or undo-beg-posn before-undo-pt)
@ -1710,17 +1709,21 @@ invokes the command before that, etc."
;; The following two functions are used to set up undo properly.
;; In VI, unlike Emacs, if you open a line, say, and add a bunch of lines,
;; they are undone all at once.
(defun viper-complete-complex-command-for-undo ()
(setq undo-auto-disable-boundaries nil)
(setq viper-undo-in-complex-command nil)
(undo-boundary))
(viper-deflocalvar viper--undo-change-group-handle nil)
(put 'viper--undo-change-group-handle 'permanent-local t)
(defun viper-adjust-undo ()
(when viper--undo-change-group-handle
(undo-amalgamate-change-group
(prog1 viper--undo-change-group-handle
(setq viper--undo-change-group-handle nil)))))
(defun viper-set-complex-command-for-undo ()
(when (not viper-undo-in-complex-command)
(setq undo-auto-disable-boundaries t)
(setq viper-undo-in-complex-command t)
(undo-boundary)))
(and (listp buffer-undo-list)
(not viper--undo-change-group-handle)
(setq viper--undo-change-group-handle
(prepare-change-group))))
;;; Viper's destructive Command ring utilities
@ -2588,7 +2591,7 @@ These keys are ESC, RET, and LineFeed."
(delete-char 1 t)
(insert char))
(viper-complete-complex-command-for-undo)
(viper-adjust-undo)
(backward-char arg)
))

View file

@ -369,10 +369,6 @@ Use `\\[viper-set-expert-level]' to change this.")
;; VI-style Undo
;; Used to 'undo' complex commands, such as replace and insert commands.
(viper-deflocalvar viper-undo-in-complex-command nil)
(put 'viper-undo-in-complex-command 'permanent-local t)
(defcustom viper-keep-point-on-undo nil
"Non-nil means not to move point while undoing commands.
This style is different from Emacs and Vi. Try it to see if
@ -781,7 +777,7 @@ Related buffers can be cycled through via :R and :P commands."
"^@end \\|" ; texinfo
")\n\n[ \t\n]*\\|" ; lisp
"\\.\\s-*$") ; prolog
"*Regexps to end Headings/Sections. Used by [].")
"Regexps to end Headings/Sections. Used by [].")
;; These two vars control the interaction of jumps performed by ' and `.

View file

@ -604,9 +604,13 @@ callback data (if any)."
(setq process-environment
(cons (concat "GPG_TTY=" terminal-name)
(cons "TERM=xterm" process-environment))))
;; Start the Emacs Pinentry server if allow-emacs-pinentry is set
;; in ~/.gnupg/gpg-agent.conf.
;; Automatically start the Emacs Pinentry server if appropriate.
(when (and (fboundp 'pinentry-start)
;; Emacs Pinentry is useless if Emacs has no interactive session.
(not noninteractive)
;; Prefer pinentry-mode over Emacs Pinentry.
(null (epg-context-pinentry-mode context))
;; Check if the allow-emacs-pinentry option is set.
(executable-find epg-gpgconf-program)
(with-temp-buffer
(when (= (call-process epg-gpgconf-program nil t nil
@ -1749,12 +1753,7 @@ If optional 3rd argument MODE is t or `detached', it makes a detached signature.
If it is nil or `normal', it makes a normal signature.
Otherwise, it makes a cleartext signature."
(let ((input-file
(unless (or (eq (epg-context-protocol context) 'CMS)
(condition-case nil
(progn
(epg-check-configuration (epg-configuration))
t)
(error)))
(unless (eq (epg-context-protocol context) 'CMS)
(epg--make-temp-file "epg-input")))
(coding-system-for-write 'binary))
(unwind-protect
@ -1861,12 +1860,7 @@ If RECIPIENTS is nil, it performs symmetric encryption."
If RECIPIENTS is nil, it performs symmetric encryption."
(let ((input-file
(unless (or (not sign)
(eq (epg-context-protocol context) 'CMS)
(condition-case nil
(progn
(epg-check-configuration (epg-configuration))
t)
(error)))
(eq (epg-context-protocol context) 'CMS))
(epg--make-temp-file "epg-input")))
(coding-system-for-write 'binary))
(unwind-protect

Some files were not shown because too many files have changed in this diff Show more