summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog55
-rw-r--r--admin/CPP-DEFINES8
-rw-r--r--admin/ChangeLog16
-rw-r--r--admin/make-tarball.txt3
-rwxr-xr-xadmin/merge-gnulib6
-rw-r--r--autogen/Makefile.in49
-rw-r--r--autogen/aclocal.m41
-rw-r--r--autogen/config.in16
-rwxr-xr-xautogen/configure125
-rw-r--r--build-aux/snippet/warn-on-use.h2
-rw-r--r--configure.ac22
-rw-r--r--doc/emacs/ChangeLog22
-rw-r--r--doc/emacs/abbrevs.texi2
-rw-r--r--doc/emacs/ack.texi90
-rw-r--r--doc/emacs/arevert-xtra.texi6
-rw-r--r--doc/emacs/basic.texi4
-rw-r--r--doc/emacs/buffers.texi6
-rw-r--r--doc/emacs/building.texi12
-rw-r--r--doc/emacs/cal-xtra.texi4
-rw-r--r--doc/emacs/calendar.texi2
-rw-r--r--doc/emacs/cmdargs.texi8
-rw-r--r--doc/emacs/commands.texi2
-rw-r--r--doc/emacs/custom.texi20
-rw-r--r--doc/emacs/dired.texi2
-rw-r--r--doc/emacs/display.texi10
-rw-r--r--doc/emacs/doclicense.texi2
-rw-r--r--doc/emacs/emacs.texi72
-rw-r--r--doc/emacs/emerge-xtra.texi6
-rw-r--r--doc/emacs/files.texi6
-rw-r--r--doc/emacs/fortran-xtra.texi2
-rw-r--r--doc/emacs/frames.texi14
-rw-r--r--doc/emacs/glossary.texi134
-rw-r--r--doc/emacs/gnu.texi8
-rw-r--r--doc/emacs/gpl.texi8
-rw-r--r--doc/emacs/indent.texi2
-rw-r--r--doc/emacs/killing.texi16
-rw-r--r--doc/emacs/maintaining.texi64
-rw-r--r--doc/emacs/misc.texi24
-rw-r--r--doc/emacs/modes.texi4
-rw-r--r--doc/emacs/msdog-xtra.texi10
-rw-r--r--doc/emacs/msdog.texi12
-rw-r--r--doc/emacs/mule.texi12
-rw-r--r--doc/emacs/package.texi4
-rw-r--r--doc/emacs/programs.texi18
-rw-r--r--doc/emacs/rmail.texi4
-rw-r--r--doc/emacs/search.texi2
-rw-r--r--doc/emacs/sending.texi2
-rw-r--r--doc/emacs/text.texi24
-rw-r--r--doc/emacs/trouble.texi6
-rw-r--r--doc/emacs/vc1-xtra.texi17
-rw-r--r--doc/emacs/windows.texi6
-rw-r--r--doc/emacs/xresources.texi20
-rw-r--r--doc/lispintro/ChangeLog5
-rw-r--r--doc/lispintro/doclicense.texi2
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi14
-rw-r--r--doc/lispref/ChangeLog33
-rw-r--r--doc/lispref/abbrevs.texi2
-rw-r--r--doc/lispref/backups.texi3
-rw-r--r--doc/lispref/commands.texi12
-rw-r--r--doc/lispref/compile.texi5
-rw-r--r--doc/lispref/customize.texi20
-rw-r--r--doc/lispref/display.texi36
-rw-r--r--doc/lispref/doclicense.texi2
-rw-r--r--doc/lispref/edebug.texi2
-rw-r--r--doc/lispref/elisp.texi17
-rw-r--r--doc/lispref/errors.texi4
-rw-r--r--doc/lispref/files.texi8
-rw-r--r--doc/lispref/frames.texi18
-rw-r--r--doc/lispref/functions.texi22
-rw-r--r--doc/lispref/gpl.texi8
-rw-r--r--doc/lispref/help.texi3
-rw-r--r--doc/lispref/index.texi6
-rw-r--r--doc/lispref/internals.texi36
-rw-r--r--doc/lispref/intro.texi6
-rw-r--r--doc/lispref/keymaps.texi22
-rw-r--r--doc/lispref/lists.texi132
-rw-r--r--doc/lispref/loading.texi8
-rw-r--r--doc/lispref/macros.texi2
-rw-r--r--doc/lispref/maps.texi6
-rw-r--r--doc/lispref/minibuf.texi4
-rw-r--r--doc/lispref/modes.texi25
-rw-r--r--doc/lispref/nonascii.texi6
-rw-r--r--doc/lispref/numbers.texi4
-rw-r--r--doc/lispref/objects.texi12
-rw-r--r--doc/lispref/os.texi18
-rw-r--r--doc/lispref/package.texi6
-rw-r--r--doc/lispref/positions.texi2
-rw-r--r--doc/lispref/processes.texi6
-rw-r--r--doc/lispref/searching.texi12
-rw-r--r--doc/lispref/sequences.texi8
-rw-r--r--doc/lispref/streams.texi2
-rw-r--r--doc/lispref/symbols.texi301
-rw-r--r--doc/lispref/syntax.texi8
-rw-r--r--doc/lispref/text.texi14
-rw-r--r--doc/lispref/tips.texi4
-rw-r--r--doc/lispref/variables.texi23
-rw-r--r--doc/lispref/windows.texi20
-rw-r--r--doc/man/ChangeLog4
-rw-r--r--doc/man/etags.11
-rw-r--r--doc/misc/ChangeLog19
-rw-r--r--doc/misc/auth.texi6
-rw-r--r--doc/misc/autotype.texi22
-rw-r--r--doc/misc/calc.texi14
-rw-r--r--doc/misc/cc-mode.texi156
-rw-r--r--doc/misc/cl.texi10
-rw-r--r--doc/misc/doclicense.texi2
-rw-r--r--doc/misc/ebrowse.texi8
-rw-r--r--doc/misc/ede.texi18
-rw-r--r--doc/misc/ediff.texi48
-rw-r--r--doc/misc/edt.texi8
-rw-r--r--doc/misc/eieio.texi2
-rw-r--r--doc/misc/emacs-mime.texi16
-rw-r--r--doc/misc/epa.texi24
-rw-r--r--doc/misc/erc.texi16
-rw-r--r--doc/misc/ert.texi2
-rw-r--r--doc/misc/eshell.texi4
-rw-r--r--doc/misc/eudc.texi2
-rw-r--r--doc/misc/faq.texi38
-rw-r--r--doc/misc/flymake.texi4
-rw-r--r--doc/misc/forms.texi8
-rw-r--r--doc/misc/gnus-coding.texi16
-rw-r--r--doc/misc/gnus-faq.texi46
-rw-r--r--doc/misc/gnus.texi178
-rw-r--r--doc/misc/gpl.texi8
-rw-r--r--doc/misc/idlwave.texi104
-rw-r--r--doc/misc/info.texi6
-rw-r--r--doc/misc/mairix-el.texi4
-rw-r--r--doc/misc/message.texi22
-rw-r--r--doc/misc/mh-e.texi36
-rw-r--r--doc/misc/newsticker.texi4
-rw-r--r--doc/misc/nxml-mode.texi22
-rw-r--r--doc/misc/org.texi154
-rw-r--r--doc/misc/pcl-cvs.texi18
-rw-r--r--doc/misc/pgg.texi4
-rw-r--r--doc/misc/rcirc.texi6
-rw-r--r--doc/misc/reftex.texi56
-rw-r--r--doc/misc/remember.texi2
-rw-r--r--doc/misc/sc.texi28
-rw-r--r--doc/misc/sem-user.texi4
-rw-r--r--doc/misc/ses.texi2
-rw-r--r--doc/misc/smtpmail.texi6
-rw-r--r--doc/misc/tramp.texi52
-rw-r--r--doc/misc/url.texi18
-rw-r--r--doc/misc/vip.texi14
-rw-r--r--doc/misc/viper.texi18
-rw-r--r--doc/misc/widget.texi16
-rw-r--r--doc/misc/woman.texi34
-rw-r--r--etc/ChangeLog12
-rw-r--r--etc/NEWS54
-rw-r--r--etc/themes/leuven-theme.el595
-rw-r--r--leim/ChangeLog6
-rw-r--r--leim/quail/latin-ltx.el8
-rw-r--r--lib-src/ChangeLog16
-rw-r--r--lib-src/etags.c48
-rw-r--r--lib-src/movemail.c18
-rw-r--r--lib/gnulib.mk31
-rw-r--r--lib/lstat.c2
-rw-r--r--lib/makefile.w32-in9
-rw-r--r--lib/md5.c2
-rw-r--r--lib/putenv.c134
-rw-r--r--lib/sha1.c2
-rw-r--r--lib/sha256.c2
-rw-r--r--lib/sha512.c2
-rw-r--r--lib/sig2str.c345
-rw-r--r--lib/sig2str.h43
-rw-r--r--lib/stat.c2
-rw-r--r--lib/stdio.c3
-rw-r--r--lib/stdio.in.h8
-rw-r--r--lib/sys_stat.in.h2
-rw-r--r--lib/unistd.c3
-rw-r--r--lib/unistd.in.h10
-rw-r--r--lib/unsetenv.c127
-rw-r--r--lisp/ChangeLog533
-rw-r--r--lisp/ChangeLog.152
-rw-r--r--lisp/Makefile.in12
-rw-r--r--lisp/buff-menu.el63
-rw-r--r--lisp/button.el73
-rw-r--r--lisp/calc/calc-forms.el149
-rw-r--r--lisp/calendar/diary-lib.el3
-rw-r--r--lisp/descr-text.el3
-rw-r--r--lisp/desktop.el2
-rw-r--r--lisp/dos-w32.el2
-rw-r--r--lisp/emacs-lisp/advice.el55
-rw-r--r--lisp/emacs-lisp/cl-extra.el9
-rw-r--r--lisp/emacs-lisp/cl-lib.el21
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el29
-rw-r--r--lisp/emacs-lisp/cl-macs.el315
-rw-r--r--lisp/emacs-lisp/cl-seq.el9
-rw-r--r--lisp/emacs-lisp/derived.el34
-rw-r--r--lisp/emacs-lisp/lisp-mode.el111
-rw-r--r--lisp/erc/ChangeLog15
-rw-r--r--lisp/erc/erc.el98
-rw-r--r--lisp/faces.el2
-rw-r--r--lisp/ffap.el194
-rw-r--r--lisp/files.el60
-rw-r--r--lisp/gnus/ChangeLog87
-rw-r--r--lisp/gnus/gmm-utils.el25
-rw-r--r--lisp/gnus/gnus-art.el2
-rw-r--r--lisp/gnus/gnus-bookmark.el2
-rw-r--r--lisp/gnus/gnus-registry.el2
-rw-r--r--lisp/gnus/gnus-score.el53
-rw-r--r--lisp/gnus/gnus-start.el11
-rw-r--r--lisp/gnus/gnus-sum.el4
-rw-r--r--lisp/gnus/gnus-sync.el36
-rw-r--r--lisp/gnus/gnus-util.el21
-rw-r--r--lisp/gnus/gnus.el21
-rw-r--r--lisp/gnus/message.el17
-rw-r--r--lisp/gnus/spam-stat.el14
-rw-r--r--lisp/gnus/spam.el32
-rw-r--r--lisp/hi-lock.el197
-rw-r--r--lisp/hippie-exp.el2
-rw-r--r--lisp/icomplete.el107
-rw-r--r--lisp/ido.el5
-rw-r--r--lisp/info.el50
-rw-r--r--lisp/jka-cmpr-hook.el15
-rw-r--r--lisp/ldefs-boot.el2040
-rw-r--r--lisp/mail/mailabbrev.el8
-rw-r--r--lisp/mail/rmail.el45
-rw-r--r--lisp/mail/rmailedit.el24
-rw-r--r--lisp/mail/rmailsum.el2
-rw-r--r--lisp/mail/unrmail.el41
-rw-r--r--lisp/makefile.w32-in21
-rw-r--r--lisp/mh-e/mh-e.el4
-rw-r--r--lisp/minibuf-eldef.el10
-rw-r--r--lisp/minibuffer.el42
-rw-r--r--lisp/mouse.el14
-rw-r--r--lisp/net/rcirc.el34
-rw-r--r--lisp/net/tramp-adb.el981
-rw-r--r--lisp/net/tramp-compat.el20
-rw-r--r--lisp/net/tramp-gvfs.el6
-rw-r--r--lisp/net/tramp-sh.el44
-rw-r--r--lisp/net/tramp.el11
-rw-r--r--lisp/novice.el1
-rw-r--r--lisp/obsolete/longlines.el (renamed from lisp/longlines.el)11
-rw-r--r--lisp/obsolete/terminal.el (renamed from lisp/terminal.el)15
-rw-r--r--lisp/org/ChangeLog5
-rw-r--r--lisp/org/org-bibtex.el3
-rw-r--r--lisp/progmodes/autoconf.el29
-rw-r--r--lisp/progmodes/cc-mode.el4
-rw-r--r--lisp/progmodes/cperl-mode.el7
-rw-r--r--lisp/progmodes/etags.el4
-rw-r--r--lisp/progmodes/grep.el6
-rw-r--r--lisp/progmodes/js.el46
-rw-r--r--lisp/progmodes/m4-mode.el14
-rw-r--r--lisp/progmodes/make-mode.el58
-rw-r--r--lisp/progmodes/octave-mod.el5
-rw-r--r--lisp/progmodes/perl-mode.el40
-rw-r--r--lisp/progmodes/python.el38
-rw-r--r--lisp/progmodes/scheme.el68
-rw-r--r--lisp/progmodes/sh-script.el87
-rw-r--r--lisp/progmodes/sql.el556
-rw-r--r--lisp/ses.el24
-rw-r--r--lisp/shell.el34
-rw-r--r--lisp/simple.el17
-rw-r--r--lisp/sort.el56
-rw-r--r--lisp/startup.el39
-rw-r--r--lisp/subr.el13
-rw-r--r--lisp/textmodes/css-mode.el32
-rw-r--r--lisp/textmodes/fill.el6
-rw-r--r--lisp/textmodes/ispell.el23
-rw-r--r--lisp/textmodes/sgml-mode.el130
-rw-r--r--lisp/textmodes/table.el51
-rw-r--r--lisp/textmodes/tex-mode.el113
-rw-r--r--lisp/textmodes/texinfo.el112
-rw-r--r--lisp/url/ChangeLog5
-rw-r--r--lisp/url/url-misc.el36
-rw-r--r--lisp/vc/add-log.el104
-rw-r--r--lisp/vc/ediff-diff.el145
-rw-r--r--lisp/vc/vc-dir.el29
-rw-r--r--lisp/vc/vc-git.el2
-rw-r--r--lisp/vc/vc-hg.el33
-rw-r--r--lisp/vc/vc-hooks.el9
-rw-r--r--lisp/vc/vc.el27
-rw-r--r--m4/c-strtod.m48
-rw-r--r--m4/extern-inline.m45
-rw-r--r--m4/gnulib-comp.m428
-rw-r--r--m4/lstat.m48
-rw-r--r--m4/md5.m43
-rw-r--r--m4/putenv.m450
-rw-r--r--m4/setenv.m4160
-rw-r--r--m4/sha1.m43
-rw-r--r--m4/sha256.m43
-rw-r--r--m4/sha512.m43
-rw-r--r--m4/sig2str.m415
-rw-r--r--m4/stat.m48
-rw-r--r--m4/stdio_h.m43
-rw-r--r--m4/sys_socket_h.m43
-rw-r--r--m4/sys_stat_h.m45
-rw-r--r--m4/unistd_h.m43
-rwxr-xr-xmake-dist6
-rw-r--r--msdos/ChangeLog5
-rw-r--r--msdos/sed1v2.inp6
-rw-r--r--nt/ChangeLog11
-rw-r--r--nt/config.nt13
-rw-r--r--nt/inc/ms-w32.h7
-rw-r--r--oldXMenu/Activate.c1
-rw-r--r--oldXMenu/AddPane.c1
-rw-r--r--oldXMenu/AddSel.c1
-rw-r--r--oldXMenu/ChangeLog11
-rw-r--r--oldXMenu/ChgPane.c2
-rw-r--r--oldXMenu/ChgSel.c2
-rw-r--r--oldXMenu/Create.c1
-rw-r--r--oldXMenu/InsPane.c1
-rw-r--r--oldXMenu/InsSel.c1
-rw-r--r--oldXMenu/Internal.c1
-rw-r--r--oldXMenu/XLookAssoc.c10
-rw-r--r--oldXMenu/XMakeAssoc.c1
-rw-r--r--oldXMenu/XMenuInt.h2
-rw-r--r--src/ChangeLog377
-rw-r--r--src/alloc.c41
-rw-r--r--src/buffer.c25
-rw-r--r--src/buffer.h5
-rw-r--r--src/bytecode.c4
-rw-r--r--src/callproc.c363
-rw-r--r--src/casefiddle.c2
-rw-r--r--src/charset.c4
-rw-r--r--src/data.c8
-rw-r--r--src/dbusbind.c2
-rw-r--r--src/dired.c46
-rw-r--r--src/dispextern.h12
-rw-r--r--src/doc.c8
-rw-r--r--src/doprnt.c5
-rw-r--r--src/editfns.c302
-rw-r--r--src/emacs.c9
-rw-r--r--src/fileio.c28
-rw-r--r--src/font.c15
-rw-r--r--src/fontset.c2
-rw-r--r--src/frame.c188
-rw-r--r--src/frame.h10
-rw-r--r--src/gmalloc.c8
-rw-r--r--src/gnutls.c14
-rw-r--r--src/gtkutil.c15
-rw-r--r--src/insdel.c21
-rw-r--r--src/keyboard.c14
-rw-r--r--src/lisp.h16
-rw-r--r--src/lread.c2
-rw-r--r--src/nsfns.m14
-rw-r--r--src/nsterm.m1
-rw-r--r--src/process.c354
-rw-r--r--src/process.h23
-rw-r--r--src/sysdep.c113
-rw-r--r--src/syssignal.h20
-rw-r--r--src/syswait.h7
-rw-r--r--src/term.c4
-rw-r--r--src/termchar.h20
-rw-r--r--src/textprop.c24
-rw-r--r--src/unexcoff.c6
-rw-r--r--src/vm-limit.c75
-rw-r--r--src/w32.c52
-rw-r--r--src/w32common.h2
-rw-r--r--src/w32fns.c19
-rw-r--r--src/w32proc.c43
-rw-r--r--src/w32term.c35
-rw-r--r--src/w32term.h2
-rw-r--r--src/window.c4
-rw-r--r--src/xdisp.c118
-rw-r--r--src/xfns.c14
-rw-r--r--src/xterm.c51
-rw-r--r--test/ChangeLog6
-rw-r--r--test/automated/ruby-mode-tests.el22
360 files changed, 9937 insertions, 5605 deletions
diff --git a/ChangeLog b/ChangeLog
index bddec07fc19..f31a03833c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,58 @@
+2012-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use putenv+unsetenv instead of modifying environ directly (Bug#13070).
+ * lib/putenv.c, lib/unsetenv.c, m4/putenv.m4, m4/setenv.m4:
+ New files, copied automatically from gnulib.
+ * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+
+2012-12-08 Eli Zaretskii <eliz@gnu.org>
+
+ * lib/makefile.w32-in ($(BLD)/sig2str.$(O)): New dependency.
+ Remove a stray character at the beginning of the file.
+ (Bug#13026)
+
+2012-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Simplify get_lim_data.
+ * configure.ac (ULIMIT_BREAK_VALUE): Remove.
+
+ Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
+ * configure.ac (PTY_OPEN, PTY_TTY_NAME_SPRINTF):
+ Use SIGCHLD rather than SIGCLD.
+ * lib/sig2str.c, lib/sig2str.h, m4/sig2str.m4: New files, from gnulib.
+ * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+ * lib/makefile.w32-in (GNULIBOBJS): Add $(BUILD)/sig2str.$(O).
+
+2012-12-06 Glenn Morris <rgm@gnu.org>
+
+ * configure.ac: Handle info/ files with or without ".info" extension.
+
+2012-11-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from gnulib for 'inline' (Bug#13040), incorporating:
+ 2012-11-29 snippet/warn-on-use: no 'static inline'
+ 2012-11-29 ftruncate, fts, lstat, openat, raise: no 'static inline'
+ 2012-11-29 arctwo, md4, md5, sha1, sha256, sha512: no 'static inline'
+ 2012-11-29 fflush, stat: no 'static inline'
+ 2012-11-29 stdio: better 'inline'
+ 2012-11-29 sys_stat: no 'static inline'
+ 2012-11-29 unistd: better 'inline'
+ 2012-11-29 c-strtod, memcoll, readutmp: no 'static inline'
+ 2012-11-29 extern-inline: no 'static inline'
+ 2012-11-29 sys_socket: better 'inline'
+ * lib/stdio.c, lib/unistd.c: New files, from gnulib.
+ * build-aux/snippet/warn-on-use.h, lib/gnulib.mk, lib/lstat.c:
+ * lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c, lib/stat.c:
+ * lib/stdio.in.h, lib/sys_stat.in.h, lib/unistd.in.h, m4/c-strtod.m4:
+ * m4/extern-inline.m4, m4/gnulib-comp.m4, m4/lstat.m4, m4/md5.m4:
+ * m4/sha1.m4, m4/sha256.m4, m4/sha512.m4, m4/stat.m4, m4/stdio_h.m4:
+ * m4/sys_socket_h.m4, m4/sys_stat_h.m4, m4/unistd_h.m4:
+ Update from gnulib.
+
+2012-11-27 Eli Zaretskii <eliz@gnu.org>
+
+ * make-dist (nt): Adjust to changes in names of the *.manifest files.
+
2012-11-24 Ken Brown <kbrown@cornell.edu>
* configure.ac (HAVE_MOUSE): Remove.
diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES
index 20c97f886dd..13c3da1745a 100644
--- a/admin/CPP-DEFINES
+++ b/admin/CPP-DEFINES
@@ -419,14 +419,7 @@ PTY_TTY_NAME_SPRINTF
PURESIZE
RUN_TIME_REMAP
SETUP_SLAVE_PTY
-SIGALRM
-SIGCHLD
-SIGHUP
-SIGKILL
SIGNALS_VIA_CHARACTERS
-SIGPIPE
-SIGQUIT
-SIGTRAP
STDC_HEADERS
SYSTEM_PURESIZE_EXTRA
SYSTEM_MALLOC
@@ -436,7 +429,6 @@ TERM
TIME_WITH_SYS_TIME
TIOCSIGSEND
TM_IN_SYS_TIME
-ULIMIT_BREAK_VALUE
UNIX98_PTYS
USE_TOOLKIT_SCROLL_BARS
USG_SUBTTY_WORKS
diff --git a/admin/ChangeLog b/admin/ChangeLog
index 05c1463d325..9c6413aa14f 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,19 @@
+2012-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use putenv+unsetenv instead of modifying environ directly (Bug#13070).
+ * merge-gnulib (GNULIB_MODULES): Add putenv, unsetenv.
+
+ Simplify get_lim_data.
+ * CPP-DEFINES (ULIMIT_BREAK_VALUE): Remove.
+
+2012-12-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
+ * CPP-DEFINES (SIGALRM, SIGCHLD, SIGHUP, SIGKILL, SIGPIPE, SIGQUIT):
+ Remove.
+ (SIGTRAP): Remove this one too, as config.h no longer defines it.
+ * merge-gnulib (GNULIB_MODULES): Add sig2str.
+
2012-11-24 Ken Brown <kbrown@cornell.edu>
* CPP-DEFINES (HAVE_MOUSE): Remove.
diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt
index ea9c4a3c2d1..eda28b639d2 100644
--- a/admin/make-tarball.txt
+++ b/admin/make-tarball.txt
@@ -57,8 +57,7 @@ For each step, check for possible errors.
M-x ediff. Especially check that Info files aren't built.
10. cd EMACS_ROOT_DIR; bzr tag TAG
- TAG is EMACS_PRETEST_XX_YY_ZZZ for a pretest, EMACS_XX_YY for a
- release.
+ TAG is emacs-XX.Y.ZZ for a pretest, emacs-XX.Y for a release.
Shortly before the release, cut the version branch also, and open
a Savannah support request asking for commits to the new branch to
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 792818b2efe..1f60bb2973e 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -31,10 +31,10 @@ GNULIB_MODULES='
dtoastr dtotimespec dup2 environ execinfo faccessat
fcntl-h filemode getloadavg getopt-gnu gettime gettimeofday
ignore-value intprops largefile lstat
- manywarnings mktime pselect pthread_sigmask readlink
- socklen stat-time stdalign stdarg stdbool stdio
+ manywarnings mktime pselect pthread_sigmask putenv readlink
+ sig2str socklen stat-time stdalign stdarg stdbool stdio
strftime strtoimax strtoumax symlink sys_stat
- sys_time time timer-time timespec-add timespec-sub utimens
+ sys_time time timer-time timespec-add timespec-sub unsetenv utimens
warnings
'
diff --git a/autogen/Makefile.in b/autogen/Makefile.in
index 4599f20df45..d616d4ef12d 100644
--- a/autogen/Makefile.in
+++ b/autogen/Makefile.in
@@ -36,7 +36,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=at-internal --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=openat-die --avoid=openat-h --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=at-internal --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=openat-die --avoid=openat-h --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
@@ -87,16 +87,17 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/pthread_sigmask.m4 \
$(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/sha1.m4 \
$(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
- $(top_srcdir)/m4/signal_h.m4 $(top_srcdir)/m4/socklen.m4 \
- $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
- $(top_srcdir)/m4/stat-time.m4 $(top_srcdir)/m4/stat.m4 \
- $(top_srcdir)/m4/stdalign.m4 $(top_srcdir)/m4/stdarg.m4 \
- $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
- $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
- $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strftime.m4 \
- $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtoll.m4 \
- $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
- $(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/sys_select_h.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/signal_h.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/ssize_t.m4 \
+ $(top_srcdir)/m4/st_dm_mode.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdalign.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/strtoimax.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoull.m4 \
+ $(top_srcdir)/m4/strtoumax.m4 $(top_srcdir)/m4/symlink.m4 \
+ $(top_srcdir)/m4/sys_select_h.m4 \
$(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
$(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
@@ -118,8 +119,8 @@ am__libgnu_a_SOURCES_DIST = allocator.c c-ctype.h c-ctype.c \
c-strcase.h c-strcasecmp.c c-strncasecmp.c careadlinkat.c \
close-stream.c md5.c sha1.c sha256.c sha512.c dtoastr.c \
dtotimespec.c filemode.c gettext.h gettime.c stat-time.c \
- strftime.c timespec.c timespec-add.c timespec-sub.c u64.c \
- utimens.c
+ stdio.c strftime.c timespec.c timespec-add.c timespec-sub.c \
+ u64.c unistd.c utimens.c
am__objects_1 =
am_libgnu_a_OBJECTS = allocator.$(OBJEXT) c-ctype.$(OBJEXT) \
c-strcasecmp.$(OBJEXT) c-strncasecmp.$(OBJEXT) \
@@ -127,8 +128,9 @@ am_libgnu_a_OBJECTS = allocator.$(OBJEXT) c-ctype.$(OBJEXT) \
sha1.$(OBJEXT) sha256.$(OBJEXT) sha512.$(OBJEXT) \
dtoastr.$(OBJEXT) dtotimespec.$(OBJEXT) filemode.$(OBJEXT) \
$(am__objects_1) gettime.$(OBJEXT) stat-time.$(OBJEXT) \
- strftime.$(OBJEXT) timespec.$(OBJEXT) timespec-add.$(OBJEXT) \
- timespec-sub.$(OBJEXT) u64.$(OBJEXT) utimens.$(OBJEXT)
+ stdio.$(OBJEXT) strftime.$(OBJEXT) timespec.$(OBJEXT) \
+ timespec-add.$(OBJEXT) timespec-sub.$(OBJEXT) u64.$(OBJEXT) \
+ unistd.$(OBJEXT) utimens.$(OBJEXT)
libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__depfiles_maybe = depfiles
@@ -887,7 +889,8 @@ EXTRA_DIST = alloca.in.h allocator.h careadlinkat.h close-stream.h \
getopt_int.h gettimeofday.c group-member.c ignore-value.h \
intprops.h inttypes.in.h lstat.c mktime-internal.h mktime.c \
pathmax.h pselect.c pthread_sigmask.c readlink.c root-uid.h \
- signal.in.h $(top_srcdir)/build-aux/snippet/_Noreturn.h \
+ sig2str.c sig2str.h signal.in.h \
+ $(top_srcdir)/build-aux/snippet/_Noreturn.h \
$(top_srcdir)/build-aux/snippet/arg-nonnull.h \
$(top_srcdir)/build-aux/snippet/c++defs.h \
$(top_srcdir)/build-aux/snippet/warn-on-use.h stat.c \
@@ -913,16 +916,17 @@ DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src
libgnu_a_SOURCES = allocator.c c-ctype.h c-ctype.c c-strcase.h \
c-strcasecmp.c c-strncasecmp.c careadlinkat.c close-stream.c \
md5.c sha1.c sha256.c sha512.c dtoastr.c dtotimespec.c \
- filemode.c $(am__append_1) gettime.c stat-time.c strftime.c \
- timespec.c timespec-add.c timespec-sub.c u64.c utimens.c
+ filemode.c $(am__append_1) gettime.c stat-time.c stdio.c \
+ strftime.c timespec.c timespec-add.c timespec-sub.c u64.c \
+ unistd.c utimens.c
libgnu_a_LIBADD = $(gl_LIBOBJS)
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
EXTRA_libgnu_a_SOURCES = ftoastr.c dup2.c euidaccess.c execinfo.c \
at-func.c faccessat.c fpending.c getgroups.c getloadavg.c \
getopt.c getopt1.c gettimeofday.c group-member.c lstat.c \
- mktime.c pselect.c pthread_sigmask.c readlink.c stat.c \
- strtoimax.c strtol.c strtoll.c strtol.c strtoul.c strtoull.c \
- strtoimax.c strtoumax.c symlink.c time_r.c
+ mktime.c pselect.c pthread_sigmask.c readlink.c sig2str.c \
+ stat.c strtoimax.c strtol.c strtoll.c strtol.c strtoul.c \
+ strtoull.c strtoimax.c strtoumax.c symlink.c time_r.c
# Because this Makefile snippet defines a variable used by other
# gnulib Makefile snippets, it must be present in all Makefile.am that
@@ -1012,8 +1016,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha512.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sig2str.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat-time.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdio.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoimax.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtol.Po@am__quote@
@@ -1027,6 +1033,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec-sub.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/u64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unistd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimens.Po@am__quote@
.c.o:
diff --git a/autogen/aclocal.m4 b/autogen/aclocal.m4
index f423953b3c8..ee880a2cca5 100644
--- a/autogen/aclocal.m4
+++ b/autogen/aclocal.m4
@@ -1025,6 +1025,7 @@ m4_include([m4/readlink.m4])
m4_include([m4/sha1.m4])
m4_include([m4/sha256.m4])
m4_include([m4/sha512.m4])
+m4_include([m4/sig2str.m4])
m4_include([m4/signal_h.m4])
m4_include([m4/socklen.m4])
m4_include([m4/ssize_t.m4])
diff --git a/autogen/config.in b/autogen/config.in
index 487fe9160e2..0ba05d911eb 100644
--- a/autogen/config.in
+++ b/autogen/config.in
@@ -784,6 +784,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `shutdown' function. */
#undef HAVE_SHUTDOWN
+/* Define to 1 if you have the `sig2str' function. */
+#undef HAVE_SIG2STR
+
/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
#undef HAVE_SIGNED_SIG_ATOMIC_T
@@ -1328,9 +1331,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
timespec. */
#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
-/* Undocumented. */
-#undef ULIMIT_BREAK_VALUE
-
/* Define to 1 for Encore UMAX. */
#undef UMAX
@@ -1535,8 +1535,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# endif
# define _GL_EXTERN_INLINE extern
#else
-# define _GL_INLINE static inline
-# define _GL_EXTERN_INLINE static inline
+# define _GL_INLINE static
+# define _GL_EXTERN_INLINE static
#endif
#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
@@ -1564,12 +1564,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to rpl_gmtime if the replacement function should be used. */
#undef gmtime
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
diff --git a/autogen/configure b/autogen/configure
index 4571c89b85a..b678a0ba62c 100755
--- a/autogen/configure
+++ b/autogen/configure
@@ -7026,6 +7026,7 @@ esac
# Code from module pthread_sigmask:
# Code from module readlink:
# Code from module root-uid:
+ # Code from module sig2str:
# Code from module signal-h:
# Code from module snippet/_Noreturn:
# Code from module snippet/arg-nonnull:
@@ -8165,7 +8166,7 @@ if test "$MAKEINFO" = "no"; then
MAKEINFO=makeinfo
if test "x${with_makeinfo}" = "xno"; then
HAVE_MAKEINFO=no
- elif test ! -e $srcdir/info/emacs; then
+ elif test ! -e $srcdir/info/emacs && test ! -e $srcdir/info/emacs.info; then
as_fn_error "You do not seem to have makeinfo >= 4.7, and your
source tree does not seem to have pre-built manuals in the \`info' directory.
Either install a suitable version of makeinfo, or re-run configure
@@ -15300,7 +15301,7 @@ $as_echo "#define UNIX98_PTYS 1" >>confdefs.h
$as_echo "#define FIRST_PTY_LETTER 'q'" >>confdefs.h
- $as_echo "#define PTY_OPEN { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }" >>confdefs.h
+ $as_echo "#define PTY_OPEN { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCHLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCHLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }" >>confdefs.h
$as_echo "#define PTY_NAME_SPRINTF /**/" >>confdefs.h
@@ -15309,12 +15310,12 @@ $as_echo "#define UNIX98_PTYS 1" >>confdefs.h
;;
sol2* )
- $as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
+ $as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
;;
unixware )
- $as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal(\"could not grant slave pty\"); if (unlockpt(fd) == -1) fatal(\"could not unlock slave pty\"); if (!(ptyname = ptsname(fd))) fatal (\"could not enable slave pty\"); snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
+ $as_echo "#define PTY_TTY_NAME_SPRINTF { char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal(\"could not grant slave pty\"); if (unlockpt(fd) == -1) fatal(\"could not unlock slave pty\"); if (!(ptyname = ptsname(fd))) fatal (\"could not enable slave pty\"); snprintf (pty_name, sizeof pty_name, \"%s\", ptyname); }" >>confdefs.h
;;
esac
@@ -15402,7 +15403,6 @@ esac
-
case $opsys in
darwin) $as_echo "#define TAB3 OXTABS" >>confdefs.h
;;
@@ -15416,27 +15416,6 @@ $as_echo "#define TABDLY OXTABS" >>confdefs.h
;;
gnu-linux | gnu-kfreebsd )
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#ifndef __i386__
-# error "not i386"
-#endif
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- $as_echo "#define ULIMIT_BREAK_VALUE (32*1024*1024)" >>confdefs.h
-
-fi
-rm -f conftest.err conftest.$ac_ext
-
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15465,11 +15444,6 @@ rm -f conftest.err conftest.$ac_ext
$as_echo "#define RUN_TIME_REMAP 1" >>confdefs.h
;;
-
- irix6-5)
- $as_echo "#define ULIMIT_BREAK_VALUE 0x14000000" >>confdefs.h
-
- ;;
esac
@@ -16549,48 +16523,6 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if test "${ac_cv_c_inline+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_inline=$ac_kw
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
-
-case $ac_cv_c_inline in
- inline | yes) ;;
- *)
- case $ac_cv_c_inline in
- no) ac_val=;;
- *) ac_val=$ac_cv_c_inline;;
- esac
- cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
- ;;
-esac
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strtold conforms to C99" >&5
$as_echo_n "checking whether strtold conforms to C99... " >&6; }
@@ -16817,7 +16749,6 @@ $as_echo "#define HAVE_ENVIRON_DECL 1" >>confdefs.h
-
GNULIB_FCNTL=0;
GNULIB_NONBLOCKING=0;
GNULIB_OPEN=0;
@@ -20408,12 +20339,10 @@ _ACEOF
-
:
-
:
@@ -20428,8 +20357,6 @@ _ACEOF
-
-
$as_echo "#define HAVE_DUP2 1" >>confdefs.h
@@ -21736,10 +21663,7 @@ done
gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
-
-
- :
-
+ :
fi
@@ -22546,6 +22470,34 @@ $as_echo "#define READLINK_TRAILING_SLASH_BUG 1" >>confdefs.h
+ for ac_func in sig2str
+do :
+ ac_fn_c_check_func "$LINENO" "sig2str" "ac_cv_func_sig2str"
+if test "x$ac_cv_func_sig2str" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SIG2STR 1
+_ACEOF
+
+fi
+done
+
+
+ if test $ac_cv_func_sig2str = no; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS sig2str.$ac_objext"
+
+
+ :
+
+ fi
+
@@ -23282,7 +23234,6 @@ $as_echo "$gl_cv_next_stddef_h" >&6; }
-
if test $gl_cv_have_include_next = yes; then
gl_cv_next_stdio_h='<'stdio.h'>'
else
@@ -23926,8 +23877,6 @@ done
-
-
if test $gl_cv_have_include_next = yes; then
gl_cv_next_sys_stat_h='<'sys/stat.h'>'
else
@@ -24231,7 +24180,6 @@ done
-
if test $gl_cv_have_include_next = yes; then
gl_cv_next_unistd_h='<'unistd.h'>'
else
@@ -25043,10 +24991,7 @@ $as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h
gl_LIBOBJS="$gl_LIBOBJS stat.$ac_objext"
-
-
- :
-
+ :
fi
diff --git a/build-aux/snippet/warn-on-use.h b/build-aux/snippet/warn-on-use.h
index d4cb94f3525..51e69bbd9b6 100644
--- a/build-aux/snippet/warn-on-use.h
+++ b/build-aux/snippet/warn-on-use.h
@@ -55,7 +55,7 @@
rather than issue the nice warning, but the end result of informing
the developer about their portability problem is still achieved):
#if HAVE_RAW_DECL_ENVIRON
- static inline char ***rpl_environ (void) { return &environ; }
+ static char ***rpl_environ (void) { return &environ; }
_GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
# undef environ
# define environ (*rpl_environ ())
diff --git a/configure.ac b/configure.ac
index 085ca8341ae..affbf5f750d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -830,7 +830,7 @@ if test "$MAKEINFO" = "no"; then
MAKEINFO=makeinfo
if test "x${with_makeinfo}" = "xno"; then
HAVE_MAKEINFO=no
- elif test ! -e $srcdir/info/emacs; then
+ elif test ! -e $srcdir/info/emacs && test ! -e $srcdir/info/emacs.info; then
AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
source tree does not seem to have pre-built manuals in the `info' directory.
Either install a suitable version of makeinfo, or re-run configure
@@ -3600,7 +3600,7 @@ case $opsys in
AC_DEFINE(PTY_ITERATION, [])
dnl Not used, because PTY_ITERATION is defined.
AC_DEFINE(FIRST_PTY_LETTER, ['q'])
- AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
+ AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCHLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCHLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
dnl No need to get the pty name at all.
AC_DEFINE(PTY_NAME_SPRINTF, [])
dnl No need to use sprintf to get the tty name--we get that from _getpty.
@@ -3611,12 +3611,12 @@ case $opsys in
dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
dnl from intercepting that death. If any child but grantpt's should die
dnl within, it should be caught after sigrelse(2).
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
+ AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
;;
unixware )
dnl Comments are as per sol2*.
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
+ AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
;;
esac
@@ -3688,7 +3688,6 @@ case $opsys in
esac
-AH_TEMPLATE(ULIMIT_BREAK_VALUE, [Undocumented.])
AH_TEMPLATE(TAB3, [Undocumented.])
case $opsys in
@@ -3700,14 +3699,6 @@ case $opsys in
;;
gnu-linux | gnu-kfreebsd )
- dnl libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared
- dnl library, we cannot get the maximum address for brk.
- AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
-#ifndef __i386__
-# error "not i386"
-#endif
- ]], [[]])], AC_DEFINE(ULIMIT_BREAK_VALUE, [(32*1024*1024)]), [])
-
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
#ifndef __ia64__
# error "not ia64"
@@ -3721,11 +3712,6 @@ case $opsys in
AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
run_time_remap; for HPUX.])
;;
-
- irix6-5)
- dnl Ulimit(UL_GMEMLIM) is busted...
- AC_DEFINE(ULIMIT_BREAK_VALUE, [0x14000000])
- ;;
esac
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 5c4ae2e1ee0..3dbf4ebcd5d 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,25 @@
+2012-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doclicense.texi, gpl.texi: Update to latest version from FSF.
+ These are just minor editorial changes.
+
+2012-12-06 Juanma Barranquero <lekktu@gmail.com>
+
+ * vc1-xtra.texi (General VC Options): Remove obsolete reference
+ to `vc-path'.
+
+2012-12-03 Chong Yidong <cyd@gnu.org>
+
+ * custom.texi (Init Rebinding): kbd is now a function (Bug#13052).
+
+2012-12-02 Kevin Ryde <user42@zip.com.au>
+
+ * maintaining.texi (Tag Syntax): Mention (defvar foo) handling.
+
+2012-12-01 Kevin Ryde <user42@zip.com.au>
+
+ * maintaining.texi (Tag Syntax): Mention Perl's "use constant".
+
2012-11-24 Paul Eggert <eggert@cs.ucla.edu>
* doclicense.texi, gpl.texi: Update to latest version from FSF.
diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi
index d3c914d92b0..0aeb74eabd6 100644
--- a/doc/emacs/abbrevs.texi
+++ b/doc/emacs/abbrevs.texi
@@ -141,7 +141,7 @@ abbrev definitions, both global and local.
When Abbrev mode is enabled, an abbrev expands whenever it is
present in the buffer just before point and you type a self-inserting
-whitespace or punctuation character (@key{SPC}, comma, etc.@:). More
+whitespace or punctuation character (@key{SPC}, comma, etc.). More
precisely, any character that is not a word constituent expands an
abbrev, and any word-constituent character can be part of an abbrev.
The most common way to use an abbrev is to insert it and then insert a
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 9fdead70f8a..debf173635f 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -44,7 +44,7 @@ Tomas Abrahamsson wrote @file{artist.el}, a package for producing
@acronym{ASCII} art with a mouse or with keyboard keys.
@item
-Jay K.@: Adams wrote @file{jka-compr.el} and @file{jka-cmpr-hook.el},
+Jay K. Adams wrote @file{jka-compr.el} and @file{jka-cmpr-hook.el},
providing automatic decompression and recompression for compressed
files.
@@ -96,13 +96,13 @@ Eli Barzilay wrote @file{calculator.el}, a desktop calculator for
Emacs.
@item
-Steven L.@: Baur wrote @file{footnote.el} which lets you include
+Steven L. Baur wrote @file{footnote.el} which lets you include
footnotes in email messages; and @file{gnus-audio.el} and
@file{earcon.el}, which provide sound effects for Gnus. He also wrote
@file{gnus-setup.el}.
@item
-Alexander L.@: Belikoff, Sergey Berezin, Sacha Chua, David Edmondson,
+Alexander L. Belikoff, Sergey Berezin, Sacha Chua, David Edmondson,
Noah Friedman, Andreas Fuchs, Mario Lang, Ben Mesander, Lawrence
Mitchell, Gergely Nagy, Michael Olson, Per Persson, Jorgen Schaefer,
Alex Schroeder, and Tom Tromey wrote ERC, an advanced Internet Relay
@@ -115,7 +115,7 @@ Christian Limpach and Adrian Robert developed and maintained the
NeXTstep port of Emacs.
@item
-Anna M.@: Bigatti wrote @file{cal-html.el}, which produces HTML calendars.
+Anna M. Bigatti wrote @file{cal-html.el}, which produces HTML calendars.
@item
Ray Blaak and Simon South wrote @file{delphi.el}, a mode for editing
@@ -130,14 +130,14 @@ Jim Blandy wrote Emacs 19's input system, brought its configuration and
build process up to the GNU coding standards, and contributed to the
frame support and multi-face support. Jim also wrote @file{tvi970.el},
terminal support for the TeleVideo 970 terminals; and co-wrote
-@file{wyse50.el} (q.v.@:).
+@file{wyse50.el} (q.v.).
@item
Per Bothner wrote @file{term.el}, a terminal emulator in an Emacs
buffer.
@item
-Terrence M.@: Brannon wrote @file{landmark.el}, a neural-network robot
+Terrence M. Brannon wrote @file{landmark.el}, a neural-network robot
that learns landmarks.
@item
@@ -162,7 +162,7 @@ Kevin Broadey wrote @file{foldout.el}, providing folding extensions to
Emacs's outline modes.
@item
-David M.@: Brown wrote @file{array.el}, for editing arrays and other
+David M. Brown wrote @file{array.el}, for editing arrays and other
tabular data.
@item
@@ -184,7 +184,7 @@ Emacs Lisp functions; and @file{trace.el}, a tracing facility for Emacs
Lisp.
@item
-Chris Chase, Carsten Dominik, and J.@: D.@: Smith wrote IDLWAVE mode,
+Chris Chase, Carsten Dominik, and J. D. Smith wrote IDLWAVE mode,
for editing IDL and WAVE CL.
@item
@@ -266,10 +266,10 @@ He also wrote @file{dynamic-setting.el}.
@item
Carsten Dominik wrote Ref@TeX{}, a package for setting up labels and
cross-references in @LaTeX{} documents; and co-wrote IDLWAVE mode
-(q.v.@:). He was the original author of Org mode, for maintaining notes,
+(q.v.). He was the original author of Org mode, for maintaining notes,
todo lists, and project planning. Bastien Guerry subsequently took
over maintainership. Benjamin Andresen, Thomas Baumann, Joel Boehland, Jan Böcker, Lennart
-Borgman, Baoqiu Cui, Dan Davison, Christian Egli, Eric S.@: Fraga, Daniel German, Chris Gray, Konrad Hinsen, Tassilo Horn, Philip
+Borgman, Baoqiu Cui, Dan Davison, Christian Egli, Eric S. Fraga, Daniel German, Chris Gray, Konrad Hinsen, Tassilo Horn, Philip
Jackson, Martyn Jago, Thorsten Jolitz, Jambunathan K, Tokuya Kameshima, Sergey Litvinov, David Maus, Ross Patterson, Juan Pechiar, Sebastian Rose, Eric Schulte,
Paul Sexton, Ulf Stegemann, Andy Stewart, Christopher Suckling, David O'Toole, John Wiegley, Zhang Weize,
Piotr Zielinski, and others also wrote various Org mode components.
@@ -429,7 +429,7 @@ characters used by @TeX{} and net tradition.
@item
Bastien Guerry wrote @file{gnus-bookmark.el}, bookmark support for Gnus;
-as well as helping to maintain Org mode (q.v.@:).
+as well as helping to maintain Org mode (q.v.).
@item
Henry Guillaume wrote @file{find-file.el}, a package to visit files
@@ -456,7 +456,7 @@ Jesper Harder wrote @file{yenc.el}, for decoding yenc encoded messages.
Alexandru Harsanyi wrote a library for accessing SOAP web services.
@item
-K.@: Shane Hartman wrote @file{chistory.el} and @file{echistory.el},
+K. Shane Hartman wrote @file{chistory.el} and @file{echistory.el},
packages for browsing command history lists; @file{electric.el} and
@file{helper.el}, which provide an alternative command loop and
appropriate help facilities; @file{emacsbug.el}, a package for
@@ -617,7 +617,7 @@ Pavel Kobyakov wrote @file{flymake.el}, a minor mode for performing
on-the-fly syntax checking.
@item
-David M.@: Koppelman wrote @file{hi-lock.el}, a minor mode for
+David M. Koppelman wrote @file{hi-lock.el}, a minor mode for
interactive automatic highlighting of parts of the buffer text.
@item
@@ -630,7 +630,7 @@ menu support.
@item
Sebastian Kremer wrote @code{dired-mode}, with contributions by Lawrence
-R.@: Dodd. He also wrote @file{ls-lisp.el}, a Lisp emulation of the
+R. Dodd. He also wrote @file{ls-lisp.el}, a Lisp emulation of the
@code{ls} command for platforms that don't have @code{ls} as a standard
program.
@@ -647,7 +647,7 @@ Daniel LaLiberte wrote @file{edebug.el}, a source-level debugger for
Emacs Lisp; @file{cl-specs.el}, specifications to help @code{edebug}
debug code written using David Gillespie's Common Lisp support; and
@file{isearch.el}, Emacs's incremental search minor mode. He also
-co-wrote @file{hideif.el} (q.v.@:).
+co-wrote @file{hideif.el} (q.v.).
@item
Karl Landstrom and Daniel Colascione wrote @file{js.el}, a mode for
@@ -673,7 +673,7 @@ Emacs Lisp programs.
@item
Lars Lindberg wrote @file{msb.el}, which provides more flexible menus
-for buffer selection; co-wrote @file{imenu.el} (q.v.@:); and rewrote
+for buffer selection; co-wrote @file{imenu.el} (q.v.); and rewrote
@file{dabbrev.el}, originally written by Don Morrison.
@item
@@ -752,11 +752,11 @@ maintained CC Mode from Emacs 22 onwards.
Michael McNamara and Wilson Snyder wrote Verilog mode.
@item
-Christopher J.@: Madsen wrote @file{decipher.el}, a package for cracking
+Christopher J. Madsen wrote @file{decipher.el}, a package for cracking
simple substitution ciphers.
@item
-Neil M.@: Mager wrote @file{appt.el}, functions to notify users of their
+Neil M. Mager wrote @file{appt.el}, functions to notify users of their
appointments. It finds appointments recorded in the diary files
used by the @code{calendar} package.
@@ -859,7 +859,7 @@ Erik Naggum wrote the time-conversion functions. He also wrote
@file{parse-time.el}, for parsing time strings.
@item
-Takahashi Naoto co-wrote @file{quail.el} (q.v.@:), and wrote
+Takahashi Naoto co-wrote @file{quail.el} (q.v.), and wrote
@file{robin.el}, another input method.
@item
@@ -908,7 +908,7 @@ Takaaki Ota wrote @file{table.el}, a package for creating and editing
embedded text-based tables.
@item
-Pieter E.@: J.@: Pareit wrote @file{mixal-mode.el}, an editing mode for
+Pieter E. J. Pareit wrote @file{mixal-mode.el}, an editing mode for
the MIX assembly language.
@item
@@ -924,7 +924,7 @@ Damon Anton Permezel wrote @file{hanoi.el}, an animated demonstration of
the ``Towers of Hanoi'' puzzle.
@item
-William M.@: Perry wrote @file{mailcap.el} (with Lars Magne
+William M. Perry wrote @file{mailcap.el} (with Lars Magne
Ingebrigtsen), a MIME media types configuration facility;
@file{mwheel.el}, a package for supporting mouse wheels; co-wrote (with
Dave Love) @file{socks.el}, a Socks v5 client; and developed the URL
@@ -953,7 +953,7 @@ support for Wyse 50 terminals. He also co-wrote @file{compile.el}
(q.v.@:) and @file{ada-stmt.el}.
@item
-Richard L.@: Pieri wrote @file{pop3.el}, a Post Office Protocol (RFC
+Richard L. Pieri wrote @file{pop3.el}, a Post Office Protocol (RFC
1460) interface for Emacs.
@item
@@ -976,12 +976,12 @@ minor mode for displaying a ruler in the header line; and
structures.
@item
-Francesco A.@: Potorti wrote @file{cmacexp.el}, providing a command which
+Francesco A. Potorti wrote @file{cmacexp.el}, providing a command which
runs the C preprocessor on a region of a file and displays the results.
He also expanded and redesigned the @code{etags} program.
@item
-Michael D.@: Prange and Steven A.@: Wood wrote @file{fortran.el}, a mode
+Michael D. Prange and Steven A. Wood wrote @file{fortran.el}, a mode
for editing Fortran code.
@item
@@ -989,7 +989,7 @@ Ashwin Ram wrote @file{refer.el}, commands to look up references in
bibliography files by keyword.
@item
-Eric S.@: Raymond wrote @file{vc.el}, an interface to the RCS and SCCS
+Eric S. Raymond wrote @file{vc.el}, an interface to the RCS and SCCS
source code version control systems, with Paul Eggert; @file{gud.el},
a package for running source-level debuggers like GDB and SDB in
Emacs; @file{asm-mode.el}, a mode for editing assembly language code;
@@ -1005,14 +1005,14 @@ used in Emacs Lisp library files; and code to set and make use of the
which each lisp function loaded into Emacs came.
@item
-Edward M.@: Reingold wrote the calendar and diary support,
+Edward M. Reingold wrote the calendar and diary support,
with contributions from Stewart Clamen (@file{cal-mayan.el}), Nachum
Dershowitz (@file{cal-hebrew.el}), Paul Eggert (@file{cal-dst.el}),
Steve Fisk (@file{cal-tex.el}), Michael Kifer (@file{cal-x.el}), Lara
-Rios (@file{cal-menu.el}), and Denis B.@: Roegel (@file{solar.el}).
+Rios (@file{cal-menu.el}), and Denis B. Roegel (@file{solar.el}).
Andy Oram contributed to its documentation. Reingold also contributed
to @file{tex-mode.el}, a mode for editing @TeX{} files, as did William
-F.@: Schelter, Dick King, Stephen Gildea, Michael Prange, and Jacob
+F. Schelter, Dick King, Stephen Gildea, Michael Prange, and Jacob
Gore.
@item
@@ -1031,7 +1031,7 @@ VT line of terminals.
@item
Nick Roberts wrote @file{t-mouse.el}, for mouse support in text
-terminals; and @file{gdb-ui.el}, a graphical user interface to GDB.
+terminals; and @file{gdb-ui.el}, a graphical user interface to GDB@.
Together with Dmitry Dzhus, he wrote @file{gdb-mi.el}, the successor to
@file{gdb-ui.el}.
@@ -1043,7 +1043,7 @@ into ``handwriting''.
Markus Rost wrote @file{cus-test.el}, a testing framework for customize.
@item
-Guillermo J.@: Rozas wrote @file{scheme.el}, a mode for editing Scheme and
+Guillermo J. Rozas wrote @file{scheme.el}, a mode for editing Scheme and
DSSSL code.
@item
@@ -1067,7 +1067,7 @@ Kevin Ryde wrote @file{info-xref.el}, a library for checking
references in Info files.
@item
-James B.@: Salem and Brewster Kahle wrote @file{completion.el}, providing
+James B. Salem and Brewster Kahle wrote @file{completion.el}, providing
dynamic word completion.
@item
@@ -1091,7 +1091,7 @@ Michael Schmidt and Tom Perrine wrote @file{modula2.el}, a mode for
editing Modula-2 code, based on work by Mick Jordan and Peter Robinson.
@item
-Ronald S.@: Schnell wrote @file{dunnet.el}, a text adventure game.
+Ronald S. Schnell wrote @file{dunnet.el}, a text adventure game.
@item
Philippe Schnoebelen wrote @file{gomoku.el}, a Go Moku game played
@@ -1111,7 +1111,7 @@ for interactively running an SQL interpreter in an Emacs buffer;
@file{cus-theme.el}, an interface for custom themes; @file{master.el}, a
package for making a buffer @samp{master} over another; and
@file{spam-stat.el}, for statistical detection of junk email. He also
-wrote parts of the IRC client ERC (q.v.@:).
+wrote parts of the IRC client ERC (q.v.).
@item
Randal Schwartz wrote @file{pp.el}, a pretty-printer for lisp objects.
@@ -1162,7 +1162,7 @@ David Smith wrote @file{ielm.el}, a mode for interacting with the Emacs
Lisp interpreter as a subprocess.
@item
-Paul D.@: Smith wrote @file{snmp-mode.el}.
+Paul D. Smith wrote @file{snmp-mode.el}.
@item
William Sommerfeld wrote @file{scribe.el}, a mode for editing Scribe
@@ -1204,7 +1204,7 @@ cursor'' that you can move with the keyboard and use for copying text.
Ken Stevens wrote @file{ispell.el}, a spell-checker interface.
@item
-Kim F.@: Storm made many improvements to the Emacs display engine,
+Kim F. Storm made many improvements to the Emacs display engine,
process support, and networking support. He also wrote
@file{bindat.el}, a package for encoding and decoding binary data;
CUA mode, which allows Emacs to emulate the standard CUA key
@@ -1278,12 +1278,12 @@ for Gnus; and @file{timezone.el}, providing functions for dealing with
time zones.
@item
-Neil W.@: Van Dyke wrote @file{webjump.el}, a ``hot links'' package.
+Neil W. Van Dyke wrote @file{webjump.el}, a ``hot links'' package.
@item
Didier Verna wrote @file{rect.el}, a package of functions for
operations on rectangle regions of text. He also contributed to Gnus
-(q.v.@:).
+(q.v.).
@item
Joakim Verona implemented ImageMagick support.
@@ -1332,7 +1332,7 @@ the shift key and motion commands; and @file{dos-fns.el}, functions
for use under MS-DOS.
@item
-Joe Wells wrote the original version of @file{apropos.el} (q.v.@:);
+Joe Wells wrote the original version of @file{apropos.el} (q.v.);
@file{resume.el}, support for processing command-line arguments after
resuming a suspended Emacs job; and @file{mail-extr.el}, a package for
extracting names and addresses from mail headers, with contributions
@@ -1351,7 +1351,7 @@ time spent on projects; the Bahá'í calendar support;
@file{remember.el}, a mode for jotting down things to remember;
@file{eudcb-mab.el}, an address book backend for the Emacs Unified
Directory Client; and @code{eshell}, a command shell implemented
-entirely in Emacs Lisp. He also contributed to Org mode (q.v.@:).
+entirely in Emacs Lisp. He also contributed to Org mode (q.v.).
@item
Mike Williams wrote @file{thingatpt.el}, a library of functions for
@@ -1362,16 +1362,16 @@ Roland Winkler wrote @file{proced.el}, a system process editor.
@item
Bill Wohler wrote MH-E, the Emacs interface to the MH mail system;
-making use of earlier work by James R.@: Larus. Satyaki Das, Peter S.@:
-Galbraith, Stephen Gildea, and Jeffrey C.@: Honig also wrote various
+making use of earlier work by James R. Larus. Satyaki Das, Peter S.
+Galbraith, Stephen Gildea, and Jeffrey C. Honig also wrote various
MH-E components.
@item
-Dale R.@: Worley wrote @file{emerge.el}, a package for interactively
+Dale R. Worley wrote @file{emerge.el}, a package for interactively
merging two versions of a file.
@item
-Francis J.@: Wright wrote @file{woman.el}, a package for browsing
+Francis J. Wright wrote @file{woman.el}, a package for browsing
manual pages without the @code{man} command.
@item
@@ -1429,13 +1429,13 @@ messages; @file{rfc1843.el}, an HZ decoding package;
other Gnus components.
@item
-Ian T.@: Zimmerman wrote @file{gametree.el}.
+Ian T. Zimmerman wrote @file{gametree.el}.
@item
Reto Zimmermann wrote @file{vera-mode.el}.
@item
-Neal Ziring and Felix S.@: T.@: Wu wrote @file{vi.el}, an emulation of the
+Neal Ziring and Felix S. T. Wu wrote @file{vi.el}, an emulation of the
VI text editor.
@item
diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi
index 5a957b02843..62348e6d2e2 100644
--- a/doc/emacs/arevert-xtra.texi
+++ b/doc/emacs/arevert-xtra.texi
@@ -40,7 +40,7 @@ explained in the corresponding sections.
@menu
* Auto Reverting the Buffer Menu:: Auto Revert of the Buffer Menu.
* Auto Reverting Dired:: Auto Revert of Dired buffers.
-* Supporting additional buffers:: How to add more Auto Revert support.
+* Supporting additional buffers:: How to add more Auto Revert support.
@end menu
@node Auto Reverting the Buffer Menu
@@ -66,9 +66,9 @@ operating systems. It may not work satisfactorily on some other
systems.
Dired buffers only auto-revert when the file list of the buffer's main
-directory changes (e.g. when a new file is added). They do not
+directory changes (e.g., when a new file is added). They do not
auto-revert when information about a particular file changes
-(e.g. when the size changes) or when inserted subdirectories change.
+(e.g., when the size changes) or when inserted subdirectories change.
To be sure that @emph{all} listed information is up to date, you have
to manually revert using @kbd{g}, @emph{even} if auto-reverting is
enabled in the Dired buffer. Sometimes, you might get the impression
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index 07060db5af2..4d61df09669 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -107,7 +107,7 @@ just like digits. Case is ignored.
of a character, using the minibuffer. If you enter a name, the
command provides completion (@pxref{Completion}). If you enter a
code-point, it should be as a hexadecimal number (the convention for
-Unicode), or a number with a specified radix, e.g.@: @code{#o23072}
+Unicode), or a number with a specified radix, e.g., @code{#o23072}
(octal); @xref{Integer Basics,,, elisp, The Emacs Lisp Reference
Manual}. The command then inserts the corresponding character into
the buffer. For example, both of the following insert the infinity
@@ -385,7 +385,7 @@ On some text terminals, Emacs may not recognize the @key{DEL} key
properly. @xref{DEL Does Not Delete}, if you encounter this problem.
The @key{delete} (@code{delete-forward-char}) command deletes in the
-``opposite direction'': it deletes the character after point, i.e. the
+``opposite direction'': it deletes the character after point, i.e., the
character under the cursor. If point was at the end of a line, this
joins the following line onto this one. Like @kbd{@key{DEL}}, it
deletes the text in the region if the region is active (@pxref{Mark}).
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 8c6705cc0c9..6940a0698f8 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -44,8 +44,8 @@ variables}---variables that can have a different value in each buffer.
by the largest buffer position representable by @dfn{Emacs integers}.
This is because Emacs tracks buffer positions using that data type.
For typical 64-bit machines, this maximum buffer size is @math{2^61 -
-2} bytes, or about 2 EiB. For typical 32-bit machines, the maximum is
-usually @math{2^29 - 2} bytes, or about 512 MiB. Buffer sizes are
+2} bytes, or about 2 EiB@. For typical 32-bit machines, the maximum is
+usually @math{2^29 - 2} bytes, or about 512 MiB@. Buffer sizes are
also limited by the amount of memory in the system.
@menu
@@ -614,7 +614,7 @@ names (all but one of them).
@vindex uniquify-buffer-name-style
Other methods work by adding parts of each file's directory to the
-buffer name. To select one, load the library @file{uniquify} (e.g.
+buffer name. To select one, load the library @file{uniquify} (e.g.,
using @code{(require 'uniquify)}), and customize the variable
@code{uniquify-buffer-name-style} (@pxref{Easy Customization}).
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index e0ea72902fb..7d6e7c9d6f4 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -261,7 +261,7 @@ or previous error message for a different source file.
@findex next-error-follow-minor-mode
You can type @kbd{C-c C-f} to toggle Next Error Follow mode. In
this minor mode, ordinary cursor motion in the compilation buffer
-automatically updates the source buffer, i.e.@: moving the cursor over
+automatically updates the source buffer, i.e., moving the cursor over
an error message causes the locus of that error to be displayed.
The features of Compilation mode are also available in a minor mode
@@ -324,7 +324,7 @@ nohup @var{command}; sleep 1
@ifnottex
On the MS-DOS ``operating system'', asynchronous subprocesses are
not supported, so @kbd{M-x compile} runs the compilation command
-synchronously (i.e.@: you must wait until the command finishes before
+synchronously (i.e., you must wait until the command finishes before
you can do anything else in Emacs). @xref{MS-DOS}.
@end ifnottex
@@ -589,7 +589,7 @@ to recompile and restart the program.
@findex gud-tooltip-mode
@vindex gud-tooltip-echo-area
GUD Tooltip mode is a global minor mode that adds tooltip support to
-GUD. To toggle this mode, type @kbd{M-x gud-tooltip-mode}. It is
+GUD@. To toggle this mode, type @kbd{M-x gud-tooltip-mode}. It is
disabled by default. If enabled, you can move the mouse cursor over a
variable, a function, or a macro (collectively called
@dfn{identifiers}) to show their values in tooltips
@@ -625,7 +625,7 @@ Set a breakpoint on the source line that point is on.
@kbd{C-x @key{SPC}} (@code{gud-break}), when called in a source
buffer, sets a debugger breakpoint on the current source line. This
-command is available only after starting GUD. If you call it in a
+command is available only after starting GUD@. If you call it in a
buffer that is not associated with any debugger subprocess, it signals
a error.
@@ -756,7 +756,7 @@ This key is available only in the GUD interaction buffer.
that makes sense.
Because @key{TAB} serves as a completion command, you can't use it to
-enter a tab as input to the program you are debugging with GDB.
+enter a tab as input to the program you are debugging with GDB@.
Instead, type @kbd{C-q @key{TAB}} to enter a tab.
@node GUD Customization
@@ -774,7 +774,7 @@ Instead, type @kbd{C-q @key{TAB}} to enter a tab.
you are using DBX; @code{sdb-mode-hook}, if you are using SDB;
@code{xdb-mode-hook}, if you are using XDB; @code{perldb-mode-hook},
for Perl debugging mode; @code{pdb-mode-hook}, for PDB;
-@code{jdb-mode-hook}, for JDB. @xref{Hooks}.
+@code{jdb-mode-hook}, for JDB@. @xref{Hooks}.
The @code{gud-def} Lisp macro (@pxref{Defining Macros,,, elisp, the
Emacs Lisp Reference Manual}) provides a convenient way to define an
diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi
index 09beabc40cb..35b91b5a24f 100644
--- a/doc/emacs/cal-xtra.texi
+++ b/doc/emacs/cal-xtra.texi
@@ -103,7 +103,7 @@ knows about. These are: @code{holiday-general-holidays},
@code{holiday-bahai-holidays}, @code{holiday-christian-holidays},
@code{holiday-hebrew-holidays}, @code{holiday-islamic-holidays},
@code{holiday-oriental-holidays}, and @code{holiday-other-holidays}.
-The names should be self-explanatory; e.g.@: @code{holiday-solar-holidays}
+The names should be self-explanatory; e.g., @code{holiday-solar-holidays}
lists sun- and moon-related holidays.
You can customize these lists of holidays to your own needs, deleting or
@@ -628,7 +628,7 @@ of the diary entries, or add items.
variables @code{diary-comment-start} and @code{diary-comment-end} to
strings that delimit comments. The fancy display does not print
comments. You might want to put meta-data for the use of other packages
-(e.g.@: the appointment package,
+(e.g., the appointment package,
@iftex
@pxref{Appointments,,,emacs, the Emacs Manual})
@end iftex
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index d1ddd0dce90..cf13b787962 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -1551,7 +1551,7 @@ diary file and iCalendar files, which are defined in ``RFC
2445---Internet Calendaring and Scheduling Core Object Specification
(iCalendar)'' (as well as the earlier vCalendar format).
-@c Importing works for ``ordinary'' (i.e. non-recurring) events, but
+@c Importing works for ``ordinary'' (i.e., non-recurring) events, but
@c (at present) may not work correctly (if at all) for recurring events.
@c Exporting of diary files into iCalendar files should work correctly
@c for most diary entries. This feature is a work in progress, so the
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index d4573eed5a8..ebde2382c34 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -576,7 +576,7 @@ Emacs tries @env{TEMP}, then @env{TMPDIR}, then @env{TMP}, and finally
This specifies the current time zone and possibly also daylight
saving time information. On MS-DOS, if @env{TZ} is not set in the
environment when Emacs starts, Emacs defines a default value as
-appropriate for the country code returned by DOS. On MS-Windows, Emacs
+appropriate for the country code returned by DOS@. On MS-Windows, Emacs
does not use @env{TZ} at all.
@item USER
The user's login name. See also @env{LOGNAME}. On MS-DOS, this
@@ -747,7 +747,7 @@ Use @var{font} as the default font.
When passing a font name to Emacs on the command line, you may need to
``quote'' it, by enclosing it in quotation marks, if it contains
-characters that the shell treats specially (e.g.@: spaces). For
+characters that the shell treats specially (e.g., spaces). For
example:
@smallexample
@@ -839,7 +839,7 @@ otherwise use an appropriate standard mode for @var{num} colors.
Depending on your terminal's capabilities, Emacs might be able to turn
on a color mode for 8, 16, 88, or 256 as the value of @var{num}. If
there is no mode that supports @var{num} colors, Emacs acts as if
-@var{num} were 0, i.e.@: it uses the terminal's default color support
+@var{num} were 0, i.e., it uses the terminal's default color support
mode.
@end table
If @var{mode} is omitted, it defaults to @var{ansi8}.
@@ -1070,7 +1070,7 @@ it.
By default, Emacs uses an icon containing the Emacs logo. On
desktop environments such as Gnome, this icon is also displayed in
-other contexts, e.g.@: when switching into an Emacs frame. The
+other contexts, e.g., when switching into an Emacs frame. The
@samp{-nbi} or @samp{--no-bitmap-icon} option tells Emacs to let the
window manager choose what sort of icon to use---usually just a small
rectangle containing the frame's title.
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index e63a98a9722..5c5493884b6 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -53,7 +53,7 @@ holding down the @key{Ctrl} key while pressing @kbd{a}; we will refer
to this as @kbd{C-a} for short. Similarly @kbd{Meta-a}, or @kbd{M-a}
for short, is entered by holding down the @key{Alt} key and pressing
@kbd{a}. Modifier keys can also be applied to non-alphanumerical
-characters, e.g. @kbd{C-@key{F1}} or @kbd{M-@key{left}}.
+characters, e.g., @kbd{C-@key{F1}} or @kbd{M-@key{left}}.
@cindex @key{ESC} replacing @key{Meta} key
You can also type Meta characters using two-character sequences
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index a614126dbc0..dd8da41d0cb 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -610,10 +610,10 @@ always considered safe.
@vindex custom-enabled-themes
Setting or saving Custom themes actually works by customizing the
variable @code{custom-enabled-themes}. The value of this variable is
-a list of Custom theme names (as Lisp symbols, e.g.@: @code{tango}).
+a list of Custom theme names (as Lisp symbols, e.g., @code{tango}).
Instead of using the @file{*Custom Themes*} buffer to set
@code{custom-enabled-themes}, you can customize the variable using the
-usual customization interface, e.g.@: with @kbd{M-x customize-option}.
+usual customization interface, e.g., with @kbd{M-x customize-option}.
Note that Custom themes are not allowed to set
@code{custom-enabled-themes} themselves.
@@ -1648,7 +1648,7 @@ you can specify them in your initialization file by writing Lisp code.
@findex kbd
There are several ways to write a key binding using Lisp. The
-simplest is to use the @code{kbd} macro, which converts a textual
+simplest is to use the @code{kbd} function, which converts a textual
representation of a key sequence---similar to how we have written key
sequences in this manual---into a form that can be passed as an
argument to @code{global-set-key}. For example, here's how to bind
@@ -1676,11 +1676,11 @@ and mouse events:
(global-set-key (kbd "<mouse-2>") 'mouse-save-then-kill)
@end example
- Instead of using the @code{kbd} macro, you can use a Lisp string or
-vector to specify the key sequence. Using a string is simpler, but
-only works for @acronym{ASCII} characters and Meta-modified
-@acronym{ASCII} characters. For example, here's how to bind @kbd{C-x
-M-l} to @code{make-symbolic-link} (@pxref{Misc File Ops}):
+ Instead of using @code{kbd}, you can use a Lisp string or vector to
+specify the key sequence. Using a string is simpler, but only works
+for @acronym{ASCII} characters and Meta-modified @acronym{ASCII}
+characters. For example, here's how to bind @kbd{C-x M-l} to
+@code{make-symbolic-link} (@pxref{Misc File Ops}):
@example
(global-set-key "\C-x\M-l" 'make-symbolic-link)
@@ -2329,7 +2329,7 @@ Here a full file name is used, so no searching is done.
@cindex loading Lisp libraries automatically
@cindex autoload Lisp libraries
Tell Emacs to find the definition for the function @code{myfunction}
-by loading a Lisp library named @file{mypackage} (i.e.@: a file
+by loading a Lisp library named @file{mypackage} (i.e., a file
@file{mypackage.elc} or @file{mypackage.el}):
@example
@@ -2496,7 +2496,7 @@ editor customizations even if you are running as the super user.
More precisely, Emacs first determines which user's init file to use.
It gets your user name from the environment variables @env{LOGNAME} and
-@env{USER}; if neither of those exists, it uses effective user-ID.
+@env{USER}; if neither of those exists, it uses effective user-ID@.
If that user name matches the real user-ID, then Emacs uses @env{HOME};
otherwise, it looks up the home directory corresponding to that user
name in the system's data base of users.
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 69b72b2c73a..3b461b443c0 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -968,7 +968,7 @@ is the second argument. The output of the @command{diff} program is
shown in a buffer using Diff mode (@pxref{Comparing Files}).
If the region is active, the default for the file read using the
-minibuffer is the file at the mark (i.e.@: the ordinary Emacs mark,
+minibuffer is the file at the mark (i.e., the ordinary Emacs mark,
not a Dired mark; @pxref{Setting Mark}). Otherwise, if the file at
point has a backup file (@pxref{Backup}), that is the default.
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index 876c46bdf1a..8dc82d4b70d 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -249,14 +249,14 @@ variables @code{scroll-up-aggressively} and
position of point after scrolling. The value of
@code{scroll-up-aggressively} should be either @code{nil} (the
default), or a floating point number @var{f} between 0 and 1. The
-latter means that when point goes below the bottom window edge (i.e.@:
+latter means that when point goes below the bottom window edge (i.e.,
scrolling forward), Emacs scrolls the window so that point is @var{f}
parts of the window height from the bottom window edge. Thus, larger
@var{f} means more aggressive scrolling: more new text is brought into
view. The default value, @code{nil}, is equivalent to 0.5.
Likewise, @code{scroll-down-aggressively} is used when point goes
-above the bottom window edge (i.e.@: scrolling backward). The value
+above the bottom window edge (i.e., scrolling backward). The value
specifies how far point should be from the top margin of the window
after scrolling. Thus, as with @code{scroll-up-aggressively}, a
larger value is more aggressive.
@@ -1089,7 +1089,7 @@ buffer text, so blank lines at the end of the buffer stand out because
they lack this image. To enable this feature, set the buffer-local
variable @code{indicate-empty-lines} to a non-@code{nil} value. You
can enable or disable this feature for all new buffers by setting the
-default value of this variable, e.g.@: @code{(setq-default
+default value of this variable, e.g., @code{(setq-default
indicate-empty-lines t)}.
@cindex Whitespace mode
@@ -1258,7 +1258,7 @@ line looks like this:
Here @var{hh} and @var{mm} are the hour and minute, followed always by
@samp{am} or @samp{pm}. @var{l.ll} is the average number, collected
for the last few minutes, of processes in the whole system that were
-either running or ready to run (i.e.@: were waiting for an available
+either running or ready to run (i.e., were waiting for an available
processor). (Some fields may be missing if your operating system
cannot support them.) If you prefer time display in 24-hour format,
set the variable @code{display-time-24hr-format} to @code{t}.
@@ -1369,7 +1369,7 @@ as octal escape sequences instead of caret escape sequences.
Some non-@acronym{ASCII} characters have the same appearance as an
@acronym{ASCII} space or hyphen (minus) character. Such characters
can cause problems if they are entered into a buffer without your
-realization, e.g.@: by yanking; for instance, source code compilers
+realization, e.g., by yanking; for instance, source code compilers
typically do not treat non-@acronym{ASCII} spaces as whitespace
characters. To deal with this problem, Emacs displays such characters
specially: it displays @code{U+00A0} (no-break space) with the
diff --git a/doc/emacs/doclicense.texi b/doc/emacs/doclicense.texi
index cb71f05a175..9c3bbe56e91 100644
--- a/doc/emacs/doclicense.texi
+++ b/doc/emacs/doclicense.texi
@@ -97,7 +97,7 @@ format, SGML or XML using a publicly available
DTD, and standard-conforming simple HTML,
PostScript or PDF designed for human modification. Examples
of transparent image formats include PNG, XCF and
-JPG. Opaque formats include proprietary formats that can be
+JPG@. Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML,
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 005215de645..423435ae111 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -1323,13 +1323,13 @@ when you get it, not just free for the manufacturer.
If you find GNU Emacs useful, please @strong{send a donation} to the
Free Software Foundation to support our work. Donations to the Free
-Software Foundation are tax deductible in the US. If you use GNU Emacs
+Software Foundation are tax deductible in the US@. If you use GNU Emacs
at your workplace, please suggest that the company make a donation.
For more information on how you can help, see
@url{http://www.gnu.org/help/help.html}.
We also sell hardcopy versions of this manual and @cite{An
-Introduction to Programming in Emacs Lisp}, by Robert J.@: Chassell.
+Introduction to Programming in Emacs Lisp}, by Robert J. Chassell.
You can visit our online store at @url{http://shop.fsf.org/}.
The income from sales goes to support the foundation's purpose: the
development of new free software, and improvements to our existing
@@ -1350,15 +1350,15 @@ USA
@unnumberedsec Acknowledgments
Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas
-Abrahamsson, Jay K.@: Adams, Alon Albert, Michael Albinus, Nagy
+Abrahamsson, Jay K. Adams, Alon Albert, Michael Albinus, Nagy
Andras, Benjamin Andresen, Ralf Angeli, Dmitry Antipov, Joe Arceneaux, Emil Åström,
Miles Bader, David Bakhash, Juanma Barranquero, Eli Barzilay, Thomas
-Baumann, Steven L.@: Baur, Jay Belanger, Alexander L.@: Belikoff,
+Baumann, Steven L. Baur, Jay Belanger, Alexander L. Belikoff,
Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Karl
-Berry, Anna M.@: Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan
+Berry, Anna M. Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan
Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner,
Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin
-Broadey, Vincent Broman, Michael Brouwer, David M.@: Brown, Stefan Bruda,
+Broadey, Vincent Broman, Michael Brouwer, David M. Brown, Stefan Bruda,
Georges Brun-Cottan, Joe Buehler, Scott Byer, W@l{}odek Bzyl,
Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chris Chase, Bob
Chassell, Andrew Choi, Chong Yidong, Sacha Chua, Stewart Clamen, James
@@ -1367,44 +1367,44 @@ Edward O'Connor, Christoph Conrad, Ludovic Courtès, Andrew Csillag,
Toby Cubitt, Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki
Das, Vivek Dasmohapatra, Dan Davison, Michael DeCorte, Gary Delp, Nachum
Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri
-Ding, Jan Djärv, Lawrence R.@: Dodd, Carsten Dominik, Scott Draves,
+Ding, Jan Djärv, Lawrence R. Dodd, Carsten Dominik, Scott Draves,
Benjamin Drieu, Viktor Dukhovni, Jacques Duthen, Dmitry Dzhus, John
Eaton, Rolf Ebert, Carl Edman, David Edmondson, Paul Eggert, Stephen
Eglen, Christian Egli, Torbjörn Einarsson, Tsugutomo Enami, David
Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Karl Fogel, Gary
-Foster, Eric S.@: Fraga, Romain Francoise, Noah Friedman, Andreas
-Fuchs, Shigeru Fukaya, Hallvard Furuseth, Keith Gabryelski, Peter S.@:
+Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
+Fuchs, Shigeru Fukaya, Hallvard Furuseth, Keith Gabryelski, Peter S.
Galbraith, Kevin Gallagher, Kevin Gallo, Juan León Lahoz García,
Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David
Gillespie, Bob Glickstein, Deepak Goel, David De La Harpe Golden, Boris
Goldowsky, David Goodger, Chris Gray, Kevin Greiner, Michelangelo Grigni, Odd
Gripenstam, Kai Großjohann, Michael Gschwind, Bastien Guerry, Henry
Guillaume, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris
-Hanson, Jesper Harder, Alexandru Harsanyi, K.@: Shane Hartman, John
-Heidemann, Jon K.@: Hellan, Magnus Henoch, Markus Heritsch, Dirk
+Hanson, Jesper Harder, Alexandru Harsanyi, K. Shane Hartman, John
+Heidemann, Jon K. Hellan, Magnus Henoch, Markus Heritsch, Dirk
Herrmann, Karl Heuer, Manabu Higashida, Konrad Hinsen, Anders Holst,
-Jeffrey C.@: Honig, Tassilo Horn, Kurt Hornik, Tom Houlder, Joakim
+Jeffrey C. Honig, Tassilo Horn, Kurt Hornik, Tom Houlder, Joakim
Hove, Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue,
Philip Jackson, Martyn Jago, Pavel Janik, Paul Jarc, Ulf Jasper,
-Thorsten Jolitz, Michael K.@: Johnson, Kyle Jones, Terry Jones, Simon
+Thorsten Jolitz, Michael K. Johnson, Kyle Jones, Terry Jones, Simon
Josefsson, Alexandre Julliard, Arne Jørgensen, Tomoji Kagatani,
Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Ivan Kanis, David
Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
-Klí@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K.@: Kolodney, David
-M.@: Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
+Klí@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David
+M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
Ryszard Kubiak, Igor Kuzmin, David Kågedal, Daniel LaLiberte, Karl
-Landstrom, Mario Lang, Aaron Larson, James R.@: Larus, Vinicius Jose
+Landstrom, Mario Lang, Aaron Larson, James R. Larus, Vinicius Jose
Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian
Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link,
-Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C.@: Lopes,
+Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C. Lopes,
Martin Lorentzon, Dave Love, Eric Ludlam, Károly L@H{o}rentey, Sascha
Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie,
-Christopher J.@: Madsen, Neil M.@: Mager, Ken Manheimer, Bill Mann,
+Christopher J. Madsen, Neil M. Mager, Ken Manheimer, Bill Mann,
Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin,
Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini, David
-Megginson, Stefan Merten, Ben A.@: Mesander, Wayne Mesard, Brad
+Megginson, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad
Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Moellmann, Stefan
Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
@@ -1412,44 +1412,44 @@ Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen,
Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff Norden,
Andrew Norman, Kentaro Ohkouchi, Christian Ohler,
Kenichi Okada, Alexandre Oliva, Bob Olson, Michael Olson, Takaaki Ota,
-Pieter E.@: J.@: Pareit, Ross Patterson, David Pearson, Juan Pechiar,
-Jeff Peck, Damon Anton Permezel, Tom Perrine, William M.@: Perry, Per
-Persson, Jens Petersen, Daniel Pfeiffer, Justus Piater, Richard L.@:
+Pieter E. J. Pareit, Ross Patterson, David Pearson, Juan Pechiar,
+Jeff Peck, Damon Anton Permezel, Tom Perrine, William M. Perry, Per
+Persson, Jens Petersen, Daniel Pfeiffer, Justus Piater, Richard L.
Pieri, Fred Pierresteguy, François Pinard, Daniel Pittman, Christian
-Plaunt, Alexander Pohoyda, David Ponce, Francesco A.@: Potorti,
-Michael D.@: Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa, Ashwin
-Ram, Eric S.@: Raymond, Paul Reilly, Edward M.@: Reingold, David
+Plaunt, Alexander Pohoyda, David Ponce, Francesco A. Potorti,
+Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa, Ashwin
+Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David
Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick
-Roberts, Roland B.@: Roberts, John Robinson, Denis B.@: Roegel, Danny
+Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny
Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo
-J.@: Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney, Wolfgang
-Rupprecht, Benjamin Rutt, Kevin Ryde, James B.@: Salem, Masahiko Sato,
+J. Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney, Wolfgang
+Rupprecht, Benjamin Rutt, Kevin Ryde, James B. Salem, Masahiko Sato,
Timo Savola, Jorgen Schaefer, Holger Schauer, William Schelter, Ralph
-Schleicher, Gregor Schmid, Michael Schmidt, Ronald S.@: Schnell,
+Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell,
Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
Rainer Schoepf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal
Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham,
Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor
@v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
-David Smith, Paul D.@: Smith, Wilson Snyder, William Sommerfeld, Simon
+David Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon
South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken
-Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.@:
+Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.
Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
Takahashi, Steven Tamm, Luc Teirlinck, Jean-Philippe Theberge, Jens
-T.@: Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi,
+T. Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi,
David O'Toole, Markus Triska, Tom Tromey, Enami Tsugutomo, Eli
Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
-W.@: Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
+W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin
Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize,
Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley,
Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill
-Wohler, Steven A.@: Wood, Dale R.@: Worley, Francis J.@: Wright, Felix
-S.@: T.@: Wu, Tom Wurgler, Yamamoto Mitsuharu, Katsumi Yamaoka,
+Wohler, Steven A. Wood, Dale R. Worley, Francis J. Wright, Felix
+S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Katsumi Yamaoka,
Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan
Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin,
-Shenghuo Zhu, Piotr Zielinski, Ian T.@: Zimmermann, Reto Zimmermann,
+Shenghuo Zhu, Piotr Zielinski, Ian T. Zimmermann, Reto Zimmermann,
Neal Ziring, Teodor Zlatanov, and Detlev Zundel.
@end iftex
diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi
index 552580ef851..66b1066e888 100644
--- a/doc/emacs/emerge-xtra.texi
+++ b/doc/emacs/emerge-xtra.texi
@@ -186,12 +186,12 @@ haven't made a choice. All differences start in the default-A state
which one alternative is ``preferred'' (see below).
When you select a difference, its state changes from default-A or
-default-B to plain A or B. Thus, the selected difference never has
+default-B to plain A or B@. Thus, the selected difference never has
state default-A or default-B, and these states are never displayed in
the mode line.
The command @kbd{d a} chooses default-A as the default state, and @kbd{d
-b} chooses default-B. This chosen default applies to all differences
+b} chooses default-B@. This chosen default applies to all differences
that you have never selected and for which no alternative is preferred.
If you are moving through the merge sequentially, the differences you
haven't selected are those following the selected one. Thus, while
@@ -375,7 +375,7 @@ While this example shows C preprocessor conditionals delimiting the two
alternative versions, you can specify the strings to use by setting
the variable @code{emerge-combine-versions-template} to a string of your
choice. In the string, @samp{%a} says where to put version A, and
-@samp{%b} says where to put version B. The default setting, which
+@samp{%b} says where to put version B@. The default setting, which
produces the results shown above, looks like this:
@example
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 8b609891caf..1845ba3eed1 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -72,7 +72,7 @@ directory into the minibuffer as the initial contents. You can
inhibit this insertion by changing the variable
@code{insert-default-directory} to @code{nil} (@pxref{Minibuffer
File}). Regardless, Emacs always assumes that any relative file name
-is relative to the default directory, e.g. entering a file name
+is relative to the default directory, e.g., entering a file name
without a directory specifies a file in the default directory.
@findex cd
@@ -773,7 +773,7 @@ spurious, just use @kbd{p} to tell Emacs to go ahead anyway.
multiple names, Emacs does not prevent two users from editing it
simultaneously under different names.
- A lock file cannot be written in some circumstances, e.g. if Emacs
+ A lock file cannot be written in some circumstances, e.g., if Emacs
lacks the system permissions or the system does not support symbolic
links. In these cases, Emacs can still detect the collision when you
try to save a file, by checking the file's last-modification date. If
@@ -1948,7 +1948,7 @@ can use ImageMagick to render a wide variety of images. The variable
@code{imagemagick-enabled-types} lists the image types that Emacs may
render using ImageMagick; each element in the list should be an
internal ImageMagick name for an image type, as a symbol or an
-equivalent string (e.g.@: @code{BMP} for @file{.bmp} images). To
+equivalent string (e.g., @code{BMP} for @file{.bmp} images). To
enable ImageMagick for all possible image types, change
@code{imagemagick-enabled-types} to @code{t}. The variable
@code{imagemagick-types-inhibit} lists the image types which should
diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi
index 43e2e63863e..4a00090eba8 100644
--- a/doc/emacs/fortran-xtra.texi
+++ b/doc/emacs/fortran-xtra.texi
@@ -89,7 +89,7 @@ Move to the beginning of the next statement
@item C-c C-p
Move to the beginning of the previous statement
(@code{fortran-previous-statement}/@code{f90-previous-statement}).
-If there is no previous statement (i.e. if called from the first
+If there is no previous statement (i.e., if called from the first
statement in the buffer), move to the start of the buffer.
@kindex C-c C-e @r{(F90 mode)}
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 0ce5c64c0eb..79276438eb8 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -6,7 +6,7 @@
@chapter Frames and Graphical Displays
@cindex frames
- When Emacs is started on a graphical display, e.g.@: on the X Window
+ When Emacs is started on a graphical display, e.g., on the X Window
System, it occupies a graphical system-level ``window''. In this
manual, we call this a @dfn{frame}, reserving the word ``window'' for
the part of the frame used for displaying a buffer. A frame initially
@@ -246,8 +246,8 @@ Select the text you drag across, in the form of whole lines.
@vindex mouse-highlight
Some Emacs buffers include @dfn{buttons}, or @dfn{hyperlinks}:
-pieces of text that perform some action (e.g.@: following a reference)
-when activated (e.g.@: by clicking on them). Usually, a button's text
+pieces of text that perform some action (e.g., following a reference)
+when activated (e.g., by clicking on them). Usually, a button's text
is visually highlighted: it is underlined, or a box is drawn around
it. If you move the mouse over a button, the shape of the mouse
cursor changes and the button lights up. If you change the variable
@@ -631,7 +631,7 @@ Monospace Bold Italic 12
@cindex X Logical Font Description
The third way to specify a font is to use an @dfn{XLFD} (@dfn{X
Logical Font Description}). This is the traditional method for
-specifying fonts under X. Each XLFD consists of fourteen words or
+specifying fonts under X@. Each XLFD consists of fourteen words or
numbers, separated by dashes, like this:
@example
@@ -644,7 +644,7 @@ characters (including none), and @samp{?} matches any single
character. However, matching is implementation-dependent, and can be
inaccurate when wildcards match dashes in a long name. For reliable
results, supply all 14 dashes and use wildcards only within a field.
-Case is insignificant in an XLFD. The syntax for an XLFD is as
+Case is insignificant in an XLFD@. The syntax for an XLFD is as
follows:
@example
@@ -659,7 +659,7 @@ The entries have the following meanings:
@item maker
The name of the font manufacturer.
@item family
-The name of the font family (e.g.@: @samp{courier}).
+The name of the font family (e.g., @samp{courier}).
@item weight
The font weight---normally either @samp{bold}, @samp{medium} or
@samp{light}. Some font names support other values.
@@ -1067,7 +1067,7 @@ attributes of the tooltip text are specified by the @code{tooltip}
face, and by X resources (@pxref{X Resources}).
@dfn{GUD tooltips} are special tooltips that show the values of
-variables when debugging a program with GUD. @xref{Debugger
+variables when debugging a program with GUD@. @xref{Debugger
Operation}.
@node Mouse Avoidance
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index 0912cfe5311..c4f27a209fb 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -14,7 +14,7 @@ as an abbrev for a long phrase that you want to insert frequently.
@xref{Abbrevs}.
@item Aborting
-Aborting means getting out of a recursive edit (q.v.@:). The
+Aborting means getting out of a recursive edit (q.v.). The
commands @kbd{C-]} and @kbd{M-x top-level} are used for this.
@xref{Quitting}.
@@ -62,7 +62,7 @@ function from those libraries. This is called `autoloading'.
@item Backtrace
A backtrace is a trace of a series of function calls showing how a
program arrived at a certain point. It is used mainly for finding and
-correcting bugs (q.v.@:). Emacs can display a backtrace when it signals
+correcting bugs (q.v.). Emacs can display a backtrace when it signals
an error or when you type @kbd{C-g} (@pxref{Glossary - Quitting}).
@xref{Checklist}.
@@ -83,14 +83,14 @@ delimiter for you (@pxref{Matching,,Matching Parens}).
@item Balanced Expressions
A balanced expression is a syntactically recognizable expression, such
as a symbol, number, string constant, block, or parenthesized expression
-in C. @xref{Expressions,Balanced Expressions}.
+in C@. @xref{Expressions,Balanced Expressions}.
@item Balloon Help
@xref{Glossary - Tooltips}.
@item Base Buffer
A base buffer is a buffer whose text is shared by an indirect buffer
-(q.v.@:).
+(q.v.).
@item Bidirectional Text
Some human languages, such as English, are written from left to right.
@@ -99,16 +99,16 @@ supports both of these forms, as well as any mixture of them---this
is `bidirectional text'. @xref{Bidirectional Editing}.
@item Bind
-To bind a key sequence means to give it a binding (q.v.@:).
+To bind a key sequence means to give it a binding (q.v.).
@xref{Rebinding}.
@anchor{Glossary - Binding}
@item Binding
A key sequence gets its meaning in Emacs by having a binding, which is a
-command (q.v.@:), a Lisp function that is run when you type that
+command (q.v.), a Lisp function that is run when you type that
sequence. @xref{Commands,Binding}. Customization often involves
rebinding a character to a different command function. The bindings of
-all key sequences are recorded in the keymaps (q.v.@:). @xref{Keymaps}.
+all key sequences are recorded in the keymaps (q.v.). @xref{Keymaps}.
@item Blank Lines
Blank lines are lines that contain only whitespace. Emacs has several
@@ -126,13 +126,13 @@ external border, outside of everything including the menu bar, plus an
internal border that surrounds the text windows, their scroll bars
and fringes, and separates them from the menu bar and tool bar. You
can customize both borders with options and resources (@pxref{Borders
-X}). Borders are not the same as fringes (q.v.@:).
+X}). Borders are not the same as fringes (q.v.).
@item Buffer
The buffer is the basic editing unit; one buffer corresponds to one text
being edited. You normally have several buffers, but at any time you are
editing only one, the `current buffer', though several can be visible
-when you are using multiple windows or frames (q.v.@:). Most buffers
+when you are using multiple windows or frames (q.v.). Most buffers
are visiting (q.v.@:) some file. @xref{Buffers}.
@item Buffer Selection History
@@ -194,7 +194,7 @@ press a mouse button and release it without moving the mouse.
@item Clipboard
A clipboard is a buffer provided by the window system for transferring
text between applications. On the X Window System, the clipboard is
-provided in addition to the primary selection (q.v.@:); on MS-Windows and Mac,
+provided in addition to the primary selection (q.v.); on MS-Windows and Mac,
the clipboard is used @emph{instead} of the primary selection.
@xref{Clipboard}.
@@ -206,7 +206,7 @@ text to or from a variety of coding systems when reading or writing it.
@item Command
A command is a Lisp function specially defined to be able to serve as a
-key binding in Emacs. When you type a key sequence (q.v.@:), its
+key binding in Emacs. When you type a key sequence (q.v.), its
binding (q.v.@:) is looked up in the relevant keymaps (q.v.@:) to find
the command to run. @xref{Commands}.
@@ -241,7 +241,7 @@ Reference Manual}) and programs in C and other languages
A complete key is a key sequence that fully specifies one action to be
performed by Emacs. For example, @kbd{X} and @kbd{C-f} and @kbd{C-x m}
are complete keys. Complete keys derive their meanings from being bound
-(q.v.@:) to commands (q.v.@:). Thus, @kbd{X} is conventionally bound to
+(q.v.@:) to commands (q.v.). Thus, @kbd{X} is conventionally bound to
a command to insert @samp{X} in the buffer; @kbd{C-x m} is
conventionally bound to a command to begin composing a mail message.
@xref{Keys}.
@@ -261,7 +261,7 @@ normally (but see @ref{Glossary - Truncation}) takes up more than one
screen line when displayed. We say that the text line is continued, and all
screen lines used for it after the first are called continuation
lines. @xref{Continuation Lines}. A related Emacs feature is
-`filling' (q.v.@:).
+`filling' (q.v.).
@item Control Character
A control character is a character that you type by holding down the
@@ -358,7 +358,7 @@ key or the @key{BACKSPACE} key, whichever one is easy to type.
@item Deletion
Deletion means erasing text without copying it into the kill ring
-(q.v.@:). The alternative is killing (q.v.@:). @xref{Killing,Deletion}.
+(q.v.). The alternative is killing (q.v.). @xref{Killing,Deletion}.
@anchor{Glossary - Deletion of Files}
@item Deletion of Files
@@ -401,7 +401,7 @@ confirmation. The usual reason for disabling a command is that it is
confusing for beginning users. @xref{Disabling}.
@item Down Event
-Short for `button down event' (q.v.@:).
+Short for `button down event' (q.v.).
@item Drag Event
A drag event is the kind of input event (q.v.@:) generated when you
@@ -431,7 +431,7 @@ them.
@item Electric
We say that a character is electric if it is normally self-inserting
-(q.v.@:), but the current major mode (q.v.@:) redefines it to do something
+(q.v.), but the current major mode (q.v.@:) redefines it to do something
else as well. For example, some programming language major modes define
particular delimiter characters to reindent the line, or insert one or
more newlines in addition to self-insertion.
@@ -440,7 +440,7 @@ more newlines in addition to self-insertion.
@item End Of Line
End of line is a character or a sequence of characters that indicate
the end of a text line. On GNU and Unix systems, this is a newline
-(q.v.@:), but other systems have other conventions. @xref{Coding
+(q.v.), but other systems have other conventions. @xref{Coding
Systems,end-of-line}. Emacs can recognize several end-of-line
conventions in files and convert between them.
@@ -458,7 +458,7 @@ variables in the environment it passes to programs it invokes.
An error occurs when an Emacs command cannot execute in the current
circumstances. When an error occurs, execution of the command stops
(unless the command has been programmed to do otherwise) and Emacs
-reports the error by displaying an error message (q.v.@:).
+reports the error by displaying an error message (q.v.).
@c Not helpful?
@c Type-ahead is discarded. Then Emacs is ready to read another
@c editing command.
@@ -510,11 +510,11 @@ directory, but an absolute file name refers to the same file regardless
of which directory is current. On GNU and Unix systems, an absolute
file name starts with a slash (the root directory) or with @samp{~/} or
@samp{~@var{user}/} (a home directory). On MS-Windows/MS-DOS, an
-absolute file name can also start with a drive letter and a colon, e.g.
+absolute file name can also start with a drive letter and a colon, e.g.,
@samp{@var{d}:}.
Some people use the term ``pathname'' for file names, but we do not;
-we use the word ``path'' only in the term ``search path'' (q.v.@:).
+we use the word ``path'' only in the term ``search path'' (q.v.).
@item File-Name Component
A file-name component names a file directly within a particular
@@ -556,25 +556,25 @@ fontset, rather than changing each font separately. @xref{Fontsets}.
@item Frame
A frame is a rectangular cluster of Emacs windows. Emacs starts out
with one frame, but you can create more. You can subdivide each frame
-into Emacs windows (q.v.@:). When you are using a window system
-(q.v.@:), more than one frame can be visible at the same time.
+into Emacs windows (q.v.). When you are using a window system
+(q.v.), more than one frame can be visible at the same time.
@xref{Frames}. Some other editors use the term ``window'' for this,
but in Emacs a window means something else.
@item Free Software
Free software is software that gives you the freedom to share, study
and modify it. Emacs is free software, part of the GNU project
-(q.v.@:), and distributed under a copyleft (q.v.@:) license called the
+(q.v.), and distributed under a copyleft (q.v.@:) license called the
GNU General Public License. @xref{Copying}.
@anchor{Glossary - Free Software Foundation}
@item Free Software Foundation
The Free Software Foundation (FSF) is a charitable foundation
-dedicated to promoting the development of free software (q.v.@:).
+dedicated to promoting the development of free software (q.v.).
For more information, see @uref{http://fsf.org/, the FSF website}.
@item Fringe
-On a graphical display (q.v.@:), there's a narrow portion of the frame
+On a graphical display (q.v.), there's a narrow portion of the frame
(q.v.@:) between the text area and the window's border. These
``fringes'' are used to display symbols that provide information about
the buffer text (@pxref{Fringes}). Emacs displays the fringe using a
@@ -585,7 +585,7 @@ special face (q.v.@:) called @code{fringe}. @xref{Faces,fringe}.
@item FTP
FTP is an acronym for File Transfer Protocol. This is one standard
-method for retrieving remote files (q.v.@:).
+method for retrieving remote files (q.v.).
@item Function Key
A function key is a key on the keyboard that sends input but does not
@@ -593,7 +593,7 @@ correspond to any character. @xref{Function Keys}.
@item Global
Global means ``independent of the current environment; in effect
-throughout Emacs''. It is the opposite of local (q.v.@:). Particular
+throughout Emacs''. It is the opposite of local (q.v.). Particular
examples of the use of `global' appear below.
@item Global Abbrev
@@ -604,7 +604,7 @@ modes that do not have local (q.v.@:) definitions for the same abbrev.
@item Global Keymap
The global keymap (q.v.@:) contains key bindings that are in effect
everywhere, except when overridden by local key bindings in a major
-mode's local keymap (q.v.@:). @xref{Keymaps}.
+mode's local keymap (q.v.). @xref{Keymaps}.
@item Global Mark Ring
The global mark ring records the series of buffers you have recently
@@ -624,7 +624,7 @@ that do not have their own local (q.v.@:) values for the variable.
@item GNU
GNU is a recursive acronym for GNU's Not Unix, and it refers to a
-Unix-compatible operating system which is free software (q.v.@:).
+Unix-compatible operating system which is free software (q.v.).
@xref{Manifesto}. GNU is normally used with Linux as the kernel since
Linux works better than the GNU kernel. For more information, see
@uref{http://www.gnu.org/, the GNU website}.
@@ -639,7 +639,7 @@ that character (in ordinary editing modes). @xref{Inserting Text}.
@item Graphical Display
A graphical display is one that can display images and multiple fonts.
-Usually it also has a window system (q.v.@:).
+Usually it also has a window system (q.v.).
@item Highlighting
Highlighting text means displaying it with a different foreground and/or
@@ -664,7 +664,7 @@ Help echo is a short message displayed in the echo area (q.v.@:) when
the mouse pointer is located on portions of display that require some
explanations. Emacs displays help echo for menu items, parts of the
mode line, tool-bar buttons, etc. On graphical displays, the messages
-can be displayed as tooltips (q.v.@:). @xref{Tooltips}.
+can be displayed as tooltips (q.v.). @xref{Tooltips}.
@item Home Directory
Your home directory contains your personal files. On a multi-user GNU
@@ -712,7 +712,7 @@ commands to adjust indentation.
@item Indirect Buffer
An indirect buffer is a buffer that shares the text of another buffer,
-called its base buffer (q.v.@:). @xref{Indirect Buffers}.
+called its base buffer (q.v.). @xref{Indirect Buffers}.
@item Info
Info is the hypertext format used by the GNU project for writing
@@ -726,7 +726,7 @@ frames. @xref{User Input}.
@item Input Method
An input method is a system for entering non-@acronym{ASCII} text characters by
-typing sequences of @acronym{ASCII} characters (q.v.@:). @xref{Input Methods}.
+typing sequences of @acronym{ASCII} characters (q.v.). @xref{Input Methods}.
@item Insertion
Insertion means adding text into the buffer, either from the keyboard
@@ -761,8 +761,8 @@ Emacs calls ``binding a key sequence''. @xref{Glossary - Binding}.
@item Key Sequence
A key sequence (key, for short) is a sequence of input events (q.v.@:)
that are meaningful as a single unit. If the key sequence is enough to
-specify one action, it is a complete key (q.v.@:); if it is not enough,
-it is a prefix key (q.v.@:). @xref{Keys}.
+specify one action, it is a complete key (q.v.); if it is not enough,
+it is a prefix key (q.v.). @xref{Keys}.
@item Keymap
The keymap is the data structure that records the bindings (q.v.@:) of
@@ -778,14 +778,14 @@ key sequences.
@item Kill Ring
The kill ring is where all text you have killed (@pxref{Glossary - Killing})
recently is saved. You can reinsert any of the killed text still in
-the ring; this is called yanking (q.v.@:). @xref{Yanking}.
+the ring; this is called yanking (q.v.). @xref{Yanking}.
@anchor{Glossary - Killing}
@item Killing
Killing means erasing text and saving it on the kill ring so it can be
yanked (q.v.@:) later. Some other systems call this ``cutting''.
Most Emacs commands that erase text perform killing, as opposed to
-deletion (q.v.@:). @xref{Killing}.
+deletion (q.v.). @xref{Killing}.
@item Killing a Job
Killing a job (such as, an invocation of Emacs) means making it cease
@@ -794,7 +794,7 @@ to exist. Any data within it, if not saved in a file, is lost.
@item Language Environment
Your choice of language environment specifies defaults for the input
-method (q.v.@:) and coding system (q.v.@:). @xref{Language
+method (q.v.@:) and coding system (q.v.). @xref{Language
Environments}. These defaults are relevant if you edit
non-@acronym{ASCII} text (@pxref{International}).
@@ -821,7 +821,7 @@ lists. @xref{Moving by Parens}.
Local means ``in effect only in a particular context''; the relevant
kind of context is a particular function execution, a particular
buffer, or a particular major mode. It is the opposite of `global'
-(q.v.@:). Specific uses of `local' in Emacs terminology appear below.
+(q.v.). Specific uses of `local' in Emacs terminology appear below.
@item Local Abbrev
A local abbrev definition is effective only if a particular major mode
@@ -844,7 +844,7 @@ one of the modifier keys that can accompany any character.
@item @kbd{M-C-}
@kbd{M-C-} in the name of a character is an abbreviation for
-Control-Meta; it means the same thing as `@kbd{C-M-}' (q.v.@:).
+Control-Meta; it means the same thing as `@kbd{C-M-}' (q.v.).
@item @kbd{M-x}
@kbd{M-x} is the key sequence that is used to call an Emacs command by
@@ -875,14 +875,14 @@ fringe) and the window edge.
@item Mark
The mark points to a position in the text. It specifies one end of the
-region (q.v.@:), point being the other end. Many commands operate on
+region (q.v.), point being the other end. Many commands operate on
all the text from point to the mark. Each buffer has its own mark.
@xref{Mark}.
@item Mark Ring
The mark ring is used to hold several recent previous locations of the
mark, in case you want to move back to them. Each buffer has its
-own mark ring; in addition, there is a single global mark ring (q.v.@:).
+own mark ring; in addition, there is a single global mark ring (q.v.).
@xref{Mark Ring}.
@item Menu Bar
@@ -911,7 +911,7 @@ A Meta character is one whose character code includes the Meta bit.
@item Minibuffer
The minibuffer is the window that appears when necessary inside the
-echo area (q.v.@:), used for reading arguments to commands.
+echo area (q.v.), used for reading arguments to commands.
@xref{Minibuffer}.
@anchor{Glossary - Minibuffer History}
@@ -923,8 +923,8 @@ again. @xref{Minibuffer History}.
@item Minor Mode
A minor mode is an optional feature of Emacs, which can be switched on
or off independently of all other features. Each minor mode has a
-command to turn it on or off. Some minor modes are global (q.v.@:),
-and some are local (q.v.@:). @xref{Minor Modes}.
+command to turn it on or off. Some minor modes are global (q.v.),
+and some are local (q.v.). @xref{Minor Modes}.
@item Minor Mode Keymap
A minor mode keymap is a keymap that belongs to a minor mode and is
@@ -933,7 +933,7 @@ over the buffer's local keymap, just as the local keymap takes
precedence over the global keymap. @xref{Keymaps}.
@item Mode Line
-The mode line is the line at the bottom of each window (q.v.@:), giving
+The mode line is the line at the bottom of each window (q.v.), giving
status information on the buffer displayed in that window. @xref{Mode
Line}.
@@ -949,7 +949,7 @@ yanking (q.v.@:) it. @xref{Killing}.
@item MULE
MULE refers to the Emacs features for editing multilingual
-non-@acronym{ASCII} text using multibyte characters (q.v.@:).
+non-@acronym{ASCII} text using multibyte characters (q.v.).
@xref{International}.
@item Multibyte Character
@@ -959,7 +959,7 @@ since the number of non-@acronym{ASCII} characters is much more than 256.
@xref{International Chars, International Characters}.
@item Named Mark
-A named mark is a register (q.v.@:), in its role of recording a
+A named mark is a register (q.v.), in its role of recording a
location in text so that you can move point to that location.
@xref{Registers}.
@@ -1037,7 +1037,7 @@ specify a different file name. @xref{Rmail}.
@end ignore
@item Primary Selection
-The primary selection is one particular X selection (q.v.@:); it is the
+The primary selection is one particular X selection (q.v.); it is the
selection that most X applications use for transferring text to and from
other applications.
@@ -1047,7 +1047,7 @@ uses the primary selection when appropriate. @xref{Killing}.
@item Prompt
A prompt is text used to ask you for input. Displaying a prompt
is called prompting. Emacs prompts always appear in the echo area
-(q.v.@:). One kind of prompting happens when the minibuffer is used to
+(q.v.). One kind of prompting happens when the minibuffer is used to
read an argument (@pxref{Minibuffer}); the echoing that happens when
you pause in the middle of typing a multi-character key sequence is also
a kind of prompting (@pxref{Echo Area}).
@@ -1104,13 +1104,13 @@ correspond to changes that have been made in the text being edited.
@xref{Glossary - Regular Expression}.
@item Region
-The region is the text between point (q.v.@:) and the mark (q.v.@:).
+The region is the text between point (q.v.@:) and the mark (q.v.).
Many commands operate on the text of the region. @xref{Mark,Region}.
@item Register
Registers are named slots in which text, buffer positions, or
rectangles can be saved for later use. @xref{Registers}. A related
-Emacs feature is `bookmarks' (q.v.@:).
+Emacs feature is `bookmarks' (q.v.).
@anchor{Glossary - Regular Expression}
@item Regular Expression
@@ -1134,13 +1134,13 @@ you have a supported method to gain access to those files.
@item Restriction
A buffer's restriction is the amount of text, at the beginning or the
end of the buffer, that is temporarily inaccessible. Giving a buffer a
-nonzero amount of restriction is called narrowing (q.v.@:); removing
-a restriction is called widening (q.v.@:). @xref{Narrowing}.
+nonzero amount of restriction is called narrowing (q.v.); removing
+a restriction is called widening (q.v.). @xref{Narrowing}.
@item @key{RET}
@key{RET} is a character that in Emacs runs the command to insert a
newline into the text. It is also used to terminate most arguments
-read in the minibuffer (q.v.@:). @xref{User Input,Return}.
+read in the minibuffer (q.v.). @xref{User Input,Return}.
@item Reverting
Reverting means returning to the original state. Emacs lets you
@@ -1180,7 +1180,7 @@ files for certain purposes. For example, the variable @code{load-path}
holds a search path for finding Lisp library files. @xref{Lisp Libraries}.
@item Secondary Selection
-The secondary selection is one particular X selection (q.v.@:); some X
+The secondary selection is one particular X selection (q.v.); some X
applications can use it for transferring text to and from other
applications. Emacs has special mouse commands for transferring text
using the secondary selection. @xref{Secondary Selection}.
@@ -1203,7 +1203,7 @@ selections whose values are text. A program can also read the
selections that other programs have set up. This is the principal way
of transferring text between window applications. Emacs has commands to
work with the primary (q.v.@:) selection and the secondary (q.v.@:)
-selection, and also with the clipboard (q.v.@:).
+selection, and also with the clipboard (q.v.).
@item Self-Documentation
Self-documentation is the feature of Emacs that can tell you what any
@@ -1297,7 +1297,7 @@ have. To make a character Super, type it while holding down the
@item Suspending
Suspending Emacs means stopping it temporarily and returning control
to its parent process, which is usually a shell. Unlike killing a job
-(q.v.@:), you can later resume the suspended Emacs job without losing
+(q.v.), you can later resume the suspended Emacs job without losing
your buffers, unsaved edits, undo history, etc. @xref{Exiting}.
@item @key{TAB}
@@ -1344,12 +1344,12 @@ they also specify formatting information. @xref{Editing Format Info}.
@item Theme
A theme is a set of customizations (q.v.@:) that give Emacs a
particular appearance or behavior. For example, you might use a theme
-for your favorite set of faces (q.v.@:).
+for your favorite set of faces (q.v.).
@item Tool Bar
The tool bar is a line (sometimes multiple lines) of icons at the top
of an Emacs frame. Clicking on one of these icons executes a command.
-You can think of this as a graphical relative of the menu bar (q.v.@:).
+You can think of this as a graphical relative of the menu bar (q.v.).
@xref{Tool Bars}.
@anchor{Glossary - Tooltips}
@@ -1362,8 +1362,8 @@ clicks, etc. @xref{Tooltips}.
Top level is the normal state of Emacs, in which you are editing the
text of the file you have visited. You are at top level whenever you
are not in a recursive editing level (q.v.@:) or the minibuffer
-(q.v.@:), and not in the middle of a command. You can get back to top
-level by aborting (q.v.@:) and quitting (q.v.@:). @xref{Quitting}.
+(q.v.), and not in the middle of a command. You can get back to top
+level by aborting (q.v.@:) and quitting (q.v.). @xref{Quitting}.
@c FIXME? Transient Mark Mode
@@ -1395,7 +1395,7 @@ back the text that existed earlier in the editing session.
Unix is a class of multi-user computer operating systems with a long
history. There are several implementations today. The GNU project
(q.v.@:) aims to develop a complete Unix-like operating system that
-is free software (q.v.@:).
+is free software (q.v.).
@item User Option
A user option is a face (q.v.@:) or a variable (q.v.@:) that exists so
@@ -1413,7 +1413,7 @@ information on variables.
@item Version Control
Version control systems keep track of multiple versions of a source file.
-They provide a more powerful alternative to keeping backup files (q.v.@:).
+They provide a more powerful alternative to keeping backup files (q.v.).
@xref{Version Control}.
@item Visiting
@@ -1426,7 +1426,7 @@ tab, newline, and backspace).
@item Widening
Widening is removing any restriction (q.v.@:) on the current buffer;
-it is the opposite of narrowing (q.v.@:). @xref{Narrowing}.
+it is the opposite of narrowing (q.v.). @xref{Narrowing}.
@item Window
Emacs divides a frame (q.v.@:) into one or more windows, each of which
@@ -1438,7 +1438,7 @@ other editors use the term ``window'' for what we call a `frame'
@item Window System
A window system is software that operates on a graphical display
-(q.v.@:), to subdivide the screen so that multiple applications can
+(q.v.), to subdivide the screen so that multiple applications can
have their] own windows at the same time. All modern operating systems
include a window system.
@@ -1451,7 +1451,7 @@ punctuation between them as insignificant. @xref{Word Search}.
@anchor{Glossary - Yanking}
@item Yanking
-Yanking means reinserting text previously killed (q.v.@:). It can be
+Yanking means reinserting text previously killed (q.v.). It can be
used to undo a mistaken kill, or for copying or moving text. Some
other systems call this ``pasting''. @xref{Yanking}.
@end table
diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi
index 0f21dd635db..805b10c8193 100644
--- a/doc/emacs/gnu.texi
+++ b/doc/emacs/gnu.texi
@@ -34,7 +34,7 @@ our web site, @uref{http://www.gnu.org}. For software tasks and other
ways to contribute, see @uref{http://www.gnu.org/help}.
@end quotation
-@unnumberedsec What's GNU? Gnu's Not Unix!
+@unnumberedsec What's GNU@? Gnu's Not Unix!
GNU, which stands for Gnu's Not Unix, is the name for the complete
Unix-compatible software system which I am writing so that I can give it
@@ -151,7 +151,7 @@ systems, approved for use in a residential area, and not in need of
sophisticated cooling or power.
I have found very many programmers eager to contribute part-time work for
-GNU. For most projects, such part-time distributed work would be very hard
+GNU@. For most projects, such part-time distributed work would be very hard
to coordinate; the independently-written parts would not work together.
But for the particular task of replacing Unix, this problem is absent. A
complete Unix system contains hundreds of utility programs, each of which
@@ -262,7 +262,7 @@ and you must charge for the program to support that.''
@end quotation
There are various forms of free or very cheap publicity that can be used to
-inform numbers of computer users about something like GNU. But it may be
+inform numbers of computer users about something like GNU@. But it may be
true that one can reach more microcomputer users with advertising. If this
is really so, a business which advertises the service of copying and
mailing GNU for a fee ought to be successful enough to pay for its
@@ -271,7 +271,7 @@ advertising pay for it.
On the other hand, if many people get GNU from their friends, and such
companies don't succeed, this will show that advertising was not really
-necessary to spread GNU. Why is it that free market advocates don't
+necessary to spread GNU@. Why is it that free market advocates don't
want to let the free market decide this?@footnote{The Free Software
Foundation raises most of its funds from a distribution service,
although it is a charity rather than a company. If @emph{no one}
diff --git a/doc/emacs/gpl.texi b/doc/emacs/gpl.texi
index 97a17e1914e..0e2e212acb1 100644
--- a/doc/emacs/gpl.texi
+++ b/doc/emacs/gpl.texi
@@ -623,12 +623,12 @@ later version.
@item Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+APPLICABLE LAW@. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+A PARTICULAR PURPOSE@. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU@. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
@@ -680,7 +680,7 @@ your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE@. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi
index 08914d20340..1cd77182045 100644
--- a/doc/emacs/indent.texi
+++ b/doc/emacs/indent.texi
@@ -134,7 +134,7 @@ leftward).
This command can be used to remove all indentation from the lines in
the region, by invoking it with a large negative argument,
-e.g. @kbd{C-u -1000 C-x @key{TAB}}.
+e.g., @kbd{C-u -1000 C-x @key{TAB}}.
@end table
@node Tab Stops
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 5510816b067..a8d08bd6602 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -34,7 +34,7 @@ killing many different types of syntactic units.
@cindex deletion
Most commands which erase text from the buffer save it in the kill
ring. These are known as @dfn{kill} commands, and their names
-normally contain the word @samp{kill} (e.g. @code{kill-line}). The
+normally contain the word @samp{kill} (e.g., @code{kill-line}). The
kill ring stores several recent kills, not just the last one, so
killing is a very safe operation: you don't have to worry much about
losing text that you previously killed. The kill ring is shared by
@@ -284,7 +284,7 @@ position, if you wish, with @kbd{C-u C-@key{SPC}} (@pxref{Mark Ring}).
With a plain prefix argument (@kbd{C-u C-y}), the command instead
leaves the cursor in front of the inserted text, and sets the mark at
the end. Using any other prefix argument specifies an earlier kill;
-e.g. @kbd{C-u 4 C-y} reinserts the fourth most recent kill.
+e.g., @kbd{C-u 4 C-y} reinserts the fourth most recent kill.
@xref{Earlier Kills}.
On graphical displays, @kbd{C-y} first checks if another application
@@ -535,13 +535,13 @@ or ``copy'' commands.
Under X, whenever the region is active (@pxref{Mark}), the text in
the region is saved in the primary selection. This applies regardless
of whether the region was made by dragging or clicking the mouse
-(@pxref{Mouse Commands}), or by keyboard commands (e.g. by typing
+(@pxref{Mouse Commands}), or by keyboard commands (e.g., by typing
@kbd{C-@key{SPC}} and moving point; @pxref{Setting Mark}).
@vindex select-active-regions
If you change the variable @code{select-active-regions} to
@code{only}, Emacs saves only temporarily active regions to the
-primary selection, i.e. those made with the mouse or with shift
+primary selection, i.e., those made with the mouse or with shift
selection (@pxref{Shift Selection}). If you change
@code{select-active-regions} to @code{nil}, Emacs avoids saving active
regions to the primary selection entirely.
@@ -841,8 +841,8 @@ has no effect for @kbd{C-x} and @kbd{C-c} (@pxref{Using Region}).
To enter an Emacs command like @kbd{C-x C-f} while the mark is
active, use one of the following methods: either hold @kbd{Shift}
-together with the prefix key, e.g. @kbd{S-C-x C-f}, or quickly type
-the prefix key twice, e.g. @kbd{C-x C-x C-f}.
+together with the prefix key, e.g., @kbd{S-C-x C-f}, or quickly type
+the prefix key twice, e.g., @kbd{C-x C-x C-f}.
To disable the overriding of standard Emacs binding by CUA mode,
while retaining the other features of CUA mode described below, set
@@ -862,7 +862,7 @@ of each line in the rectangle (on the same side as the cursor).
With CUA you can easily copy text and rectangles into and out of
registers by providing a one-digit numeric prefix to the kill, copy,
-and yank commands, e.g. @kbd{C-1 C-c} copies the region into register
+and yank commands, e.g., @kbd{C-1 C-c} copies the region into register
@code{1}, and @kbd{C-2 C-v} yanks the contents of register @code{2}.
@cindex global mark
@@ -875,7 +875,7 @@ position.
For example, to copy words from various buffers into a word list in
a given buffer, set the global mark in the target buffer, then
-navigate to each of the words you want in the list, mark it (e.g. with
+navigate to each of the words you want in the list, mark it (e.g., with
@kbd{S-M-f}), copy it to the list with @kbd{C-c} or @kbd{M-w}, and
insert a newline after the word in the target list by pressing
@key{RET}.
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 67214bde22c..66fa643091f 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -31,7 +31,7 @@ versions of a source file, storing information such as the creation
time of each version, who made it, and a description of what was
changed.
- The Emacs version control interface is called @dfn{VC}. VC commands
+ The Emacs version control interface is called @dfn{VC}@. VC commands
work with several different version control systems; currently, it
supports GNU Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS,
SCCS/CSSC, and Subversion. Of these, the GNU project distributes CVS,
@@ -73,8 +73,8 @@ provides a uniform interface for common operations in many version
control operations.
Some uncommon or intricate version control operations, such as
-altering repository settings, are not supported in VC. You should
-perform such tasks outside Emacs, e.g.@: via the command line.
+altering repository settings, are not supported in VC@. You should
+perform such tasks outside Emacs, e.g., via the command line.
This section provides a general overview of version control, and
describes the version control systems that VC supports. You can skip
@@ -128,13 +128,13 @@ which it refers to as @dfn{back ends}:
@item
SCCS was the first version control system ever built, and was long ago
superseded by more advanced ones. VC compensates for certain features
-missing in SCCS (e.g.@: tag names for releases) by implementing them
+missing in SCCS (e.g., tag names for releases) by implementing them
itself. Other VC features, such as multiple branches, are simply
unavailable. Since SCCS is non-free, we recommend avoiding it.
@cindex CSSC
@item
-CSSC is a free replacement for SCCS. You should use CSSC only if, for
+CSSC is a free replacement for SCCS@. You should use CSSC only if, for
some reason, you cannot use a more recent and better-designed version
control system.
@@ -455,7 +455,7 @@ and don't persist across sessions.
@node VC With A Merging VCS
@subsubsection Basic Version Control with Merging
- On a merging-based version control system (i.e.@: most modern ones;
+ On a merging-based version control system (i.e., most modern ones;
@pxref{VCS Merging}), @kbd{C-x v v} does the following:
@itemize @bullet
@@ -467,7 +467,7 @@ files and ``modified'' files; @pxref{Registering}.)
@item
If none of the files in the VC fileset are registered with a version
-control system, register the VC fileset, i.e.@: place it under version
+control system, register the VC fileset, i.e., place it under version
control. @xref{Registering}. If Emacs cannot find a system to
register under, it prompts for a repository type, creates a new
repository, and registers the VC fileset with it.
@@ -568,13 +568,13 @@ and Emacs fails to detect the correct one.
Otherwise, if using CVS or RCS, you can specify a revision ID.
If the fileset is modified (or locked), this makes Emacs commit with
-that revision ID. You can create a new branch by supplying an
+that revision ID@. You can create a new branch by supplying an
appropriate revision ID (@pxref{Branches}).
If the fileset is unmodified (and unlocked), this checks the specified
revision into the working tree. You can also specify a revision on
another branch by giving its revision or branch ID (@pxref{Switching
-Branches}). An empty argument (i.e.@: @kbd{C-u C-x v v @key{RET}})
+Branches}). An empty argument (i.e., @kbd{C-u C-x v v @key{RET}})
checks out the latest (``head'') revision on the current branch.
This signals an error on a decentralized version control system.
@@ -759,7 +759,7 @@ comparison again, generating a new diff.
prompts for two revision IDs (@pxref{VCS Concepts}), and displays a
diff between those versions of the fileset. This will not work
reliably for multi-file VC filesets, if the version control system is
-file-based rather than changeset-based (e.g.@: CVS), since then
+file-based rather than changeset-based (e.g., CVS), since then
revision IDs for different files would not be related in any
meaningful way.
@@ -783,7 +783,7 @@ Ediff session. @xref{Top,, Ediff, ediff, The Ediff Manual}.
@findex vc-root-diff
@kindex C-x v D
@kbd{C-x v D} (@code{vc-root-diff}) is similar to @kbd{C-x v =}, but
-it displays the changes in the entire current working tree (i.e.@: the
+it displays the changes in the entire current working tree (i.e., the
working tree containing the current VC fileset). If you invoke this
command from a Dired buffer, it applies to the working tree containing
the directory.
@@ -795,7 +795,7 @@ from the first non-@code{nil} value amongst the variables
@code{vc-@var{backend}-diff-switches}, @code{vc-diff-switches}, and
@code{diff-switches} (@pxref{Comparing Files}), in that order. Here,
@var{backend} stands for the relevant version control system,
-e.g.@: @code{bzr} for Bazaar. Since @code{nil} means to check the
+e.g., @code{bzr} for Bazaar. Since @code{nil} means to check the
next variable in the sequence, either of the first two may use the
value @code{t} to mean no switches at all. Most of the
@code{vc-@var{backend}-diff-switches} variables default to @code{nil},
@@ -835,12 +835,12 @@ view diffs, or view log entries:
@table @kbd
@item p
-Annotate the previous revision, i.e.@: the revision before the one
+Annotate the previous revision, i.e., the revision before the one
currently annotated. A numeric prefix argument is a repeat count, so
@kbd{C-u 10 p} would take you back 10 revisions.
@item n
-Annotate the next revision, i.e.@: the revision after the one
+Annotate the next revision, i.e., the revision after the one
currently annotated. A numeric prefix argument is a repeat count.
@item j
@@ -986,7 +986,7 @@ earlier revision. This shows the changes to all files made in that
revision.
@item @key{RET}
-In a compact-style log buffer (e.g.@: the one created by @kbd{C-x v
+In a compact-style log buffer (e.g., the one created by @kbd{C-x v
L}), toggle between showing and hiding the full log entry for the
revision at point.
@end table
@@ -1064,7 +1064,7 @@ the version control system which the VC Directory buffer should use.
@pindex cvs
@cindex CVS directory mode
In addition to the VC Directory buffer, Emacs has a similar facility
-called PCL-CVS which is specialized for CVS. @xref{Top, , About
+called PCL-CVS which is specialized for CVS@. @xref{Top, , About
PCL-CVS, pcl-cvs, PCL-CVS --- The Emacs Front-End to CVS}.
@end ifnottex
@@ -1080,7 +1080,7 @@ PCL-CVS, pcl-cvs, PCL-CVS --- The Emacs Front-End to CVS}.
and their version control statuses. It lists files in the current
directory (the one specified when you called @kbd{C-x v d}) and its
subdirectories, but only those with a ``noteworthy'' status. Files
-that are up-to-date (i.e.@: the same as in the repository) are
+that are up-to-date (i.e., the same as in the repository) are
omitted. If all the files in a subdirectory are up-to-date, the
subdirectory is not listed either. As an exception, if a file has
become up-to-date as a direct result of a VC command, it is listed.
@@ -1131,7 +1131,7 @@ updates. If you change the variable @code{vc-stay-local} or
@code{vc-cvs-stay-local} (for CVS) to @code{nil} (@pxref{CVS
Options}), then Emacs avoids contacting a remote repository when
generating the VC Directory buffer (it will still contact it when
-necessary, e.g.@: when doing a commit). This may be desirable if you
+necessary, e.g., when doing a commit). This may be desirable if you
are working offline or the network is slow.
@end ifnottex
@@ -1307,7 +1307,7 @@ revision 1.2 has revision IDs 1.2.1.1, 1.2.1.2, @dots{}, the second
branch created from revision 1.2 has revision IDs 1.2.2.1, 1.2.2.2,
@dots{}, and so forth. You can also specify the @dfn{branch ID},
which is a branch revision ID omitting its final component
-(e.g.@: 1.2.1), to switch to the latest revision on that branch.
+(e.g., 1.2.1), to switch to the latest revision on that branch.
On a locking-based system, switching to a different branch also
unlocks (write-protects) the working tree.
@@ -1589,7 +1589,7 @@ source files.
To produce a tags table, you run the @command{etags} shell command
on a document or the source code file. The @samp{etags} program
writes the tags to a @dfn{tags table file}, or @dfn{tags file} in
-short. The conventional name for a tags file is @file{TAGS}.
+short. The conventional name for a tags file is @file{TAGS}@.
@xref{Create Tags Table}.
Emacs provides many commands for searching and replacing using the
@@ -1676,9 +1676,11 @@ specifies (using Bourne shell syntax) that the commands
@item
In Lisp code, any function defined with @code{defun}, any variable
-defined with @code{defvar} or @code{defconst}, and in general the first
-argument of any expression that starts with @samp{(def} in column zero is
-a tag.
+defined with @code{defvar} or @code{defconst}, and in general the
+first argument of any expression that starts with @samp{(def} in
+column zero is a tag. As an exception, expressions of the form
+@code{(defvar @var{foo})} are treated as declarations, and are only
+tagged if the @samp{--declarations} option is given.
@item
In Scheme code, tags include anything defined with @code{def} or with a
@@ -1696,9 +1698,9 @@ tags. Use the @samp{--packages-only} option to create tags for
packages only.
In Ada, the same name can be used for different kinds of entity
-(e.g.@:, for a procedure and for a function). Also, for things like
-packages, procedures and functions, there is the spec (i.e.@: the
-interface) and the body (i.e.@: the implementation). To make it
+(e.g., for a procedure and for a function). Also, for things like
+packages, procedures and functions, there is the spec (i.e., the
+interface) and the body (i.e., the implementation). To make it
easier to pick the definition you want, Ada tag name have suffixes
indicating the type of entity:
@@ -1766,11 +1768,11 @@ the file.
@item
In Perl code, the tags are the packages, subroutines and variables
-defined by the @code{package}, @code{sub}, @code{my} and @code{local}
-keywords. Use @samp{--globals} if you want to tag global variables.
-Tags for subroutines are named @samp{@var{package}::@var{sub}}. The
-name for subroutines defined in the default package is
-@samp{main::@var{sub}}.
+defined by the @code{package}, @code{sub}, @code{use constant},
+@code{my}, and @code{local} keywords. Use @samp{--globals} if you
+want to tag global variables. Tags for subroutines are named
+@samp{@var{package}::@var{sub}}. The name for subroutines defined in
+the default package is @samp{main::@var{sub}}.
@item
In PHP code, tags are functions, classes and defines. Vars are tags
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 1836c1982e6..c9d085a18f8 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -53,7 +53,7 @@ commands. The three most commonly-used Gnus buffers are the
@dfn{group buffer}, the @dfn{summary buffer} and the @dfn{article
buffer}.
- The @dfn{group buffer} contains a list of article sources (e.g.@:
+ The @dfn{group buffer} contains a list of article sources (e.g.,
newsgroups and email inboxes), which are collectively referred to as
@dfn{groups}. This is the first buffer Gnus displays when it starts
up. It normally displays only the groups to which you subscribe and
@@ -166,7 +166,7 @@ List zombie groups.
@cindex unsubscribe groups
@item u
Toggle the subscription status of the group on the current line
-(i.e.@: turn a subscribed group into an unsubscribed group, or vice
+(i.e., turn a subscribed group into an unsubscribed group, or vice
versa). Invoking this on a killed or zombie group turns it into an
unsubscribed group.
@@ -518,7 +518,7 @@ output is long).
type @kbd{M-! gunzip foo.gz @key{RET}}. That shell command normally
creates the file @file{foo} and produces no terminal output.
- A numeric argument to @code{shell-command}, e.g.@: @kbd{M-1 M-!},
+ A numeric argument to @code{shell-command}, e.g., @kbd{M-1 M-!},
causes it to insert terminal output into the current buffer instead of
a separate buffer. It puts point before the output, and sets the mark
after the output. For instance, @kbd{M-1 M-! gunzip < foo.gz
@@ -599,7 +599,7 @@ the buffer and type the input, terminated by @key{RET}.
While the subshell is waiting or running a command, you can switch
windows or buffers and perform other editing in Emacs. Emacs inserts
the output from the subshell into the Shell buffer whenever it has
-time to process it (e.g.@: while waiting for keyboard input).
+time to process it (e.g., while waiting for keyboard input).
@cindex @code{comint-highlight-input} face
@cindex @code{comint-highlight-prompt} face
@@ -610,7 +610,7 @@ easier to distinguish input lines from the shell output.
@xref{Faces}.
To make multiple subshells, invoke @kbd{M-x shell} with a prefix
-argument (e.g. @kbd{C-u M-x shell}). Then the command will read a
+argument (e.g., @kbd{C-u M-x shell}). Then the command will read a
buffer name, and create (or reuse) a subshell in that buffer. You can
also rename the @file{*shell*} buffer using @kbd{M-x rename-uniquely},
then create a new @file{*shell*} buffer using plain @kbd{M-x shell}.
@@ -645,7 +645,7 @@ Coding}.
@cindex @env{EMACS} environment variable
Emacs sets the environment variable @env{INSIDE_EMACS} in the
subshell to @samp{@var{version},comint}, where @var{version} is the
-Emacs version (e.g.@: @samp{24.1}). Programs can check this variable
+Emacs version (e.g., @samp{24.1}). Programs can check this variable
to determine whether they are running inside an Emacs subshell. (It
also sets the @env{EMACS} environment variable to @code{t}, if that
environment variable is not already defined. However, this
@@ -1307,7 +1307,7 @@ mode-line. Type @key{SPC} to display the next screenful of output, or
@cindex Rlogin
You can login to a remote computer, using whatever commands you
-would from a regular terminal (e.g.@: using the @code{telnet} or
+would from a regular terminal (e.g., using the @code{telnet} or
@code{rlogin} commands), from a Term window.
A program that asks you for a password will normally suppress
@@ -1531,7 +1531,7 @@ precedence.
Create a new graphical @dfn{client frame}, instead of using an
existing Emacs frame. See below for the special behavior of @kbd{C-x
C-c} in a client frame. If Emacs cannot create a new graphical frame
-(e.g.@: if it cannot connect to the X server), it tries to create a
+(e.g., if it cannot connect to the X server), it tries to create a
text terminal client frame, as though you had supplied the @samp{-t}
option instead.
@@ -1630,7 +1630,7 @@ frame. If you type @kbd{C-x C-c} (@code{save-buffers-kill-terminal})
in a client frame, that command does not kill the Emacs session as it
normally does (@pxref{Exiting}). Instead, Emacs deletes the client
frame; furthermore, if the client frame has an @command{emacsclient}
-waiting to regain control (i.e.@: if you did not supply the @samp{-n}
+waiting to regain control (i.e., if you did not supply the @samp{-n}
option), Emacs deletes all other frames of the same client, and marks
the client's server buffers as finished, as though you had typed
@kbd{C-x #} in all of them. If it so happens that there are no
@@ -1689,7 +1689,7 @@ 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
variable @code{lpr-switches}. Its value should be a list of option
-strings, each of which should start with @samp{-} (e.g.@: the option
+strings, each of which should start with @samp{-} (e.g., the option
string @code{"-w80"} specifies a line width of 80 columns). The
default is the empty list, @code{nil}.
@@ -2404,7 +2404,7 @@ done by calling @code{browse-url} as a subroutine
It can be useful to add @code{goto-address-mode} to mode hooks and
hooks for displaying an incoming message
-(e.g.@: @code{rmail-show-message-hook} for Rmail, and
+(e.g., @code{rmail-show-message-hook} for Rmail, and
@code{mh-show-mode-hook} for MH-E). This is not needed for Gnus,
which has a similar feature of its own.
@@ -2487,7 +2487,7 @@ find the one you select (@code{ffap-menu}).
@findex animate-birthday-present
@cindex animate
- The @code{animate} package makes text dance (e.g. @kbd{M-x
+ The @code{animate} package makes text dance (e.g., @kbd{M-x
animate-birthday-present}).
@findex blackbox
diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi
index c619b1eb47e..52721026590 100644
--- a/doc/emacs/modes.texi
+++ b/doc/emacs/modes.texi
@@ -69,7 +69,7 @@ command to select that mode (e.g., @kbd{M-x lisp-mode} enters Lisp mode).
@vindex major-mode
The value of the buffer-local variable @code{major-mode} is a symbol
-with the same name as the major mode command (e.g. @code{lisp-mode}).
+with the same name as the major mode command (e.g., @code{lisp-mode}).
This variable is set automatically; you should not change it yourself.
The default value of @code{major-mode} determines the major mode to
@@ -110,7 +110,7 @@ list of its key bindings, type @code{C-h m} (@code{describe-mode}).
Every major mode, apart from Fundamental mode, defines a @dfn{mode
hook}, a customizable list of Lisp functions to run each time the mode
is enabled in a buffer. @xref{Hooks}, for more information about
-hooks. Each mode hook is named after its major mode, e.g. Fortran
+hooks. Each mode hook is named after its major mode, e.g., Fortran
mode has @code{fortran-mode-hook}. Furthermore, all text-based major
modes run @code{text-mode-hook}, and all programming language modes
run @code{prog-mode-hook}, prior to running their own mode hooks.
diff --git a/doc/emacs/msdog-xtra.texi b/doc/emacs/msdog-xtra.texi
index 0d05c8ac9c6..e634a5836d8 100644
--- a/doc/emacs/msdog-xtra.texi
+++ b/doc/emacs/msdog-xtra.texi
@@ -52,7 +52,7 @@ about Emacs's special handling of text files under MS-DOS (and Windows).
@kindex BS @r{(MS-DOS)}
The key that is called @key{DEL} in Emacs (because that's how it is
designated on most workstations) is known as @key{BS} (backspace) on a
-PC. That is why the PC-specific terminal initialization remaps the
+PC@. That is why the PC-specific terminal initialization remaps the
@key{BS} key to act as @key{DEL}; the @key{DELETE} key is remapped to act
as @kbd{C-d} for the same reasons.
@@ -233,7 +233,7 @@ The MS-DOS terminal doesn't support a vertical-bar cursor,
so the bar cursor is horizontal, and the @code{@var{width}} parameter,
if specified by the frame parameters, actually determines its height.
For this reason, the @code{bar} and @code{hbar} cursor types produce
-the same effect on MS-DOS. As an extension, the bar cursor
+the same effect on MS-DOS@. As an extension, the bar cursor
specification can include the starting scan line of the cursor as well
as its width, like this:
@@ -320,7 +320,7 @@ converts them to underscores @samp{_}; thus your default init file
@ifnottex
(@pxref{Init File})
@end ifnottex
-is called @file{_emacs} on MS-DOS. Excess characters before or after
+is called @file{_emacs} on MS-DOS@. Excess characters before or after
the period are generally ignored by MS-DOS itself; thus, if you visit
the file @file{LongFileName.EvenLongerExtension}, you will silently
get @file{longfile.eve}, but Emacs will still display the long file
@@ -552,7 +552,7 @@ when invoked with the @samp{-nw} option.
asynchronous subprocesses are not available. In particular, Shell
mode and its variants do not work. Most Emacs features that use
asynchronous subprocesses also don't work on MS-DOS, including
-Shell mode and GUD. When in doubt, try and see; commands that
+Shell mode and GUD@. When in doubt, try and see; commands that
don't work output an error message saying that asynchronous processes
aren't supported.
@@ -600,7 +600,7 @@ it, because MS-DOS provides no general way to terminate a process.
Pressing @kbd{C-c} or @kbd{C-@key{BREAK}} might sometimes help in these
cases.
- Accessing files on other machines is not supported on MS-DOS. Other
+ Accessing files on other machines is not supported on MS-DOS@. Other
network-oriented commands such as sending mail, Web browsing, remote
login, etc., don't work either, unless network access is built into
MS-DOS with some network redirector.
diff --git a/doc/emacs/msdog.texi b/doc/emacs/msdog.texi
index d8f9bb6961d..644d812d7ed 100644
--- a/doc/emacs/msdog.texi
+++ b/doc/emacs/msdog.texi
@@ -334,7 +334,7 @@ names that are associated with (a.k.a.@: @dfn{links to}) the file's
data; this is only useful on NTFS volumes. @code{uid} means display
the numerical identifier of the user who owns the file. @code{gid}
means display the numerical identifier of the file owner's group. The
-default value is @code{(links uid gid)} i.e.@: all the 3 optional
+default value is @code{(links uid gid)} i.e., all the 3 optional
attributes are displayed.
@vindex ls-lisp-emulation
@@ -354,12 +354,12 @@ Emulate @sc{gnu} systems; this is the default. This sets
Emulate Unix systems. Like @code{GNU}, but sets
@code{ls-lisp-verbosity} to @code{(links uid)}.
@item MacOS
-Emulate MacOS. Sets @code{ls-lisp-ignore-case} to @code{t}, and
+Emulate MacOS@. Sets @code{ls-lisp-ignore-case} to @code{t}, and
@code{ls-lisp-dirs-first} and @code{ls-lisp-verbosity} to @code{nil}.
@item MS-Windows
Emulate MS-Windows. Sets @code{ls-lisp-ignore-case} and
@code{ls-lisp-dirs-first} to @code{t}, and @code{ls-lisp-verbosity} to
-@code{(links)} on Windows NT/2K/XP/2K3 and to @code{nil} on Windows 9X.
+@code{(links)} on Windows NT/2K/XP/2K3 and to @code{nil} on Windows 9X@.
Note that the default emulation is @emph{not} @code{MS-Windows}, even
on Windows, since many users of Emacs on those platforms prefer the
@sc{gnu} defaults.
@@ -422,7 +422,7 @@ Settings\@var{username}\Application Data} on Windows 2000/XP/2K3,
@file{C:\Users\@var{username}\AppData\Roaming} on Windows
Vista/7/2008, and either @file{C:\WINDOWS\Application Data} or
@file{C:\WINDOWS\Profiles\@var{username}\Application Data} on Windows
-9X/ME. If this directory does not exist or cannot be accessed, Emacs
+9X/ME@. If this directory does not exist or cannot be accessed, Emacs
falls back to @file{C:\} as the default value of @code{HOME}.
You can override this default value of @code{HOME} by explicitly
@@ -690,7 +690,7 @@ If you can go to the first subprocess, and tell it to exit, the second
subprocess should continue normally. However, if the second subprocess
is synchronous, Emacs itself will be hung until the first subprocess
finishes. If it will not finish without user input, then you have no
-choice but to reboot if you are running on Windows 9X. If you are
+choice but to reboot if you are running on Windows 9X@. If you are
running on Windows NT/2K/XP, you can use a process viewer application to kill
the appropriate instance of NTVDM instead (this will terminate both DOS
subprocesses).
@@ -714,7 +714,7 @@ character based on the type of the program.
customized commands that run MS-Windows applications registered to
handle a certain standard Windows operation for a specific type of
document or file. This function is a wrapper around the Windows
-@code{ShellExecute} API. See the MS-Windows API documentation for
+@code{ShellExecute} API@. See the MS-Windows API documentation for
more details.
@end ifnottex
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index ff0d43c566a..edf2bb19a45 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -994,7 +994,7 @@ decoding. (You can still use an unsuitable coding system if you enter
its name at the prompt.)
@c It seems that select-message-coding-system does this.
-@c Both sendmail.el and smptmail.el call it; i.e. smtpmail.el still
+@c Both sendmail.el and smptmail.el call it; i.e., smtpmail.el still
@c obeys sendmail-coding-system.
@vindex sendmail-coding-system
When you send a mail message (@pxref{Sending Mail}),
@@ -1039,7 +1039,7 @@ decoding it using coding system @var{right} instead.
@findex set-buffer-file-coding-system
The command @kbd{C-x @key{RET} f}
(@code{set-buffer-file-coding-system}) sets the file coding system for
-the current buffer (i.e.@: the coding system to use when saving or
+the current buffer (i.e., the coding system to use when saving or
reverting the file). You specify which coding system using the
minibuffer. You can also invoke this command by clicking with
@kbd{Mouse-3} on the coding system indicator in the mode line
@@ -1323,7 +1323,7 @@ scripts.@footnote{If you run Emacs on X, you may need to inform the X
server about the location of the newly installed fonts with commands
such as:
@c FIXME? I feel like this may be out of date.
-@c Eg the intlfonts tarfile is ~ 10 years old.
+@c E.g., the intlfonts tarfile is ~ 10 years old.
@example
xset fp+ /usr/local/share/emacs/fonts
@@ -1569,7 +1569,7 @@ no font appear as a hollow box.
If you use Latin-1 characters but your terminal can't display
Latin-1, you can arrange to display mnemonic @acronym{ASCII} sequences
-instead, e.g.@: @samp{"o} for o-umlaut. Load the library
+instead, e.g., @samp{"o} for o-umlaut. Load the library
@file{iso-ascii} to do this.
@vindex latin1-display
@@ -1591,7 +1591,7 @@ the range 0240 to 0377 octal (160 to 255 decimal) to handle the
accented letters and punctuation needed by various European languages
(and some non-European ones). Note that Emacs considers bytes with
codes in this range as raw bytes, not as characters, even in a unibyte
-buffer, i.e.@: if you disable multibyte characters. However, Emacs
+buffer, i.e., if you disable multibyte characters. However, Emacs
can still handle these character codes as if they belonged to
@emph{one} of the single-byte character sets at a time. To specify
@emph{which} of these codes to use, invoke @kbd{M-x
@@ -1767,7 +1767,7 @@ directionality when they are displayed. The default value is
Each paragraph of bidirectional text can have its own @dfn{base
direction}, either right-to-left or left-to-right. (Paragraph
@c paragraph-separate etc have no influence on this?
-boundaries are empty lines, i.e.@: lines consisting entirely of
+boundaries are empty lines, i.e., lines consisting entirely of
whitespace characters.) Text in left-to-right paragraphs begins on
the screen at the left margin of the window and is truncated or
continued when it reaches the right margin. By contrast, text in
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index df87cf9cb23..9a4daebd7e4 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -52,10 +52,10 @@ on each line, with the following information:
@itemize @bullet
@item
-The package name (e.g. @samp{auctex}).
+The package name (e.g., @samp{auctex}).
@item
-The package's version number (e.g. @samp{11.86}).
+The package's version number (e.g., @samp{11.86}).
@item
The package's status---normally one of @samp{available} (can be
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index b5bb33ad666..a7d8188af58 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -85,7 +85,7 @@ Scheme-based DSSSL expression language, Ada, ASM, AWK, C, C++, Delphi,
Fortran, Icon, IDL (CORBA), IDLWAVE, Java, Javascript, Metafont
(@TeX{}'s companion for font creation), Modula2, Objective-C, Octave,
Pascal, Perl, Pike, PostScript, Prolog, Python, Ruby, Simula, Tcl, and
-VHDL. An alternative mode for Perl is called CPerl mode. Modes are
+VHDL@. An alternative mode for Perl is called CPerl mode. Modes are
also available for the scripting languages of the common GNU and Unix
shells, VMS DCL, and MS-DOS/MS-Windows @samp{BAT} files, and for
makefiles, DNS master files, and various sorts of configuration files.
@@ -127,7 +127,7 @@ IDL/Pike/AWK (@pxref{Top, , CC Mode, ccmode, CC Mode}), and IDLWAVE
@end ifinfo
@ifnotinfo
The Emacs distribution contains Info manuals for the major modes for
-Ada, C/C++/Objective C/Java/Corba IDL/Pike/AWK, and IDLWAVE. For
+Ada, C/C++/Objective C/Java/Corba IDL/Pike/AWK, and IDLWAVE@. For
Fortran mode, @pxref{Fortran,,, emacs-xtra, Specialized Emacs Features}.
@end ifnotinfo
@@ -328,7 +328,7 @@ as you move around in a buffer.
To either enable or disable Which Function mode, use the command
@kbd{M-x which-function-mode}. Which Function mode is a global minor
mode. By default, it takes effect in all major modes major modes that
-know how to support it (i.e.@: all the major modes that support
+know how to support it (i.e., all the major modes that support
Imenu). You can restrict it to a specific list of major modes by
changing the value of the variable @code{which-func-modes} from
@code{t} (which means to support all available major modes) to a list
@@ -391,7 +391,7 @@ indentation.
When indenting a line that starts within a parenthetical grouping,
Emacs usually places the start of the line under the preceding line
within the group, or under the text after the parenthesis. If you
-manually give one of these lines a nonstandard indentation (e.g.@: for
+manually give one of these lines a nonstandard indentation (e.g., for
aesthetic purposes), the lines below will follow it.
The indentation commands for most programming language modes assume
@@ -431,7 +431,7 @@ lines that start inside comments and strings.
To reindent the contents of a single parenthetical grouping,
position point before the beginning of the grouping and type
@kbd{C-M-q}. This changes the relative indentation within the
-grouping, without affecting its overall indentation (i.e.@: the
+grouping, without affecting its overall indentation (i.e., the
indentation of the line where the grouping starts). The function that
@kbd{C-M-q} runs depends on the major mode; it is
@code{indent-pp-sexp} in Lisp mode, @code{c-indent-exp} in C mode,
@@ -672,7 +672,7 @@ Put mark after following expression (@code{mark-sexp}).
@findex backward-sexp
To move forward over a balanced expression, use @kbd{C-M-f}
(@code{forward-sexp}). If the first significant character after point
-is an opening delimiter (e.g.@: @samp{(}, @samp{[} or @samp{@{} in C),
+is an opening delimiter (e.g., @samp{(}, @samp{[} or @samp{@{} in C),
this command moves past the matching closing delimiter. If the
character begins a symbol, string, or number, the command moves over
that.
@@ -924,7 +924,7 @@ negative argument @var{-n} removes @var{n} delimiters.
If the region is not active, and there is no existing comment on the
current line, @kbd{M-;} adds a new comment to the current line. If
-the line is blank (i.e.@: empty or containing only whitespace
+the line is blank (i.e., empty or containing only whitespace
characters), the comment is indented to the same position where
@key{TAB} would indent to (@pxref{Basic Indent}). If the line is
non-blank, the comment is placed after the last non-whitespace
@@ -987,7 +987,7 @@ type @kbd{M-j} or @kbd{C-M-j} (@code{comment-indent-new-line}). This
breaks the current line, and inserts the necessary comment delimiters
and indentation to continue the comment.
- For languages with closing comment delimiters (e.g.@: @samp{*/} in
+ For languages with closing comment delimiters (e.g., @samp{*/} in
C), the exact behavior of @kbd{M-j} depends on the value of the
variable @code{comment-multi-line}. If the value is @code{nil}, the
command closes the comment on the old line and starts a new comment on
@@ -1631,7 +1631,7 @@ Enable (or disable) @dfn{subword mode}. In subword mode, Emacs's word
commands recognize upper case letters in
@samp{StudlyCapsIdentifiers} as word boundaries. This is indicated by
the flag @samp{/w} on the mode line after the mode name
-(e.g. @samp{C/law}). You can even use @kbd{M-x subword-mode} in
+(e.g., @samp{C/law}). You can even use @kbd{M-x subword-mode} in
non-CC Mode buffers.
In the GNU project, we recommend using underscores to separate words
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index 3938712a5e9..23255e65c78 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -284,7 +284,7 @@ deleted remains current. @kbd{d} with a prefix argument is equivalent
to @kbd{C-d}. Note that the Rmail summary versions of these commands
behave slightly differently (@pxref{Rmail Summary Edit}).
-@c mention other hooks, eg show message hook?
+@c mention other hooks, e.g., show message hook?
@vindex rmail-delete-message-hook
Whenever Rmail deletes a message, it runs the hook
@code{rmail-delete-message-hook}. When the hook functions are invoked,
@@ -1490,7 +1490,7 @@ the machine on which to look for the POP server.
@c FIXME mention --with-hesiod "support Hesiod to get the POP server host"?
@cindex IMAP mailboxes
- Another method for accessing remote mailboxes is IMAP. This method is
+ Another method for accessing remote mailboxes is IMAP@. This method is
supported only by the Mailutils @code{movemail}. To specify an IMAP
mailbox in the inbox list, use the following mailbox @acronym{URL}:
@samp{imap://@var{username}[:@var{password}]@@@var{hostname}}. The
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 7dc5855cdfc..a3abdd19c27 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -387,7 +387,7 @@ wrap around, going from the last page to the first page or vice versa.
When the current match is on a history element, that history element
is pulled into the minibuffer. If you exit the incremental search
-normally (e.g. by typing @key{RET}), it remains in the minibuffer
+normally (e.g., by typing @key{RET}), it remains in the minibuffer
afterwards. Canceling the search, with @kbd{C-g}, restores the
contents of the minibuffer when you began the search.
diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi
index 8802e5392d7..732078a6a65 100644
--- a/doc/emacs/sending.texi
+++ b/doc/emacs/sending.texi
@@ -113,7 +113,7 @@ people use only standard field names with accepted meanings.
@vindex user-full-name
@vindex user-mail-address
The @samp{From} header field identifies the person sending the email
-(i.e.@: you). This should be a valid mailing address, as replies are
+(i.e., you). This should be a valid mailing address, as replies are
normally sent there. The default contents of this header field are
computed from the variables @code{user-full-name} (which specifies
your full name) and @code{user-mail-address} (your email address). On
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index 6e895d3ac3c..c12b96724b1 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -818,10 +818,10 @@ indenting the current line. @xref{Indentation}, for details.
Text mode turns off the features concerned with comments except when
you explicitly invoke them. It changes the syntax table so that
-single-quotes are considered part of words (e.g.@: @samp{don't} is
+single-quotes are considered part of words (e.g., @samp{don't} is
considered one word). However, if a word starts with a single-quote,
it is treated as a prefix for the purposes of capitalization
-(e.g.@: @kbd{M-c} converts @samp{'hello'} into @samp{'Hello'}, as
+(e.g., @kbd{M-c} converts @samp{'hello'} into @samp{'Hello'}, as
expected).
@cindex Paragraph-Indent Text mode
@@ -1096,9 +1096,9 @@ direct and indirect, and all of their bodies.
current heading line as well as all the bodies in its subtree; the
subheadings themselves are left visible. The command @kbd{C-c C-k}
(@code{show-branches}) reveals the subheadings, if they had previously
-been hidden (e.g.@: by @kbd{C-c C-d}). The command @kbd{C-c C-i}
+been hidden (e.g., by @kbd{C-c C-d}). The command @kbd{C-c C-i}
(@code{show-children}) is a weaker version of this; it reveals just
-the direct subheadings, i.e.@: those one level down.
+the direct subheadings, i.e., those one level down.
@findex hide-other
@kindex C-c C-o @r{(Outline mode)}
@@ -1177,7 +1177,7 @@ in the mode line shows how deep you've gone.
When zooming in on a heading, to see only the child subheadings specify
a numeric argument: @kbd{C-u C-c C-z}. The number of levels of children
-can be specified too (compare @kbd{M-x show-children}), e.g.@: @kbd{M-2
+can be specified too (compare @kbd{M-x show-children}), e.g., @kbd{M-2
C-c C-z} exposes two levels of child subheadings. Alternatively, the
body can be specified with a negative argument: @kbd{M-- C-c C-z}. The
whole subtree can be expanded, similarly to @kbd{C-c C-s} (@kbd{M-x
@@ -1349,7 +1349,7 @@ date, beneath the heading line. The command @kbd{C-c C-d}
Once you have some TODO items planned in an Org file, you can add
that file to the list of @dfn{agenda files} by typing @kbd{C-c [}
(@code{org-agenda-file-to-front}). Org mode is designed to let you
-easily maintain multiple agenda files, e.g.@: for organizing different
+easily maintain multiple agenda files, e.g., for organizing different
aspects of your life. The list of agenda files is stored in the
variable @code{org-agenda-files}.
@@ -1372,7 +1372,7 @@ etc.
export and publication. To export the current buffer, type @kbd{C-c
C-e} (@code{org-export}) anywhere in an Org buffer. This command
prompts for an export format; currently supported formats include
-HTML, @LaTeX{}, OpenDocument (@file{.odt}), and PDF. Some formats,
+HTML, @LaTeX{}, OpenDocument (@file{.odt}), and PDF@. Some formats,
such as PDF, require certain system tools to be installed.
@vindex org-publish-project-alist
@@ -1606,7 +1606,7 @@ when you type the corresponding one.
@subsection @TeX{} Printing Commands
You can invoke @TeX{} as an subprocess of Emacs, supplying either
-the entire contents of the buffer or just part of it (e.g.@: one
+the entire contents of the buffer or just part of it (e.g., one
chapter of a larger document).
@table @kbd
@@ -1681,7 +1681,7 @@ determined by the variable @code{tex-dvi-print-command}.
shell command strings described in the preceding paragraph. For
example, if @code{tex-dvi-view-command} is @code{"xdvi"}, @kbd{C-c
C-v} runs @command{xdvi @var{output-file-name}}. In some cases,
-however, the file name needs to be embedded in the command, e.g.@: if
+however, the file name needs to be embedded in the command, e.g., if
you need to provide the file name as an argument to one command whose
output is piped to another. You can specify where to put the file
name with @samp{*} in the command string. For example,
@@ -1936,7 +1936,7 @@ Emacs.
@vindex sgml-xml-mode
You may choose to use the less powerful SGML mode for editing XML,
-since XML is a strict subset of SGML. To enable SGML mode in an
+since XML is a strict subset of SGML@. To enable SGML mode in an
existing buffer, type @kbd{M-x sgml-mode}. On enabling SGML mode,
Emacs examines the buffer to determine whether it is XML; if so, it
sets the variable @code{sgml-xml-mode} to a non-@code{nil} value.
@@ -1950,7 +1950,7 @@ always insert explicit closing tags as well.
@findex nroff-mode
@vindex nroff-mode-hook
Nroff mode, a major mode derived from Text mode, is
-specialized for editing nroff files (e.g.@: Unix man pages). Type
+specialized for editing nroff files (e.g., Unix man pages). Type
@kbd{M-x nroff-mode} to enter this mode. Entering Nroff mode runs the
hook @code{text-mode-hook}, then @code{nroff-mode-hook}
(@pxref{Hooks}).
@@ -2706,7 +2706,7 @@ and 3 rows, and a total of 5 cells.
@findex table-insert-sequence
@kbd{M-x table-insert-sequence} inserts a string into each cell.
-Each string is a part of a sequence i.e.@: a series of increasing
+Each string is a part of a sequence i.e., a series of increasing
integer numbers.
@cindex table for HTML and LaTeX
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 705cd5a4bbe..fc4cef19760 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -339,10 +339,10 @@ systems and @file{emacs.exe} on MS-Windows and MS-DOS.
Optionally, Emacs can generate a @dfn{core dump} when it crashes, on
systems that support core files. A core dump is a file containing
voluminous data about the state of the program prior to the crash,
-usually examined by loading it into a debugger such as GDB. On many
+usually examined by loading it into a debugger such as GDB@. On many
platforms, core dumps are disabled by default, and you must explicitly
enable them by running the shell command @samp{ulimit -c unlimited}
-(e.g.@: in your shell startup script).
+(e.g., in your shell startup script).
@node After a Crash
@subsection Recovery After a Crash
@@ -380,7 +380,7 @@ symbols.
@file{core.emacs}, so that another crash won't overwrite it.
To use this script, run @code{gdb} with the file name of your Emacs
-executable and the file name of the core dump, e.g. @samp{gdb
+executable and the file name of the core dump, e.g., @samp{gdb
/usr/bin/emacs core.emacs}. At the @code{(gdb)} prompt, load the
recovery script: @samp{source /usr/src/emacs/etc/emacs-buffer.gdb}.
Then type the command @code{ybuffer-list} to see which buffers are
diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi
index cd5ed206dd6..291ad13b883 100644
--- a/doc/emacs/vc1-xtra.texi
+++ b/doc/emacs/vc1-xtra.texi
@@ -30,7 +30,7 @@
you can generate change log entries from the version control log
entries of previous commits.
- Note that this only works with RCS or CVS. This procedure would be
+ Note that this only works with RCS or CVS@. This procedure would be
particularly incorrect on a modern changeset-based version control
system, where changes to the @file{ChangeLog} file would normally be
committed as part of a changeset. In that case, you should write the
@@ -195,7 +195,7 @@ Thus, you can use it to compare a tagged version against the current files,
or two tagged versions against each other.
On SCCS, VC implements tags itself; these tags are visible only
-through VC. Most later systems (including CVS, Subversion, bzr, git,
+through VC@. Most later systems (including CVS, Subversion, bzr, git,
and hg) have a native tag facility, and VC uses it where available;
those tags will be visible even when you bypass VC.
@@ -236,7 +236,7 @@ way, change the variable @code{vc-consult-headers} to @code{nil}.
@vindex vc-@var{backend}-header
To insert a suitable header string into the current buffer, type
@kbd{C-x v h} (@code{vc-insert-headers}). This command works only on
-Subversion, CVS, RCS, and SCCS. The variable
+Subversion, CVS, RCS, and SCCS@. The variable
@code{vc-@var{backend}-header} contains the list of keywords to insert
into the version header; for instance, CVS uses @code{vc-cvs-header},
whose default value is @code{'("\$Id\$")}. (The extra backslashes
@@ -313,13 +313,6 @@ appropriate version control system. If @code{vc-command-messages} is
non-@code{nil}, VC displays messages to indicate which shell commands
it runs, and additional messages when the commands finish.
-@vindex vc-path
- You can specify additional directories to search for version control
-programs by setting the variable @code{vc-path}. These directories
-are searched before the usual search path. It is rarely necessary to
-set this variable, because VC normally finds the proper files
-automatically.
-
@node RCS and SCCS
@subsubsection Options for RCS and SCCS
@@ -360,7 +353,7 @@ changed erroneously, set @code{vc-mistrust-permissions} to @code{t}.
Then VC always checks the master file to determine the file's status.
VC determines the version control state of files under SCCS much as
-with RCS. It does not consider SCCS version headers, though. Thus,
+with RCS@. It does not consider SCCS version headers, though. Thus,
the variable @code{vc-mistrust-permissions} affects SCCS use, but
@code{vc-consult-headers} does not.
@@ -380,7 +373,7 @@ the name of the operation to invoke.
network interactions to a minimum. This is controlled by the variable
@code{vc-cvs-stay-local}. There is another variable,
@code{vc-stay-local}, which enables the feature also for other back
-ends that support it, including CVS. In the following, we will talk
+ends that support it, including CVS@. In the following, we will talk
only about @code{vc-cvs-stay-local}, but everything applies to
@code{vc-stay-local} as well.
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index f87da5f3913..9373d9b2f1b 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -282,7 +282,7 @@ window one line taller, taking space from a vertically adjacent window
without changing the height of the frame. With a positive numeric
argument, this command increases the window height by that many lines;
with a negative argument, it reduces the height by that many lines.
-If there are no vertically adjacent windows (i.e. the window is at the
+If there are no vertically adjacent windows (i.e., the window is at the
full frame height), that signals an error. The command also signals
an error if you attempt to reduce the height of any window below a
certain minimum number of lines, specified by the variable
@@ -328,7 +328,7 @@ usually work by calling @code{switch-to-buffer} internally
@findex display-buffer
Some commands try to display ``intelligently'', trying not to take
-over the selected window, e.g. by splitting off a new window and
+over the selected window, e.g., by splitting off a new window and
displaying the desired buffer there. Such commands, which include the
various help commands (@pxref{Help}), work by calling
@code{display-buffer} internally. @xref{Window Choice}, for details.
@@ -425,7 +425,7 @@ and display the buffer there.
@cindex undoing window configuration changes
@cindex window configuration changes, undoing
Winner mode is a global minor mode that records the changes in the
-window configuration (i.e. how the frames are partitioned into
+window configuration (i.e., how the frames are partitioned into
windows), so that you can ``undo'' them. You can toggle Winner mode
with @kbd{M-x winner-mode}, or by customizing the variable
@code{winner-mode}. When the mode is enabled, @kbd{C-c left}
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi
index 5bdf734804b..b3ed78d7f1c 100644
--- a/doc/emacs/xresources.texi
+++ b/doc/emacs/xresources.texi
@@ -489,7 +489,7 @@ The color for the border shadow, on the top and the left.
@cindex @file{~/.emacs.d/gtkrc} file
If Emacs is compiled with GTK+ toolkit support, the simplest way to
-customize its GTK+ widgets (e.g.@: menus, dialogs, tool bars and
+customize its GTK+ widgets (e.g., menus, dialogs, tool bars and
scroll bars) is to choose an appropriate GTK+ theme, for example with
the GNOME theme selector.
@@ -499,7 +499,7 @@ resources are specified in either the file @file{~/.emacs.d/gtkrc}
(for Emacs-specific GTK+ resources), or @file{~/.gtkrc-2.0} (for
general GTK+ resources). We recommend using @file{~/.emacs.d/gtkrc},
since GTK+ seems to ignore @file{~/.gtkrc-2.0} when running GConf with
-GNOME. Note, however, that some GTK themes may override
+GNOME@. Note, however, that some GTK themes may override
customizations in @file{~/.emacs.d/gtkrc}; there is nothing we can do
about this. GTK+ resources do not affect aspects of Emacs unrelated
to GTK+ widgets, such as fonts and colors in the main Emacs window;
@@ -541,7 +541,7 @@ gtk-font-name = "courier 12"
@noindent
Note that in this case the font name must be supplied as a GTK font
pattern (also called a @dfn{Pango font name}), not as a
-Fontconfig-style font name or XLFD. @xref{Fonts}.
+Fontconfig-style font name or XLFD@. @xref{Fonts}.
To customize widgets you first define a @dfn{style}, and then apply
the style to the widgets. Here is an example that sets the font for
@@ -590,8 +590,8 @@ widget "*verticalScrollBar*" style "scroll"
A GTK+ widget is specified by a @dfn{widget name} and a @dfn{widget
class}. The widget name refers to a specific widget
-(e.g.@: @samp{emacs-menuitem}), while the widget class refers to a
-collection of similar widgets (e.g.@: @samp{GtkMenuItem}). A widget
+(e.g., @samp{emacs-menuitem}), while the widget class refers to a
+collection of similar widgets (e.g., @samp{GtkMenuItem}). A widget
always has a class, but need not have a name.
@dfn{Absolute names} are sequences of widget names or widget
@@ -746,7 +746,7 @@ possible states are:
This is the default state for widgets.
@item ACTIVE
This is the state for a widget that is ready to do something. It is
-also for the trough of a scroll bar, i.e.@: @code{bg[ACTIVE] = "red"}
+also for the trough of a scroll bar, i.e., @code{bg[ACTIVE] = "red"}
sets the scroll bar trough to red. Buttons that have been pressed but
not released yet (``armed'') are in this state.
@item PRELIGHT
@@ -780,7 +780,7 @@ dialog.
@item bg_pixmap[@var{state}] = "@var{pixmap}"
This specifies an image background (instead of a background color).
@var{pixmap} should be the image file name. GTK can use a number of
-image file formats, including XPM, XBM, GIF, JPEG and PNG. If you
+image file formats, including XPM, XBM, GIF, JPEG and PNG@. If you
want a widget to use the same image as its parent, use
@samp{<parent>}. If you don't want any image, use @samp{<none>}.
@samp{<none>} is the way to cancel a background image inherited from a
@@ -790,7 +790,7 @@ You can't specify the file by its absolute file name. GTK looks for
the pixmap file in directories specified in @code{pixmap_path}.
@code{pixmap_path} is a colon-separated list of directories within
double quotes, specified at the top level in a @file{gtkrc} file
-(i.e.@: not inside a style definition; see example above):
+(i.e., not inside a style definition; see example above):
@smallexample
pixmap_path "/usr/share/pixmaps:/usr/include/X11/pixmaps"
@@ -814,8 +814,8 @@ GTK-style (or Pango) font name, like @samp{Sans Italic 10}.
There are three ways to specify a color: a color name, an RGB
triplet, or a GTK-style RGB triplet. @xref{Colors}, for a description
of color names and RGB triplets. Color names should be enclosed with
-double quotes, e.g.@: @samp{"red"}. RGB triplets should be written
-without double quotes, e.g.@: @samp{#ff0000}. GTK-style RGB triplets
+double quotes, e.g., @samp{"red"}. RGB triplets should be written
+without double quotes, e.g., @samp{#ff0000}. GTK-style RGB triplets
have the form @w{@code{@{ @var{r}, @var{g}, @var{b} @}}}, where
@var{r}, @var{g} and @var{b} are either integers in the range 0-65535
or floats in the range 0.0-1.0.
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index 5402504448a..51c6a53fcd8 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doclicense.texi: Update to latest version from FSF.
+ These are just minor editorial changes.
+
2012-11-24 Paul Eggert <eggert@cs.ucla.edu>
* doclicense.texi: Update to latest version from FSF.
diff --git a/doc/lispintro/doclicense.texi b/doc/lispintro/doclicense.texi
index cb71f05a175..9c3bbe56e91 100644
--- a/doc/lispintro/doclicense.texi
+++ b/doc/lispintro/doclicense.texi
@@ -97,7 +97,7 @@ format, SGML or XML using a publicly available
DTD, and standard-conforming simple HTML,
PostScript or PDF designed for human modification. Examples
of transparent image formats include PNG, XCF and
-JPG. Opaque formats include proprietary formats that can be
+JPG@. Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML,
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index f885d6c15e8..34ef7cc093c 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -1053,7 +1053,7 @@ of Emacs Lisp, I am referring to GNU Emacs Lisp in particular.
My thanks to all who helped me with this book. My especial thanks to
@r{Jim Blandy}, @r{Noah Friedman}, @w{Jim Kingdon}, @r{Roland
-McGrath}, @w{Frank Ritter}, @w{Randy Smith}, @w{Richard M.@:
+McGrath}, @w{Frank Ritter}, @w{Randy Smith}, @w{Richard M.
Stallman}, and @w{Melissa Weisshaus}. My thanks also go to both
@w{Philip Johnson} and @w{David Stampe} for their patient
encouragement. My mistakes are my own.
@@ -1085,7 +1085,7 @@ Robert J. Chassell
@c has been already used, duplicate ignored
@c I guess that is harmless (what happens if a later part of the text
@c makes a link to something in the first 4 pages though?).
-@c Note that eg the Emacs manual has a preface, but does not bother
+@c E.g., note that the Emacs manual has a preface, but does not bother
@c resetting the page numbers back to 1 after that.
@iftex
@headings off
@@ -3072,7 +3072,7 @@ All functions are defined in terms of other functions, except for a few
language. When you write functions' definitions, you will write them in
Emacs Lisp and use other functions as your building blocks. Some of the
functions you will use will themselves be written in Emacs Lisp (perhaps
-by you) and some will be primitives written in C. The primitive
+by you) and some will be primitives written in C@. The primitive
functions are used exactly like those written in Emacs Lisp and behave
like them. They are written in C so we can easily run GNU Emacs on any
computer that has sufficient power and can run C.
@@ -9029,7 +9029,7 @@ The last expression in the @code{kill-new} function adds the newly
copied string to whatever facility exists for copying and pasting
among different programs running in a windowing system. In the X
Windowing system, for example, the @code{x-select-text} function takes
-the string and stores it in memory operated by X. You can paste the
+the string and stores it in memory operated by X@. You can paste the
string in another program, such as an Xterm.
@need 1200
@@ -9657,7 +9657,7 @@ This sounds more complicated than it is and is easier seen in a diagram:
@noindent
In the diagram, each box represents a word of computer memory that
holds a Lisp object, usually in the form of a memory address. The boxes,
-i.e.@: the addresses, are in pairs. Each arrow points to what the address
+i.e., the addresses, are in pairs. Each arrow points to what the address
is the address of, either an atom or another pair of addresses. The
first box is the electronic address of @samp{rose} and the arrow points
to @samp{rose}; the second box is the address of the next pair of boxes,
@@ -17612,7 +17612,7 @@ For example:
(load "~/emacs/slowsplit")
@end smallexample
-This evaluates, i.e.@: loads, the @file{slowsplit.el} file or if it
+This evaluates, i.e., loads, the @file{slowsplit.el} file or if it
exists, the faster, byte compiled @file{slowsplit.elc} file from the
@file{emacs} sub-directory of your home directory. The file contains
the function @code{split-window-quietly}, which John Robinson wrote in
@@ -18781,7 +18781,7 @@ completes without problems.
@item
While running Edebug, type @kbd{?} to see a list of all the Edebug commands.
-(The @code{global-edebug-prefix} is usually @kbd{C-x X}, i.e.@:
+(The @code{global-edebug-prefix} is usually @kbd{C-x X}, i.e.,
@kbd{@key{CTRL}-x} followed by an upper case @kbd{X}; use this prefix
for commands made outside of the Edebug debugging buffer.)
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index a0710723ea2..7238d958d8a 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,36 @@
+2012-12-09 Glenn Morris <rgm@gnu.org>
+
+ * customize.texi (Variable Definitions): Mention eval-defun
+ on a defcustom calls the :set function when appropriate.
+
+2012-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doclicense.texi, gpl.texi: Update to latest version from FSF.
+ These are just minor editorial changes.
+
+2012-12-06 Chong Yidong <cyd@gnu.org>
+
+ * lists.texi (Plist Access): Move put example to Symbol Plists.
+
+ * symbols.texi (Standard Properties): Fix typo.
+
+2012-12-03 Chong Yidong <cyd@gnu.org>
+
+ * symbols.texi (Symbol Properties): New node.
+ (Symbol Plists): Make it a subsection under Symbol Properties.
+ (Standard Properties): New node.
+
+ * lists.texi (Property Lists): Move here from symbols.texi.
+ (Plist Access): Rename from Other Plists.
+
+ * customize.texi (Variable Definitions):
+ * display.texi (Defining Faces):
+ * sequences.texi (Char-Tables): Fix xref.
+
+ * keymaps.texi (Key Sequences): kbd is now a function.
+
+ * commands.texi (Using Interactive): Fix index entry.
+
2012-11-24 Paul Eggert <eggert@cs.ucla.edu>
* doclicense.texi: Update to latest version from FSF.
diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi
index 65a83ef5b84..8a6dd05ded2 100644
--- a/doc/lispref/abbrevs.texi
+++ b/doc/lispref/abbrevs.texi
@@ -132,7 +132,7 @@ abbrev in an abbrev table.
When a major mode defines a system abbrev, it should call
@code{define-abbrev} and specify @code{t} for the @code{:system}
property. Be aware that any saved non-``system'' abbrevs are restored
-at startup, i.e. before some major modes are loaded. Therefore, major
+at startup, i.e., before some major modes are loaded. Therefore, major
modes should not assume that their abbrev tables are empty when they
are first loaded.
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index 935a49116cd..be9563a7b4f 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -661,7 +661,7 @@ host name.
After Emacs reads your init file, it initializes
@code{auto-save-list-file-name} (if you have not already set it
non-@code{nil}) based on this prefix, adding the host name and process
-ID. If you set this to @code{nil} in your init file, then Emacs does
+ID@. If you set this to @code{nil} in your init file, then Emacs does
not initialize @code{auto-save-list-file-name}.
@end defopt
@@ -772,4 +772,3 @@ to call to check whether a non-file buffer needs reverting
(@pxref{Supporting additional buffers,,, emacs}).
@end ifnottex
@end defvar
-
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index c42e4b3b6dc..f3b216e9353 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -65,7 +65,7 @@ use the minibuffer, so if you call @code{find-file} as a function from
Lisp code, you must supply the file name string as an ordinary Lisp
function argument.
- If the command is a keyboard macro (i.e.@: a string or vector),
+ If the command is a keyboard macro (i.e., a string or vector),
Emacs executes it using @code{execute-kbd-macro} (@pxref{Keyboard
Macros}).
@@ -141,10 +141,10 @@ A command may be called from Lisp programs like any other function, but
then the caller supplies the arguments and @var{arg-descriptor} has no
effect.
-@cindex @code{interactive-form}, function property
+@cindex @code{interactive-form}, symbol property
The @code{interactive} form must be located at top-level in the
function body, or in the function symbol's @code{interactive-form}
-property (@pxref{Symbol Plists}). It has its effect because the
+property (@pxref{Symbol Properties}). It has its effect because the
command loop looks for it before calling the function
(@pxref{Interactive Call}). Once the function is called, all its body
forms are executed; at this time, if the @code{interactive} form
@@ -2451,7 +2451,7 @@ right-arrow function key:
@defun read-char &optional prompt inherit-input-method seconds
This function reads and returns a character of command input. If the
-user generates an event which is not a character (i.e. a mouse click or
+user generates an event which is not a character (i.e., a mouse click or
function key event), @code{read-char} signals an error. The arguments
work as in @code{read-event}.
@@ -2727,7 +2727,7 @@ Normally you add events to the front of this list, so that the events
most recently unread will be reread first.
Events read from this list are not normally added to the current
-command's key sequence (as returned by e.g. @code{this-command-keys}),
+command's key sequence (as returned by, e.g., @code{this-command-keys}),
as the events will already have been added once as they were read for
the first time. An element of the form @code{(@code{t} . @var{event})}
forces @var{event} to be added to the current command's key sequence.
@@ -2863,7 +2863,7 @@ Some systems support only a whole number of seconds; on these systems,
@var{seconds} is rounded down.
The expression @code{(sit-for 0)} is equivalent to @code{(redisplay)},
-i.e. it requests a redisplay, without any delay, if there is no pending input.
+i.e., it requests a redisplay, without any delay, if there is no pending input.
@xref{Forcing Redisplay}.
If @var{nodisp} is non-@code{nil}, then @code{sit-for} does not
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index f088934f5f1..7d5f3fcf7c5 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -657,7 +657,7 @@ Lisp source; these do not appear in the output of @code{disassemble}.
11 sub1 ; @r{Pop @code{integer}, decrement value,}
; @r{push new value onto stack.}
12 call 1 ; @r{Call function @code{factorial} using first}
- ; @r{(i.e. top) stack element as argument;}
+ ; @r{(i.e., top) stack element as argument;}
; @r{push returned value onto stack.}
@end group
@group
@@ -704,7 +704,7 @@ The @code{silly-loop} function is somewhat more complex:
4 sub1 ; @r{Subtract 1 from top of stack.}
@end group
@group
-5 dup ; @r{Duplicate top of stack; i.e. copy the top}
+5 dup ; @r{Duplicate top of stack; i.e., copy the top}
; @r{of the stack and push copy onto stack.}
6 varset n ; @r{Pop the top of the stack,}
; @r{and bind @code{n} to the value.}
@@ -737,4 +737,3 @@ The @code{silly-loop} function is somewhat more complex:
17 return ; @r{Return value of the top of stack.}
@end group
@end example
-
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index c9d22851ed2..c8d09760b53 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -162,7 +162,7 @@ value was changed in that version. This keyword takes priority over
@code{:version}.
@var{package} should be the official name of the package, as a symbol
-(e.g.@: @code{MH-E}). @var{version} should be a string. If the
+(e.g., @code{MH-E}). @var{version} should be a string. If the
package @var{package} is released as part of Emacs, @var{package} and
@var{version} should appear in the value of
@code{customize-package-emacs-version-alist}.
@@ -261,7 +261,7 @@ If this variable is non-@code{nil}, the prefixes specified by a
group's @code{:prefix} keyword are omitted from tag names, whenever
the user customizes the group.
-The default value is @code{nil}, i.e.@: the prefix-discarding feature
+The default value is @code{nil}, i.e., the prefix-discarding feature
is disabled. This is because discarding prefixes often leads to
confusing names for options and faces.
@end defopt
@@ -282,7 +282,7 @@ variable should be displayed in the Customize interface, the values it
is allowed to take, etc.
@defmac defcustom option standard doc [keyword value]@dots{}
-This macro declares @var{option} as a user option (i.e.@: a
+This macro declares @var{option} as a user option (i.e., a
customizable variable). You should not quote @var{option}.
The argument @var{standard} is an expression that specifies the
@@ -308,12 +308,14 @@ Every @code{defcustom} should specify @code{:group} at least once.
When you evaluate a @code{defcustom} form with @kbd{C-M-x} in Emacs Lisp
mode (@code{eval-defun}), a special feature of @code{eval-defun}
arranges to set the variable unconditionally, without testing whether
-its value is void. (The same feature applies to @code{defvar}.)
-@xref{Defining Variables}.
+its value is void. (The same feature applies to @code{defvar},
+@pxref{Defining Variables}.) Using @code{eval-defun} on a defcustom
+that is already defined calls the @code{:set} function (see below),
+if there is one.
If you put a @code{defcustom} in a pre-loaded Emacs Lisp file
(@pxref{Building Emacs}), the standard value installed at dump time
-might be incorrect, e.g.@: because another variable that it depends on
+might be incorrect, e.g., because another variable that it depends on
has not been assigned the right value yet. In that case, use
@code{custom-reevaluate-setting}, described below, to re-evaluate the
standard value after Emacs starts up.
@@ -472,8 +474,8 @@ Internally, @code{defcustom} uses the symbol property
@code{saved-value} to record the value saved by the user with the
customization buffer, and @code{customized-value} to record the value
set by the user with the customization buffer, but not saved.
-@xref{Property Lists}. These properties are lists, the car of which
-is an expression that evaluates to the value.
+@xref{Symbol Properties}. These properties are lists, the car of
+which is an expression that evaluates to the value.
@defun custom-reevaluate-setting symbol
This function re-evaluates the standard value of @var{symbol}, which
@@ -1415,7 +1417,7 @@ disabling themes:
@defun custom-theme-p theme
This function return a non-@code{nil} value if @var{theme} (a symbol)
-is the name of a Custom theme (i.e.@: a Custom theme which has been
+is the name of a Custom theme (i.e., a Custom theme which has been
loaded into Emacs, whether or not the theme is enabled). Otherwise,
it returns @code{nil}.
@end defun
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 5148c6ec22e..2063e2d2e49 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -87,7 +87,7 @@ This function tries immediately to redisplay. The optional argument
instead of being preempted, even if input is pending and the variable
@code{redisplay-dont-pause} is @code{nil} (see below). If
@code{redisplay-dont-pause} is non-@code{nil} (the default), this
-function redisplays in any case, i.e.@: @var{force} does nothing.
+function redisplays in any case, i.e., @var{force} does nothing.
The function returns @code{t} if it actually tried to redisplay, and
@code{nil} otherwise. A value of @code{t} does not mean that
@@ -163,7 +163,7 @@ If this buffer-local variable is non-@code{nil}, lines that extend
beyond the right edge of the window are truncated; otherwise, they are
continued. As a special exception, the variable
@code{truncate-partial-width-windows} takes precedence in
-@dfn{partial-width} windows (i.e.@: windows that do not occupy the
+@dfn{partial-width} windows (i.e., windows that do not occupy the
entire frame width).
@end defopt
@@ -1541,7 +1541,7 @@ specify just the foreground color or just the background color.
@kindex mouse-face @r{(overlay property)}
This property is used instead of @code{face} when the mouse is within
the range of the overlay. However, Emacs ignores all face attributes
-from this property that alter the text size (e.g. @code{:height},
+from this property that alter the text size (e.g., @code{:height},
@code{:weight}, and @code{:slant}). Those attributes are always the
same as in the unhighlighted text.
@@ -1744,7 +1744,7 @@ check the width of a character. @xref{Primitive Indent}, and
@defun char-width char
This function returns the width in columns of the character
-@var{char}, if it were displayed in the current buffer (i.e.@: taking
+@var{char}, if it were displayed in the current buffer (i.e., taking
into account the buffer's display table, if any; @pxref{Display
Tables}). The width of a tab character is usually @code{tab-width}
(@pxref{Usual Display}).
@@ -2287,7 +2287,7 @@ terminal must match one of the @var{value}s specified for it in
@end example
Internally, Emacs stores the face's default specification in its
-@code{face-defface-spec} symbol property (@pxref{Property Lists}).
+@code{face-defface-spec} symbol property (@pxref{Symbol Properties}).
The @code{saved-face} property stores the face specification saved by
the user, using the customization buffer; the @code{customized-face}
property stores the face specification customized for the current
@@ -2569,7 +2569,7 @@ any text having the face @var{face} with @var{remapping}, rather than
the ordinary definition of @var{face}.
@var{remapping} may be any face specification suitable for a
-@code{face} text property: either a face (i.e.@: a face name or a
+@code{face} text property: either a face (i.e., a face name or a
property list of attribute/value pairs), or a list of faces. For
details, see the description of the @code{face} text property in
@ref{Special Properties}. @var{remapping} serves as the complete
@@ -2775,7 +2775,7 @@ attribute on this face (@pxref{Face Attributes}).
@itemx underline
@itemx fixed-pitch
@itemx variable-pitch
-These have the attributes indicated by their names (e.g. @code{bold}
+These have the attributes indicated by their names (e.g., @code{bold}
has a bold @code{:weight} attribute), with all other attributes
unspecified (and so given by @code{default}).
@@ -3458,7 +3458,7 @@ both left and right fringes.
@xref{Fringe Bitmaps}, for a list of standard bitmap symbols and how
to define your own. In addition, @code{nil} represents the empty
-bitmap (i.e.@: an indicator that is not shown).
+bitmap (i.e., an indicator that is not shown).
When @code{fringe-indicator-alist} has a buffer-local value, and
there is no bitmap defined for a logical indicator, or the bitmap is
@@ -3836,7 +3836,7 @@ irrelevant, since those don't apply to the replacement.
property'' means all the consecutive characters that have the same
Lisp object as their @code{display} property; these characters are
replaced as a single unit. If two characters have different Lisp
-objects as their @code{display} properties (i.e.@: objects which are
+objects as their @code{display} properties (i.e., objects which are
not @code{eq}), they are handled separately.
Here is an example which illustrates this point. A string serves as
@@ -4646,8 +4646,8 @@ Specifies a rotation angle in degrees.
@item :index
@c Doesn't work: http://debbugs.gnu.org/7978
This has the same meaning as it does for GIF images (@pxref{GIF Images}),
-i.e. it specifies which image to view inside an image bundle file format
-such as DJVM. You can use the @code{image-metadata} function to
+i.e., it specifies which image to view inside an image bundle file format
+such as DJVM@. You can use the @code{image-metadata} function to
retrieve the total number of images in an image bundle.
@end table
@@ -4745,7 +4745,7 @@ Each specification in @var{specs} is a property list with contents
depending on image type. All specifications must at least contain the
properties @code{:type @var{type}} and either @w{@code{:file @var{file}}}
or @w{@code{:data @var{DATA}}}, where @var{type} is a symbol specifying
-the image type, e.g.@: @code{xbm}, @var{file} is the file to load the
+the image type, e.g., @code{xbm}, @var{file} is the file to load the
image from, and @var{data} is a string containing the actual image data.
The first specification in the list whose @var{type} is supported, and
@var{file} exists, is used to construct the image specification to be
@@ -4926,7 +4926,7 @@ The following functions related to animated images are available.
@defun image-animated-p image
This function returns non-@code{nil} if @var{image} can be animated.
-The actual return value is a cons @code{(@var{nimages} . @var{delay})},
+The actual return value is a cons @code{(@var{nimages} . @var{delay})},
where @var{nimages} is the number of frames and @var{delay} is the
delay in seconds between them.
@end defun
@@ -5182,7 +5182,7 @@ and returns it.
(@pxref{Text Properties}) to hold the button properties. Such buttons
do not add markers to the buffer, so editing in the buffer does not
slow down if there is an extremely large numbers of buttons. However,
-if there is an existing face text property on the text (e.g.@: a face
+if there is an existing face text property on the text (e.g., a face
assigned by Font Lock mode), the button face may not be visible. Both
of these functions return the starting position of the new button.
@@ -5780,7 +5780,7 @@ codes 0 through 31, as well as the @key{DEL} character (character code
@code{ctl-arrow}. If this variable is non-@code{nil} (the default),
these characters are displayed as sequences of two glyphs, where the
first glyph is @samp{^} (a display table can specify a glyph to use
-instead of @samp{^}); e.g.@: the @key{DEL} character is displayed as
+instead of @samp{^}); e.g., the @key{DEL} character is displayed as
@samp{^?}.
If @code{ctl-arrow} is @code{nil}, these characters are displayed as
@@ -6045,7 +6045,7 @@ glyph table is displayed literally.
@cindex glyphless characters
@dfn{Glyphless characters} are characters which are displayed in a
-special way, e.g.@: as a box containing a hexadecimal code, instead of
+special way, e.g., as a box containing a hexadecimal code, instead of
being displayed literally. These include characters which are
explicitly defined to be glyphless, as well as characters for which
there is no available font (on a graphical display), and characters
@@ -6252,7 +6252,7 @@ and Hebrew, whose natural ordering for horizontal text display runs
from right to left. Furthermore, segments of Latin script and digits
embedded in right-to-left text are displayed left-to-right, while
segments of right-to-left script embedded in left-to-right text
-(e.g.@: Arabic or Hebrew text in comments or strings in a program
+(e.g., Arabic or Hebrew text in comments or strings in a program
source file) are appropriately displayed right-to-left. We call such
mixtures of left-to-right and right-to-left text @dfn{bidirectional
text}. This section describes the facilities and options for editing
@@ -6264,7 +6264,7 @@ and displaying bidirectional text.
@cindex unicode bidirectional algorithm
@cindex bidirectional reordering
Text is stored in Emacs buffers and strings in @dfn{logical} (or
-@dfn{reading}) order, i.e.@: the order in which a human would read
+@dfn{reading}) order, i.e., the order in which a human would read
each character. In right-to-left and bidirectional text, the order in
which characters are displayed on the screen (called @dfn{visual
order}) is not the same as logical order; the characters' screen
diff --git a/doc/lispref/doclicense.texi b/doc/lispref/doclicense.texi
index cb71f05a175..9c3bbe56e91 100644
--- a/doc/lispref/doclicense.texi
+++ b/doc/lispref/doclicense.texi
@@ -97,7 +97,7 @@ format, SGML or XML using a publicly available
DTD, and standard-conforming simple HTML,
PostScript or PDF designed for human modification. Examples
of transparent image formats include PNG, XCF and
-JPG. Opaque formats include proprietary formats that can be
+JPG@. Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML,
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index b5edda06bad..2e4eae2de42 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -1116,7 +1116,7 @@ definition, but specifications are much more general than macro
arguments. @xref{Defining Macros}, for more explanation of
the @code{declare} form.
-@c See eg http://debbugs.gnu.org/10577
+@c See, e.g., http://debbugs.gnu.org/10577
@c FIXME Maybe there should be an Edebug option to get it to
@c automatically load the entire source file containing the function
@c being instrumented. That would avoid this.
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 371593f7203..3980f7ac868 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -378,6 +378,7 @@ Lists
* Modifying Lists:: Storing new pieces into an existing list.
* Sets And Lists:: A list can represent a finite mathematical set.
* Association Lists:: A list can represent a finite relation or mapping.
+* Property Lists:: A list of paired elements.
Modifying Existing List Structure
@@ -386,6 +387,12 @@ Modifying Existing List Structure
This can be used to remove or add elements.
* Rearrangement:: Reordering the elements in a list; combining lists.
+Property Lists
+
+* Plists and Alists:: Comparison of the advantages of property
+ lists and association lists.
+* Plist Access:: Accessing property lists stored elsewhere.
+
Sequences, Arrays, and Vectors
* Sequence Functions:: Functions that accept any kind of sequence.
@@ -410,15 +417,13 @@ Symbols
and property lists.
* Definitions:: A definition says how a symbol will be used.
* Creating Symbols:: How symbols are kept unique.
-* Property Lists:: Each symbol has a property list
+* Symbol Properties:: Each symbol has a property list
for recording miscellaneous information.
-Property Lists
+Symbol Properties
-* Plists and Alists:: Comparison of the advantages of property
- lists and association lists.
-* Symbol Plists:: Functions to access symbols' property lists.
-* Other Plists:: Accessing property lists stored elsewhere.
+* Symbol Plists:: Accessing symbol properties.
+* Standard Properties:: Standard meanings of symbol properties.
Evaluation
diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi
index b92fd9ed665..04c8273cb77 100644
--- a/doc/lispref/errors.texi
+++ b/doc/lispref/errors.texi
@@ -24,7 +24,7 @@ conditions, that means it has none.
condition @code{error}, because quitting is not considered an error.
@c You can grep for "(put 'foo 'error-conditions ...) to find
-@c examples defined in Lisp. Eg soap-client.el, sasl.el.
+@c examples defined in Lisp. E.g., soap-client.el, sasl.el.
Most of these error symbols are defined in C (mainly @file{data.c}),
but some are defined in Lisp. For example, the file @file{userlock.el}
defines the @code{file-locked} and @code{file-supersession} errors.
@@ -91,7 +91,7 @@ The message is @samp{End of buffer}. @xref{Character Motion}.
@item end-of-file
The message is @samp{End of file during parsing}. Note that this is
not a subcategory of @code{file-error}, because it pertains to the
-Lisp reader, not to file I/O. @xref{Input Functions}.
+Lisp reader, not to file I/O@. @xref{Input Functions}.
@item file-already-exists
This is a subcategory of @code{file-error}. @xref{Writing to Files}.
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index a5710c789e9..863acbe3949 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -241,9 +241,9 @@ used, and in many cases only some of the functions are called.
@defvar find-file-literally
This buffer-local variable, if set to a non-@code{nil} value, makes
@code{save-buffer} behave as if the buffer were visiting its file
-literally, i.e. without conversions of any kind. The command
+literally, i.e., without conversions of any kind. The command
@code{find-file-literally} sets this variable's local value, but other
-equivalent functions and commands can do that as well, e.g.@: to avoid
+equivalent functions and commands can do that as well, e.g., to avoid
automatic addition of a newline at the end of the file. This variable
is permanent local, so it is unaffected by changes of major modes.
@end defvar
@@ -1390,7 +1390,7 @@ predicate function for testing whether a candidate file is suitable.
The predicate is passed the candidate file name as its single
argument. If @var{predicate} is @code{nil} or omitted,
@code{locate-file} uses @code{file-readable-p} as the predicate.
-@xref{Kinds of Files}, for other useful predicates, e.g.@:
+@xref{Kinds of Files}, for other useful predicates, e.g.,
@code{file-executable-p} and @code{file-directory-p}.
For compatibility, @var{predicate} can also be one of the symbols
@@ -1660,7 +1660,7 @@ This function converts a symbolic file mode specification in
@var{modes} into the equivalent integer value. If the symbolic
specification is based on an existing file, that file's mode bits are
taken from the optional argument @var{base-modes}; if that argument is
-omitted or @code{nil}, it defaults to 0, i.e.@: no access rights at
+omitted or @code{nil}, it defaults to 0, i.e., no access rights at
all.
@end defun
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 846dfbaf17c..504d1fb14df 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -70,7 +70,7 @@ selected frame.
@defun terminal-live-p object
This predicate returns a non-@code{nil} value if @var{object} is a
-terminal that is live (i.e.@: not deleted), and @code{nil} otherwise.
+terminal that is live (i.e., not deleted), and @code{nil} otherwise.
For live terminals, the return value indicates what kind of frames are
displayed on that terminal; the list of possible values is the same as
for @code{framep} above.
@@ -170,7 +170,7 @@ following attributes:
@itemize @bullet
@item
-The name of the device used by the terminal (e.g.@: @samp{:0.0} or
+The name of the device used by the terminal (e.g., @samp{:0.0} or
@file{/dev/tty}).
@item
@@ -179,7 +179,7 @@ The terminal and keyboard coding systems used on the terminal.
@item
The kind of display associated with the terminal. This is the symbol
-returned by the function @code{terminal-live-p} (i.e.@: @code{x},
+returned by the function @code{terminal-live-p} (i.e., @code{x},
@code{t}, @code{w32}, @code{ns}, or @code{pc}). @xref{Frames}.
@item
@@ -276,7 +276,7 @@ the other frame parameters from the alist @var{parameters}.
Before creating the frame, this function ensures that Emacs is ``set
up'' to display graphics. For instance, if Emacs has not processed X
-resources (e.g.@: if it was started on a text terminal), it does so at
+resources (e.g., if it was started on a text terminal), it does so at
this time. In all other respects, this function behaves like
@code{make-frame} (@pxref{Creating Frames}).
@end deffn
@@ -426,7 +426,7 @@ creates a separate @dfn{minibuffer-only frame} as well.
@defopt minibuffer-frame-alist
This variable's value is an alist of parameter values used when
-creating an initial minibuffer-only frame (i.e.@: the minibuffer-only
+creating an initial minibuffer-only frame (i.e., the minibuffer-only
frame that Emacs creates if @code{initial-frame-alist} specifies a
frame with no minibuffer).
@end defopt
@@ -1114,7 +1114,7 @@ The argument @var{pretend} has the same meaning as in
@end defun
@c FIXME? Belongs more in Emacs manual than here?
-@c But eg fit-window-to-buffer is in this manual.
+@c But, e.g., fit-window-to-buffer is in this manual.
@deffn Command fit-frame-to-buffer &optional frame max-height min-height
This command adjusts the height of @var{frame} (the default is the
selected frame) to fit its contents. The optional arguments
@@ -1286,7 +1286,7 @@ calls the function @code{delete-frame}. @xref{Misc Events}.
@cindex frames, scanning all
@defun frame-list
-This function returns a list of all the live frames, i.e.@: those that
+This function returns a list of all the live frames, i.e., those that
have not been deleted. It is analogous to @code{buffer-list} for
buffers, and includes frames on all terminals. The list that you get
is newly created, so modifying the list doesn't have any effect on the
@@ -1546,7 +1546,7 @@ track of such changes. @xref{Misc Events}.
@cindex raising a frame
@cindex lowering a frame
Most window systems use a desktop metaphor. Part of this metaphor
-is the idea that system-level windows (e.g.@: Emacs frames) are
+is the idea that system-level windows (e.g., Emacs frames) are
stacked in a notional third dimension perpendicular to the screen
surface. Where two overlap, the one higher up covers the one
underneath. You can @dfn{raise} or @dfn{lower} a frame using the
@@ -2018,7 +2018,7 @@ drop.
@vindex dnd-protocol-alist
When an URL is dropped on Emacs it may be a file, but it may also be
another URL type (ftp, http, etc.). Emacs first checks
-@code{dnd-protocol-alist} to determine what to do with the URL. If
+@code{dnd-protocol-alist} to determine what to do with the URL@. If
there is no match there and if @code{browse-url-browser-function} is
an alist, Emacs looks for a match there. If no match is found the
text for the URL is inserted. If you want to alter Emacs behavior,
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 05fd2486fd6..531172031dc 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -44,10 +44,10 @@ changes in the values of variables or the contents of data structures.
In most computer languages, every function has a name. But in Lisp,
a function in the strictest sense has no name: it is an object which
-can @emph{optionally} be associated with a symbol (e.g.@: @code{car})
+can @emph{optionally} be associated with a symbol (e.g., @code{car})
that serves as the function name. @xref{Function Names}. When a
function has been given a name, we usually also refer to that symbol
-as a ``function'' (e.g.@: we refer to ``the function @code{car}'').
+as a ``function'' (e.g., we refer to ``the function @code{car}'').
In this manual, the distinction between a function name and the
function object itself is usually unimportant, but we will take note
wherever it is relevant.
@@ -61,7 +61,7 @@ Emacs Lisp.
@table @dfn
@item lambda expression
-A function (in the strict sense, i.e.@: a function object) which is
+A function (in the strict sense, i.e., a function object) which is
written in Lisp. These are described in the following section.
@ifnottex
@xref{Lambda Expressions}.
@@ -71,14 +71,14 @@ written in Lisp. These are described in the following section.
@cindex primitive
@cindex subr
@cindex built-in function
-A function which is callable from Lisp but is actually written in C.
+A function which is callable from Lisp but is actually written in C@.
Primitives are also called @dfn{built-in functions}, or @dfn{subrs}.
Examples include functions like @code{car} and @code{append}. In
addition, all special forms (see below) are also considered
primitives.
Usually, a function is implemented as a primitive because it is a
-fundamental part of Lisp (e.g.@: @code{car}), or because it provides a
+fundamental part of Lisp (e.g., @code{car}), or because it provides a
low-level interface to operating system services, or because it needs
to run fast. Unlike functions defined in Lisp, primitives can be
modified or added only by changing the C sources and recompiling
@@ -136,7 +136,7 @@ function:
@defun functionp object
This function returns @code{t} if @var{object} is any kind of
-function, i.e.@: can be passed to @code{funcall}. Note that
+function, i.e., can be passed to @code{funcall}. Note that
@code{functionp} returns @code{t} for symbols that are function names,
and returns @code{nil} for special forms.
@end defun
@@ -476,7 +476,7 @@ way users think of the parts of the macro call.
A symbol can serve as the name of a function. This happens when the
symbol's @dfn{function cell} (@pxref{Symbol Components}) contains a
-function object (e.g.@: a lambda expression). Then the symbol itself
+function object (e.g., a lambda expression). Then the symbol itself
becomes a valid, callable function, equivalent to the function object
in its function cell.
@@ -1080,7 +1080,7 @@ The primary use of this function is as a subroutine by constructs that
define or alter functions, like @code{defadvice} (@pxref{Advising
Functions}). (If @code{defun} were not a primitive, it could be
written as a Lisp macro using @code{fset}.) You can also use it to
-give a symbol a function definition that is not a list, e.g.@: a
+give a symbol a function definition that is not a list, e.g., a
keyboard macro (@pxref{Keyboard Macros}):
@example
@@ -1099,7 +1099,7 @@ defalias}.
As explained in @ref{Variable Scoping}, Emacs can optionally enable
lexical binding of variables. When lexical binding is enabled, any
-named function that you create (e.g.@: with @code{defun}), as well as
+named function that you create (e.g., with @code{defun}), as well as
any anonymous function that you create using the @code{lambda} macro
or the @code{function} special form or the @code{#'} syntax
(@pxref{Anonymous Functions}), is automatically converted into a
@@ -1383,7 +1383,7 @@ If you prefix the filename in the @code{declare-function} statement with
without error.
There are some function definitions that @samp{check-declare} does not
-understand (e.g. @code{defstruct} and some other macros). In such cases,
+understand (e.g., @code{defstruct} and some other macros). In such cases,
you can pass a non-@code{nil} @var{fileonly} argument to
@code{declare-function}, meaning to only check that the file exists, not
that it actually defines the function. Note that to do this without
@@ -1397,7 +1397,7 @@ opposed to an unspecified one).
@cindex safety of functions
Some major modes, such as SES, call functions that are stored in user
-files. (@inforef{Top, ,ses}, for more information on SES.) User
+files. (@inforef{Top, ,ses}, for more information on SES@.) User
files sometimes have poor pedigrees---you can get a spreadsheet from
someone you've just met, or you can get one through email from someone
you've never met. So it is risky to call a function whose source code
diff --git a/doc/lispref/gpl.texi b/doc/lispref/gpl.texi
index 97a17e1914e..0e2e212acb1 100644
--- a/doc/lispref/gpl.texi
+++ b/doc/lispref/gpl.texi
@@ -623,12 +623,12 @@ later version.
@item Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+APPLICABLE LAW@. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+A PARTICULAR PURPOSE@. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU@. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
@@ -680,7 +680,7 @@ your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE@. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 1375a057a5a..25c150290bd 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -448,7 +448,7 @@ This function returns a string describing @var{event} in the standard
Emacs notation for keyboard input. A normal printing character
appears as itself, but a control character turns into a string
starting with @samp{C-}, a meta character turns into a string starting
-with @samp{M-}, and space, tab, etc.@: appear as @samp{SPC},
+with @samp{M-}, and space, tab, etc., appear as @samp{SPC},
@samp{TAB}, etc. A function key symbol appears inside angle brackets
@samp{<@dots{}>}. An event that is a list appears as the name of the
symbol in the @sc{car} of the list, inside angle brackets.
@@ -728,4 +728,3 @@ If this variable is non-@code{nil}, commands defined with
echo area at first, and display the longer @var{help-text} strings only
if the user types the help character again.
@end defopt
-
diff --git a/doc/lispref/index.texi b/doc/lispref/index.texi
index 8bec3aa635b..3f31c5dd656 100644
--- a/doc/lispref/index.texi
+++ b/doc/lispref/index.texi
@@ -12,9 +12,9 @@
@c I tried to include words in a cindex that give the context of the entry,
@c particularly if there is more than one entry for the same concept.
@c For example, "nil in keymap"
-@c Similarly for explicit findex and vindex entries, e.g. "print example".
+@c Similarly for explicit findex and vindex entries, e.g., "print example".
-@c Error codes are given cindex entries, e.g. "end-of-file error".
+@c Error codes are given cindex entries, e.g., "end-of-file error".
@c pindex is used for .el files and Unix programs
@@ -24,5 +24,3 @@
@c Print the indices
@printindex fn
-
-
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 2a2846921c5..830a00ec9e6 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -293,7 +293,7 @@ the number of those objects that are not live but that Emacs keeps around for
future allocations. So an overall result is:
@example
-((@code{conses} @var{cons-size} @var{used-conse} @var{free-conses})
+((@code{conses} @var{cons-size} @var{used-conses} @var{free-conses})
(@code{symbols} @var{symbol-size} @var{used-symbols} @var{free-symbols})
(@code{miscs} @var{misc-size} @var{used-miscs} @var{free-miscs})
(@code{strings} @var{string-size} @var{used-strings} @var{free-strings})
@@ -324,7 +324,7 @@ provides @code{mallinfo} function.
@table @var
@item cons-size
-Internal size of a cons cell, i.e.@: @code{sizeof (struct Lisp_Cons)}.
+Internal size of a cons cell, i.e., @code{sizeof (struct Lisp_Cons)}.
@item used-conses
The number of cons cells in use.
@@ -334,7 +334,7 @@ The number of cons cells for which space has been obtained from
the operating system, but that are not currently being used.
@item symbol-size
-Internal size of a symbol, i.e.@: @code{sizeof (struct Lisp_Symbol)}.
+Internal size of a symbol, i.e., @code{sizeof (struct Lisp_Symbol)}.
@item used-symbols
The number of symbols in use.
@@ -344,7 +344,7 @@ The number of symbols for which space has been obtained from
the operating system, but that are not currently being used.
@item misc-size
-Internal size of a miscellaneous entity, i.e.@:
+Internal size of a miscellaneous entity, i.e.,
@code{sizeof (union Lisp_Misc)}, which is a size of the
largest type enumerated in @code{enum Lisp_Misc_Type}.
@@ -357,7 +357,7 @@ The number of miscellaneous objects for which space has been obtained
from the operating system, but that are not currently being used.
@item string-size
-Internal size of a string header, i.e.@: @code{sizeof (struct Lisp_String)}.
+Internal size of a string header, i.e., @code{sizeof (struct Lisp_String)}.
@item used-strings
The number of string headers in use.
@@ -373,7 +373,7 @@ This is used for convenience and equals to @code{sizeof (char)}.
The total size of all string data in bytes.
@item vector-size
-Internal size of a vector header, i.e.@: @code{sizeof (struct Lisp_Vector)}.
+Internal size of a vector header, i.e., @code{sizeof (struct Lisp_Vector)}.
@item used-vectors
The number of vector headers allocated from the vector blocks.
@@ -388,7 +388,7 @@ The number of slots in all used vectors.
The number of free slots in all vector blocks.
@item float-size
-Internal size of a float object, i.e.@: @code{sizeof (struct Lisp_Float)}.
+Internal size of a float object, i.e., @code{sizeof (struct Lisp_Float)}.
(Do not confuse it with the native platform @code{float} or @code{double}.)
@item used-floats
@@ -399,7 +399,7 @@ The number of floats for which space has been obtained from
the operating system, but that are not currently being used.
@item interval-size
-Internal size of an interval object, i.e.@: @code{sizeof (struct interval)}.
+Internal size of an interval object, i.e., @code{sizeof (struct interval)}.
@item used-intervals
The number of intervals in use.
@@ -409,12 +409,12 @@ The number of intervals for which space has been obtained from
the operating system, but that are not currently being used.
@item buffer-size
-Internal size of a buffer, i.e.@: @code{sizeof (struct buffer)}.
+Internal size of a buffer, i.e., @code{sizeof (struct buffer)}.
(Do not confuse with the value returned by @code{buffer-size} function.)
@item used-buffers
The number of buffer objects in use. This includes killed buffers
-invisible to users, i.e.@: all buffers in @code{all_buffers} list.
+invisible to users, i.e., all buffers in @code{all_buffers} list.
@item unit-size
The unit of heap space measurement, always equal to 1024 bytes.
@@ -571,7 +571,7 @@ Emacs session.
@cindex primitive function internals
@cindex writing Emacs primitives
- Lisp primitives are Lisp functions implemented in C. The details of
+ Lisp primitives are Lisp functions implemented in C@. The details of
interfacing the C function so that Lisp can call it are handled by a few
C macros. The only way to really understand how to write new C code is
to read the source, but we can explain some things here.
@@ -699,7 +699,7 @@ in the file @file{lisp.h}.) If the primitive has no upper limit on
the number of Lisp arguments, it must have exactly two C arguments:
the first is the number of Lisp arguments, and the second is the
address of a block containing their values. These have types
-@code{int} and @w{@code{Lisp_Object *}} respectively. Since
+@code{int} and @w{@code{Lisp_Object *}} respectively. Since
@code{Lisp_Object} can hold any Lisp object of any data type, you
can determine the actual data type only at run time; so if you want
a primitive to accept only a certain type of argument, you must check
@@ -858,7 +858,7 @@ DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p,
@end smallexample
Note that C code cannot call functions by name unless they are defined
-in C. The way to call a function written in Lisp is to use
+in C@. The way to call a function written in Lisp is to use
@code{Ffuncall}, which embodies the Lisp function @code{funcall}. Since
the Lisp function @code{funcall} accepts an unlimited number of
arguments, in C it takes two: the number of Lisp-level arguments, and a
@@ -886,7 +886,7 @@ knows about it.
@cindex object internals
Emacs Lisp provides a rich set of the data types. Some of them, like cons
-cells, integers and stirngs, are common to nearly all Lisp dialects. Some
+cells, integers and strings, are common to nearly all Lisp dialects. Some
others, like markers and buffers, are quite special and needed to provide
the basic support to write editor commands in Lisp. To implement such
a variety of object types and provide an efficient way to pass objects between
@@ -900,11 +900,11 @@ following basic data types: integer, symbol, string, cons cell, float,
vectorlike or miscellaneous object. Each of these data types has the
corresponding tag value. All tags are enumerated by @code{enum Lisp_Type}
and placed into a 3-bit bitfield of the @code{Lisp_Object}. The rest of the
-bits is the value itself. Integer values are immediate, i.e.@: directly
+bits is the value itself. Integer values are immediate, i.e., directly
represented by those @dfn{value bits}, and all other objects are represented
by the C pointers to a corresponding object allocated from the heap. Width
of the @code{Lisp_Object} is platform- and configuration-dependent: usually
-it's equal to the width of an underlying platform pointer (i.e.@: 32-bit on
+it's equal to the width of an underlying platform pointer (i.e., 32-bit on
a 32-bit machine and 64-bit on a 64-bit one), but also there is a special
configuration where @code{Lisp_Object} is 64-bit but all pointers are 32-bit.
The latter trick was designed to overcome the limited range of values for
@@ -962,7 +962,7 @@ process object is used to manage the subprocesses.
@cindex buffer internals
Two structures (see @file{buffer.h}) are used to represent buffers
-in C. The @code{buffer_text} structure contains fields describing the
+in C@. The @code{buffer_text} structure contains fields describing the
text of a buffer; the @code{buffer} structure holds other fields. In
the case of indirect buffers, two or more @code{buffer} structures
reference the same @code{buffer_text} structure.
@@ -1255,7 +1255,7 @@ These fields contain the window's leftmost child and its topmost child
respectively. @code{hchild} is used if the window is subdivided
horizontally by child windows, and @code{vchild} if it is subdivided
vertically. In a live window, only one of @code{hchild}, @code{vchild},
-and @code{buffer} (q.v.) is non-@code{nil}.
+and @code{buffer} (q.v.@:) is non-@code{nil}.
@item next
@itemx prev
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index 4770701b601..12463dac09c 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -102,7 +102,7 @@ for other purposes as well, such as writing editing commands.
@cindex Common Lisp
Dozens of Lisp implementations have been built over the years, each
with its own idiosyncrasies. Many of them were inspired by Maclisp,
-which was written in the 1960s at MIT's Project MAC. Eventually the
+which was written in the 1960s at MIT's Project MAC@. Eventually the
implementers of the descendants of Maclisp came together and developed a
standard for Lisp systems, called Common Lisp. In the meantime, Gerry
Sussman and Guy Steele at MIT developed a simplified but very powerful
@@ -380,12 +380,12 @@ More generally,
@end defun
By convention, any argument whose name contains the name of a type
-(e.g.@: @var{integer}, @var{integer1} or @var{buffer}) is expected to
+(e.g., @var{integer}, @var{integer1} or @var{buffer}) is expected to
be of that type. A plural of a type (such as @var{buffers}) often
means a list of objects of that type. An argument named @var{object}
may be of any type. (For a list of Emacs object types, @pxref{Lisp
Data Types}.) An argument with any other sort of name
-(e.g.@: @var{new-file}) is specific to the function; if the function
+(e.g., @var{new-file}) is specific to the function; if the function
has a documentation string, the type of the argument should be
described there (@pxref{Documentation}).
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index d01ecba4bed..44ab0f30a0e 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -75,8 +75,8 @@ the vector @code{[?\C-x ?l]} represents the key sequence @kbd{C-x l}.
For examples of key sequences written in string and vector
representations, @ref{Init Rebinding,,, emacs, The GNU Emacs Manual}.
-@defmac kbd keyseq-text
-This macro converts the text @var{keyseq-text} (a string constant)
+@defun kbd keyseq-text
+This function converts the text @var{keyseq-text} (a string constant)
into a key sequence (a string or vector constant). The contents of
@var{keyseq-text} should use the same syntax as in the buffer invoked
by the @kbd{C-x C-k @key{RET}} (@code{kmacro-edit-macro}) command; in
@@ -97,7 +97,7 @@ Manual}.
This macro is not meant for use with arguments that vary---only
with string constants.
-@end defmac
+@end defun
@node Keymap Basics
@section Keymap Basics
@@ -839,7 +839,7 @@ keymap.
@end defun
@code{current-local-map} returns a reference to the local keymap, not
-a copy of it; if you use @code{define-key} or other functions on it
+a copy of it; if you use @code{define-key} or other functions on it
you will alter local bindings.
@defun current-minor-mode-maps
@@ -1294,8 +1294,8 @@ numeric codes for the modifier bits don't appear in compiled files.
The functions below signal an error if @var{keymap} is not a keymap,
or if @var{key} is not a string or vector representing a key sequence.
You can use event types (symbols) as shorthand for events that are
-lists. The @code{kbd} macro (@pxref{Key Sequences}) is a convenient
-way to specify the key sequence.
+lists. The @code{kbd} function (@pxref{Key Sequences}) is a
+convenient way to specify the key sequence.
@defun define-key keymap key binding
This function sets the binding for @var{key} in @var{keymap}. (If
@@ -1530,7 +1530,7 @@ Instead, if an ordinary key binding specifies @code{kill-line}, it is
remapped to @code{my-kill-line}; if an ordinary binding specifies
@code{my-kill-line}, it is remapped to @code{my-other-kill-line}.
-To undo the remapping of a command, remap it to @code{nil}; e.g.
+To undo the remapping of a command, remap it to @code{nil}; e.g.,
@smallexample
(define-key my-mode-map [remap kill-line] nil)
@@ -1597,7 +1597,7 @@ alternative interpretations that are usually preferred. It applies
after @code{input-decode-map} and before @code{key-translation-map}.
Entries in @code{local-function-key-map} are ignored if they conflict
-with bindings made in the minor mode, local, or global keymaps. I.e.
+with bindings made in the minor mode, local, or global keymaps. I.e.,
the remapping only applies if the original key sequence would
otherwise not have any binding.
@@ -2029,7 +2029,7 @@ which is a string that appears as an element of the keymap.
the menu's commands. Emacs displays the overall prompt string as the
menu title in some cases, depending on the toolkit (if any) used for
displaying menus.@footnote{It is required for menus which do not use a
-toolkit, e.g.@: under MS-DOS.} Keyboard menus also display the
+toolkit, e.g., under MS-DOS.} Keyboard menus also display the
overall prompt string.
The easiest way to construct a keymap with a prompt string is to
@@ -2308,9 +2308,9 @@ the following word. Thus, @code{"--:singleLine"}, is equivalent to
and @code{:visible} for a menu separator:
@code{(menu-item @var{separator-type} nil . @var{item-property-list})}
-
+
For example:
-
+
@example
(menu-item "--" nil :visible (boundp 'foo))
@end example
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 40e8d08f72c..d2eea67da40 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -22,6 +22,7 @@ the whole list.
* Modifying Lists:: Storing new pieces into an existing list.
* Sets And Lists:: A list can represent a finite mathematical set.
* Association Lists:: A list can represent a finite relation or mapping.
+* Property Lists:: A list of paired elements.
@end menu
@node Cons Cells
@@ -1821,3 +1822,134 @@ often modifies the original list structure of @var{alist}.
compares the @sc{cdr} of each @var{alist} association instead of the
@sc{car}.
@end defun
+
+@node Property Lists
+@section Property Lists
+@cindex property list
+@cindex plist
+
+ A @dfn{property list} (@dfn{plist} for short) is a list of paired
+elements. Each of the pairs associates a property name (usually a
+symbol) with a property or value. Here is an example of a property
+list:
+
+@example
+(pine cones numbers (1 2 3) color "blue")
+@end example
+
+@noindent
+This property list associates @code{pine} with @code{cones},
+@code{numbers} with @code{(1 2 3)}, and @code{color} with
+@code{"blue"}. The property names and values can be any Lisp objects,
+but the names are usually symbols (as they are in this example).
+
+ Property lists are used in several contexts. For instance, the
+function @code{put-text-property} takes an argument which is a
+property list, specifying text properties and associated values which
+are to be applied to text in a string or buffer. @xref{Text
+Properties}.
+
+ Another prominent use of property lists is for storing symbol
+properties. Every symbol possesses a list of properties, used to
+record miscellaneous information about the symbol; these properties
+are stored in the form of a property list. @xref{Symbol Properties}.
+
+@menu
+* Plists and Alists:: Comparison of the advantages of property
+ lists and association lists.
+* Plist Access:: Accessing property lists stored elsewhere.
+@end menu
+
+@node Plists and Alists
+@subsection Property Lists and Association Lists
+@cindex plist vs. alist
+@cindex alist vs. plist
+
+@cindex property lists vs association lists
+ Association lists (@pxref{Association Lists}) are very similar to
+property lists. In contrast to association lists, the order of the
+pairs in the property list is not significant, since the property
+names must be distinct.
+
+ Property lists are better than association lists for attaching
+information to various Lisp function names or variables. If your
+program keeps all such information in one association list, it will
+typically need to search that entire list each time it checks for an
+association for a particular Lisp function name or variable, which
+could be slow. By contrast, if you keep the same information in the
+property lists of the function names or variables themselves, each
+search will scan only the length of one property list, which is
+usually short. This is why the documentation for a variable is
+recorded in a property named @code{variable-documentation}. The byte
+compiler likewise uses properties to record those functions needing
+special treatment.
+
+ However, association lists have their own advantages. Depending on
+your application, it may be faster to add an association to the front of
+an association list than to update a property. All properties for a
+symbol are stored in the same property list, so there is a possibility
+of a conflict between different uses of a property name. (For this
+reason, it is a good idea to choose property names that are probably
+unique, such as by beginning the property name with the program's usual
+name-prefix for variables and functions.) An association list may be
+used like a stack where associations are pushed on the front of the list
+and later discarded; this is not possible with a property list.
+
+@node Plist Access
+@subsection Property Lists Outside Symbols
+
+ The following functions can be used to manipulate property lists.
+They all compare property names using @code{eq}.
+
+@defun plist-get plist property
+This returns the value of the @var{property} property stored in the
+property list @var{plist}. It accepts a malformed @var{plist}
+argument. If @var{property} is not found in the @var{plist}, it
+returns @code{nil}. For example,
+
+@example
+(plist-get '(foo 4) 'foo)
+ @result{} 4
+(plist-get '(foo 4 bad) 'foo)
+ @result{} 4
+(plist-get '(foo 4 bad) 'bad)
+ @result{} nil
+(plist-get '(foo 4 bad) 'bar)
+ @result{} nil
+@end example
+@end defun
+
+@defun plist-put plist property value
+This stores @var{value} as the value of the @var{property} property in
+the property list @var{plist}. It may modify @var{plist} destructively,
+or it may construct a new list structure without altering the old. The
+function returns the modified property list, so you can store that back
+in the place where you got @var{plist}. For example,
+
+@example
+(setq my-plist '(bar t foo 4))
+ @result{} (bar t foo 4)
+(setq my-plist (plist-put my-plist 'foo 69))
+ @result{} (bar t foo 69)
+(setq my-plist (plist-put my-plist 'quux '(a)))
+ @result{} (bar t foo 69 quux (a))
+@end example
+@end defun
+
+@defun lax-plist-get plist property
+Like @code{plist-get} except that it compares properties
+using @code{equal} instead of @code{eq}.
+@end defun
+
+@defun lax-plist-put plist property value
+Like @code{plist-put} except that it compares properties
+using @code{equal} instead of @code{eq}.
+@end defun
+
+@defun plist-member plist property
+This returns non-@code{nil} if @var{plist} contains the given
+@var{property}. Unlike @code{plist-get}, this allows you to distinguish
+between a missing property and a property with the value @code{nil}.
+The value is actually the tail of @var{plist} whose @code{car} is
+@var{property}.
+@end defun
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 9ca5314d790..73c1ccb3d3e 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -533,7 +533,7 @@ autoloads for all files in the current directory.
The same magic comment can copy any kind of form into
@file{loaddefs.el}. The form following the magic comment is copied
verbatim, @emph{except} if it is one of the forms which the autoload
-facility handles specially (e.g.@: by conversion into an
+facility handles specially (e.g., by conversion into an
@code{autoload} call). The forms which are not copied verbatim are
the following:
@@ -849,10 +849,10 @@ was not provided}.
@defun featurep feature &optional subfeature
This function returns @code{t} if @var{feature} has been provided in
-the current Emacs session (i.e.@:, if @var{feature} is a member of
+the current Emacs session (i.e., if @var{feature} is a member of
@code{features}.) If @var{subfeature} is non-@code{nil}, then the
function returns @code{t} only if that subfeature is provided as well
-(i.e.@: if @var{subfeature} is a member of the @code{subfeature}
+(i.e., if @var{subfeature} is a member of the @code{subfeature}
property of the @var{feature} symbol.)
@end defun
@@ -1017,7 +1017,7 @@ example, @file{my_inst.elc} or @file{my_inst.elc.gz} in some directory
(eval-after-load "foo/bar/my_inst.elc" @dots{})
@end example
-@var{library} can also be a feature (i.e.@: a symbol), in which case
+@var{library} can also be a feature (i.e., a symbol), in which case
@var{form} is evaluated at the end of any file where
@code{(provide @var{library})} is called.
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index b0dee1bf215..2e1d5302861 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -35,7 +35,7 @@ instead. @xref{Inline Functions}.
@section A Simple Example of a Macro
Suppose we would like to define a Lisp construct to increment a
-variable value, much like the @code{++} operator in C. We would like to
+variable value, much like the @code{++} operator in C@. We would like to
write @code{(inc x)} and have the effect of @code{(setq x (1+ x))}.
Here's a macro definition that does the job:
diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi
index 9426dfd4a88..1937b4930d7 100644
--- a/doc/lispref/maps.texi
+++ b/doc/lispref/maps.texi
@@ -56,7 +56,7 @@ A full keymap for @kbd{ESC} (or @kbd{Meta}) commands.
A sparse keymap used for the @kbd{M-o} prefix key.
@item function-key-map
-The parent keymap of all @code{local-function-key-map} (q.v.) instances.
+The parent keymap of all @code{local-function-key-map} (q.v.@:) instances.
@ignore
@c Doesn't exist.
@@ -118,12 +118,12 @@ Some of them contain sub-menus. For example, the Edit menu contains
@code{menu-bar-search-menu}, etc. @xref{Menu Bar}.
@ignore
TODO list all submenus?
-There are probably too many, and it would not be useful to do so, eg:
+There are probably too many, and it would not be useful to do so, e.g.:
The Edit menu includes @code{yank-menu}, @code{menu-bar-search-menu},
@code{menu-bar-replace-menu}, @code{menu-bar-goto-menu},
@code{menu-bar-bookmark-map}, and @code{facemenu-menu}.
There is also mule-menu-keymap, set-coding-system-map,
-setup-language-environment-map, describe-language-environment-map,
+setup-language-environment-map, describe-language-environment-map,
menu-bar-epatch-menu, menu-bar-ediff-merge-menu, menu-bar-ediff-menu, etc.
@end ignore
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 033c10fbf7d..5dfe8402d26 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -772,7 +772,7 @@ too short). Both of those begin with the string @samp{foobar}.
This function returns a list of all possible completions of
@var{string}. The arguments to this function
@c (aside from @var{nospace})
-are the same as those of @code{try-completion}, and it
+are the same as those of @code{try-completion}, and it
uses @code{completion-regexp-list} in the same way that
@code{try-completion} does.
@@ -1599,7 +1599,7 @@ and @var{predicate} arguments have the same meanings as in
@code{try-completion} (@pxref{Basic Completion}), and the @var{point}
argument is the position of point within @var{string}. Each function
should return a non-@code{nil} value if it performed its job, and
-@code{nil} if it did not (e.g.@: if there is no way to complete
+@code{nil} if it did not (e.g., if there is no way to complete
@var{string} according to the completion style).
When the user calls a completion command like
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 55d838d111e..7057503e4c3 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -865,7 +865,7 @@ derived from any of the major modes given by the symbols @var{modes}.
Apart from Fundamental mode, there are three major modes that other
major modes commonly derive from: Text mode, Prog mode, and Special
-mode. While Text mode is useful in its own right (e.g. for editing
+mode. While Text mode is useful in its own right (e.g., for editing
files ending in @file{.txt}), Prog mode and Special mode exist mainly to
let other modes derive from them.
@@ -873,8 +873,8 @@ let other modes derive from them.
As far as possible, new major modes should be derived, either directly
or indirectly, from one of these three modes. One reason is that this
allows users to customize a single mode hook
-(e.g. @code{prog-mode-hook}) for an entire family of relevant modes
-(e.g. all programming language modes).
+(e.g., @code{prog-mode-hook}) for an entire family of relevant modes
+(e.g., all programming language modes).
@deffn Command text-mode
Text mode is a major mode for editing human languages. It defines the
@@ -981,7 +981,7 @@ very end of every properly-written major mode command.
@cindex Tabulated List mode
Tabulated List mode is a major mode for displaying tabulated data,
-i.e.@: data consisting of @dfn{entries}, each entry occupying one row of
+i.e., data consisting of @dfn{entries}, each entry occupying one row of
text with its contents divided into columns. Tabulated List mode
provides facilities for pretty-printing rows and columns, and sorting
the rows according to the values in each column. It is derived from
@@ -1002,7 +1002,7 @@ function @code{tabulated-list-init-header} to initialize the header
line.
The derived mode should also define a @dfn{listing command}. This,
-not the mode command, is what the user calls (e.g.@: @kbd{M-x
+not the mode command, is what the user calls (e.g., @kbd{M-x
list-processes}). The listing command should create or switch to a
buffer, turn on the derived mode, specify the tabulated data, and
finally call @code{tabulated-list-print} to populate the buffer.
@@ -1378,11 +1378,11 @@ the mode's features.
The mode command should accept one optional argument. If called
interactively with no prefix argument, it should toggle the mode
-(i.e.@: enable if it is disabled, and disable if it is enabled). If
+(i.e., enable if it is disabled, and disable if it is enabled). If
called interactively with a prefix argument, it should enable the mode
if the argument is positive and disable it otherwise.
-If the mode command is called from Lisp (i.e.@: non-interactively), it
+If the mode command is called from Lisp (i.e., non-interactively), it
should enable the mode if the argument is omitted or @code{nil}; it
should toggle the mode if the argument is the symbol @code{toggle};
otherwise it should treat the argument in the same way as for an
@@ -3085,7 +3085,7 @@ for comments.
@item font-lock-comment-delimiter-face
@vindex font-lock-comment-delimiter-face
-for comments delimiters, like @samp{/*} and @samp{*/} in C. On most
+for comments delimiters, like @samp{/*} and @samp{*/} in C@. On most
terminals, this inherits from @code{font-lock-comment-face}.
@item font-lock-type-face
@@ -3163,7 +3163,7 @@ outside of any comment, string, or sexp (@pxref{Position Parse}).
This variable is semi-obsolete; we usually recommend setting
@code{syntax-begin-function} instead. One of its uses is to tune the
-behavior of syntactic fontification, e.g.@: to ensure that different
+behavior of syntactic fontification, e.g., to ensure that different
kinds of strings or comments are highlighted differently.
The specified function is called with no arguments. It should leave
@@ -3539,7 +3539,7 @@ T1 = T2, or T1 > T2.
@item
A token can be an @code{opener} (something similar to an open-paren),
a @code{closer} (like a close-paren), or @code{neither} of the two
-(e.g. an infix operator, or an inner token like @code{"else"}).
+(e.g., an infix operator, or an inner token like @code{"else"}).
@end itemize
Precedence conflicts can be resolved via @var{resolvers}, which
@@ -3752,7 +3752,7 @@ Finally, in many cases some conflicts will remain despite all efforts to
restructure the grammar. Do not despair: while the parser cannot be
made more clever, you can make the lexer as smart as you want. So, the
solution is then to look at the tokens involved in the conflict and to
-split one of those tokens into 2 (or more) different tokens. E.g. if
+split one of those tokens into 2 (or more) different tokens. E.g., if
the grammar needs to distinguish between two incompatible uses of the
token @code{"begin"}, make the lexer return different tokens (say
@code{"begin-fun"} and @code{"begin-plain"}) depending on which kind of
@@ -3883,7 +3883,7 @@ Indent current token as a @emph{separator}.
By @emph{separator}, we mean here a token whose sole purpose is to
separate various elements within some enclosing syntactic construct, and
-which does not have any semantic significance in itself (i.e. it would
+which does not have any semantic significance in itself (i.e., it would
typically not exist as a node in an abstract syntax tree).
Such a token is expected to have an associative syntax and be closely
@@ -4039,4 +4039,3 @@ and it should return the restored buffer.
Here @var{desktop-buffer-misc} is the value returned by the function
optionally bound to @code{desktop-save-buffer}.
@end defvar
-
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index e384d40176e..5aba3e6e5d3 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -417,7 +417,7 @@ Corresponds to the Unicode properties @code{Decomposition_Type} and
may be a symbol representing a compatibility formatting tag, such as
@code{small}@footnote{The Unicode specification writes these tag names
inside @samp{<..>} brackets, but the tag names in Emacs do not include
-the brackets; e.g.@: Unicode specifies @samp{<small>} where Emacs uses
+the brackets; e.g., Unicode specifies @samp{<small>} where Emacs uses
@samp{small}. }; the other elements are characters that give the
compatibility decomposition sequence of this character. For
unassigned codepoints, the value is the character itself.
@@ -825,7 +825,7 @@ a complex translation table rather than a simple one-to-one mapping.
Each element of @var{alist} is of the form @code{(@var{from}
. @var{to})}, where @var{from} and @var{to} are either characters or
vectors specifying a sequence of characters. If @var{from} is a
-character, that character is translated to @var{to} (i.e.@: to a
+character, that character is translated to @var{to} (i.e., to a
character or a character sequence). If @var{from} is a vector of
characters, that sequence is translated to @var{to}. The returned
table has a translation table for reverse mapping in the first extra
@@ -1171,7 +1171,7 @@ positions.
@defun detect-coding-region start end &optional highest
This function chooses a plausible coding system for decoding the text
from @var{start} to @var{end}. This text should be a byte sequence,
-i.e.@: unibyte text or multibyte text with only @acronym{ASCII} and
+i.e., unibyte text or multibyte text with only @acronym{ASCII} and
eight-bit characters (@pxref{Explicit Encoding}).
Normally this function returns a list of coding systems that could
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index a086f2b3af1..66b1f081df4 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -193,7 +193,7 @@ distinguishable in the @acronym{IEEE} floating point standard.
infinity and negative infinity as floating point values. It also
provides for a class of values called NaN or ``not-a-number'';
numerical functions return such values in cases where there is no
-correct answer. For example, @code{(/ 0.0 0.0)} returns a NaN. (NaN
+correct answer. For example, @code{(/ 0.0 0.0)} returns a NaN@. (NaN
values can also carry a sign, but for practical purposes there's no
significant difference between different NaN values in Emacs Lisp.)
@@ -1216,7 +1216,7 @@ series of pseudo-random integers.
If @var{limit} is a positive integer, the value is chosen to be
nonnegative and less than @var{limit}. Otherwise, the value might be
-any integer representable in Lisp, i.e.@: an integer between
+any integer representable in Lisp, i.e., an integer between
@code{most-negative-fixnum} and @code{most-positive-fixnum}
(@pxref{Integer Basics}).
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 6933ffe492a..85d7a3f4600 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1027,7 +1027,7 @@ but the newline is ignored if escaped."
characters in Emacs strings: multibyte and unibyte (@pxref{Text
Representations}). Roughly speaking, unibyte strings store raw bytes,
while multibyte strings store human-readable text. Each character in
-a unibyte string is a byte, i.e.@: its value is between 0 and 255. By
+a unibyte string is a byte, i.e., its value is between 0 and 255. By
contrast, each character in a multibyte string may have a value
between 0 to 4194303 (@pxref{Character Type}). In both cases,
characters above 127 are non-@acronym{ASCII}.
@@ -1054,7 +1054,7 @@ character), Emacs automatically assumes that it is multibyte.
octal escape sequences (@samp{\@var{n}}) in string constants.
@strong{But beware:} If a string constant contains hexadecimal or
octal escape sequences, and these escape sequences all specify unibyte
-characters (i.e.@: less than 256), and there are no other literal
+characters (i.e., less than 256), and there are no other literal
non-@acronym{ASCII} characters or Unicode-style escape sequences in
the string, then Emacs automatically assumes that it is a unibyte
string. That is to say, it assumes that all non-@acronym{ASCII}
@@ -1310,7 +1310,7 @@ may still use the built-in definition. Therefore, @strong{we discourage
redefinition of primitive functions}.
The term @dfn{function} refers to all Emacs functions, whether written
-in Lisp or C. @xref{Function Type}, for information about the
+in Lisp or C@. @xref{Function Type}, for information about the
functions written in Lisp.
Primitive functions have no read syntax and print in hash notation
@@ -1934,7 +1934,7 @@ This function returns a symbol naming the primitive type of
Here we describe functions that test for equality between two
objects. Other functions test equality of contents between objects of
-specific types, e.g.@: strings. For these predicates, see the
+specific types, e.g., strings. For these predicates, see the
appropriate chapter describing the data type.
@defun eq object1 object2
@@ -1942,10 +1942,10 @@ This function returns @code{t} if @var{object1} and @var{object2} are
the same object, and @code{nil} otherwise.
If @var{object1} and @var{object2} are integers with the same value,
-they are considered to be the same object (i.e.@: @code{eq} returns
+they are considered to be the same object (i.e., @code{eq} returns
@code{t}). If @var{object1} and @var{object2} are symbols with the
same name, they are normally the same object---but see @ref{Creating
-Symbols} for exceptions. For other types (e.g.@: lists, vectors,
+Symbols} for exceptions. For other types (e.g., lists, vectors,
strings), two arguments with the same contents or elements are not
necessarily @code{eq} to each other: they are @code{eq} only if they
are the same object, meaning that a change in the contents of one will
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 7552aaccc53..e2161f51489 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -445,7 +445,7 @@ is found whose name is identical to the terminal's name, Emacs strips
from the terminal's name the last hyphen or underscore and everything that follows
it, and tries again. This process is repeated until Emacs finds a
matching library, or until there are no more hyphens or underscores in the name
-(i.e.@: there is no terminal-specific library). For example, if the
+(i.e., there is no terminal-specific library). For example, if the
terminal name is @samp{xterm-256color} and there is no
@file{term/xterm-256color.el} library, Emacs tries to load
@file{term/xterm.el}. If necessary, the terminal library can evaluate
@@ -638,7 +638,7 @@ input) can read them.
higher-level command @kbd{C-x C-c}
(@code{save-buffers-kill-terminal}). @xref{Exiting,,, emacs, The GNU
Emacs Manual}. It is also called automatically if Emacs receives a
-@code{SIGTERM} or @code{SIGHUP} operating system signal (e.g. when the
+@code{SIGTERM} or @code{SIGHUP} operating system signal (e.g., when the
controlling terminal is disconnected), or if it receives a
@code{SIGINT} signal while running in batch mode (@pxref{Batch Mode}).
@@ -646,7 +646,7 @@ controlling terminal is disconnected), or if it receives a
This normal hook is run by @code{kill-emacs}, before it kills Emacs.
Because @code{kill-emacs} can be called in situations where user
-interaction is impossible (e.g. when the terminal is disconnected),
+interaction is impossible (e.g., when the terminal is disconnected),
functions on this hook should not attempt to interact with the user.
If you want to interact with the user when Emacs is shutting down, use
@code{kill-emacs-query-functions}, described below.
@@ -871,7 +871,7 @@ Hewlett-Packard HPUX operating system.
Silicon Graphics Irix system.
@item ms-dos
-Microsoft's DOS. Emacs compiled with DJGPP for MS-DOS binds
+Microsoft's DOS@. Emacs compiled with DJGPP for MS-DOS binds
@code{system-type} to @code{ms-dos} even when you run it on MS-Windows.
@item usg-unix-v
@@ -879,7 +879,7 @@ AT&T Unix System V.
@item windows-nt
Microsoft Windows NT, 9X and later. The value of @code{system-type}
-is always @code{windows-nt}, e.g. even on Windows 7.
+is always @code{windows-nt}, e.g., even on Windows 7.
@end table
@@ -887,7 +887,7 @@ We do not wish to add new symbols to make finer distinctions unless it
is absolutely necessary! In fact, we hope to eliminate some of these
alternatives in the future. If you need to make a finer distinction
than @code{system-type} allows for, you can test
-@code{system-configuration}, e.g. against a regexp.
+@code{system-configuration}, e.g., against a regexp.
@end defvar
@defun system-name
@@ -1202,7 +1202,7 @@ specified time.
The return value of @code{current-time} represents time using four
integers, as do the timestamps in the return value of
@code{file-attributes} (@pxref{Definition of
-file-attributes}). In function arguments, e.g.@: the @var{time-value}
+file-attributes}). In function arguments, e.g., the @var{time-value}
argument to @code{current-time-string}, two-, three-, and four-integer
lists are accepted. You can convert times from the list
representation into standard human-readable strings using
@@ -1285,7 +1285,7 @@ vice versa.
Many 32-bit operating systems are limited to time values containing
32 bits of information; these systems typically handle only the times
-from 1901-12-13 20:45:52 UTC through 2038-01-19 03:14:07 UTC.
+from 1901-12-13 20:45:52 UTC through 2038-01-19 03:14:07 UTC@.
However, 64-bit and some 32-bit operating systems have larger time
values, and can represent times far in the past or future.
@@ -1534,7 +1534,7 @@ The integer number of minutes.
The integer number of seconds.
@item %z
Non-printing control flag. When it is used, other specifiers must be
-given in the order of decreasing size, i.e.@: years before days, hours
+given in the order of decreasing size, i.e., years before days, hours
before minutes, etc. Nothing will be produced in the result string to
the left of @samp{%z} until the first non-zero conversion is
encountered. For example, the default format used by
diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi
index 08677f1718b..172c1feb019 100644
--- a/doc/lispref/package.texi
+++ b/doc/lispref/package.texi
@@ -48,12 +48,12 @@ for creating them differs, as explained in the following sections.
@table @asis
@item Name
-A short word (e.g. @samp{auctex}). This is usually also the symbol
+A short word (e.g., @samp{auctex}). This is usually also the symbol
prefix used in the program (@pxref{Coding Conventions}).
@item Version
A version number, in a form that the function @code{version-to-list}
-understands (e.g. @samp{11.86}). Each release of a package should be
+understands (e.g., @samp{11.86}). Each release of a package should be
accompanied by an increase in the version number.
@item Brief description
@@ -80,7 +80,7 @@ if any dependency cannot be found, the package cannot be installed.
or via the Package Menu, creates a subdirectory of
@code{package-user-dir} named @file{@var{name}-@var{version}}, where
@var{name} is the package's name and @var{version} its version
-(e.g. @file{~/.emacs.d/elpa/auctex-11.86/}). We call this the
+(e.g., @file{~/.emacs.d/elpa/auctex-11.86/}). We call this the
package's @dfn{content directory}. It is where Emacs puts the
package's contents (the single Lisp file for a simple package, or the
files extracted from a multi-file package).
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index c4576e6456d..430c9af73e1 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -748,7 +748,7 @@ terminate it, and @samp{\} quotes @samp{^}, @samp{-} or @samp{\}.
Thus, @code{"a-zA-Z"} skips over all letters, stopping before the
first nonletter, and @code{"^a-zA-Z"} skips nonletters stopping before
the first letter. See @xref{Regular Expressions}. Character classes
-can also be used, e.g. @code{"[:alnum:]"}. See @pxref{Char Classes}.
+can also be used, e.g., @code{"[:alnum:]"}. See @pxref{Char Classes}.
If @var{limit} is supplied (it must be a number or a marker), it
specifies the maximum position in the buffer that point can be skipped
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 217f9f9eaee..524f05eb813 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -450,7 +450,7 @@ as it comes in. For details, see the description of
@code{call-process}, above. If @var{destination} is the integer 0,
@code{call-process-region} discards the output and returns @code{nil}
immediately, without waiting for the subprocess to finish (this only
-works if asynchronous subprocesses are supported; i.e. not on MS-DOS).
+works if asynchronous subprocesses are supported; i.e., not on MS-DOS).
The remaining arguments, @var{args}, are strings that specify command
line arguments for the program.
@@ -635,7 +635,7 @@ Depending on the implementation of the file handler, it might not be
possible to apply @code{process-filter} or @code{process-sentinel} to
the resulting process object. @xref{Filter Functions}, and @ref{Sentinels}.
-@c FIXME Can we find a better example (i.e. a more modern function
+@c FIXME Can we find a better example (i.e., a more modern function
@c that is actually documented).
Some file handlers may not support @code{start-file-process} (for
example the function @code{ange-ftp-hook-function}). In such cases,
@@ -1091,7 +1091,7 @@ and cannot be handled by the subprocess.
@defun quit-process &optional process current-group
This function sends the signal @code{SIGQUIT} to the process
@var{process}. This signal is the one sent by the ``quit
-@c FIXME? Never heard of C-b being used for this. In readline, eg
+@c FIXME? Never heard of C-b being used for this. In readline, e.g.,
@c bash, that is backward-word.
character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside
Emacs.
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index f165381a0f8..6c9b09d29bf 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -391,7 +391,7 @@ If @code{case-fold-search} is non-@code{nil}, @samp{[a-z]} also
matches upper-case letters. Note that a range like @samp{[a-z]} is
not affected by the locale's collation sequence, it always represents
a sequence in @acronym{ASCII} order.
-@c This wasn't obvious to me, since eg the grep manual "Character
+@c This wasn't obvious to me, since, e.g., the grep manual "Character
@c Classes and Bracket Expressions" specifically notes the opposite
@c behavior. But by experiment Emacs seems unaffected by LC_COLLATE
@c in this regard.
@@ -684,8 +684,8 @@ is the @dfn{explicitly numbered group} construct. Normal groups get
their number implicitly, based on their position, which can be
inconvenient. This construct allows you to force a particular group
number. There is no particular restriction on the numbering,
-e.g.@: you can have several groups with the same number in which case
-the last one to match (i.e.@: the rightmost match) will win.
+e.g., you can have several groups with the same number in which case
+the last one to match (i.e., the rightmost match) will win.
Implicitly numbered groups always get the smallest integer larger than
the one of any previous group.
@@ -933,7 +933,7 @@ for Font Lock mode@footnote{Note that @code{regexp-opt} does not
guarantee that its result is absolutely the most efficient form
possible. A hand-tuned regular expression can sometimes be slightly
more efficient, but is almost never worth the effort.}.
-@c See eg http://debbugs.gnu.org/2816
+@c E.g., see http://debbugs.gnu.org/2816
If the optional argument @var{paren} is non-@code{nil}, then the
returned regular expression is always enclosed by at least one
@@ -1207,7 +1207,7 @@ report the first match found.
full backtracking specified by the POSIX standard for regular expression
matching. They continue backtracking until they have tried all
possibilities and found all matches, so they can report the longest
-match, as required by POSIX. This is much slower, so use these
+match, as required by POSIX@. This is much slower, so use these
functions only when you really need the longest match.
The POSIX search and match functions do not properly support the
@@ -1379,7 +1379,7 @@ other function that might perform another search. Alternatively, you
may save and restore the match data (@pxref{Saving Match Data}) around
the call to functions that could perform another search. Or use the
functions that explicitly do not modify the match data;
-e.g. @code{string-match-p}.
+e.g., @code{string-match-p}.
@c This is an old comment and presumably there is no prospect of this
@c changing now. But still the advice stands.
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index e66f61d22d3..8bb1e9e5abf 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -542,10 +542,10 @@ the function @code{char-table-subtype}, described below.
@item
The subtype controls the number of @dfn{extra slots} in the
char-table. This number is specified by the subtype's
-@code{char-table-extra-slots} symbol property, which should be an
-integer between 0 and 10. If the subtype has no such symbol property,
-the char-table has no extra slots. @xref{Property Lists}, for
-information about symbol properties.
+@code{char-table-extra-slots} symbol property (@pxref{Symbol
+Properties}), whose value should be an integer between 0 and 10. If
+the subtype has no such symbol property, the char-table has no extra
+slots.
@end itemize
@cindex parent of char-table
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 5fd082678c5..f9fe787dfa9 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -694,7 +694,7 @@ The default is @code{t}, meaning display in the echo area.
@defvar print-quoted
If this is non-@code{nil}, that means to print quoted forms using
-abbreviated reader syntax, e.g.@: @code{(quote foo)} prints as
+abbreviated reader syntax, e.g., @code{(quote foo)} prints as
@code{'foo}, and @code{(function foo)} as @code{#'foo}.
@end defvar
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index 326c6cd4ab2..02cb83451c1 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -13,8 +13,8 @@ as variables and as function names; see @ref{Variables}, and
@ref{Functions}. For the precise read syntax for symbols, see
@ref{Symbol Type}.
- You can test whether an arbitrary Lisp object is a symbol
-with @code{symbolp}:
+ You can test whether an arbitrary Lisp object is a symbol with
+@code{symbolp}:
@defun symbolp object
This function returns @code{t} if @var{object} is a symbol, @code{nil}
@@ -26,7 +26,7 @@ otherwise.
and property lists.
* Definitions:: A definition says how a symbol will be used.
* Creating Symbols:: How symbols are kept unique.
-* Property Lists:: Each symbol has a property list
+* Symbol Properties:: Each symbol has a property list
for recording miscellaneous information.
@end menu
@@ -91,7 +91,7 @@ the contents of a symbol's function cell, use the function
The property list cell normally should hold a correctly formatted
property list. To get a symbol's property list, use the function
-@code{symbol-plist}. @xref{Property Lists}.
+@code{symbol-plist}. @xref{Symbol Properties}.
The function cell or the value cell may be @dfn{void}, which means
that the cell does not reference any object. (This is not the same
@@ -153,8 +153,8 @@ that cell can hold only one Lisp object at any given time.
@xref{Macros}.
As previously noted, Emacs Lisp allows the same symbol to be defined
-both as a variable (e.g.@: with @code{defvar}) and as a function or
-macro (e.g.@: with @code{defun}). Such definitions do not conflict.
+both as a variable (e.g., with @code{defvar}) and as a function or
+macro (e.g., with @code{defun}). Such definitions do not conflict.
These definition also act as guides for programming tools. For
example, the @kbd{C-h f} and @kbd{C-h v} commands create help buffers
@@ -376,109 +376,34 @@ If @code{unintern} does delete a symbol, it returns @code{t}. Otherwise
it returns @code{nil}.
@end defun
-@node Property Lists
-@section Property Lists
-@cindex property list
-@cindex plist
+@node Symbol Properties
+@section Symbol Properties
+@cindex symbol property
- A @dfn{property list} (@dfn{plist} for short) is a list of paired
-elements. Each of the pairs associates a property name (usually a
-symbol) with a property or value.
+ A symbol may possess any number of @dfn{symbol properties}, which
+can be used to record miscellaneous information about the symbol. For
+example, when a symbol has a @code{risky-local-variable} property with
+a non-@code{nil} value, that means the variable which the symbol names
+is a risky file-local variable (@pxref{File Local Variables}).
- Every symbol has a cell that stores a property list (@pxref{Symbol
-Components}). This property list is used to record information about
-the symbol, such as its variable documentation and the name of the
-file where it was defined.
-
- Property lists can also be used in other contexts. For instance,
-you can assign property lists to character positions in a string or
-buffer. @xref{Text Properties}.
-
- The property names and values in a property list can be any Lisp
-objects, but the names are usually symbols. Property list functions
-compare the property names using @code{eq}. Here is an example of a
-property list, found on the symbol @code{progn} when the compiler is
-loaded:
-
-@example
-(lisp-indent-function 0 byte-compile byte-compile-progn)
-@end example
-
-@noindent
-Here @code{lisp-indent-function} and @code{byte-compile} are property
-names, and the other two elements are the corresponding values.
+ Each symbol's properties and property values are stored in the
+symbol's property list cell (@pxref{Symbol Components}), in the form
+of a property list (@pxref{Property Lists}).
@menu
-* Plists and Alists:: Comparison of the advantages of property
- lists and association lists.
-* Symbol Plists:: Functions to access symbols' property lists.
-* Other Plists:: Accessing property lists stored elsewhere.
+* Symbol Plists:: Accessing symbol properties.
+* Standard Properties:: Standard meanings of symbol properties.
@end menu
-@node Plists and Alists
-@subsection Property Lists and Association Lists
-@cindex plist vs. alist
-@cindex alist vs. plist
-
-@cindex property lists vs association lists
- Association lists (@pxref{Association Lists}) are very similar to
-property lists. In contrast to association lists, the order of the
-pairs in the property list is not significant since the property names
-must be distinct.
-
- Property lists are better than association lists for attaching
-information to various Lisp function names or variables. If your
-program keeps all such information in one association list, it will
-typically need to search that entire list each time it checks for an
-association for a particular Lisp function name or variable, which
-could be slow. By contrast, if you keep the same information in the
-property lists of the function names or variables themselves, each
-search will scan only the length of one property list, which is
-usually short. This is why the documentation for a variable is
-recorded in a property named @code{variable-documentation}. The byte
-compiler likewise uses properties to record those functions needing
-special treatment.
-
- However, association lists have their own advantages. Depending on
-your application, it may be faster to add an association to the front of
-an association list than to update a property. All properties for a
-symbol are stored in the same property list, so there is a possibility
-of a conflict between different uses of a property name. (For this
-reason, it is a good idea to choose property names that are probably
-unique, such as by beginning the property name with the program's usual
-name-prefix for variables and functions.) An association list may be
-used like a stack where associations are pushed on the front of the list
-and later discarded; this is not possible with a property list.
-
@node Symbol Plists
-@subsection Property List Functions for Symbols
+@subsection Accessing Symbol Properties
-@defun symbol-plist symbol
-This function returns the property list of @var{symbol}.
-@end defun
-
-@defun setplist symbol plist
-This function sets @var{symbol}'s property list to @var{plist}.
-Normally, @var{plist} should be a well-formed property list, but this is
-not enforced. The return value is @var{plist}.
-
-@example
-(setplist 'foo '(a 1 b (2 3) c nil))
- @result{} (a 1 b (2 3) c nil)
-(symbol-plist 'foo)
- @result{} (a 1 b (2 3) c nil)
-@end example
-
-For symbols in special obarrays, which are not used for ordinary
-purposes, it may make sense to use the property list cell in a
-nonstandard fashion; in fact, the abbrev mechanism does so
-(@pxref{Abbrevs}).
-@end defun
+ The following functions can be used to access symbol properties.
@defun get symbol property
-This function finds the value of the property named @var{property} in
-@var{symbol}'s property list. If there is no such property, @code{nil}
-is returned. Thus, there is no distinction between a value of
+This function returns the value of the property named @var{property}
+in @var{symbol}'s property list. If there is no such property, it
+returns @code{nil}. Thus, there is no distinction between a value of
@code{nil} and the absence of the property.
The name @var{property} is compared with the existing property names
@@ -487,12 +412,6 @@ using @code{eq}, so any object is a legitimate property.
See @code{put} for an example.
@end defun
-@defun function-get symbol property
-This function is identical to @code{get}, except that if @var{symbol}
-is the name of a function alias, it looks in the property list of the
-symbol naming the actual function. @xref{Defining Functions}.
-@end defun
-
@defun put symbol property value
This function puts @var{value} onto @var{symbol}'s property list under
the property name @var{property}, replacing any previous property value.
@@ -510,69 +429,141 @@ The @code{put} function returns @var{value}.
@end example
@end defun
-@node Other Plists
-@subsection Property Lists Outside Symbols
-
- These functions are useful for manipulating property lists
-not stored in symbols:
-
-@defun plist-get plist property
-This returns the value of the @var{property} property stored in the
-property list @var{plist}. It accepts a malformed @var{plist}
-argument. If @var{property} is not found in the @var{plist}, it
-returns @code{nil}. For example,
-
-@example
-(plist-get '(foo 4) 'foo)
- @result{} 4
-(plist-get '(foo 4 bad) 'foo)
- @result{} 4
-(plist-get '(foo 4 bad) 'bad)
- @result{} nil
-(plist-get '(foo 4 bad) 'bar)
- @result{} nil
-@end example
+@defun symbol-plist symbol
+This function returns the property list of @var{symbol}.
@end defun
-@defun plist-put plist property value
-This stores @var{value} as the value of the @var{property} property in
-the property list @var{plist}. It may modify @var{plist} destructively,
-or it may construct a new list structure without altering the old. The
-function returns the modified property list, so you can store that back
-in the place where you got @var{plist}. For example,
+@defun setplist symbol plist
+This function sets @var{symbol}'s property list to @var{plist}.
+Normally, @var{plist} should be a well-formed property list, but this is
+not enforced. The return value is @var{plist}.
@example
-(setq my-plist '(bar t foo 4))
- @result{} (bar t foo 4)
-(setq my-plist (plist-put my-plist 'foo 69))
- @result{} (bar t foo 69)
-(setq my-plist (plist-put my-plist 'quux '(a)))
- @result{} (bar t foo 69 quux (a))
+(setplist 'foo '(a 1 b (2 3) c nil))
+ @result{} (a 1 b (2 3) c nil)
+(symbol-plist 'foo)
+ @result{} (a 1 b (2 3) c nil)
@end example
-@end defun
- You could define @code{put} in terms of @code{plist-put} as follows:
+For symbols in special obarrays, which are not used for ordinary
+purposes, it may make sense to use the property list cell in a
+nonstandard fashion; in fact, the abbrev mechanism does so
+(@pxref{Abbrevs}).
+
+You could define @code{put} in terms of @code{setplist} and
+@code{plist-put}, as follows:
@example
(defun put (symbol prop value)
(setplist symbol
(plist-put (symbol-plist symbol) prop value)))
@end example
-
-@defun lax-plist-get plist property
-Like @code{plist-get} except that it compares properties
-using @code{equal} instead of @code{eq}.
@end defun
-@defun lax-plist-put plist property value
-Like @code{plist-put} except that it compares properties
-using @code{equal} instead of @code{eq}.
+@defun function-get symbol property
+This function is identical to @code{get}, except that if @var{symbol}
+is the name of a function alias, it looks in the property list of the
+symbol naming the actual function. @xref{Defining Functions}.
@end defun
-@defun plist-member plist property
-This returns non-@code{nil} if @var{plist} contains the given
-@var{property}. Unlike @code{plist-get}, this allows you to distinguish
-between a missing property and a property with the value @code{nil}.
-The value is actually the tail of @var{plist} whose @code{car} is
-@var{property}.
-@end defun
+@node Standard Properties
+@subsection Standard Symbol Properties
+
+ Here, we list the symbol properties which are used for special
+purposes in Emacs. In the following table, whenever we say ``the
+named function'', that means the function whose name is the relevant
+symbol; similarly for ``the named variable'' etc.
+
+@table @code
+@item :advertised-binding
+This property value specifies the preferred key binding, when showing
+documentation, for the named function. @xref{Keys in Documentation}.
+
+@item char-table-extra-slots
+The value, if non-@code{nil}, specifies the number of extra slots in
+the named char-table type. @xref{Char-Tables}.
+
+@item customized-face
+@itemx face-defface-spec
+@itemx saved-face
+@itemx theme-face
+These properties are used to record a face's standard, saved,
+customized, and themed face specs. Do not set them directly; they are
+managed by @code{defface} and related functions. @xref{Defining
+Faces}.
+
+@item customized-value
+@itemx saved-value
+@itemx standard-value
+@itemx theme-value
+These properties are used to record a customizable variable's standard
+value, saved value, customized-but-unsaved value, and themed values.
+Do not set them directly; they are managed by @code{defcustom} and
+related functions. @xref{Variable Definitions}.
+
+@item disabled
+If the value is non-@code{nil}, the named function is disabled as a
+command. @xref{Disabling Commands}.
+
+@item face-documentation
+The value stores the documentation string of the named face. This is
+set automatically by @code{defface}. @xref{Defining Faces}.
+
+@item history-length
+The value, if non-@code{nil}, specifies the maximum minibuffer history
+length for the named history list variable. @xref{Minibuffer
+History}.
+
+@item interactive-form
+The value is an interactive form for the named function. Normally,
+you should not set this directly; use the @code{interactive} special
+form instead. @xref{Interactive Call}.
+
+@item menu-enable
+The value is an expression for determining whether the named menu item
+should be enabled in menus. @xref{Simple Menu Items}.
+
+@item mode-class
+If the value is @code{special}, the named major mode is ``special''.
+@xref{Major Mode Conventions}.
+
+@item permanent-local
+If the value is non-@code{nil}, the named variable is a buffer-local
+variable whose value should not be reset when changing major modes.
+@xref{Creating Buffer-Local}.
+
+@item permanent-local-hook
+If the value is non-@code{nil}, the named function should not be
+deleted from the local value of a hook variable when changing major
+modes. @xref{Setting Hooks}.
+
+@item pure
+This property is used internally to mark certain named functions for
+byte compiler optimization. Do not set it.
+
+@item risky-local-variable
+If the value is non-@code{nil}, the named variable is considered risky
+as a file-local variable. @xref{File Local Variables}.
+
+@item safe-function
+If the value is non-@code{nil}, the named function is considered
+generally safe for evaluation. @xref{Function Safety}.
+
+@item safe-local-eval-function
+If the value is non-@code{nil}, the named function is safe to call in
+file-local evaluation forms. @xref{File Local Variables}.
+
+@item safe-local-variable
+The value specifies a function for determining safe file-local values
+for the named variable. @xref{File Local Variables}.
+
+@item side-effect-free
+A non-@code{nil} value indicates that the named function is free of
+side-effects, for determining function safety (@pxref{Function
+Safety}) as well as for byte compiler optimizations. Do not set it.
+
+@item variable-documentation
+If non-@code{nil}, this specifies the named variable's documentation
+string. This is set automatically by @code{defvar} and related
+functions. @xref{Defining Faces}.
+@end table
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 624b5a92d6e..c773ca74d96 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -115,7 +115,7 @@ its arguments (@pxref{Syntax Table Functions}).
The first character in a syntax descriptor must be a syntax class
designator character. The second character, if present, specifies a
-matching character (e.g.@: in Lisp, the matching character for
+matching character (e.g., in Lisp, the matching character for
@samp{(} is @samp{)}); a space specifies that there is no matching
character. Then come characters specifying additional syntax
properties (@pxref{Syntax Flags}).
@@ -397,7 +397,7 @@ non-@code{nil}, the parent of the new syntax table is @var{table};
otherwise, the parent is the standard syntax table.
In the new syntax table, all characters are initially given the
-``inherit'' (@samp{@@}) syntax class, i.e.@: their syntax is inherited
+``inherit'' (@samp{@@}) syntax class, i.e., their syntax is inherited
from the parent table (@pxref{Syntax Class Table}).
@end defun
@@ -418,7 +418,7 @@ between @var{min} and @var{max}, inclusive.
The syntax is changed only for @var{table}, which defaults to the
current buffer's syntax table, and not in any other syntax table.
-The argument @var{syntax-descriptor} is a syntax descriptor, i.e.@: a
+The argument @var{syntax-descriptor} is a syntax descriptor, i.e., a
string whose first character is a syntax class designator and whose
second and subsequent characters optionally specify a matching
character and syntax flags. @xref{Syntax Descriptors}. An error is
@@ -628,7 +628,7 @@ expression prefix syntax class, and characters with the @samp{p} flag.
expressions. We will refer to such expressions as @dfn{sexps},
following the terminology of Lisp, even though these functions can act
on languages other than Lisp. Basically, a sexp is either a balanced
-parenthetical grouping, a string, or a ``symbol'' (i.e.@: a sequence
+parenthetical grouping, a string, or a ``symbol'' (i.e., a sequence
of characters whose syntax is either word constituent or symbol
constituent). However, characters in the expression prefix syntax
class (@pxref{Syntax Class Table}) are treated as part of the sexp if
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 57df02b74a0..b1ee2e699fe 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -224,7 +224,7 @@ through the filter functions specified by the wrapper hook
@code{filter-buffer-substring-functions}, and returns the result. The
obsolete variable @code{buffer-substring-filters} is also consulted.
If both of these variables are @code{nil}, the value is the unaltered
-text from the buffer, i.e.@: what @code{buffer-substring} would
+text from the buffer, i.e., what @code{buffer-substring} would
return.
If @var{delete} is non-@code{nil}, this function deletes the text
@@ -250,7 +250,7 @@ and returns a string. In both cases, the @var{start}, @var{end}, and
@code{filter-buffer-substring}.
The first hook function is passed a @var{fun} that is equivalent to
-the default operation of @code{filter-buffer-substring}, i.e. it
+the default operation of @code{filter-buffer-substring}, i.e., it
returns the buffer-substring between @var{start} and @var{end}
(processed by any @code{buffer-substring-filters}) and optionally
deletes the original text from the buffer. In most cases, the hook
@@ -3027,7 +3027,7 @@ specify a particular attribute for certain text.
A list of faces. This specifies a face which is an aggregate of the
attributes of each of the listed faces. Faces occurring earlier in
the list have higher priority. Each list element must have one of the
-two above forms (i.e.@: either a face name or a property list of face
+two above forms (i.e., either a face name or a property list of face
attributes).
@end itemize
@@ -3052,7 +3052,7 @@ between the character and where the mouse is have the same
@code{mouse-face} property value.
Emacs ignores all face attributes from the @code{mouse-face} property
-that alter the text size (e.g. @code{:height}, @code{:weight}, and
+that alter the text size (e.g., @code{:height}, @code{:weight}, and
@code{:slant}). Those attributes are always the same as for the
unhighlighted text.
@@ -4071,7 +4071,7 @@ converting to and from this code.
@deffn Command base64-encode-region beg end &optional no-line-break
This function converts the region from @var{beg} to @var{end} into base
64 code. It returns the length of the encoded text. An error is
-signaled if a character in the region is multibyte, i.e.@: in a
+signaled if a character in the region is multibyte, i.e., in a
multibyte buffer the region must contain only characters from the
charsets @code{ascii}, @code{eight-bit-control} and
@code{eight-bit-graphic}.
@@ -4119,7 +4119,7 @@ The decoding functions ignore newline characters in the encoded text.
Emacs has built-in support for computing @dfn{cryptographic hashes}.
A cryptographic hash, or @dfn{checksum}, is a digital ``fingerprint''
-of a piece of data (e.g.@: a block of text) which can be used to check
+of a piece of data (e.g., a block of text) which can be used to check
that you have an unaltered copy of that data.
@cindex message digest
@@ -4127,7 +4127,7 @@ that you have an unaltered copy of that data.
SHA-1, SHA-2, SHA-224, SHA-256, SHA-384 and SHA-512. MD5 is the
oldest of these algorithms, and is commonly used in @dfn{message
digests} to check the integrity of messages transmitted over a
-network. MD5 is not ``collision resistant'' (i.e.@: it is possible to
+network. MD5 is not ``collision resistant'' (i.e., it is possible to
deliberately design different pieces of data which have the same MD5
hash), so you should not used it for anything security-related. A
similar theoretical weakness also exists in SHA-1. Therefore, for
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index bba416d5614..d54d91b238a 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -758,7 +758,7 @@ describe the most important commands in your major mode, and then use
@item
For consistency, phrase the verb in the first sentence of a function's
documentation string as an imperative---for instance, use ``Return the
-cons of A and B.'' in preference to ``Returns the cons of A and B@.''
+cons of A and B.@:'' in preference to ``Returns the cons of A and B@.''
Usually it looks good to do likewise for the rest of the first
paragraph. Subsequent paragraphs usually look better if each sentence
is indicative and has a proper subject.
@@ -785,7 +785,7 @@ defun (@pxref{Defuns,, Defuns, emacs, The GNU Emacs Manual}).
@item
Write documentation strings in the active voice, not the passive, and in
the present tense, not the future. For instance, use ``Return a list
-containing A and B.'' instead of ``A list containing A and B will be
+containing A and B.@:'' instead of ``A list containing A and B will be
returned.''
@item
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index dfde3c45c04..4103c30f663 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -171,7 +171,7 @@ binding is no longer in effect, the previously shadowed value (or lack
of one) comes back.
@cindex current binding
- A variable can have more than one local binding at a time (e.g.@: if
+ A variable can have more than one local binding at a time (e.g., if
there are nested @code{let} forms that bind the variable). The
@dfn{current binding} is the local binding that is actually in effect.
It determines the value returned by evaluating the variable symbol,
@@ -302,7 +302,7 @@ If a variable is void, trying to evaluate the variable signals a
@code{void-variable} error rather than a value.
Under lexical binding rules, the value cell only holds the
-variable's global value, i.e.@: the value outside of any lexical
+variable's global value, i.e., the value outside of any lexical
binding construct. When a variable is lexically bound, the local value
is determined by the lexical environment; the variable may have a
local value if its symbol's value cell is unassigned.
@@ -416,7 +416,7 @@ explicitly in the @code{defvar} form. The variable is marked as
If @var{symbol} is void and @var{value} is specified, @code{defvar}
evaluates @var{value} and sets @var{symbol} to the result. But if
-@var{symbol} already has a value (i.e.@: it is not void), @var{value}
+@var{symbol} already has a value (i.e., it is not void), @var{value}
is not even evaluated, and @var{symbol}'s value remains unchanged. If
@var{value} is omitted, the value of @var{symbol} is not changed in
any case.
@@ -841,9 +841,9 @@ The function @code{getx} refers to @code{x}. This is a ``free''
reference, in the sense that there is no binding for @code{x} within
that @code{defun} construct itself. When we call @code{getx} from
within a @code{let} form in which @code{x} is (dynamically) bound, it
-retrieves the local value of @code{x} (i.e.@: 1). But when we call
+retrieves the local value of @code{x} (i.e., 1). But when we call
@code{getx} outside the @code{let} form, it retrieves the global value
-of @code{x} (i.e.@: -99).
+of @code{x} (i.e., -99).
Here is another example, which illustrates setting a dynamically
bound variable using @code{setq}:
@@ -888,7 +888,7 @@ technique:
@itemize @bullet
@item
If a variable has no global definition, use it as a local variable
-only within a binding construct, e.g.@: the body of the @code{let}
+only within a binding construct, e.g., the body of the @code{let}
form where the variable was bound, or the body of the function for an
argument variable. If this convention is followed consistently
throughout a program, the value of the variable will not affect, nor
@@ -905,7 +905,7 @@ to avoid name conflicts (@pxref{Coding Conventions}).
Then you can bind the variable anywhere in a program, knowing reliably
what the effect will be. Wherever you encounter the variable, it will
-be easy to refer back to the definition, e.g.@: via the @kbd{C-h v}
+be easy to refer back to the definition, e.g., via the @kbd{C-h v}
command (provided the variable definition has been loaded into Emacs).
@xref{Name Help,,, emacs, The GNU Emacs Manual}.
@@ -1015,7 +1015,7 @@ binding of @code{x} in that lexical environment.
Note that functions like @code{symbol-value}, @code{boundp}, and
@code{set} only retrieve or modify a variable's dynamic binding
-(i.e.@: the contents of its symbol's value cell). Also, the code in
+(i.e., the contents of its symbol's value cell). Also, the code in
the body of a @code{defun} or @code{defmacro} cannot refer to
surrounding lexical variables.
@@ -1059,7 +1059,7 @@ lexical binding.
@defun special-variable-p SYMBOL
This function returns non-@code{nil} if @var{symbol} is a special
-variable (i.e.@: it has a @code{defvar}, @code{defcustom}, or
+variable (i.e., it has a @code{defvar}, @code{defcustom}, or
@code{defconst} variable definition). Otherwise, the return value is
@code{nil}.
@end defun
@@ -1423,7 +1423,6 @@ disappear after doing its job and will not interfere with the
subsequent major mode. @xref{Hooks}.
@end defvar
-@c Emacs 19 feature
@cindex permanent local variable
A buffer-local variable is @dfn{permanent} if the variable name (a
symbol) has a @code{permanent-local} property that is non-@code{nil}.
@@ -1933,7 +1932,7 @@ foo
Ordinary Lisp variables can be assigned any value that is a valid
Lisp object. However, certain Lisp variables are not defined in Lisp,
-but in C. Most of these variables are defined in the C code using
+but in C@. Most of these variables are defined in the C code using
@code{DEFVAR_LISP}. Like variables defined in Lisp, these can take on
any value. However, some variables are defined using
@code{DEFVAR_INT} or @code{DEFVAR_BOOL}. @xref{Defining Lisp
@@ -2024,7 +2023,7 @@ car elt symbol-plist
caar get symbol-value
cadr gethash
cdr nth
-cdar nthcdr
+cdar nthcdr
@end smallexample
@item
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 7622fcfd233..7a705353a1e 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -100,7 +100,7 @@ the window tree are @dfn{internal windows}, which are not live.
@cindex valid windows
A @dfn{valid window} is one that is either live or internal. A valid
-window can be @dfn{deleted}, i.e. removed from its frame
+window can be @dfn{deleted}, i.e., removed from its frame
(@pxref{Deleting Windows}); then it is no longer valid, but the Lisp
object representing it might be still referenced from other Lisp
objects. A deleted window may be made valid again by restoring a saved
@@ -203,7 +203,7 @@ windows that share the same parent are called @dfn{siblings}.
This function returns the parent window of @var{window}. If
@var{window} is omitted or @code{nil}, it defaults to the selected
window. The return value is @code{nil} if @var{window} has no parent
-(i.e. it is a minibuffer window or the root window of its frame).
+(i.e., it is a minibuffer window or the root window of its frame).
@end defun
Each internal window always has at least two child windows. If this
@@ -456,14 +456,14 @@ window has any adjacent windows.
@defun window-full-height-p &optional window
This function returns non-@code{nil} if @var{window} has no other
-window above or below it in its frame, i.e. its total height equals
+window above or below it in its frame, i.e., its total height equals
the total height of the root window on that frame. If @var{window} is
omitted or @code{nil}, it defaults to the selected window.
@end defun
@defun window-full-width-p &optional window
This function returns non-@code{nil} if @var{window} has no other
-window to the left or right in its frame, i.e. its total width equals
+window to the left or right in its frame, i.e., its total width equals
that of the root window on that frame. If @var{window} is omitted or
@code{nil}, it defaults to the selected window.
@end defun
@@ -635,7 +635,7 @@ cannot be moved as far as specified by @var{delta}, this function
moves it as far as possible but does not signal a error.
This function tries to resize windows adjacent to the edge that is
-moved. If this is not possible for some reason (e.g. if that adjacent
+moved. If this is not possible for some reason (e.g., if that adjacent
window is fixed-size), it may resize other windows.
@end defun
@@ -872,7 +872,7 @@ Configurations}).
This function removes @var{window} from display and returns
@code{nil}. If @var{window} is omitted or @code{nil}, it defaults to
the selected window. If deleting the window would leave no more
-windows in the window tree (e.g. if it is the only live window in the
+windows in the window tree (e.g., if it is the only live window in the
frame), an error is signaled.
By default, the space taken up by @var{window} is given to one of its
@@ -1859,7 +1859,7 @@ Action Functions}.
@defvar display-buffer-overriding-action
The value of this variable should be a display action, which is
treated with the highest priority by @code{display-buffer}. The
-default value is empty, i.e. @code{(nil . nil)}.
+default value is empty, i.e., @code{(nil . nil)}.
@end defvar
@defopt display-buffer-alist
@@ -1992,7 +1992,7 @@ of the window; its return value is ignored.
@end itemize
This function can fail if no window splitting can be performed for some
-reason (e.g. if the selected frame has an @code{unsplittable} frame
+reason (e.g., if the selected frame has an @code{unsplittable} frame
parameter; @pxref{Buffer Parameters}).
@end defun
@@ -3101,7 +3101,7 @@ left edge.
the horizontal scrolling of a window as necessary to ensure that point
is always visible. However, you can still set the horizontal
scrolling value explicitly. The value you specify serves as a lower
-bound for automatic scrolling, i.e. automatic scrolling will not
+bound for automatic scrolling, i.e., automatic scrolling will not
scroll a window to a column less than the specified one.
@deffn Command scroll-left &optional count set-minimum
@@ -3218,7 +3218,7 @@ this case Emacs itself draws the tool bar). In both cases, the X and
Y coordinates increase rightward and downward respectively.
Except where noted, X and Y coordinates are reported in integer
-character units, i.e. numbers of lines and columns respectively. On a
+character units, i.e., numbers of lines and columns respectively. On a
graphical display, each ``line'' and ``column'' corresponds to the
height and width of a default character specified by the frame's
default font.
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index cc54cd254b5..afd6b7b6051 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -1,3 +1,7 @@
+2012-12-02 Kevin Ryde <user42@zip.com.au>
+
+ * etags.1: Mention effect of --declarations in Lisp.
+
2012-06-03 Glenn Morris <rgm@gnu.org>
* rcs-checkin.1: Remove.
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index a1291829665..3f22364a194 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -88,6 +88,7 @@ Only \fBctags\fP accepts this option.
.B \-\-declarations
In C and derived languages, create tags for function declarations,
and create tags for extern variables unless \-\-no\-globals is used.
+In Lisp, create tags for (defvar foo) declarations.
.TP
.B \-D, \-\-no\-defines
Do not create tag entries for C preprocessor constant definitions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 8a067b5c100..9de75390937 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,22 @@
+2012-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doclicense.texi, gpl.texi: Update to latest version from FSF.
+ These are just minor editorial changes.
+
+2012-12-04 Michael Albinus <michael.albinus@gmx.de>
+
+ * tramp.texi (History): Mention ADB.
+ (Inline methods): Add `adb' method.
+
+2012-12-03 Michael Albinus <michael.albinus@gmx.de>
+
+ * tramp.texi (Top, Obtaining Tramp): Replace CVS by Git.
+ (External methods): Fix typo.
+
+2012-12-03 Glenn Morris <rgm@gnu.org>
+
+ * rcirc.texi (Notices): Fix typo.
+
2012-11-25 Bill Wohler <wohler@newt.com>
Release MH-E manual version 8.4.
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 3a1e4155e97..d18a802d600 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -89,7 +89,7 @@ password (known as the secret).
Similarly, the auth-source library supports multiple storage backend,
currently either the classic ``netrc'' backend, examples of which you
-can see later in this document, or the Secret Service API. This is
+can see later in this document, or the Secret Service API@. This is
done with EIEIO-based backends and you can write your own if you want.
@node Help for users
@@ -213,7 +213,7 @@ machine yourmachine.com:80 port http login testuser password testpass
@end example
This will match any realm and authentication method (basic or digest)
-over HTTP. HTTPS is set up similarly. If you want finer controls,
+over HTTP@. HTTPS is set up similarly. If you want finer controls,
explore the url-auth source code and variables.
For Tramp authentication, use:
@@ -238,7 +238,7 @@ KDE Wallet (these are GNOME and KDE packages respectively and should
be available on most modern GNU/Linux systems).
The auth-source library uses the @file{secrets.el} library to connect
-through the Secret Service API. You can also use that library in
+through the Secret Service API@. You can also use that library in
other packages, it's not exclusive to auth-source.
@defvar secrets-enabled
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 9d7a51233ff..aa99b41f204 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -130,7 +130,7 @@ recognize this situation by a prompt ending in @key{RET}, @kbd{C-g}
or @kbd{C-h}. This
means that entering an empty string will simply assume that you are finished.
Typing quit on the other hand terminates the loop but also the rest of the
-skeleton, e.g. an ``else'' clause is skipped. Only a syntactically necessary
+skeleton, e.g., an ``else'' clause is skipped. Only a syntactically necessary
termination still gets inserted.
@@ -147,8 +147,8 @@ reindent the wrapped code for you.
Skeleton commands take an optional numeric prefix argument
(@pxref{(emacs)Arguments}). This is interpreted in two different ways depending
-on whether the prefix is positive, i.e. forwards oriented or negative,
-i.e. backwards oriented.
+on whether the prefix is positive, i.e., forwards oriented, or negative,
+i.e., backwards oriented.
A positive prefix means to wrap the skeleton around that many
following words. This is accomplished by putting the words there where
@@ -178,7 +178,7 @@ ignored.
If, on the other hand, you marked in alphabetical order the points [] A C B,
and call a skeleton command with @kbd{M-- 3}, you will wrap the text from
-point to A, then the text from A to C and finally the text from C to B. This
+point to A, then the text from A to C and finally the text from C to B@. This
is done because the regions overlap and Emacs would be helplessly lost if it
tried to follow the order in which you marked these points.
@@ -241,10 +241,10 @@ put at these places. Point is left at first @code{_} where nothing is wrapped.
Indent line according to major mode. When following element is @code{_}, and
there is a interregion that will be wrapped here, indent that interregion.
@item @code{&}
-Logical and. Iff preceding element moved point, i.e. usually inserted
+Logical and. Iff preceding element moved point, i.e., usually inserted
something, do following element.
@item @code{|}
-Logical xor. Iff preceding element didn't move point, i.e. usually inserted
+Logical xor. Iff preceding element didn't move point, i.e., usually inserted
nothing, do following element.
@item @code{-@var{number}}
Delete preceding number characters. Depends on value of
@@ -376,7 +376,7 @@ be inserted.
can simply insert some text, indeed, it can be skeleton command (@pxref{Using
Skeletons}). It can be a lambda function which will for example conditionally
call another function. Or it can even reset the mode for the buffer. If you
-want to perform several such actions in order, you use a vector, i.e. several
+want to perform several such actions in order, you use a vector, i.e., several
of the above elements between square brackets (@samp{[@r{@dots{}}]}).
By default C and C++ headers insert a definition of a symbol derived from
@@ -402,12 +402,12 @@ define-auto-insert}.
@vindex auto-insert
The variable @code{auto-insert} says what to do when @code{auto-insert} is
-called non-interactively, e.g. when a newly found file is empty (see above):
+called non-interactively, e.g., when a newly found file is empty (see above):
@table @asis
@item @code{nil}
Do nothing.
@item @code{t}
-Insert something if possible, i.e. there is a matching entry in
+Insert something if possible, i.e., there is a matching entry in
@code{auto-insert-alist}.
@item other
Insert something if possible, but mark as unmodified.
@@ -446,7 +446,7 @@ buffer has a comment syntax (@pxref{(emacs)Comments}), this is inserted as a com
@kbd{M-x copyright-update} looks for a copyright notice in the first
@code{copyright-limit} characters of the buffer and updates it when necessary.
The current year (variable @code{copyright-current-year}) is added to the
-existing ones, in the same format as the preceding year, i.e. 1994, '94 or 94.
+existing ones, in the same format as the preceding year, i.e., 1994, '94 or 94.
If a dash-separated year list up to last year is found, that is extended to
current year, else the year is added separated by a comma. Or it replaces
them when this is called with a prefix argument. If a header referring to a
@@ -492,7 +492,7 @@ intended for resource files, which are only meant to be read in.
@vindex executable-insert
The variable @code{executable-insert} says what to do when
-@code{executable-set-magic} is called non-interactively, e.g. when file has no
+@code{executable-set-magic} is called non-interactively, e.g., when file has no
or the wrong magic number:
@table @asis
@item @code{nil}
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 7e60f4b190f..5ed5212ad25 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -293,7 +293,7 @@ experience with GNU Emacs in order to get the most out of Calc,
this manual ought to be readable even if you don't know or use Emacs
regularly.
-This manual is divided into three major parts:@: the ``Getting
+This manual is divided into three major parts: the ``Getting
Started'' chapter you are reading now, the Calc tutorial, and the Calc
reference manual.
@c [when-split]
@@ -10518,7 +10518,7 @@ Integers, fractions, and floats are various ways of describing real
numbers. HMS forms also for many purposes act as real numbers. These
types can be combined to form complex numbers, modulo forms, error forms,
or interval forms. (But these last four types cannot be combined
-arbitrarily:@: error forms may not contain modulo forms, for example.)
+arbitrarily: error forms may not contain modulo forms, for example.)
Finally, all these types of numbers may be combined into vectors,
matrices, or algebraic formulas.
@@ -13472,7 +13472,7 @@ Year: ``ad '' or blank. (Note trailing space.)
@item AAA
Year: ``AD '' or blank.
@item aaaa
-Year: ``a.d.'' or blank.
+Year: ``a.d.@:'' or blank.
@item AAAA
Year: ``A.D.'' or blank.
@item bb
@@ -13484,7 +13484,7 @@ Year: `` bc'' or blank. (Note leading space.)
@item BBB
Year: `` BC'' or blank.
@item bbbb
-Year: ``b.c.'' or blank.
+Year: ``b.c.@:'' or blank.
@item BBBB
Year: ``B.C.'' or blank.
@item M
@@ -13548,7 +13548,7 @@ AM/PM: ``am'' or ``pm''.
@item PP
AM/PM: ``AM'' or ``PM''.
@item pppp
-AM/PM: ``a.m.'' or ``p.m.''.
+AM/PM: ``a.m.@:'' or ``p.m.''.
@item PPPP
AM/PM: ``A.M.'' or ``P.M.''.
@item m
@@ -16997,7 +16997,7 @@ this formula will return the Wednesday one week in the future. An
exercise for the reader is to modify this formula to yield the same day
if the input is already a Wednesday. Another interesting exercise is
to preserve the time-of-day portion of the input (@code{newweek} resets
-the time to midnight; hint:@: how can @code{newweek} be defined in terms
+the time to midnight; hint: how can @code{newweek} be defined in terms
of the @code{weekday} function?).
@ignore
@@ -34455,7 +34455,7 @@ traversed in this way, it is compared with the original formula (from
before the call to @code{normalize}) and, if it has changed,
the entire procedure is repeated (starting with @code{normalize})
until no further changes occur. Usually only two iterations are
-needed:@: one to simplify the formula, and another to verify that no
+needed: one to simplify the formula, and another to verify that no
further simplifications were possible.
@end defun
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 8c574be8f2a..76d9eb42883 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -88,7 +88,7 @@ the second with them pointing to the XEmacs manuals.
@c The following four macros generate the filenames and titles of the
@c main (X)Emacs manual and the Elisp/Lispref manual. Leave the
@c Texinfo variable `XEMACS' unset to generate a GNU Emacs version, set it
-@c to generate an XEmacs version, e.g. with
+@c to generate an XEmacs version, e.g., with
@c "makeinfo -DXEMACS cc-mode.texi".
@ifset XEMACS
@macro emacsman
@@ -646,13 +646,13 @@ you're better off getting an external program like GNU @code{indent},
which will rearrange brace location, amongst other things.
Preprocessor directives are handled as syntactic whitespace from other
-code, i.e. they can be interspersed anywhere without affecting the
+code, i.e., they can be interspersed anywhere without affecting the
indentation of the surrounding code, just like comments.
The code inside macro definitions is, by default, still analyzed
syntactically so that you get relative indentation there just as you'd
get if the same code was outside a macro. However, since there is no
-hint about the syntactic context, i.e. whether the macro expands to an
+hint about the syntactic context, i.e., whether the macro expands to an
expression, to some statements, or perhaps to whole functions, the
syntactic recognition can be wrong. @ccmode{} manages to figure it
out correctly most of the time, though.
@@ -773,7 +773,7 @@ Indents the entire top-level function, class or macro definition
encompassing point. It leaves point unchanged. This function can't be
used to reindent a nested brace construct, such as a nested class or
function, or a Java method. The top-level construct being reindented
-must be complete, i.e. it must have both a beginning brace and an ending
+must be complete, i.e., it must have both a beginning brace and an ending
brace.
@item @kbd{C-M-\} (@code{indent-region})
@@ -1021,7 +1021,7 @@ preprocessor statements.
A popular programming style, especially for object-oriented languages
such as C++ is to write symbols in a mixed case format, where the
first letter of each word is capitalized, and not separated by
-underscores. E.g. @samp{SymbolsWithMixedCaseAndNoUnderlines}.
+underscores. E.g., @samp{SymbolsWithMixedCaseAndNoUnderlines}.
These commands move backward or forward to the beginning of the next
capitalized word. With prefix argument @var{n}, move @var{n} times.
@@ -1043,7 +1043,7 @@ Movement}. They might be removed from a future release of @ccmode{}.
Since there's a lot of normal text in comments and string literals,
@ccmode{} provides features to edit these like in text mode. The goal
-is to do it seamlessly, i.e. you can use auto fill mode, sentence and
+is to do it seamlessly, i.e., you can use auto fill mode, sentence and
paragraph movement, paragraph filling, adaptive filling etc. wherever
there's a piece of normal text without having to think much about it.
@ccmode{} keeps the indentation, fixes suitable comment line prefixes,
@@ -1059,7 +1059,7 @@ set this up for you, so you probably won't have to bother.
@cindex paragraph filling
Line breaks are by default handled (almost) the same regardless of
whether they are made by auto fill mode (@pxref{Auto
-Fill,,,@emacsman{}, @emacsmantitle{}}), by paragraph filling (e.g. with
+Fill,,,@emacsman{}, @emacsmantitle{}}), by paragraph filling (e.g., with
@kbd{M-q}), or explicitly with @kbd{M-j} or similar methods. In
string literals, the new line gets the same indentation as the
previous nonempty line.@footnote{You can change this default by
@@ -1120,7 +1120,7 @@ this function. @xref{Sample .emacs File}.
@findex c-context-open-line
@findex context-open-line (c-)
This is to @kbd{C-o} (@kbd{M-x open-line}) as
-@code{c-context-line-break} is to @kbd{RET}. I.e. it works just like
+@code{c-context-line-break} is to @kbd{RET}. I.e., it works just like
@code{c-context-line-break} but leaves the point before the inserted
line break.
@end table
@@ -1144,7 +1144,7 @@ editing chaotically formatted code. It can also be disconcerting,
especially for users who are new to @ccmode{}.
@item auto-newline mode
This automatically inserts newlines where you'd probably want to type
-them yourself, e.g. after typing @samp{@}}s. Its action is suppressed
+them yourself, e.g., after typing @samp{@}}s. Its action is suppressed
when electric mode is disabled.
@item hungry-delete mode
This lets you delete a contiguous block of whitespace with a single
@@ -1155,7 +1155,7 @@ last statement.
This mode makes basic word movement commands like @kbd{M-f}
(@code{forward-word}) and @kbd{M-b} (@code{backward-word}) treat the
parts of sillycapsed symbols as different words.
-E.g. @samp{NSGraphicsContext} is treated as three words @samp{NS},
+E.g., @samp{NSGraphicsContext} is treated as three words @samp{NS},
@samp{Graphics}, and @samp{Context}.
@item syntactic-indentation mode
When this is enabled (which it normally is), indentation commands such
@@ -1288,7 +1288,7 @@ A star (bound to @code{c-electric-star}) or a slash
(@code{c-electric-slash}) causes reindentation when you type it as the
second component of a C style block comment opener (@samp{/*}) or a
C++ line comment opener (@samp{//}) respectively, but only if the
-comment opener is the first thing on the line (i.e. there's only
+comment opener is the first thing on the line (i.e., there's only
whitespace before it).
Additionally, you can configure @ccmode{} so that typing a slash at
@@ -1426,7 +1426,7 @@ Auto-newline only triggers when the following conditions hold:
@itemize @bullet
@item
Auto-newline minor mode is enabled, as evidenced by the indicator
-@samp{a} after the mode name on the modeline (e.g. @samp{C/a} or
+@samp{a} after the mode name on the modeline (e.g., @samp{C/a} or
@samp{C/la}).
@item
@@ -1446,7 +1446,7 @@ definition. These constructs are also known as @dfn{syntactic
whitespace} since they are usually ignored when scanning C code.}.
@item
-No numeric argument was supplied to the command (i.e. it was typed as
+No numeric argument was supplied to the command (i.e., it was typed as
normal, with no @kbd{C-u} prefix).
@end itemize
@@ -1631,7 +1631,7 @@ trouble with this in GNU Emacs.
@cindex nomenclature
@cindex subword
In spite of the GNU Coding Standards, it is popular to name a symbol
-by mixing uppercase and lowercase letters, e.g. @samp{GtkWidget},
+by mixing uppercase and lowercase letters, e.g., @samp{GtkWidget},
@samp{EmacsFrameClass}, or @samp{NSGraphicsContext}. Here we call
these mixed case symbols @dfn{nomenclatures}. Also, each capitalized
(or completely uppercase) part of a nomenclature is called a
@@ -1819,7 +1819,7 @@ Lock,,, emacs, GNU Emacs Manual}, for ways to enable font locking in
@strong{Please note:} The font locking in AWK mode is currently not
integrated with the rest of @ccmode{}. Only the last section of this
-chapter, @ref{AWK Mode Font Locking}, applies to AWK. The other
+chapter, @ref{AWK Mode Font Locking}, applies to AWK@. The other
sections apply to the other languages.
@menu
@@ -1912,7 +1912,7 @@ additional regexps to match those you use:
For each language there's a variable @code{*-font-lock-extra-types},
where @samp{*} stands for the language in question. It contains a list
of regexps that matches identifiers that should be recognized as types,
-e.g. @samp{\\sw+_t} to recognize all identifiers ending with @samp{_t}
+e.g., @samp{\\sw+_t} to recognize all identifiers ending with @samp{_t}
as is customary in C code. Each regexp should not match more than a
single identifier.
@@ -2009,7 +2009,7 @@ labels.
@vindex font-lock-builtin-face
@vindex font-lock-reference-face
Preprocessor directives get @code{font-lock-preprocessor-face} if it
-exists (i.e. XEmacs). In Emacs they get @code{font-lock-builtin-face}
+exists (i.e., XEmacs). In Emacs they get @code{font-lock-builtin-face}
or @code{font-lock-reference-face}, for lack of a closer equivalent.
@item
@@ -2035,14 +2035,14 @@ since those aren't syntactic errors in themselves.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
There are various tools to supply documentation in the source as
-specially structured comments, e.g. the standard Javadoc tool in Java.
+specially structured comments, e.g., the standard Javadoc tool in Java.
@ccmode{} provides an extensible mechanism to fontify such comments and
the special markup inside them.
@defopt c-doc-comment-style
@vindex doc-comment-style (c-)
This is a style variable that specifies which documentation comment
-style to recognize, e.g. @code{javadoc} for Javadoc comments.
+style to recognize, e.g., @code{javadoc} for Javadoc comments.
The value may also be a list of styles, in which case all of them are
recognized simultaneously (presumably with markup cues that don't
@@ -2060,7 +2060,7 @@ The default value for @code{c-doc-comment-style} is
Note that @ccmode{} uses this variable to set other variables that
handle fontification etc. That's done at mode initialization or when
you switch to a style which sets this variable. Thus, if you change it
-in some other way, e.g. interactively in a CC Mode buffer, you will need
+in some other way, e.g., interactively in a CC Mode buffer, you will need
to do @kbd{M-x java-mode} (or whatever mode you're currently using) to
reinitialize.
@@ -2351,7 +2351,7 @@ have it enabled by default by placing the following in your
@cindex mode hooks
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@c The node name is "CC Hooks" rather than "Hooks" because of a bug in
-@c some older versions of Info, e.g. the info.el in GNU Emacs 21.3.
+@c some older versions of Info, e.g., the info.el in GNU Emacs 21.3.
@c If you go to "Config Basics" and hit <CR> on the xref to "CC
@c Hooks" the function Info-follow-reference searches for "*Note: CC
@c Hooks" from the beginning of the page. If this node were instead
@@ -2429,7 +2429,7 @@ file.
The variables that @ccmode{}'s style system control are called
@dfn{style variables}. Note that style variables are ordinary Lisp
variables, which the style system initializes; you can change their
-values at any time (e.g. in a hook function). The style system can
+values at any time (e.g., in a hook function). The style system can
also set other variables, to some extent. @xref{Styles}.
@dfn{Style variables} are handled specially in several ways:
@@ -2921,9 +2921,9 @@ visit the file, @ccmode{} will automatically institute these offsets
using @code{c-set-offset}.
@end defvar
-Note that file style settings (i.e. @code{c-file-style}) are applied
+Note that file style settings (i.e., @code{c-file-style}) are applied
before file offset settings
-(i.e. @code{c-file-offsets})@footnote{Also, if either of these are set
+(i.e., @code{c-file-offsets})@footnote{Also, if either of these are set
in a file's local variable section, all the style variable values are
made local to that buffer, even if
@code{c-style-variables-are-local-p} is @code{nil}. Since this
@@ -3001,7 +3001,7 @@ subsequent lines of C style block comments like
@noindent
with zero or more stars at the beginning of every line. If you change
this variable, please make sure it still matches the comment starter
-(i.e. @code{//}) of line comments @emph{and} the line prefix inside
+(i.e., @code{//}) of line comments @emph{and} the line prefix inside
block comments.
@findex c-setup-paragraph-variables
@@ -3024,7 +3024,7 @@ the line prefix from the other lines in the comment.
@ccmode{} uses adaptive fill mode (@pxref{Adaptive Fill,,, emacs, GNU
Emacs Manual}) to make Emacs correctly keep the line prefix when
filling paragraphs. That also makes Emacs preserve the text
-indentation @emph{inside} the comment line prefix. E.g. in the
+indentation @emph{inside} the comment line prefix. E.g., in the
following comment, both paragraphs will be filled with the left
margins of the texts kept intact:
@@ -3055,7 +3055,7 @@ by default). A patch for that is available from
@c 2005/11/22: The above is still believed to be the case.
which handles things like bulleted lists nicely. There's a convenience
function @code{c-setup-filladapt} that tunes the relevant variables in
-Filladapt for use in @ccmode{}. Call it from a mode hook, e.g. with
+Filladapt for use in @ccmode{}. Call it from a mode hook, e.g., with
something like this in your @file{.emacs}:
@example
@@ -3081,7 +3081,7 @@ then as the comment prefix. It defaults to @samp{*
@code{c-block-comment-prefix} typically gets overridden by the default
style @code{gnu}, which sets it to blank. You can see the line
splitting effect described here by setting a different style,
-e.g. @code{k&r} @xref{Choosing a Style}.}, which makes a comment
+e.g., @code{k&r} @xref{Choosing a Style}.}, which makes a comment
@example
/* Got O(n^2) here, which is a Bad Thing. */
@@ -3108,7 +3108,7 @@ most common comment styles, see @ref{Line-Up Functions}.
@defopt c-ignore-auto-fill
@vindex ignore-auto-fill (c-)
When auto fill mode is enabled, @ccmode{} can selectively ignore it
-depending on the context the line break would occur in, e.g. to never
+depending on the context the line break would occur in, e.g., to never
break a line automatically inside a string literal. This variable
takes a list of symbols for the different contexts where auto-filling
never should occur:
@@ -3123,7 +3123,7 @@ Inside a C++ style line comment.
@item cpp
Inside a preprocessor directive.
@item code
-Anywhere else, i.e. in normal code.
+Anywhere else, i.e., in normal code.
@end table
By default, @code{c-ignore-auto-fill} is set to @code{(string cpp
@@ -3151,7 +3151,7 @@ Note that @ccmode{} sets @code{comment-multi-line} to @code{t} at
startup. The reason is that @kbd{M-j} could otherwise produce sequences
of single line block comments for texts that should logically be treated
as one comment, and the rest of the paragraph handling code
-(e.g. @kbd{M-q} and @kbd{M-a}) can't cope with that, which would lead to
+(e.g., @kbd{M-q} and @kbd{M-a}) can't cope with that, which would lead to
inconsistent behavior.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3380,12 +3380,12 @@ giving a syntactic symbol an @dfn{action function} in
@cindex customization, brace hanging
An action function is called with two arguments: the syntactic symbol
-for the brace (e.g. @code{substatement-open}), and the buffer position
+for the brace (e.g., @code{substatement-open}), and the buffer position
where the brace has been inserted. Point is undefined on entry to an
-action function, but the function must preserve it (e.g. by using
+action function, but the function must preserve it (e.g., by using
@code{save-excursion}). The return value should be a list containing
some combination of @code{before} and @code{after}, including neither
-of them (i.e. @code{nil}).
+of them (i.e., @code{nil}).
@defvar c-syntactic-context
@vindex syntactic-context (c-)
@@ -3566,7 +3566,7 @@ statements. In addition to
@ccmode{} also comes with the criteria function
@code{c-semi&comma-no-newlines-for-oneline-inliners}, which suppresses
newlines after semicolons inside one-line inline method definitions
-(e.g. in C++ or Java).
+(e.g., in C++ or Java).
@end defun
@@ -3580,7 +3580,7 @@ newlines after semicolons inside one-line inline method definitions
@dfn{Clean-ups} are mechanisms which remove (or exceptionally, add)
whitespace in specific circumstances and are complementary to colon
and brace hanging. You enable a clean-up by adding its symbol into
-@code{c-cleanup-list}, e.g. like this:
+@code{c-cleanup-list}, e.g., like this:
@example
(add-to-list 'c-cleanup-list 'space-before-funcall)
@@ -3588,7 +3588,7 @@ and brace hanging. You enable a clean-up by adding its symbol into
On the surface, it would seem that clean-ups overlap the functionality
provided by the @code{c-hanging-*-alist} variables. Clean-ups,
-however, are used to adjust code ``after-the-fact'', i.e. to adjust
+however, are used to adjust code ``after-the-fact'', i.e., to adjust
the whitespace in constructs later than when they were typed.
Most of the clean-ups remove automatically inserted newlines, and are
@@ -3799,7 +3799,7 @@ Auto-newline minor mode are enabled:
@item space-before-funcall
Insert a space between the function name and the opening parenthesis
of a function call. This produces function calls in the style
-mandated by the GNU coding standards, e.g. @samp{signal@w{ }(SIGINT,
+mandated by the GNU coding standards, e.g., @samp{signal@w{ }(SIGINT,
SIG_IGN)} and @samp{abort@w{ }()}. Clean up occurs when the opening
parenthesis is typed. This clean-up should never be active in AWK
Mode, since such a space is syntactically invalid for user defined
@@ -3810,13 +3810,13 @@ Clean up any space between the function name and the opening parenthesis
of a function call that has no arguments. This is typically used
together with @code{space-before-funcall} if you prefer the GNU function
call style for functions with arguments but think it looks ugly when
-it's only an empty parenthesis pair. I.e. you will get @samp{signal
+it's only an empty parenthesis pair. I.e., you will get @samp{signal
(SIGINT, SIG_IGN)}, but @samp{abort()}. Clean up occurs when the
closing parenthesis is typed.
@item comment-close-slash
When inside a block comment, terminate the comment when you type a slash
-at the beginning of a line (i.e. immediately after the comment prefix).
+at the beginning of a line (i.e., immediately after the comment prefix).
This clean-up removes whitespace preceding the slash and if needed,
inserts a star to complete the token @samp{*/}. Type @kbd{C-q /} in this
situation if you just want a literal @samp{/} inserted.
@@ -3910,7 +3910,7 @@ brief and typical example:
@noindent
The first thing inside each syntactic element is always a
@dfn{syntactic symbol}. It describes the kind of construct that was
-recognized, e.g. @code{statement}, @code{substatement},
+recognized, e.g., @code{statement}, @code{substatement},
@code{class-open}, @code{class-close}, etc. @xref{Syntactic Symbols},
for a complete list of currently recognized syntactic symbols and
their semantics. The remaining entries are various data associated
@@ -3951,7 +3951,7 @@ position(s).
@end table
Running this command on line 4 of this example, we'd see in the echo
-area@footnote{With a universal argument (i.e. @kbd{C-u C-c C-s}) the
+area@footnote{With a universal argument (i.e., @kbd{C-u C-c C-s}) the
analysis is inserted into the buffer as a comment on the current
line.}:
@@ -4219,7 +4219,7 @@ Method Symbols}.
Lines continuing an Objective-C method call. @ref{Objective-C Method
Symbols}.
@item extern-lang-open
-Brace that opens an @code{extern} block (e.g. @code{extern "C"
+Brace that opens an @code{extern} block (e.g., @code{extern "C"
@{...@}}). @ref{External Scope Symbols}.
@item extern-lang-close
Brace that closes an @code{extern} block. @ref{External Scope
@@ -4246,10 +4246,10 @@ Analogous to the above, but for CORBA CIDL @code{composition} blocks.
C++ template argument list continuations. @ref{Class Symbols}.
@item inlambda
Analogous to @code{inclass} syntactic symbol, but used inside lambda
-(i.e. anonymous) functions. Only used in Pike mode. @ref{Statement
+(i.e., anonymous) functions. Only used in Pike mode. @ref{Statement
Block Symbols}.
@item lambda-intro-cont
-Lines continuing the header of a lambda function, i.e. between the
+Lines continuing the header of a lambda function, i.e., between the
@code{lambda} keyword and the function body. Only used in Pike mode.
@ref{Statement Block Symbols}.
@item inexpr-statement
@@ -4311,7 +4311,7 @@ top-level construct introduction so it has the syntax
the brace that opens a top-level function definition. Line 9 is the
corresponding
@code{defun-close} since it contains the brace that closes the top-level
-function definition. Line 4 is a @code{defun-block-intro}, i.e. it is
+function definition. Line 4 is a @code{defun-block-intro}, i.e., it is
the first line of a brace-block, enclosed in a
top-level function definition.
@@ -4360,7 +4360,7 @@ structs, and unions are essentially equivalent syntactically (and are
very similar semantically), so replacing the @code{class} keyword in the
example above with @code{struct} or @code{union} would still result in a
syntax of @code{class-open} for line 4 @footnote{This is the case even
-for C and Objective-C. For consistency, structs in all supported
+for C and Objective-C@. For consistency, structs in all supported
languages are syntactically equivalent to classes. Note however that
the keyword @code{class} is meaningless in C and Objective-C.}.
Similarly, line 18 is assigned @code{class-close} syntax.
@@ -4668,7 +4668,7 @@ where @code{inextern-lang} is a modifier similar in purpose to
There are various other top level blocks like @code{extern}, and they
are all treated in the same way except that the symbols are named after
-the keyword that introduces the block. E.g. C++ namespace blocks get
+the keyword that introduces the block. E.g., C++ namespace blocks get
the three symbols @code{namespace-open}, @code{namespace-close} and
@code{innamespace}. The currently recognized top level blocks are:
@@ -4857,9 +4857,9 @@ Line 17 is assigned @code{stream-op} syntax.
@ssindex cpp-define-intro
@ssindex cpp-macro-cont
Multiline preprocessor macro definitions are normally handled just like
-other code, i.e. the lines inside them are indented according to the
+other code, i.e., the lines inside them are indented according to the
syntactic analysis of the preceding lines inside the macro. The first
-line inside a macro definition (i.e. the line after the starting line of
+line inside a macro definition (i.e., the line after the starting line of
the cpp directive itself) gets @code{cpp-define-intro}. In this example:
@example
@@ -4875,7 +4875,7 @@ line 1 is given the syntactic symbol @code{cpp-macro}. The first line
of a cpp directive is always given that symbol. Line 2 is given
@code{cpp-define-intro}, so that you can give the macro body as a whole
some extra indentation. Lines 3 through 5 are then analyzed as normal
-code, i.e. @code{substatement} on lines 3 and 4, and @code{else-clause}
+code, i.e., @code{substatement} on lines 3 and 4, and @code{else-clause}
on line 5.
The syntactic analysis inside macros can be turned off with
@@ -5025,7 +5025,7 @@ handled like this too.
@ssindex knr-argdecl-intro
@ssindex knr-argdecl
Two other syntactic symbols can appear in old style, non-prototyped C
-code @footnote{a.k.a. K&R C, or Kernighan & Ritchie C}:
+code @footnote{a.k.a.@: K&R C, or Kernighan & Ritchie C}:
@example
1: int add_three_integers(a, b, c)
@@ -5039,7 +5039,7 @@ code @footnote{a.k.a. K&R C, or Kernighan & Ritchie C}:
Here, line 2 is the first line in an argument declaration list and so is
given the @code{knr-argdecl-intro} syntactic symbol. Subsequent lines
-(i.e. lines 3 and 4 in this example), are given @code{knr-argdecl}
+(i.e., lines 3 and 4 in this example), are given @code{knr-argdecl}
syntax.
@@ -5703,7 +5703,7 @@ expressions.
@defun c-lineup-inexpr-block
@findex lineup-inexpr-block (c-)
This can be used with the in-expression block symbols to indent the
-whole block to the column where the construct is started. E.g. for Java
+whole block to the column where the construct is started. E.g., for Java
anonymous classes, this lines up the class under the @samp{new} keyword,
and in Pike it lines up the lambda function body under the @samp{lambda}
keyword. Returns @code{nil} if the block isn't part of such a
@@ -5793,7 +5793,7 @@ In the first case the indentation is kept unchanged, in the second
@code{inline-close}, @code{block-close}, @code{brace-list-close},
@code{brace-list-intro}, @code{statement-block-intro},
@code{arglist-intro}, @code{arglist-cont-nonempty},
-@code{arglist-close}, and all @code{in*} symbols, e.g. @code{inclass}
+@code{arglist-close}, and all @code{in*} symbols, e.g., @code{inclass}
and @code{inextern-lang}.
@end defun
@@ -6053,7 +6053,7 @@ if ( x < 10
Since this function doesn't do anything for lines without an infix
operator you typically want to use it together with some other lineup
-settings, e.g. as follows (the @code{arglist-close} setting is just a
+settings, e.g., as follows (the @code{arglist-close} setting is just a
suggestion to get a consistent style):
@example
@@ -6087,7 +6087,7 @@ operator too, try to align it with the first one.
@defun c-lineup-math
@findex lineup-math (c-)
Like @code{c-lineup-assignments} but indent with @code{c-basic-offset}
-if no assignment operator was found on the first line. I.e. this
+if no assignment operator was found on the first line. I.e., this
function is the same as specifying a list @code{(c-lineup-assignments
+)}. It's provided for compatibility with old configurations.
@@ -6123,7 +6123,7 @@ expressions.
@defun c-lineup-streamop
@findex lineup-streamop (c-)
-Line up C++ stream operators (i.e. @samp{<<} and @samp{>>}).
+Line up C++ stream operators (i.e., @samp{<<} and @samp{>>}).
@workswith @code{stream-op}.
@end defun
@@ -6204,7 +6204,7 @@ to handle most of the common comment styles. Some examples:
@end example
The style variable @code{c-comment-prefix-regexp} is used to recognize
-the comment line prefix, e.g. the @samp{*} that usually starts every
+the comment line prefix, e.g., the @samp{*} that usually starts every
line inside a comment.
@workswith The @code{c} syntactic symbol.
@@ -6315,7 +6315,7 @@ int dribble() @{
If @code{c-syntactic-indentation-in-macros} is non-@code{nil}, the
function returns the relative indentation to the macro start line to
-allow accumulation with other offsets. E.g. in the following cases,
+allow accumulation with other offsets. E.g., in the following cases,
@code{cpp-define-intro} is combined with the
@code{statement-block-intro} that comes from the @samp{do @{} that hangs
on the @samp{#define} line:
@@ -6390,7 +6390,7 @@ The @samp{x} line is aligned to the text after the @samp{:} on the
This is done only in an @samp{asm} or @samp{__asm__} block, and only to
those lines mentioned. Anywhere else @code{nil} is returned. The usual
arrangement is to have this routine as an extra feature at the start of
-arglist lineups, e.g.
+arglist lineups, e.g.:
@example
(c-lineup-gcc-asm-reg c-lineup-arglist)
@@ -6486,7 +6486,7 @@ another line-up function. Full details of these are in
Line-up functions must not move point or change the content of the
buffer (except temporarily). They are however allowed to do
-@dfn{hidden buffer changes}, i.e. setting text properties for caching
+@dfn{hidden buffer changes}, i.e., setting text properties for caching
purposes etc. Buffer undo recording is disabled while they run.
The syntactic element passed as the parameter to a line-up function is
@@ -6514,7 +6514,7 @@ your setup for this by using the access functions
@vindex syntactic-element (c-)
@vindex c-syntactic-context
@vindex syntactic-context (c-)
-Some syntactic symbols, e.g. @code{arglist-cont-nonempty}, have more
+Some syntactic symbols, e.g., @code{arglist-cont-nonempty}, have more
info in the syntactic element - typically other positions that can be
interesting besides the anchor position. That info can't be accessed
through the passed argument, which is a cons cell. Instead, you can
@@ -6600,9 +6600,9 @@ Line-Up}).
When the indentation engine calls this hook, the variable
@code{c-syntactic-context} is bound to the current syntactic context
-(i.e. what you would get by typing @kbd{C-c C-s} on the source line.
+(i.e., what you would get by typing @kbd{C-c C-s} on the source line.
@xref{Custom Braces}.). Note that you should not change point or mark
-inside a @code{c-special-indent-hook} function, i.e. you'll probably
+inside a @code{c-special-indent-hook} function, i.e., you'll probably
want to wrap your function in a @code{save-excursion}@footnote{The
numerical value returned by @code{point} will change if you change the
indentation of the line within a @code{save-excursion} form, but point
@@ -6673,11 +6673,11 @@ customized with these variables:
These variables control the alignment columns for line continuation
backslashes in multiline macros. They are used by the functions that
automatically insert or align such backslashes,
-e.g. @code{c-backslash-region} and @code{c-context-line-break}.
+e.g., @code{c-backslash-region} and @code{c-context-line-break}.
@code{c-backslash-column} specifies the minimum column for the
backslashes. If any line in the macro goes past this column, then the
-next tab stop (i.e. next multiple of @code{tab-width}) in that line is
+next tab stop (i.e., next multiple of @code{tab-width}) in that line is
used as the alignment column for all the backslashes, so that they
remain in a single column. However, if any lines go past
@code{c-backslash-max-column} then the backslashes in the rest of the
@@ -6693,7 +6693,7 @@ the automatic alignment of backslashes, use
@vindex auto-align-backslashes (c-)
Align automatically inserted line continuation backslashes if
non-@code{nil}. When line continuation backslashes are inserted
-automatically for line breaks in multiline macros, e.g. by
+automatically for line breaks in multiline macros, e.g., by
@code{c-context-line-break}, they are aligned with the other
backslashes in the same macro if this flag is set.
@@ -6878,9 +6878,9 @@ pathological code can cause @ccmode{} to perform fairly badly. This
section gives some insight in how @ccmode{} operates, how that interacts
with some coding styles, and what you can use to improve performance.
-The overall goal is that @ccmode{} shouldn't be overly slow (i.e. take
+The overall goal is that @ccmode{} shouldn't be overly slow (i.e., take
more than a fraction of a second) in any interactive operation.
-I.e. it's tuned to limit the maximum response time in single operations,
+I.e., it's tuned to limit the maximum response time in single operations,
which is sometimes at the expense of batch-like operations like
reindenting whole blocks. If you find that @ccmode{} gradually gets
slower and slower in certain situations, perhaps as the file grows in
@@ -6898,7 +6898,7 @@ gets.
@findex beginning-of-defun
In earlier versions of @ccmode{}, we used to recommend putting the
-opening brace of a top-level construct@footnote{E.g. a function in C,
+opening brace of a top-level construct@footnote{E.g., a function in C,
or outermost class definition in C++ or Java.} into the leftmost
column. Earlier still, this used to be a rigid Emacs constraint, as
embodied in the @code{beginning-of-defun} function. @ccmode now
@@ -6940,7 +6940,7 @@ XEmacs users can set the variable
tells @ccmode{} to use XEmacs-specific built-in functions which, in some
circumstances, can locate the top-most opening brace much more quickly than
@code{beginning-of-defun}. Preliminary testing has shown that for
-styles where these braces are hung (e.g. most JDK-derived Java styles),
+styles where these braces are hung (e.g., most JDK-derived Java styles),
this hack can improve performance of the core syntax parsing routines
from 3 to 60 times. However, for styles which @emph{do} conform to
Emacs's recommended style of putting top-level braces in column zero,
@@ -6951,7 +6951,7 @@ in Emacs since the necessary built-in functions don't exist (in Emacs
22.1 as of this writing in February 2007).
Text properties are used to speed up skipping over syntactic whitespace,
-i.e. comments and preprocessor directives. Indenting a line after a
+i.e., comments and preprocessor directives. Indenting a line after a
huge macro definition can be slow the first time, but after that the
text properties are in place and it should be fast (even after you've
edited other parts of the file and then moved back).
@@ -6959,7 +6959,7 @@ edited other parts of the file and then moved back).
Font locking can be a CPU hog, especially the font locking done on
decoration level 3 which tries to be very accurate. Note that that
level is designed to be used with a font lock support mode that only
-fontifies the text that's actually shown, i.e. Lazy Lock or Just-in-time
+fontifies the text that's actually shown, i.e., Lazy Lock or Just-in-time
Lock mode, so make sure you use one of them. Fontification of a whole
buffer with some thousand lines can often take over a minute. That is
a known weakness; the idea is that it never should happen.
@@ -6998,14 +6998,14 @@ geared to be used interactively to edit new code. There's currently no
intention to change this goal.
If you want to reformat old code, you're probably better off using some
-other tool instead, e.g. @ref{Top, , GNU indent, indent, The `indent'
+other tool instead, e.g., @ref{Top, , GNU indent, indent, The `indent'
Manual}, which has more powerful reformatting capabilities than
@ccmode{}.
@item
The support for C++ templates (in angle brackets) is not yet complete.
When a non-nested template is used in a declaration, @ccmode{} indents
-it and font-locks it OK. Templates used in expressions, and nested
+it and font-locks it OK@. Templates used in expressions, and nested
templates do not fare so well. Sometimes a workaround is to refontify
the expression after typing the closing @samp{>}.
@@ -7063,7 +7063,7 @@ too by adding this to your @code{c-initialization-hook}:
@end example
@xref{Getting Started}. This is a very common question. If you want
-this to be the default behavior, don't lobby us, lobby RMS! @t{:-)}
+this to be the default behavior, don't lobby us, lobby RMS@! @t{:-)}
@item
@emph{How do I stop my code jumping all over the place when I type?}
@@ -7169,7 +7169,7 @@ to include any code that appears @emph{before} your bug example, if
you think it might affect our ability to reproduce it.
Please try to produce the problem in an Emacs instance without any
-customizations loaded (i.e. start it with the @samp{-q --no-site-file}
+customizations loaded (i.e., start it with the @samp{-q --no-site-file}
arguments). If it works correctly there, the problem might be caused
by faulty customizations in either your own or your site
configuration. In that case, we'd appreciate it if you isolate the
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index beefa3e9c40..67d99153951 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -191,11 +191,11 @@ but use different function names (in fact, @file{cl.el} mainly just
defines aliases to the @file{cl-lib.el} definitions). Where
@file{cl-lib.el} defines a function called, for example,
@code{cl-incf}, @file{cl.el} uses the same name but without the
-@samp{cl-} prefix, e.g.@: @code{incf} in this example. There are a few
+@samp{cl-} prefix, e.g., @code{incf} in this example. There are a few
exceptions to this. First, functions such as @code{cl-defun} where
the unprefixed version was already used for a standard Emacs Lisp
function. In such cases, the @file{cl.el} version adds a @samp{*}
-suffix, e.g.@: @code{defun*}. Second, there are some obsolete features
+suffix, e.g., @code{defun*}. Second, there are some obsolete features
that are only implemented in @file{cl.el}, not in @file{cl-lib.el},
because they are replaced by other standard Emacs Lisp features.
Finally, in a very few cases the old @file{cl.el} versions do not
@@ -898,8 +898,8 @@ generalized variables.
@node Setf Extensions
@subsection Setf Extensions
-Several standard (e.g.@: @code{car}) and Emacs-specific
-(e.g.@: @code{window-point}) Lisp functions are @code{setf}-able by default.
+Several standard (e.g., @code{car}) and Emacs-specific
+(e.g., @code{window-point}) Lisp functions are @code{setf}-able by default.
This package defines @code{setf} handlers for several additional functions:
@itemize
@@ -4870,7 +4870,7 @@ direct C-language calls to the message routines rather than going
through the Lisp @code{message} function.
@c Bug#411.
-Note that many primitives (e.g.@: @code{+}) have special byte-compile
+Note that many primitives (e.g., @code{+}) have special byte-compile
handling. Attempts to redefine such functions using @code{flet} will
fail if byte-compiled.
@c Or cl-flet.
diff --git a/doc/misc/doclicense.texi b/doc/misc/doclicense.texi
index cb71f05a175..9c3bbe56e91 100644
--- a/doc/misc/doclicense.texi
+++ b/doc/misc/doclicense.texi
@@ -97,7 +97,7 @@ format, SGML or XML using a publicly available
DTD, and standard-conforming simple HTML,
PostScript or PDF designed for human modification. Examples
of transparent image formats include PNG, XCF and
-JPG. Opaque formats include proprietary formats that can be
+JPG@. Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML,
diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi
index 6db27a38808..e13ca4714a7 100644
--- a/doc/misc/ebrowse.texi
+++ b/doc/misc/ebrowse.texi
@@ -445,7 +445,7 @@ where no highlight is displayed.
Class trees are displayed in @dfn{tree buffers} which install their own
major mode. Most Emacs keys work in tree buffers in the usual way,
-e.g.@: you can move around in the buffer with the usual @kbd{C-f},
+e.g., you can move around in the buffer with the usual @kbd{C-f},
@kbd{C-v} etc., or you can search with @kbd{C-s}.
Tree-specific commands are bound to simple keystrokes, similar to
@@ -953,7 +953,7 @@ the completion list. If necessary, the current member list is switched
to the one containing the member.
With a prefix argument (@kbd{C-u}), all members in the class tree,
-i.e.@: all members the browser knows about appear in the completion
+i.e., all members the browser knows about appear in the completion
list. The member display will be switched to the class and member list
containing the member.
@@ -1333,7 +1333,7 @@ This command sets point to the previous position in the position stack.
Directly after you performed a jump, this will put you back to the
position where you came from.
-The stack is not popped, i.e.@: you can always switch back and forth
+The stack is not popped, i.e., you can always switch back and forth
between positions in the stack. To avoid letting the stack grow to
infinite size there is a maximum number of positions defined. When this
number is reached, older positions are discarded when new positions are
@@ -1415,7 +1415,7 @@ given regular expression. This command can be very useful if you
remember only part of a member name, and not its beginning.
A special buffer is popped up containing all identifiers matching the
-regular expression, and what kind of symbol it is (e.g.@: a member
+regular expression, and what kind of symbol it is (e.g., a member
function, or a type). You can then switch to this buffer, and use the
command @kbd{C-c C-m f}, for example, to jump to a specific member.
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index 1299f2ff062..34ec72fc193 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -1057,7 +1057,7 @@ and has an optimized include file identification function.
@subsection Custom Locate
The various simple project styles all have one major drawback, which
-is that the files in the project are not completely known to EDE.
+is that the files in the project are not completely known to EDE@.
When the EDE API is used to try and file files by some reference name
in the project, then that could fail.
@@ -1074,7 +1074,7 @@ To enable one of these tools, set the variable
@code{ede-locate-setup-options} with the names of different locate
objects. @ref{Miscellaneous commands}.
-Configure this in your @file{.emacs} before loading in CEDET or EDE.
+Configure this in your @file{.emacs} before loading in CEDET or EDE@.
If you want to add support for GNU Global, your configuration would
look like this:
@@ -1083,7 +1083,7 @@ look like this:
@end example
That way, when a search needs to be done, it will first try using
-GLOBAL. If global is not available for that directory, then it will
+GLOBAL@. If global is not available for that directory, then it will
revert to the base locate object. The base object always fails to
find a file.
@@ -1100,7 +1100,7 @@ bugs in @ede{}. A knowledge of Emacs Lisp, and some @eieio{}(CLOS) is
required.
@ede{} uses @eieio{}, the CLOS package for Emacs, to define two object
-superclasses, specifically the PROJECT and TARGET. All commands in
+superclasses, specifically the PROJECT and TARGET@. All commands in
@ede{} are usually meant to address the current project, or current
target.
@@ -1273,7 +1273,7 @@ The function @code{ede-directory-project-p} will call
@code{ede-dir-to-projectfile} on every @code{ede-project-autoload}
until one of them returns true. The method
@code{ede-dir-to-projectfile} in turn gets the @code{:proj-file} slot
-from the autoload. If it is a string (ie, a project file name), it
+from the autoload. If it is a string (i.e., a project file name), it
checks to see if that exists in BUFFER's directory. If it is a
function, then it calls that function and expects it to return a file
name or nil. If the file exists, then this directory is assumed to be
@@ -1379,7 +1379,7 @@ List all documentation a project or target is responsible for.
@ede{} projects track source file / target associates via source code
objects. The definitions for this is in @file{ede-source.el}. A source
code object contains methods that know how to identify a file as being
-of that class, (ie, a C file ends with @file{.c}). Some targets can
+of that class, (i.e., a C file ends with @file{.c}). Some targets can
handle many different types of sources which must all be compiled
together. For example, a mixed C and C++ program would have
instantiations of both sourcecode types.
@@ -1635,7 +1635,7 @@ This is a URL to be sent to a web site for documentation.
@item :web-site-directory @*
A directory where web pages can be found by Emacs.
-For remote locations use a path compatible with ange-ftp or EFS.
+For remote locations use a path compatible with ange-ftp or EFS@.
You can also use TRAMP for use with rcp & scp.
@refill
@@ -1978,7 +1978,7 @@ The function symbol must take two arguments:
NAME - The name of the file to find.
DIR - The directory root for this cpp-root project.
-It should return the fully qualified file name passed in from NAME. If that file does not
+It should return the fully qualified file name passed in from NAME@. If that file does not
exist, it should return nil.
@refill
@@ -2565,7 +2565,7 @@ Optional @var{DEPTH} is the depth we start at.
@end deffn
@deffn Method ede-buffer-header-file :AFTER this buffer
-There are no default header files in EDE.
+There are no default header files in EDE@.
Do a quick check to see if there is a Header tag in this buffer.
@end deffn
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index 0afcdd923d6..55bfb9f6cb8 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -409,7 +409,7 @@ Many Ediff commands take numeric prefix arguments. For instance, if you
type a number, say 3, and then @kbd{j} (@code{ediff-jump-to-difference}),
Ediff moves to the third difference region. Typing 3 and then @kbd{a}
(@code{ediff-diff-to-diff}) copies the 3rd difference region from variant A
-to variant B. Likewise, 4 followed by @kbd{ra} restores the 4th difference
+to variant B@. Likewise, 4 followed by @kbd{ra} restores the 4th difference
region in buffer A (if it was previously written over via the command
@kbd{a}).
@@ -490,7 +490,7 @@ compares three files simultaneously).
@kindex a
@emph{In comparison sessions:}
Copies the current difference region (or the region specified as the prefix
-to this command) from buffer A to buffer B.
+to this command) from buffer A to buffer B@.
Ediff saves the old contents of buffer B's region; it can
be restored via the command @kbd{rb}, which see.
@@ -512,31 +512,31 @@ be reinstated via the command @kbd{ra} in comparison sessions and
@item ab
@kindex ab
Copies the current difference region (or the region specified as the prefix
-to this command) from buffer A to buffer B. This (and the next five)
+to this command) from buffer A to buffer B@. This (and the next five)
command is enabled only in sessions that compare three files
simultaneously. The old region in buffer B is saved and can be restored
via the command @kbd{rb}.
@item ac
@kindex ac
-Copies the difference region from buffer A to buffer C.
+Copies the difference region from buffer A to buffer C@.
The old region in buffer C is saved and can be restored via the command
@kbd{rc}.
@item ba
@kindex ba
-Copies the difference region from buffer B to buffer A.
+Copies the difference region from buffer B to buffer A@.
The old region in buffer A is saved and can be restored via the command
@kbd{ra}.
@item bc
@kindex bc
-Copies the difference region from buffer B to buffer C.
+Copies the difference region from buffer B to buffer C@.
The command @kbd{rc} undoes this.
@item ca
@kindex ca
-Copies the difference region from buffer C to buffer A.
+Copies the difference region from buffer C to buffer A@.
The command @kbd{ra} undoes this.
@item cb
@kindex cb
-Copies the difference region from buffer C to buffer B.
+Copies the difference region from buffer C to buffer B@.
The command @kbd{rb} undoes this.
@item p
@@ -713,12 +713,12 @@ over. @xref{Selective Browsing}, for more.
@item A
@kindex A
-Toggles the read-only property in buffer A.
+Toggles the read-only property in buffer A@.
If file A is under version control and is checked in, it is checked out
(with your permission).
@item B
@kindex B
-Toggles the read-only property in buffer B.
+Toggles the read-only property in buffer B@.
If file B is under version control and is checked in, it is checked out.
@item C
@kindex C
@@ -795,7 +795,7 @@ While merging with an ancestor file, Ediff is determined to reduce user's
wear and tear by saving him and her much of unproductive, repetitive
typing. If it notices that, say, file A's difference region is identical to
the same difference region in the ancestor file, then the merge buffer will
-automatically get the difference region taken from buffer B. The rationale
+automatically get the difference region taken from buffer B@. The rationale
is that this difference region in buffer A is as old as that in the
ancestor buffer, so the contents of that region in buffer B represents real
change.
@@ -820,7 +820,7 @@ To be more precise, this toggles the check for whether the current merge is
identical to its default setting, as originally decided by Ediff. For
instance, if Ediff is merging according to the `combined' policy, then the
merge region is skipped over if it is different from the combination of the
-regions in buffers A and B. (Warning: swapping buffers A and B will confuse
+regions in buffers A and B@. (Warning: swapping buffers A and B will confuse
things in this respect.) If the merge region is marked as `prefer-A' then
this region will be skipped if it differs from the current difference
region in buffer A, etc.
@@ -1238,7 +1238,7 @@ Keep in mind that hooks executing before @code{ediff-cleanup-mess} start
in @code{ediff-control-buffer;} they should also leave
@code{ediff-control-buffer} as the current buffer when they finish.
Hooks that are executed after @code{ediff-cleanup-mess} should expect
-the current buffer be either buffer A or buffer B.
+the current buffer be either buffer A or buffer B@.
@code{ediff-cleanup-mess} doesn't kill the buffers being compared or
merged (see @code{ediff-cleanup-hook}, below).
@@ -1361,7 +1361,7 @@ the variable @code{ediff-help-message}, which is local to
@section Window and Frame Configuration
On a non-windowing display, Ediff sets things up in one frame, splitting
-it between a small control window and the windows for buffers A, B, and C.
+it between a small control window and the windows for buffers A, B, and C@.
The split between these windows can be horizontal or
vertical, which can be changed interactively by typing @kbd{|} while the
cursor is in the control window.
@@ -1999,7 +1999,7 @@ represented as a list of the form @code{(STRING1 Symbol1 STRING2 Symbol2
STRING3 Symbol3 STRING4)}. The symbols here must be atoms of the form
@code{A}, @code{B}, or @code{Ancestor}. They determine the order in which
the corresponding difference regions (from buffers A, B, and the ancestor
-buffer) are displayed in the merged region of buffer C. The strings in the
+buffer) are displayed in the merged region of buffer C@. The strings in the
template determine the text that separates the aforesaid regions. The
default template is
@@ -2062,7 +2062,7 @@ you copy a difference region from buffer A to buffer C then
@samp{=diff(B)} will change to @samp{diff-A} and the mode line will
display @samp{=diff(A) prefer-B}. This indicates that the difference
region in buffer C is identical to that in buffer A, but originally
-buffer C's region came from buffer B. This is useful to know because
+buffer C's region came from buffer B@. This is useful to know because
you can recover the original difference region in buffer C by typing
@kbd{r}.
@@ -2090,7 +2090,7 @@ buffer A consists of the white space only (or if it is empty), Ediff will
not take it into account for the purpose of computing fine differences. The
result is that Ediff can provide a better visual information regarding the
actual fine differences in the non-white regions in buffers B and
-C. Moreover, if the regions in buffers B and C differ in the white space
+C@. Moreover, if the regions in buffers B and C differ in the white space
only, then a message to this effect will be displayed.
@vindex ediff-merge-window-share
@@ -2388,7 +2388,7 @@ In merging, this is the merge buffer.
In two-way comparison, this variable is @code{nil}.
@item ediff-window-A
-The window displaying buffer A. If buffer A is not visible, this variable
+The window displaying buffer A@. If buffer A is not visible, this variable
is @code{nil} or it may be a dead window.
@item ediff-window-B
@@ -2407,7 +2407,7 @@ the control buffer is in its own frame.
@chapter Credits
Ediff was written by Michael Kifer <kifer@@cs.stonybrook.edu>. It was inspired
-by emerge.el written by Dale R.@: Worley <drw@@math.mit.edu>. An idea due to
+by emerge.el written by Dale R. Worley <drw@@math.mit.edu>. An idea due to
Boris Goldowsky <boris@@cs.rochester.edu> made it possible to highlight
fine differences in Ediff buffers. Alastair Burt <burt@@dfki.uni-kl.de>
ported Ediff to XEmacs, Eric Freudenthal <freudent@@jan.ultra.nyu.edu>
@@ -2424,15 +2424,15 @@ Adrian Aichner (aichner at ecf.teradyne.com),
Drew Adams (drew.adams at oracle.com),
Steve Baur (steve at xemacs.org),
Neal Becker (neal at ctd.comsat.com),
-E.@: Jay Berkenbilt (ejb at ql.org),
+E. Jay Berkenbilt (ejb at ql.org),
Lennart Borgman (ennart.borgman at gmail.com)
Alastair Burt (burt at dfki.uni-kl.de),
Paul Bibilo (peb at delcam.co.uk),
Kevin Broadey (KevinB at bartley.demon.co.uk),
Harald Boegeholz (hwb at machnix.mathematik.uni-stuttgart.de),
-Bradley A.@: Bosch (brad at lachman.com),
-Michael D.@: Carney (carney at ltx-tr.com),
-Jin S.@: Choi (jin at atype.com),
+Bradley A. Bosch (brad at lachman.com),
+Michael D. Carney (carney at ltx-tr.com),
+Jin S. Choi (jin at atype.com),
Scott Cummings (cummings at adc.com),
Albert Dvornik (bert at mit.edu),
Eric Eide (eeide at asylum.cs.utah.edu),
@@ -2491,7 +2491,7 @@ Paul Raines (raines at slac.stanford.edu),
Stefan Reicher (xsteve at riic.at),
Charles Rich (rich at merl.com),
Bill Richter (richter at math.nwu.edu),
-C.S.@: Roberson (roberson at aur.alcatel.com),
+C.S. Roberson (roberson at aur.alcatel.com),
Kevin Rodgers (kevin.rodgers at ihs.com),
Sandy Rutherford (sandy at ibm550.sissa.it),
Heribert Schuetz (schuetz at ecrc.de),
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index af0069fb1bc..12e65100e4e 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -65,7 +65,7 @@ of DEC's EDT editor.
This manual describes version 4.0 of the EDT Emulation for Emacs.
It comes with special functions which replicate nearly all of
EDT's keypad mode behavior. It sets up default keypad and function key
-bindings which closely match those found in EDT. Support is provided so
+bindings which closely match those found in EDT@. Support is provided so
that users may reconfigure most keypad and function key bindings to
their own liking.
@@ -321,7 +321,7 @@ restores the original key bindings in effect just prior to invoking the
emulation.
Emacs binds keys to @acronym{ASCII} control characters and so does the
-real EDT. Where EDT key bindings and Emacs key bindings conflict,
+real EDT@. Where EDT key bindings and Emacs key bindings conflict,
the default Emacs key bindings are retained by the EDT emulation by
default. If you are a diehard EDT user you may not like this. The
@ref{Control keys} section explains how to change this so that the EDT
@@ -527,7 +527,7 @@ add mod2 = Num_Lock
@end example
So, after executing @samp{xmodmap .xmodmaprc}, a press of the physical
-@key{F12} key looks like a Num_Lock keypress to X. Also, a press of the
+@key{F12} key looks like a Num_Lock keypress to X@. Also, a press of the
physical @key{NumLock} key looks like a press of the @key{F12} key to X.
Now, @file{edt-mapper.el} will see @samp{f12} when the physical
@@ -674,7 +674,7 @@ two-thirds of the current window. (There is also an
@item
Cursor movement and deletion involving word entities is identical to
-EDT. This, above all else, gives the die-hard EDT user a sense of being
+EDT@. This, above all else, gives the die-hard EDT user a sense of being
at home. Also, an emulation of EDT's @samp{SET ENTITY WORD} command is
provided, for those users who like to customize movement by a word at a
time to their own liking.
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 6b3a87f19fc..fc92a76ff36 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -1921,7 +1921,7 @@ In @eieio{} tags are in lower case, not mixed case.
@node Wish List
@chapter Wish List
-@eieio{} is an incomplete implementation of CLOS. Finding ways to
+@eieio{} is an incomplete implementation of CLOS@. Finding ways to
improve the compatibility would help make CLOS style programs run
better in Emacs.
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index e57fcc8adf1..966cace7f6e 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -382,7 +382,7 @@ When displaying inline images that are larger than the window, Emacs
does not enable scrolling, which means that you cannot see the whole
image. To prevent this, the library tries to determine the image size
before displaying it inline, and if it doesn't fit the window, the
-library will display it externally (e.g. with @samp{ImageMagick} or
+library will display it externally (e.g., with @samp{ImageMagick} or
@samp{xv}). Setting this variable to @code{t} disables this check and
makes the library display all inline images as inline, regardless of
their size. If you set this variable to @code{resize}, the image will
@@ -427,7 +427,7 @@ or @kbd{I} instead.}
@item mm-w3m-safe-url-regexp
@vindex mm-w3m-safe-url-regexp
-A regular expression that matches safe URL names, i.e. URLs that are
+A regular expression that matches safe URL names, i.e., URLs that are
unlikely to leak personal information when rendering @acronym{HTML}
email (the default value is @samp{\\`cid:}). If @code{nil} consider
all URLs safe. In Gnus, this will be overridden according to the value
@@ -489,7 +489,7 @@ Delete all control characters.
@item mm-file-name-delete-gotchas
@findex mm-file-name-delete-gotchas
Delete characters that could have unintended consequences when used
-with flawed shell scripts, i.e. @samp{|}, @samp{>} and @samp{<}; and
+with flawed shell scripts, i.e., @samp{|}, @samp{>} and @samp{<}; and
@samp{-}, @samp{.} as the first character.
@item mm-file-name-delete-whitespace
@@ -922,7 +922,7 @@ each case the most efficient of quoted-printable and base64 should be
used.
@code{qp-or-base64} has another effect. It will fold long lines so that
-MIME parts may not be broken by MTA. So do @code{quoted-printable} and
+MIME parts may not be broken by MTA@. So do @code{quoted-printable} and
@code{base64}.
Note that it affects body encoding only when a part is a raw forwarded
@@ -1443,13 +1443,13 @@ This is a version from which the regexp for the Q encoding pattern of
@item rfc2047-encode-encoded-words
@vindex rfc2047-encode-encoded-words
The boolean variable specifies whether encoded words
-(e.g. @samp{=?us-ascii?q?hello?=}) should be encoded again.
+(e.g., @samp{=?us-ascii?q?hello?=}) should be encoded again.
@code{rfc2047-encoded-word-regexp} is used to look for such words.
@item rfc2047-allow-irregular-q-encoded-words
@vindex rfc2047-allow-irregular-q-encoded-words
The boolean variable specifies whether irregular Q encoded words
-(e.g. @samp{=?us-ascii?q?hello??=}) should be decoded. If it is
+(e.g., @samp{=?us-ascii?q?hello??=}) should be decoded. If it is
non-@code{nil}, @code{rfc2047-encoded-word-regexp-loose} is used instead
of @code{rfc2047-encoded-word-regexp} to look for encoded words.
@@ -1608,14 +1608,14 @@ Take a date and return a time. If the date is not syntactically valid,
return a ``zero'' time.
@item time-less-p
-Take two times and say whether the first time is less (i. e., earlier)
+Take two times and say whether the first time is less (i.e., earlier)
than the second time.
@item time-since
Take a time and return a time saying how long it was since that time.
@item subtract-time
-Take two times and subtract the second from the first. I. e., return
+Take two times and subtract the second from the first. I.e., return
the time between the two times.
@item days-between
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index bb5e18f1c8b..9dfdf5ff0c3 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -63,11 +63,11 @@ called EasyPG Library.
@end ifnottex
@menu
-* Overview::
-* Quick start::
-* Commands::
-* Caching Passphrases::
-* Bug Reports::
+* Overview::
+* Quick start::
+* Commands::
+* Caching Passphrases::
+* Bug Reports::
@end menu
@node Overview
@@ -107,12 +107,12 @@ encryption/decryption of @samp{*.gpg} files.
This chapter introduces various commands for typical use cases.
@menu
-* Key management::
-* Cryptographic operations on regions::
-* Cryptographic operations on files::
-* Dired integration::
-* Mail-mode integration::
-* Encrypting/decrypting *.gpg files::
+* Key management::
+* Cryptographic operations on regions::
+* Cryptographic operations on files::
+* Dired integration::
+* Mail-mode integration::
+* Encrypting/decrypting *.gpg files::
@end menu
@node Key management
@@ -311,7 +311,7 @@ style of sending signed/encrypted emails by embedding raw OpenPGP
blobs inside a message body, not using modern MIME format.
NOTE: Inline OpenPGP is not recommended and you should consider to use
-PGP/MIME. See
+PGP/MIME@. See
@uref{http://josefsson.org/inline-openpgp-considered-harmful.html,
Inline OpenPGP in E-mail is bad@comma{} Mm'kay?}.
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 834d2ea844d..8c8e0b56cd0 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -60,7 +60,7 @@ and modified without restriction.
* Keystroke Summary:: Keystrokes used in ERC buffers.
* Modules:: Available modules for ERC.
* Advanced Usage:: Cool ways of using ERC.
-* Getting Help and Reporting Bugs::
+* Getting Help and Reporting Bugs::
* History:: The history of ERC.
* Copying:: The GNU General Public License gives you
permission to redistribute ERC on
@@ -246,7 +246,7 @@ translation effort.
@item user scripting
-Users can load scripts (e.g. auto greeting scripts) when ERC starts up.
+Users can load scripts (e.g., auto greeting scripts) when ERC starts up.
It is also possible to make custom IRC commands, if you know a little
Emacs Lisp. Just make an Emacs Lisp function and call it
@@ -503,7 +503,7 @@ If you want to assign this function to a keystroke, the following will
help you figure out its parameters.
@defun erc
-Select connection parameters and run ERC.
+Select connection parameters and run ERC@.
Non-interactively, it takes the following keyword arguments.
@itemize @bullet
@@ -655,7 +655,7 @@ This can be either a string or a function to call.
@section Sample Configuration
@cindex configuration, sample
-Here is an example of configuration settings for ERC. This can go into
+Here is an example of configuration settings for ERC@. This can go into
your Emacs configuration file. Everything after the @code{(require
'erc)} command can optionally go into @file{~/.emacs.d/.ercrc.el}.
@@ -706,7 +706,7 @@ stuff, to the current ERC buffer."
(erc :server "localhost" :port "6667"
:nick "MYNICK")))
-;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
+;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
;; been commented out to avoid confusing new users.
;; (define-key erc-mode-map (kbd "RET") nil)
;; (define-key erc-mode-map (kbd "C-c RET") 'erc-send-current-line)
@@ -742,7 +742,7 @@ check out all the available options for ERC is to do
@kbd{M-x customize-group erc RET}.
@defopt erc-hide-list
-If non, @code{nil}, this is a list of IRC message types to hide, e.g.
+If non, @code{nil}, this is a list of IRC message types to hide, e.g.:
@example
(setq erc-hide-list '("JOIN" "PART" "QUIT"))
@@ -752,7 +752,7 @@ If non, @code{nil}, this is a list of IRC message types to hide, e.g.
@defopt erc-lurker-hide-list
Like @code{erc-hide-list}, but only applies to messages sent by
lurkers. The function @code{erc-lurker-p} determines whether a given
-nickname is considerd a lurker.
+nickname is considered a lurker.
@end defopt
@@ -768,7 +768,7 @@ or if you have bugs to report, there are several places you can go.
@item
@uref{http://www.emacswiki.org/cgi-bin/wiki/ERC} is the
-emacswiki.org page for ERC. Anyone may add tips, hints, etc. to it.
+emacswiki.org page for ERC@. Anyone may add tips, hints, etc. to it.
@item
You can ask questions about using ERC on the Emacs mailing list,
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index b585b68daa8..146a6ccbc35 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -838,7 +838,7 @@ solve this by allowing regexp matching on test names; e.g., the
selector "^ert-" selects ERT's self-tests.
Other uses include grouping tests by their expected execution time,
-e.g. to run quick tests during interactive development and slow tests less
+e.g., to run quick tests during interactive development and slow tests less
often. This can be achieved with the @code{:tag} argument to
@code{ert-deftest} and @code{tag} test selectors.
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index d322ca7c3e1..81bc1edc169 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -783,7 +783,7 @@ A special associate array, which can take references of the form
@item Eshell scripts can't execute in the background
-@item Support zsh's ``Parameter Expansion'' syntax, i.e. @samp{$@{@var{name}:-@var{val}@}}
+@item Support zsh's ``Parameter Expansion'' syntax, i.e., @samp{$@{@var{name}:-@var{val}@}}
@item Write an @command{info} alias that can take arguments
@@ -869,7 +869,7 @@ It would call subcommands with @option{--help}, or @option{-h} or
@item Implement @command{stty} in Lisp
-@item Support @command{rc}'s matching operator, e.g. @samp{~ (@var{list}) @var{regexp}}
+@item Support @command{rc}'s matching operator, e.g., @samp{~ (@var{list}) @var{regexp}}
@item Implement @command{bg} and @command{fg} as editors of @code{eshell-process-list}
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index dec178c5258..a21e73019b9 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -233,7 +233,7 @@ LDAP support is added by means of @file{ldap.el}, which is part of Emacs.
@comment node-name, next, previous, up
@chapter Usage
-This chapter describes the usage of EUDC. Most functions and
+This chapter describes the usage of EUDC@. Most functions and
customization options are available through the @samp{Directory Search}
submenu of the @samp{Tools} submenu.
diff --git a/doc/misc/faq.texi b/doc/misc/faq.texi
index 2983667c5cd..ec0d6bfe4cc 100644
--- a/doc/misc/faq.texi
+++ b/doc/misc/faq.texi
@@ -20,7 +20,7 @@ Copyright @copyright{} 1990, 1991, 1992 Joseph Brian Wells@*
@quotation
This list of frequently asked questions about GNU Emacs with answers
(``FAQ'') may be translated into other languages, transformed into other
-formats (e.g. Texinfo, Info, WWW, WAIS), and updated with new information.
+formats (e.g., Texinfo, Info, WWW, WAIS), and updated with new information.
The same conditions apply to any derivative of the FAQ as apply to the FAQ
itself. Every copy of the FAQ must include this notice or an approved
@@ -191,7 +191,7 @@ DOS and Windows terminals don't set bit 7 when the @key{Meta} key is
pressed.}.
@kbd{C-?} (aka @key{DEL}) is @acronym{ASCII} code 127. It is a misnomer to call
-@kbd{C-?} a ``control'' key, since 127 has both bits 5 and 6 turned ON.
+@kbd{C-?} a ``control'' key, since 127 has both bits 5 and 6 turned ON@.
Also, on very few keyboards does @kbd{C-?} generate @acronym{ASCII} code 127.
@c FIXME I cannot understand the previous sentence.
@@ -257,9 +257,9 @@ Emacs manual.
@cindex Directories and files that come with Emacs
These are files that come with Emacs. The Emacs distribution is divided
-into subdirectories; e.g. @file{etc}, @file{lisp}, and @file{src}.
-Some of these (e.g. @file{etc} and @file{lisp}) are present both in
-an installed Emacs and in the sources, but some (e.g. @file{src}) are
+into subdirectories; e.g., @file{etc}, @file{lisp}, and @file{src}.
+Some of these (e.g., @file{etc} and @file{lisp}) are present both in
+an installed Emacs and in the sources, but some (e.g., @file{src}) are
only found in the sources.
If you use Emacs, but don't know where it is kept on your system, start
@@ -314,7 +314,7 @@ GNU General Public License
@end table
-Avoid confusing the FSF and the LPF. The LPF opposes
+Avoid confusing the FSF and the LPF@. The LPF opposes
look-and-feel copyrights and software patents. The FSF aims to make
high quality free software available for everyone.
@@ -552,7 +552,7 @@ help-for-help} instead to invoke help. To discover what key (if any)
invokes help on your system, type @kbd{M-x where-is @key{RET}
help-for-help @key{RET}}. This will print a comma-separated list of key
sequences in the echo area. Ignore the last character in each key
-sequence listed. Each of the resulting key sequences (e.g. @key{F1} is
+sequence listed. Each of the resulting key sequences (e.g., @key{F1} is
common) invokes help.
Emacs help works best if it is invoked by a single key whose value
@@ -611,7 +611,7 @@ matches a regular expression or a string, using @kbd{M-x
apropos-documentation}.
@item
-You can order a hardcopy of the manual from the FSF. @xref{Getting a
+You can order a hardcopy of the manual from the FSF@. @xref{Getting a
printed manual}.
@cindex Reference cards, in other languages
@@ -640,7 +640,7 @@ information. To get a list of these commands, type @samp{?} after
@cindex Manual, obtaining a printed or HTML copy of
@cindex Emacs manual, obtaining a printed or HTML copy of
-You can order a printed copy of the Emacs manual from the FSF. For
+You can order a printed copy of the Emacs manual from the FSF@. For
details see the @uref{http://shop.fsf.org/, FSF on-line store}.
The full Texinfo source for the manual also comes in the @file{doc/emacs}
@@ -954,7 +954,7 @@ status of its latest version.
@cindex TECO
@cindex Original version of Emacs
-Emacs originally was an acronym for Editor MACroS. RMS says he ``picked
+Emacs originally was an acronym for Editor MACroS@. RMS says he ``picked
the name Emacs because @key{E} was not in use as an abbreviation on ITS at
the time.'' The first Emacs was a set of macros written in 1976 at MIT
by RMS for the editor TECO (Text Editor and COrrector, originally Tape
@@ -985,9 +985,9 @@ conventions}).
@cindex Bazaar repository, Emacs
Emacs @value{EMACSVER} is the current version as of this writing. A version
-number with two components (e.g. @samp{22.1}) indicates a released
+number with two components (e.g., @samp{22.1}) indicates a released
version; three components indicate a development
-version (e.g. @samp{23.0.50} is what will eventually become @samp{23.1}).
+version (e.g., @samp{23.0.50} is what will eventually become @samp{23.1}).
Emacs is under active development, hosted at
@uref{http://savannah.gnu.org/projects/emacs/, Savannah}. The source
@@ -1371,7 +1371,7 @@ groups. From there, you can access all customizable options and faces,
change their values, and save your changes to your init file.
@xref{Easy Customization,,, emacs, The GNU Emacs Manual}.
-If you know the name of the group in advance (e.g. ``shell''), use
+If you know the name of the group in advance (e.g., ``shell''), use
@kbd{M-x customize-group @key{RET}}.
If you wish to customize a single option, use @kbd{M-x customize-option
@@ -1385,7 +1385,7 @@ customize, with completion.
@cindex Console, colors
In Emacs 21.1 and later, colors and faces are supported in non-windowed mode,
-i.e.@: on Unix and GNU/Linux text-only terminals and consoles, and when
+i.e., on Unix and GNU/Linux text-only terminals and consoles, and when
invoked as @samp{emacs -nw} on X, and MS-Windows. (Colors and faces were
supported in the MS-DOS port since Emacs 19.29.) Emacs automatically
detects color support at startup and uses it if available. If you think
@@ -1540,7 +1540,7 @@ with @samp{#!}):
@cindex Major mode for shell scripts
The variable @code{interpreter-mode-alist} specifies which mode to use
-when loading an interpreted script (e.g. shell, python, etc.). Emacs
+when loading an interpreted script (e.g., shell, python, etc.). Emacs
determines which interpreter you're using by examining the first line of
the script. Use @kbd{C-h v} (or @kbd{M-x describe-variable}) on
@code{interpreter-mode-alist} to learn more.
@@ -3172,7 +3172,7 @@ the main GNU distribution site, sources are available as
@c Don't include VER in the file name, because pretests are not there.
@uref{ftp://ftp.gnu.org/pub/gnu/emacs/emacs-VERSION.tar.gz}
-(Replace @samp{VERSION} with the relevant version number, e.g. @samp{23.1}.)
+(Replace @samp{VERSION} with the relevant version number, e.g., @samp{23.1}.)
@item
Next uncompress and extract the source files. This requires
@@ -3561,7 +3561,7 @@ can be bound to a key and thus treated as a macro. For example:
@cindex Misspecified key sequences
Usually, one of two things has happened. In one case, the control
-character in the key sequence has been misspecified (e.g. @samp{C-f}
+character in the key sequence has been misspecified (e.g., @samp{C-f}
used instead of @samp{\C-f} within a Lisp expression). In the other
case, a @dfn{prefix key} in the keystroke sequence you were trying to bind
was already bound as a @dfn{complete key}. Historically, the @samp{ESC [}
@@ -3882,7 +3882,7 @@ is how to make @kbd{H-M-RIGHT} move forward a word:
@item
Not all modifiers are permitted in all situations. @key{Hyper},
@key{Super}, and @key{Alt} are not available on Unix character
-terminals. Non-@acronym{ASCII} keys and mouse events (e.g. @kbd{C-=} and
+terminals. Non-@acronym{ASCII} keys and mouse events (e.g., @kbd{C-=} and
@kbd{Mouse-1}) also fall under this category.
@end itemize
@@ -4275,7 +4275,7 @@ type them in. To enable this feature, execute the following:
@end lisp
Note that the aliases are expanded automatically only after you type
-a word-separator character (e.g. @key{RET} or @kbd{,}). You can force their
+a word-separator character (e.g., @key{RET} or @kbd{,}). You can force their
expansion by moving point to the end of the alias and typing @kbd{C-x a e}
(@kbd{M-x expand-abbrev}).
@end itemize
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 4a873490e86..98279c8dae3 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -47,7 +47,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@node Top
@top GNU Flymake
-@insertcopying
+@insertcopying
@end ifnottex
@menu
@@ -69,7 +69,7 @@ Emacs minor mode. Flymake runs the pre-configured syntax check tool
(compiler for C++ files, @code{perl} for perl files, etc.) in the
background, passing it a temporary copy of the current buffer, and
parses the output for known error/warning message patterns. Flymake
-then highlights erroneous lines (i.e. lines for which at least one
+then highlights erroneous lines (i.e., lines for which at least one
error or warning has been reported by the syntax check tool), and
displays an overall buffer status in the mode line. Status information
displayed by Flymake contains total number of errors and warnings
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index 11c3782dd7e..7f84de9754b 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -74,7 +74,7 @@ job: a control file and a data file. The data file holds the
actual data to be presented. The control file describes
how to present it.
-@insertcopying
+@insertcopying
@menu
* Forms Example:: An example: editing the password data base.
@@ -117,7 +117,7 @@ are all there, but instead of being colon-separated on one single line,
they make up a forms.
The contents of the forms consist of the contents of the fields of the
-record (e.g. @samp{root}, @samp{0}, @samp{1}, @samp{Super User})
+record (e.g., @samp{root}, @samp{0}, @samp{1}, @samp{Super User})
interspersed with normal text (e.g @samp{User : }, @samp{Uid: }).
If you modify the contents of the fields, Forms mode will analyze your
@@ -467,7 +467,7 @@ appears that way when displayed in Forms mode. If the value is
@code{nil}, multi-line text fields are prohibited. The pseudo newline
must not be a character contained in @code{forms-field-sep}.
-The default value is @code{"\^k"}, the character Control-K. Example:
+The default value is @code{"\^k"}, the character Control-K@. Example:
@example
(setq forms-multi-line "\^k")
@@ -739,7 +739,7 @@ so you'd better think twice before using this.
The default format for the data file, using @code{"\t"} to separate
fields and @code{"\^k"} to separate lines within a field, matches the
-file format of some popular database programs, e.g. FileMaker. So
+file format of some popular database programs, e.g., FileMaker. So
@code{forms-mode} can decrease the need to use proprietary software.
@node Error Messages
diff --git a/doc/misc/gnus-coding.texi b/doc/misc/gnus-coding.texi
index bbaf2c068da..2bc064071ec 100644
--- a/doc/misc/gnus-coding.texi
+++ b/doc/misc/gnus-coding.texi
@@ -48,7 +48,7 @@ license to the document, as described in section 6 of the license.
@top Gnus Coding Style and Maintenance Guide
This manual describes @dots{}
-@insertcopying
+@insertcopying
@end ifnottex
@menu
@@ -64,7 +64,7 @@ This manual describes @dots{}
The Gnus distribution contains a lot of libraries that have been written
for Gnus and used intensively for Gnus. But many of those libraries are
-useful on their own. E.g. other Emacs Lisp packages might use the
+useful on their own. E.g., other Emacs Lisp packages might use the
@acronym{MIME} library @xref{Top, ,Top, emacs-mime, The Emacs MIME
Manual}.
@@ -196,7 +196,7 @@ There are no Gnus dependencies in this file.
Functions for Cancel-Lock feature
@c Cf. draft-ietf-usefor-cancel-lock-01.txt
@c Although this draft has expired, Canlock-Lock revived in 2007 when
-@c major news providers (e.g. news.individual.org) started to use it.
+@c major news providers (e.g., news.individual.org) started to use it.
@c As of 2007-08-25...
There are no Gnus dependencies in these files.
@@ -257,18 +257,18 @@ XEmacs 21.1 and up.
The development of Gnus normally is done on the Git repository trunk
as of April 19, 2010 (formerly it was done in CVS; the repository is
-at http://git.gnus.org), i.e. there are no separate branches to
+at http://git.gnus.org), i.e., there are no separate branches to
develop and test new features. Most of the time, the trunk is
developed quite actively with more or less daily changes. Only after
-a new major release, e.g. 5.10.1, there's usually a feature period of
+a new major release, e.g., 5.10.1, there's usually a feature period of
several months. After the release of Gnus 5.10.6 the development of
new features started again on the trunk while the 5.10 series is
continued on the stable branch (v5-10) from which more stable releases
will be done when needed (5.10.8, @dots{}). @ref{Gnus Development,
,Gnus Development, gnus, The Gnus Newsreader}
-Stable releases of Gnus finally become part of Emacs. E.g. Gnus 5.8
-became a part of Emacs 21 (relabeled to Gnus 5.9). The 5.10 series
+Stable releases of Gnus finally become part of Emacs. E.g., Gnus 5.8
+became a part of Emacs 21 (relabeled to Gnus 5.9). The 5.10 series
became part of Emacs 22 as Gnus 5.11.
@section Syncing
@@ -379,7 +379,7 @@ Starting from No Gnus, the @file{GNUS-NEWS} is created from
For new customizable variables introduced in Oort Gnus (including the
v5-10 branch) use @code{:version "22.1" ;; Oort Gnus} (including the
-comment) or e.g. @code{:version "22.2" ;; Gnus 5.10.10} if the feature
+comment) or, e.g., @code{:version "22.2" ;; Gnus 5.10.10} if the feature
was added for Emacs 22.2 and Gnus 5.10.10.
@c
If the variable is new in No Gnus use @code{:version "23.1" ;; No Gnus}.
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 6c2946549e8..038b78cced3 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -65,7 +65,7 @@ Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
as a part of Emacs. It's been around in some form for almost a decade
now, and has been distributed as a standard part of Emacs for much of
that time. Gnus 5 is the latest (and greatest) incarnation. The
-original version was called GNUS, and was written by Masanobu UMEDA.
+original version was called GNUS, and was written by Masanobu UMEDA@.
When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
decided to rewrite Gnus.
@@ -149,7 +149,7 @@ Anti Spam features.
Message-utils now included in Gnus.
@item
-New format specifiers for summary lines, e.g. %B for
+New format specifiers for summary lines, e.g., %B for
a complex trn-style thread tree.
@end itemize
@@ -162,7 +162,7 @@ Where and how to get Gnus?
Gnus is released independent from releases of Emacs and XEmacs.
Therefore, the version bundled with Emacs or the version in XEmacs's
-package system might not be up to date (e.g. Gnus 5.9 bundled with Emacs
+package system might not be up to date (e.g., Gnus 5.9 bundled with Emacs
21 is outdated).
You can get the latest released version of Gnus from
@uref{http://www.gnus.org/dist/gnus.tar.gz}
@@ -181,7 +181,7 @@ Untar it via @samp{tar xvzf gnus.tar.gz} and do the common
(under MS-Windows either get the Cygwin environment from
@uref{http://www.cygwin.com}
which allows you to do what's described above or unpack the
-tarball with some packer (e.g. Winace from
+tarball with some packer (e.g., Winace from
@uref{http://www.winace.com})
and use the batch-file make.bat included in the tarball to install
Gnus.) If you don't want to (or aren't allowed to) install Gnus
@@ -267,7 +267,7 @@ and how to prevent it?
This message means that the last time you used Gnus, it
wasn't properly exited and therefore couldn't write its
-information to disk (e.g. which messages you read), you
+information to disk (e.g., which messages you read), you
are now asked if you want to restore that information
from the auto-save file.
@@ -314,7 +314,7 @@ through them?
@subsubheading Answer
Gnus offers the topic mode, it allows you to sort your
-groups in, well, topics, e.g. all groups dealing with
+groups in, well, topics, e.g., all groups dealing with
Linux under the topic linux, all dealing with music under
the topic music and all dealing with scottish music under
the topic scottish which is a subtopic of music.
@@ -406,7 +406,7 @@ directory Emacs chooses will most certainly not be what
you want, so let's do it the correct way.
The first thing you've got to do is to
create a suitable directory (no blanks in directory name
-please) e.g. c:\myhome. Then you must set the environment
+please), e.g., c:\myhome. Then you must set the environment
variable HOME to this directory. To do this under Windows 9x
or Me include the line
@@ -556,7 +556,7 @@ these: 1: You want to read your mail from a pop3 server and
send them directly to a SMTP Server 2: Some program like
fetchmail retrieves your mail and stores it on disk from
where Gnus shall read it. Outgoing mail is sent by
-Sendmail, Postfix or some other MTA. Sometimes, you even
+Sendmail, Postfix or some other MTA@. Sometimes, you even
need a combination of the above cases.
However, the first thing to do is to tell Gnus in which way
@@ -716,7 +716,7 @@ However this is Gnus county so there are possibilities to
achieve what you want. The easiest way is to get an external
program which retrieves copies of the mail and stores them
on disk, so Gnus can read it from there. On Unix systems you
-could use e.g. fetchmail for this, on MS Windows you can use
+could use, e.g., fetchmail for this, on MS Windows you can use
Hamster, an excellent local news and mail server.
The other solution would be, to replace the method Gnus
@@ -728,7 +728,7 @@ Gnus to use it and not to delete the retrieved mail. For
GNU Emacs look for the file epop3.el which can do the same
(If you know the home of this file, please send me an
e-mail). You can also tell Gnus to use an external program
-(e.g. fetchmail) to fetch your mail, see the info node
+(e.g., fetchmail) to fetch your mail, see the info node
"Mail Source Specifiers" in the Gnus manual on how to do
it.
@@ -753,7 +753,7 @@ it.
* FAQ 4-9:: Is there a way to automatically ignore posts by specific
authors or with specific words in the subject? And can I
highlight more interesting ones in some way?
-* FAQ 4-10:: How can I disable threading in some (e.g. mail-) groups,
+* FAQ 4-10:: How can I disable threading in some (e.g., mail-) groups,
or set other variables specific for some groups?
* FAQ 4-11:: Can I highlight messages written by me and follow-ups to
those?
@@ -778,7 +778,7 @@ If you enter the group by saying
@samp{RET}
in group buffer with point over the group, only unread and ticked messages are loaded. Say
@samp{C-u RET}
-instead to load all available messages. If you want only the e.g. 300 newest say
+instead to load all available messages. If you want only the 300 newest say
@samp{C-u 300 RET}
Loading only unread messages can be annoying if you have threaded view enabled, say
@@ -954,7 +954,7 @@ Hit either @samp{e} for an exact match or
@samp{s} for substring-match and delete afterwards
everything but the name to score down all authors with the given
name no matter which email address is used. Now you need to tell
-Gnus when to apply the rule and how long it should last, hit e.g.
+Gnus when to apply the rule and how long it should last, hit
@samp{p} to apply the rule now and let it last
forever. If you want to raise the score instead of lowering it say
@samp{I} instead of @samp{L}.
@@ -967,7 +967,7 @@ Gnus manual for the exact syntax, basically it's one big list
whose elements are lists again. the first element of those lists
is the header to score on, then one more list with what to match,
which score to assign, when to expire the rule and how to do the
-matching. If you find me very interesting, you could e.g. add the
+matching. If you find me very interesting, you could add the
following to your all.Score:
@example
@@ -998,7 +998,7 @@ in ~/.gnus.el.
@node FAQ 4-10
@subsubheading Question 4.10
-How can I disable threading in some (e.g. mail-) groups, or
+How can I disable threading in some (e.g., mail-) groups, or
set other variables specific for some groups?
@subsubheading Answer
@@ -1114,7 +1114,7 @@ tabulators which allow you a summary in table form, but
sadly hard tabulators are broken in 5.8.8.
Since 5.10, Gnus offers you some very nice new specifiers,
-e.g. %B which draws a thread-tree and %&user-date which
+e.g., %B which draws a thread-tree and %&user-date which
gives you a date where the details are dependent of the
articles age. Here's an example which uses both:
@@ -1771,7 +1771,7 @@ snippet by Frank Haun <pille3003@@fhaun.de> in
@example
(defun my-archive-article (&optional n)
- "Copies one or more article(s) to a corresponding `nnml:' group, e.g.
+ "Copies one or more article(s) to a corresponding `nnml:' group, e.g.,
`gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes
to `nnml:1.List-gnus-ding'.
@@ -1879,7 +1879,7 @@ some groups). How to do it?
@subsubheading Answer
-If you want all read messages to be expired (e.g. in
+If you want all read messages to be expired (e.g., in
mailing lists where there's an online archive), you've
got two choices: auto-expire and
total-expire. Auto-expire means, that every article
@@ -1924,7 +1924,7 @@ Say something like this in ~/.gnus.el:
(If you want to change the value of nnmail-expiry-target
on a per group basis see the question "How can I disable
-threading in some (e.g. mail-) groups, or set other
+threading in some (e.g., mail-) groups, or set other
variables specific for some groups?")
@node FAQ 7 - Gnus in a dial-up environment
@@ -1983,7 +1983,7 @@ On windows boxes I'd vote for
it's a small freeware, open-source program which fetches
your mail and news from remote servers and offers them
to Gnus (or any other mail and/or news reader) via nntp
-respectively POP3 or IMAP. It also includes a smtp
+respectively POP3 or IMAP@. It also includes a smtp
server for receiving mails from Gnus.
@node FAQ 7-2
@@ -1996,7 +1996,7 @@ So what was this thing about the Agent?
The Gnus agent is part of Gnus, it allows you to fetch
mail and news and store them on disk for reading them
later when you're offline. It kind of mimics offline
-newsreaders like e.g. Forte Agent. If you want to use
+newsreaders like Forte Agent. If you want to use
the Agent place the following in ~/.gnus.el if you are
still using 5.8.8 or 5.9 (it's the default since 5.10):
@@ -2075,7 +2075,7 @@ work, the agent must be active.
@menu
* FAQ 8-1:: How to find information and help inside Emacs?
-* FAQ 8-2:: I can't find anything in the Gnus manual about X (e.g.
+* FAQ 8-2:: I can't find anything in the Gnus manual about X (e.g.,
attachments, PGP, MIME...), is it not documented?
* FAQ 8-3:: Which websites should I know?
* FAQ 8-4:: Which mailing lists and newsgroups are there?
@@ -2105,7 +2105,7 @@ apropos} searches the bound variables.
@subsubheading Question 8.2
I can't find anything in the Gnus manual about X
-(e.g. attachments, PGP, MIME...), is it not documented?
+(e.g., attachments, PGP, MIME...), is it not documented?
@subsubheading Answer
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 47ff355d946..dfc422479e3 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -1580,6 +1580,10 @@ times you start Gnus.
@vindex gnus-before-startup-hook
A hook called as the first thing when Gnus is started.
+@item gnus-before-resume-hook
+@vindex gnus-before-resume-hook
+A hook called as the first thing when Gnus is resumed after a suspend.
+
@item gnus-startup-hook
@vindex gnus-startup-hook
A hook run as the very last thing after starting up Gnus
@@ -1731,7 +1735,7 @@ asterisk at the beginning of the line?).
You can change that format to whatever you want by fiddling with the
@code{gnus-group-line-format} variable. This variable works along the
lines of a @code{format} specification, which is pretty much the same as
-a @code{printf} specifications, for those of you who use (feh!) C.
+a @code{printf} specifications, for those of you who use (feh!) C@.
@xref{Formatting Variables}.
@samp{%M%S%5y:%B%(%g%)\n} is the value that produced those lines above.
@@ -2351,7 +2355,7 @@ groups isn't done because it is nice or clever, it is done purely for
reasons of efficiency.
It is recommended that you keep all your mail groups (if any) on quite
-low levels (e.g. 1 or 2).
+low levels (e.g., 1 or 2).
Maybe the following description of the default behavior of Gnus helps to
understand what these levels are all about. By default, Gnus shows you
@@ -2418,7 +2422,7 @@ give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
use this level as the ``work'' level.
@vindex gnus-activate-level
-Gnus will normally just activate (i. e., query the server about) groups
+Gnus will normally just activate (i.e., query the server about) groups
on level @code{gnus-activate-level} or less. If you don't want to
activate unsubscribed groups, for instance, you might set this variable
to 5. The default is 6.
@@ -2654,7 +2658,7 @@ to a particular group by using a match string like
@kindex G R (Group)
@findex gnus-group-make-rss-group
Make a group based on an @acronym{RSS} feed
-(@code{gnus-group-make-rss-group}). You will be prompted for an URL.
+(@code{gnus-group-make-rss-group}). You will be prompted for an URL@.
@xref{RSS}.
@item G DEL
@@ -2708,7 +2712,7 @@ the article range.
@findex gnus-read-ephemeral-gmane-group-url
This command is similar to @code{gnus-read-ephemeral-gmane-group}, but
the group name and the article number and range are constructed from a
-given @acronym{URL}. Supported @acronym{URL} formats include e.g.
+given @acronym{URL}. Supported @acronym{URL} formats include:
@url{http://thread.gmane.org/gmane.foo.bar/12300/focus=12399},
@url{http://thread.gmane.org/gmane.foo.bar/12345/},
@url{http://article.gmane.org/gmane.foo.bar/12345/},
@@ -3125,7 +3129,7 @@ parameters, then you may need the following statement elsewhere in your
@vindex gnus-list-identifiers
A use for this feature is to remove a mailing list identifier tag in
-the subject fields of articles. E.g. if the news group
+the subject fields of articles. E.g., if the news group
@example
nntp+news.gnus.org:gmane.text.docbook.apps
@@ -5036,7 +5040,7 @@ A related variable is @code{nnmail-extra-headers}, which controls when
to include extra headers when generating overview (@acronym{NOV}) files.
If you have old overview files, you should regenerate them after
changing this variable, by entering the server buffer using @kbd{^},
-and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
+and then @kbd{g} on the appropriate mail server (e.g., nnml) to cause
regeneration.
@vindex gnus-summary-line-format
@@ -7120,8 +7124,8 @@ arrived on the mailing list. Consequently, when sorting sub-threads
using the default @code{gnus-thread-sort-by-number}, responses can end
up appearing before the article to which they are responding to.
Setting this variable to an alternate value
-(e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
-appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
+(e.g., @code{gnus-thread-sort-by-date}), in a group's parameters or in an
+appropriate hook (e.g., @code{gnus-summary-generate-hook}) can produce a
more logical sub-thread ordering in such instances.
@end table
@@ -7908,7 +7912,7 @@ reader to use this setting.
@item gnus-summary-save-in-pipe
@findex gnus-summary-save-in-pipe
Pipe the article to a shell command. This function takes optional two
-arguments COMMAND and RAW. Valid values for COMMAND include:
+arguments COMMAND and RAW@. Valid values for COMMAND include:
@itemize @bullet
@item a string@*
@@ -8916,7 +8920,7 @@ Unreadable articles that tell you to read them with Caesar rotate or rot13.
(Typically offensive jokes and such.)
It's commonly called ``rot13'' because each letter is rotated 13
-positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter
+positions in the alphabet, e.g., @samp{B} (letter #2) -> @samp{O} (letter
#15). It is sometimes referred to as ``Caesar rotate'' because Caesar
is rumored to have employed this form of, uh, somewhat weak encryption.
@@ -9037,7 +9041,7 @@ Capitalize the first word in each sentence
@item W c
@kindex W c (Summary)
@findex gnus-article-remove-cr
-Translate CRLF pairs (i. e., @samp{^M}s on the end of the lines) into LF
+Translate CRLF pairs (i.e., @samp{^M}s on the end of the lines) into LF
(this takes care of DOS line endings), and then translate any remaining
CRs into LF (this takes care of Mac line endings)
(@code{gnus-article-remove-cr}).
@@ -9587,13 +9591,13 @@ Piconify the @code{From} header (@code{gnus-treat-from-picon}).
@item W D m
@kindex W D m (Summary)
@findex gnus-treat-mail-picon
-Piconify all mail headers (i. e., @code{Cc}, @code{To})
+Piconify all mail headers (i.e., @code{Cc}, @code{To})
(@code{gnus-treat-mail-picon}).
@item W D n
@kindex W D n (Summary)
@findex gnus-treat-newsgroups-picon
-Piconify all news headers (i. e., @code{Newsgroups} and
+Piconify all news headers (i.e., @code{Newsgroups} and
@code{Followup-To}) (@code{gnus-treat-newsgroups-picon}).
@item W D g
@@ -9604,7 +9608,7 @@ Gravatarify the @code{From} header (@code{gnus-treat-from-gravatar}).
@item W D h
@kindex W D h (Summary)
@findex gnus-treat-mail-gravatar
-Gravatarify all mail headers (i. e., @code{Cc}, @code{To})
+Gravatarify all mail headers (i.e., @code{Cc}, @code{To})
(@code{gnus-treat-from-gravatar}).
@item W D D
@@ -9885,7 +9889,7 @@ displayed. This variable overrides
This variable is only used when @code{gnus-inhibit-mime-unbuttonizing}
is @code{nil}.
-To see e.g. security buttons but no other buttons, you could set this
+E.g., to see security buttons but no other buttons, you could set this
variable to @code{("multipart/signed")} and leave
@code{gnus-unbuttonized-mime-types} at the default value.
@@ -9904,8 +9908,8 @@ default value is @code{nil}.
@vindex gnus-article-mime-part-function
For each @acronym{MIME} part, this function will be called with the @acronym{MIME}
handle as the parameter. The function is meant to be used to allow
-users to gather information from the article (e. g., add Vcard info to
-the bbdb database) or to do actions based on parts (e. g., automatically
+users to gather information from the article (e.g., add Vcard info to
+the bbdb database) or to do actions based on parts (e.g., automatically
save all jpegs into some directory).
Here's an example function the does the latter:
@@ -10230,7 +10234,7 @@ visible effects normally, but it'll make this command work a whole lot
faster. Of course, it'll make group entry somewhat slow.
@vindex gnus-refer-thread-limit
-The @code{gnus-refer-thread-limit} variable says how many old (i. e.,
+The @code{gnus-refer-thread-limit} variable says how many old (i.e.,
articles before the first displayed in the current group) headers to
fetch when doing this command. The default is 200. If @code{t}, all
the available headers will be fetched. This variable can be overridden
@@ -11275,13 +11279,13 @@ things to work:
@enumerate
@item
To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to
-install an OpenPGP implementation such as GnuPG. The Lisp interface
+install an OpenPGP implementation such as GnuPG@. The Lisp interface
to GnuPG included with Emacs is called EasyPG (@pxref{Top, ,EasyPG,
epa, EasyPG Assistant user's manual}), but PGG (@pxref{Top, ,PGG, pgg,
PGG Manual}), and Mailcrypt are also supported.
@item
-To handle @acronym{S/MIME} message, you need to install OpenSSL. OpenSSL 0.9.6
+To handle @acronym{S/MIME} message, you need to install OpenSSL@. OpenSSL 0.9.6
or newer is recommended.
@end enumerate
@@ -11773,7 +11777,7 @@ directory, the oldest files will be deleted. The default is 500MB.
@item gnus-html-frame-width
@vindex gnus-html-frame-width
-The width to use when rendering HTML. The default is 70.
+The width to use when rendering HTML@. The default is 70.
@item gnus-max-image-proportion
@vindex gnus-max-image-proportion
@@ -12218,7 +12222,7 @@ Displayed when headers are hidden in the article buffer.
@item p
Displayed when article is digitally signed or encrypted, and Gnus has
hidden the security headers. (N.B. does not tell anything about
-security status, i.e. good or bad signature.)
+security status, i.e., good or bad signature.)
@item s
Displayed when the signature has been hidden in the Article buffer.
@@ -12683,7 +12687,7 @@ copy of a sent message. The current buffer (when the hook is run)
contains the message including the message header. Changes made to
the message will only affect the Gcc copy, but not the original
message. You can use these hooks to edit the copy (and influence
-subsequent transformations), e.g. remove MML secure tags
+subsequent transformations), e.g., remove MML secure tags
(@pxref{Signing and encrypting}).
@end table
@@ -13028,7 +13032,7 @@ personal mail group.
A foreign group (or any group, really) is specified by a @dfn{name} and
a @dfn{select method}. To take the latter first, a select method is a
-list where the first element says what back end to use (e.g. @code{nntp},
+list where the first element says what back end to use (e.g., @code{nntp},
@code{nnspool}, @code{nnml}) and the second element is the @dfn{server
name}. There may be additional elements in the select method, where the
value may have special meaning for the back end in question.
@@ -13405,7 +13409,7 @@ Server variables are often called @dfn{server parameters}.
@subsection Servers and Methods
Wherever you would normally use a select method
-(e.g. @code{gnus-secondary-select-method}, in the group select method,
+(e.g., @code{gnus-secondary-select-method}, in the group select method,
when browsing a foreign server) you can use a virtual server name
instead. This could potentially save lots of typing. And it's nice all
over.
@@ -13749,7 +13753,7 @@ inhibit Gnus to add a @code{Message-ID} header, you could say:
(add-hook 'nntp-prepare-post-hook 'canlock-insert-header)
@end lisp
-Note that not all servers support the recommended ID. This works for
+Note that not all servers support the recommended ID@. This works for
INN versions 2.3.0 and later, for instance.
@item nntp-server-list-active-group
@@ -14268,7 +14272,7 @@ Here's a complete example @code{nnimap} backend with a client-side
@cindex reading mail
@cindex mail
-Reading mail with a newsreader---isn't that just plain WeIrD? But of
+Reading mail with a newsreader---isn't that just plain WeIrD@? But of
course.
@menu
@@ -14684,8 +14688,8 @@ The name of the @acronym{POP} server. The default is taken from the
@env{MAILHOST} environment variable.
@item :port
-The port number of the @acronym{POP} server. This can be a number (eg,
-@samp{:port 1234}) or a string (eg, @samp{:port "pop3"}). If it is a
+The port number of the @acronym{POP} server. This can be a number (e.g.,
+@samp{:port 1234}) or a string (e.g., @samp{:port "pop3"}). If it is a
string, it should be a service name as listed in @file{/etc/services} on
Unix systems. The default is @samp{"pop3"}. On some systems you might
need to specify it as @samp{"pop-3"} instead.
@@ -14858,7 +14862,7 @@ Two example maildir mail sources:
@item imap
Get mail from a @acronym{IMAP} server. If you don't want to use
-@acronym{IMAP} as intended, as a network mail reading protocol (ie
+@acronym{IMAP} as intended, as a network mail reading protocol (i.e.,
with nnimap), for some reason or other, Gnus let you treat it similar
to a @acronym{POP} server and fetches articles from a given
@acronym{IMAP} mailbox. @xref{Using IMAP}, for more information.
@@ -15392,7 +15396,7 @@ Where @code{nnmail-split-lowercase-expanded} controls whether the
lowercase of the matched string should be used for the substitution.
Setting it as non-@code{nil} is useful to avoid the creation of multiple
groups when users send to an address using different case
-(i.e. mailing-list@@domain vs Mailing-List@@Domain). The default value
+(i.e., mailing-list@@domain vs Mailing-List@@Domain). The default value
is @code{t}.
@findex nnmail-split-fancy-with-parent
@@ -15926,7 +15930,7 @@ Translate all @samp{TAB} characters into @samp{SPACE} characters.
@c @findex nnmail-fix-eudora-headers
@cindex Eudora
@cindex Pegasus
-Some mail user agents (e.g. Eudora and Pegasus) produce broken
+Some mail user agents (e.g., Eudora and Pegasus) produce broken
@code{References} headers, but correct @code{In-Reply-To} headers. This
function will get rid of the @code{References} header if the headers
contain a line matching the regular expression
@@ -16935,7 +16939,7 @@ Some web sites have an RDF Site Summary (@acronym{RSS}).
@acronym{RSS} is a format for summarizing headlines from news related
sites (such as BBC or CNN). But basically anything list-like can be
presented as an @acronym{RSS} feed: weblogs, changelogs or recent
-changes to a wiki (e.g. @url{http://cliki.net/recent-changes.rdf}).
+changes to a wiki (e.g., @url{http://cliki.net/recent-changes.rdf}).
@acronym{RSS} has a quite regular and nice interface, and it's
possible to get the information Gnus needs to keep groups updated.
@@ -16999,7 +17003,7 @@ in Emacs or @code{escape-quoted} in XEmacs).
@item nnrss-ignore-article-fields
@vindex nnrss-ignore-article-fields
Some feeds update constantly article fields during their publications,
-e.g. to indicate the number of comments. However, if there is
+e.g., to indicate the number of comments. However, if there is
a difference between the local article and the distant one, the latter
is considered to be new. To avoid this and discard some fields, set this
variable to the list of fields to be ignored. The default is
@@ -17169,7 +17173,7 @@ After all, Gnus is a newsreader, in case you're forgetting.
@code{nneething} does this in a two-step process. First, it snoops each
file in question. If the file looks like an article (i.e., the first
few lines look like headers), it will use this as the head. If this is
-just some arbitrary file without a head (e.g. a C source file),
+just some arbitrary file without a head (e.g., a C source file),
@code{nneething} will cobble up a header out of thin air. It will use
file ownership, name and date and do whatever it can with these
elements.
@@ -17891,7 +17895,7 @@ two variables are probably the only ones you will want to change:
@defvar nndiary-reminders
This is the list of times when you want to be reminded of your
-appointments (e.g. 3 weeks before, then 2 days before, then 1 hour
+appointments (e.g., 3 weeks before, then 2 days before, then 1 hour
before and that's it). Remember that ``being reminded'' means that the
diary message will pop up as brand new and unread again when you get new
mail.
@@ -17943,9 +17947,9 @@ see the event's date.
@code{gnus-diary} provides two supplemental user formats to be used in
summary line formats. @code{D} corresponds to a formatted time string
-for the next occurrence of the event (e.g. ``Sat, Sep 22 01, 12:00''),
+for the next occurrence of the event (e.g., ``Sat, Sep 22 01, 12:00''),
while @code{d} corresponds to an approximate remaining time until the
-next occurrence of the event (e.g. ``in 6 months, 1 week'').
+next occurrence of the event (e.g., ``in 6 months, 1 week'').
For example, here's how Joe's birthday is displayed in my
@code{nndiary+diary:birthdays} summary buffer (note that the message is
@@ -18399,7 +18403,7 @@ to know: The functions are called with no parameters, but the
useful values.
For example, you could decide that you don't want to download articles
-that were posted more than a certain number of days ago (e.g. posted
+that were posted more than a certain number of days ago (e.g., posted
more than @code{gnus-agent-expire-days} ago) you might write a function
something along the lines of the following:
@@ -19119,7 +19123,7 @@ Hook run when finished fetching articles.
@item gnus-agent-cache
@vindex gnus-agent-cache
Variable to control whether use the locally stored @acronym{NOV} and
-articles when plugged, e.g. essentially using the Agent as a cache.
+articles when plugged, e.g., essentially using the Agent as a cache.
The default is non-@code{nil}, which means to use the Agent as a cache.
@item gnus-agent-go-online
@@ -19370,7 +19374,7 @@ entries into this list, and upon group exit, this list is saved.
The current score file is by default the group's local score file, even
if no such score file actually exists. To insert score commands into
-some other score file (e.g. @file{all.SCORE}), you must first make this
+some other score file (e.g., @file{all.SCORE}), you must first make this
score file the current one.
General score commands that don't actually change the score file:
@@ -19986,7 +19990,7 @@ header uses.
This match key is somewhat special, in that it will match the
@code{From} header, and affect the score of not only the matching
articles, but also all followups to the matching articles. This allows
-you e.g. increase the score of followups to your own articles, or
+you to increase the score of followups to your own articles, or
decrease the score of followups to the articles of some known
trouble-maker. Uses the same match types as the @code{From} header
uses. (Using this match key will lead to creation of @file{ADAPT}
@@ -20066,7 +20070,7 @@ interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{c y}) the
rest. Next time you enter the group, you will see new articles in the
interesting threads, plus any new threads.
-I.e.---the orphan score atom is for high-volume groups where a few
+I.e., the orphan score atom is for high-volume groups where a few
interesting threads which can't be found automatically by ordinary
scoring rules exist.
@@ -20961,7 +20965,7 @@ When score files are loaded and @code{gnus-decay-scores} is
non-@code{nil}, Gnus will run the score files through the decaying
mechanism thereby lowering the scores of all non-permanent score rules.
If @code{gnus-decay-scores} is a regexp, only score files matching this
-regexp are treated. E.g. you may set it to @samp{\\.ADAPT\\'} if only
+regexp are treated. E.g., you may set it to @samp{\\.ADAPT\\'} if only
@emph{adaptive} score files should be decayed. The decay itself if
performed by the @code{gnus-decay-score-function} function, which is
@code{gnus-decay-score} by default. Here's the definition of that
@@ -21168,7 +21172,7 @@ features (inspired by the Google search input language):
@item Boolean query operators
AND, OR, and NOT are supported, and parentheses can be used to control
-operator precedence, e.g. (emacs OR xemacs) AND linux. Note that
+operator precedence, e.g., (emacs OR xemacs) AND linux. Note that
operators must be written with all capital letters to be
recognized. Also preceding a term with a - sign is equivalent to NOT
term.
@@ -21213,12 +21217,12 @@ Gmane queries follow a simple query language:
@table @samp
@item Boolean query operators
AND, OR, NOT (or AND NOT), and XOR are supported, and brackets can be
-used to control operator precedence, e.g. (emacs OR xemacs) AND linux.
+used to control operator precedence, e.g., (emacs OR xemacs) AND linux.
Note that operators must be written with all capital letters to be
recognized.
@item Required and excluded terms
-+ and - can be used to require or exclude terms, e.g. football -american
++ and - can be used to require or exclude terms, e.g., football -american
@item Unicode handling
The search engine converts all text to utf-8, so searching should work
@@ -21226,8 +21230,8 @@ in any language.
@item Stopwords
Common English words (like 'the' and 'a') are ignored by default. You
-can override this by prefixing such words with a + (e.g. +the) or
-enclosing the word in quotes (e.g. "the").
+can override this by prefixing such words with a + (e.g., +the) or
+enclosing the word in quotes (e.g., "the").
@end table
@@ -21417,7 +21421,7 @@ bound to mairix searches and are automatically updated.
@end menu
@c FIXME: The markup in this section might need improvement.
-@c E.g. adding @samp, @var, @file, @command, etc.
+@c E.g., adding @samp, @var, @file, @command, etc.
@c Cf. (info "(texinfo)Indicating")
@node About mairix
@@ -21425,7 +21429,7 @@ bound to mairix searches and are automatically updated.
Mairix is a tool for indexing and searching words in locally stored
mail. It was written by Richard Curnow and is licensed under the
-GPL. Mairix comes with most popular GNU/Linux distributions, but it also
+GPL@. Mairix comes with most popular GNU/Linux distributions, but it also
runs under Windows (with cygwin), Mac OS X and Solaris. The homepage can
be found at
@uref{http://www.rpcurnow.force9.co.uk/mairix/index.html}
@@ -21455,8 +21459,8 @@ searches.
Mairix searches local mail---that means, mairix absolutely must have
direct access to your mail folders. If your mail resides on another
-server (e.g. an @acronym{IMAP} server) and you happen to have shell
-access, @code{nnmairix} supports running mairix remotely, e.g. via ssh.
+server (e.g., an @acronym{IMAP} server) and you happen to have shell
+access, @code{nnmairix} supports running mairix remotely, e.g., via ssh.
Additionally, @code{nnmairix} only supports the following Gnus back
ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}. You must use
@@ -21476,7 +21480,7 @@ the package @file{mairix.el}, which comes with Emacs 23.
The back end @code{nnmairix} enables you to call mairix from within Gnus,
either to query mairix with a search term or to update the
database. While visiting a message in the summary buffer, you can use
-several pre-defined shortcuts for calling mairix, e.g. to quickly
+several pre-defined shortcuts for calling mairix, e.g., to quickly
search for all mails from the sender of the current message or to
display the whole thread associated with the message, even if the
mails are in different folders.
@@ -21484,8 +21488,8 @@ mails are in different folders.
Additionally, you can create permanent @code{nnmairix} groups which are bound
to certain mairix searches. This way, you can easily create a group
containing mails from a certain sender, with a certain subject line or
-even for one specific thread based on the Message-ID. If you check for
-new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they
+even for one specific thread based on the Message-ID@. If you check for
+new mail in these folders (e.g., by pressing @kbd{g} or @kbd{M-g}), they
automatically update themselves by calling mairix.
You might ask why you need @code{nnmairix} at all, since mairix already
@@ -21495,7 +21499,7 @@ does not---at least not without problems. Most probably you will get
strange article counts, and sometimes you might see mails which Gnus
claims have already been canceled and are inaccessible. This is due to
the fact that Gnus isn't really amused when things are happening behind
-its back. Another problem can be the mail back end itself, e.g. if you
+its back. Another problem can be the mail back end itself, e.g., if you
use mairix with an @acronym{IMAP} server (I had Dovecot complaining
about corrupt index files when mairix changed the contents of the search
group). Using @code{nnmairix} should circumvent these problems.
@@ -21510,7 +21514,7 @@ binary so that the search results are stored in folders named
present these folders in the Gnus front end only with @code{<NAME>}.
You can use an existing mail back end where you already store your mail,
but if you're uncomfortable with @code{nnmairix} creating new mail
-groups alongside your other mail, you can also create e.g. a new
+groups alongside your other mail, you can also create, e.g., a new
@code{nnmaildir} or @code{nnml} server exclusively for mairix, but then
make sure those servers do not accidentally receive your new mail
(@pxref{nnmairix caveats}). A special case exists if you want to use
@@ -21619,7 +21623,7 @@ Just hit @kbd{TAB} to see the available servers. Currently, servers
which are accessed through @code{nnmaildir}, @code{nnimap} and
@code{nnml} are supported. As explained above, for locally stored
mails, this can be an existing server where you store your mails.
-However, you can also create e.g. a new @code{nnmaildir} or @code{nnml}
+However, you can also create, e.g., a new @code{nnmaildir} or @code{nnml}
server exclusively for @code{nnmairix} in your secondary select methods
(@pxref{Finding the News}). If you use a secondary @code{nnml} server
just for mairix, make sure that you explicitly set the server variable
@@ -21632,20 +21636,20 @@ just for mairix, make sure that you explicitly set the server variable
@vindex nnmairix-mairix-search-options
The @strong{command} to call the mairix binary. This will usually just
be @code{mairix}, but you can also choose something like @code{ssh
-SERVER mairix} if you want to call mairix remotely, e.g. on your
+SERVER mairix} if you want to call mairix remotely, e.g., on your
@acronym{IMAP} server. If you want to add some default options to
mairix, you could do this here, but better use the variable
@code{nnmairix-mairix-search-options} instead.
@item
The name of the @strong{default search group}. This will be the group
-where all temporary mairix searches are stored, i.e. all searches which
+where all temporary mairix searches are stored, i.e., all searches which
are not bound to permanent @code{nnmairix} groups. Choose whatever you
like.
@item
If the mail back end is @code{nnimap} or @code{nnmaildir}, you will be
-asked if you work with @strong{Maildir++}, i.e. with hidden maildir
+asked if you work with @strong{Maildir++}, i.e., with hidden maildir
folders (=beginning with a dot). For example, you have to answer
@samp{yes} here if you work with the Dovecot @acronym{IMAP}
server. Otherwise, you should answer @samp{no} here.
@@ -21704,7 +21708,7 @@ Changes the search query for the @code{nnmairix} group under cursor
@kindex G b t (Group)
@findex nnmairix-group-toggle-threads-this-group
Toggles the 'threads' parameter for the @code{nnmairix} group under cursor,
-i.e. if you want see the whole threads of the found messages
+i.e., if you want see the whole threads of the found messages
(@code{nnmairix-group-toggle-threads-this-group}).
@item G b u
@@ -21794,8 +21798,8 @@ calling @code{nnmairix-search} with @samp{f:From}.
@kindex $ o (Summary)
@findex nnmairix-goto-original-article
(Only in @code{nnmairix} groups!) Tries determine the group this article
-originally came from and displays the article in this group, so that
-e.g. replying to this article the correct posting styles/group
+originally came from and displays the article in this group, so that,
+e.g., replying to this article the correct posting styles/group
parameters are applied (@code{nnmairix-goto-original-article}). This
function will use the registry if available, but can also parse the
article file name as a fallback method.
@@ -21893,7 +21897,7 @@ way slower than the registry---if you set hundreds or even thousands of
marks this way, it might take some time. You can avoid this situation by
setting @code{nnmairix-only-use-registry} to t.
-Maybe you also want to propagate marks the other way round, i.e. if you
+Maybe you also want to propagate marks the other way round, i.e., if you
tick an article in a "real" mail group, you'd like to have the same
article in a @code{nnmairix} group ticked, too. For several good
reasons, this can only be done efficiently if you use maildir. To
@@ -21947,7 +21951,7 @@ Example: search group for ticked articles
For example, you can create a group for all ticked articles, where the
articles always stay unread:
-Hit @kbd{G b g}, enter group name (e.g. @samp{important}), use
+Hit @kbd{G b g}, enter group name (e.g., @samp{important}), use
@samp{F:f} as query and do not include threads.
Now activate marks propagation for this group by using @kbd{G b p}. Then
@@ -21960,7 +21964,7 @@ tick marks from the original article. The other possibility is to set
@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above
comments about this option. If it works for you, the tick marks should
also exist in the @code{nnmairix} group and you can remove them as usual,
-e.g. by marking an article as read.
+e.g., by marking an article as read.
When you have removed a tick mark from the original article, this
article should vanish from the @code{nnmairix} group after you have updated the
@@ -21976,7 +21980,7 @@ the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can
see them when you enter the back end server in the server buffer. You
should not subscribe these groups! Unfortunately, these groups will
usually get @emph{auto-subscribed} when you use @code{nnmaildir} or
-@code{nnml}, i.e. you will suddenly see groups of the form
+@code{nnml}, i.e., you will suddenly see groups of the form
@samp{zz_mairix*} pop up in your group buffer. If this happens to you,
simply kill these groups with C-k. For avoiding this, turn off
auto-subscription completely by setting the variable
@@ -22588,7 +22592,7 @@ size spec per split.
Point will be put in the buffer that has the optional third element
@code{point}. In a @code{frame} split, the last subsplit having a leaf
-split where the tag @code{frame-focus} is a member (i.e. is the third or
+split where the tag @code{frame-focus} is a member (i.e., is the third or
fourth element in the list, depending on whether the @code{point} tag is
present) gets focus.
@@ -22923,11 +22927,11 @@ quicker.
@vindex gnus-mode-non-string-length
By default, Gnus displays information on the current article in the mode
lines of the summary and article buffers. The information Gnus wishes
-to display (e.g. the subject of the article) is often longer than the
+to display (e.g., the subject of the article) is often longer than the
mode lines, and therefore have to be cut off at some point. The
@code{gnus-mode-non-string-length} variable says how long the other
elements on the line is (i.e., the non-info part). If you put
-additional elements on the mode line (e.g. a clock), you should modify
+additional elements on the mode line (e.g., a clock), you should modify
this variable:
@c Hook written by Francesco Potorti` <pot@cnuce.cnr.it>
@@ -23947,7 +23951,7 @@ Specifiers}) follow.
@end lisp
Once you manage to process your incoming spool somehow, thus making
-the mail contain e.g.@: a header indicating it is spam, you are ready to
+the mail contain, e.g., a header indicating it is spam, you are ready to
filter it out. Using normal split methods (@pxref{Splitting Mail}):
@lisp
@@ -24625,7 +24629,7 @@ From Reiner Steib <reiner.steib@@gmx.de>.
My provider has set up bogofilter (in combination with @acronym{DCC}) on
the mail server (@acronym{IMAP}). Recognized spam goes to
@samp{spam.detected}, the rest goes through the normal filter rules,
-i.e. to @samp{some.folder} or to @samp{INBOX}. Training on false
+i.e., to @samp{some.folder} or to @samp{INBOX}. Training on false
positives or negatives is done by copying or moving the article to
@samp{training.ham} or @samp{training.spam} respectively. A cron job on
the server feeds those to bogofilter with the suitable ham or spam
@@ -24650,7 +24654,7 @@ does most of the job for me:
@item @b{The Spam folder:}
In the folder @samp{spam.detected}, I have to check for false positives
-(i.e. legitimate mails, that were wrongly judged as spam by
+(i.e., legitimate mails, that were wrongly judged as spam by
bogofilter or DCC).
Because of the @code{gnus-group-spam-classification-spam} entry, all
@@ -24663,7 +24667,7 @@ and deleted from the @samp{spam.detected} folder.
The @code{gnus-article-sort-by-chars} entry simplifies detection of
false positives for me. I receive lots of worms (sweN, @dots{}), that all
-have a similar size. Grouping them by size (i.e. chars) makes finding
+have a similar size. Grouping them by size (i.e., chars) makes finding
other false positives easier. (Of course worms aren't @i{spam}
(@acronym{UCE}, @acronym{UBE}) strictly speaking. Anyhow, bogofilter is
an excellent tool for filtering those unwanted mails for me.)
@@ -24691,7 +24695,7 @@ groups as spam and reports the to Gmane at group exit:
Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)}
because I don't read the groups directly from news.gmane.org, but
-through my local news server (leafnode). I.e. the article numbers are
+through my local news server (leafnode). I.e., the article numbers are
not the same as on news.gmane.org, thus @code{spam-report.el} has to check
the @code{X-Report-Spam} header to find the correct number.
@@ -24830,7 +24834,7 @@ messages are not assumed to be spam or ham.
Set this variable to @code{t} if you want to use the BBDB as an
implicit filter, meaning that every message will be considered spam
-unless the sender is in the BBDB. Use with care. Only sender
+unless the sender is in the BBDB@. Use with care. Only sender
addresses in the BBDB will be allowed through; all others will be
classified as spammers.
@@ -25294,7 +25298,7 @@ SpamOracle.
@defvar spam-spamoracle-binary
Gnus uses the SpamOracle binary called @file{spamoracle} found in the
-user's PATH. Using the variable @code{spam-spamoracle-binary}, this
+user's PATH@. Using the variable @code{spam-spamoracle-binary}, this
can be customized.
@end defvar
@@ -25359,7 +25363,7 @@ messages.
@end example
For this group the @code{spam-use-spamoracle} is installed for both
ham and spam processing. If the group contains spam message
-(e.g. because SpamOracle has not had enough sample messages yet) and
+(e.g., because SpamOracle has not had enough sample messages yet) and
the user marks some messages as spam messages, these messages will be
processed by SpamOracle. The processor sends the messages to
SpamOracle as new samples for spam.
@@ -25805,7 +25809,7 @@ of said features in case your attention span is... never mind.
Split messages to their parent
This keeps discussions in the same group. You can use the subject and
-the sender in addition to the Message-ID. Several strategies are
+the sender in addition to the Message-ID@. Several strategies are
available.
@item
@@ -26507,7 +26511,7 @@ Message Mode is able to request notifications from the receiver.
@cindex RFC 1991
@cindex RFC 2440
RFC 1991 is the original @acronym{PGP} message specification,
-published as an informational RFC. RFC 2440 was the follow-up, now
+published as an informational RFC@. RFC 2440 was the follow-up, now
called Open PGP, and put on the Standards Track. Both document a
non-@acronym{MIME} aware @acronym{PGP} format. Gnus supports both
encoding (signing and encryption) and decoding (verification and
@@ -27480,7 +27484,7 @@ group, which is created automatically.
values.
@item
-@code{gnus-summary-goto-article} now accept Message-ID's.
+@code{gnus-summary-goto-article} now accept Message-IDs.
@item
A new Message command for deleting text in the body of a message
@@ -28234,7 +28238,7 @@ The nnml and nnfolder back ends store marks for each groups.
This makes it possible to take backup of nnml/nnfolder servers/groups
separately of @file{~/.newsrc.eld}, while preserving marks. It also
makes it possible to share articles and marks between users (without
-sharing the @file{~/.newsrc.eld} file) within e.g. a department. It
+sharing the @file{~/.newsrc.eld} file) within, e.g., a department. It
works by storing the marks stored in @file{~/.newsrc.eld} in a per-group
file @file{.marks} (for nnml) and @file{@var{groupname}.mrk} (for
nnfolder, named @var{groupname}). If the nnml/nnfolder is moved to
@@ -28937,10 +28941,10 @@ can use @kbd{M-x toggle-debug-on-quit} and press @kbd{C-g} when things are
slow, and then try to analyze the backtrace (repeating the procedure
helps isolating the real problem areas).
-A fancier approach is to use the elisp profiler, ELP. The profiler is
+A fancier approach is to use the elisp profiler, ELP@. The profiler is
(or should be) fully documented elsewhere, but to get you started
there are a few steps that need to be followed. First, instrument the
-part of Gnus you are interested in for profiling, e.g. @kbd{M-x
+part of Gnus you are interested in for profiling, e.g., @kbd{M-x
elp-instrument-package RET gnus} or @kbd{M-x elp-instrument-package
RET message}. Then perform the operation that is slow and press
@kbd{M-x elp-results}. You will then see which operations that takes
diff --git a/doc/misc/gpl.texi b/doc/misc/gpl.texi
index 97a17e1914e..0e2e212acb1 100644
--- a/doc/misc/gpl.texi
+++ b/doc/misc/gpl.texi
@@ -623,12 +623,12 @@ later version.
@item Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+APPLICABLE LAW@. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+A PARTICULAR PURPOSE@. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU@. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
@@ -680,7 +680,7 @@ your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE@. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index feef325ad30..436fa28b1fb 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -382,7 +382,7 @@ at point.
@section Lesson I: Development Cycle
The purpose of this tutorial is to guide you through a very basic
-development cycle using IDLWAVE. We will paste a simple program into
+development cycle using IDLWAVE@. We will paste a simple program into
a buffer and use the shell to compile, debug and run it. On the way
we will use many of the important IDLWAVE commands. Note, however,
that IDLWAVE has many more capabilities than covered here, which can
@@ -444,7 +444,7 @@ buffer with @kbd{C-x h}, and indent the whole region with
highlighted in different colors, if you have set up support for
font-lock.
-Let's check out two particular editing features of IDLWAVE. Place the
+Let's check out two particular editing features of IDLWAVE@. Place the
cursor after the @code{end} statement of the @code{for} loop and press
@key{SPC}. IDLWAVE blinks back to the beginning of the block and
changes the generic @code{end} to the specific @code{endfor}
@@ -464,7 +464,7 @@ First, let's launch the IDLWAVE shell. You do this with the command
@kbd{C-c C-s}. The Emacs window will split or another window will popup
to display IDL running in a shell interaction buffer. Type a few
commands like @code{print,!PI} to convince yourself that you can work
-there just as well as in a terminal, or the IDLDE. Use the arrow keys
+there just as well as in a terminal, or the IDLDE@. Use the arrow keys
to cycle through your command history. Are we having fun now?
Now go back to the source window and type @kbd{C-c C-d C-c} to compile
@@ -602,7 +602,7 @@ there is another, more user-friendly way to customize all the IDLWAVE
variables. You can access it through the IDLWAVE menu in one of the
@file{.pro} buffers, menu item @code{Customize->Browse IDLWAVE
Group}. Here you'll be presented with all the various variables grouped
-into categories. You can navigate the hierarchy (e.g. @samp{IDLWAVE
+into categories. You can navigate the hierarchy (e.g., @samp{IDLWAVE
Code Formatting->Idlwave Abbrev And Indent Action->Idlwave Expand
Generic End} to turn on @code{END} expansion), read about the variables,
change them, and `Save for Future Sessions'. Few of these variables
@@ -691,7 +691,7 @@ go for a cup of coffee while IDLWAVE collects information for each and
every IDL routine on your search path. All this information is
written to the file @file{.idlwave/idlusercat.el} in your home
directory and will from now on automatically load whenever you use
-IDLWAVE. You may find it necessary to rebuild the catalog on occasion
+IDLWAVE@. You may find it necessary to rebuild the catalog on occasion
as your local libraries change, or build a library catalog for those
directories instead. Invoke routine info (@kbd{C-c ?}) or completion
(@kbd{M-@key{TAB}}) on any routine or partial routine name you know to
@@ -715,7 +715,7 @@ Usage: Result = READFITS(filename, header, heap)
...
@end example
-I hope you made it until here. Now you are set to work with IDLWAVE.
+I hope you made it until here. Now you are set to work with IDLWAVE@.
On the way you will want to change other things, and to learn more
about the possibilities not discussed in this short tutorial. Read
the manual, look at the documentation strings of interesting variables
@@ -789,7 +789,7 @@ continuation lines.
@cindex Foreign code, adapting
@cindex Indentation, of foreign code
@kindex C-M-\
-To re-indent a larger portion of code (e.g. when working with foreign
+To re-indent a larger portion of code (e.g., when working with foreign
code written with different conventions), use @kbd{C-M-\}
(@code{indent-region}) after marking the relevant code. Useful marking
commands are @kbd{C-x h} (the entire file) or @kbd{C-M-h} (the current
@@ -1057,7 +1057,7 @@ altogether, and use the more sensible alternative IDL provides:
@end example
@noindent This simultaneously solves the font-lock problem and is more
-consistent with the notation for hexadecimal numbers, e.g. @code{'C5'XB}.
+consistent with the notation for hexadecimal numbers, e.g., @code{'C5'XB}.
@node Routine Info, Online Help, Code Formatting, The IDLWAVE Major Mode
@section Routine Info
@@ -1111,7 +1111,7 @@ method exists in several classes, IDLWAVE queries for the class of the
object, unless the class is already known through a text property on the
@samp{->} operator (@pxref{Object Method Completion and Class
Ambiguity}), or by having been explicitly included in the call
-(e.g. @code{a->myclass::Foo}).
+(e.g., @code{a->myclass::Foo}).
@cindex Calling sequences
@cindex Keywords of a routine
@@ -1168,7 +1168,7 @@ will automatically split into the next two.
Any routines discovered in library catalogs (@pxref{Library
Catalogs}), will display the category assigned during creation,
-e.g. @samp{NasaLib}. For routines not discovered in this way, you can
+e.g., @samp{NasaLib}. For routines not discovered in this way, you can
create additional categories based on the routine's filename using the
variable @code{idlwave-special-lib-alist}.
@@ -1248,12 +1248,12 @@ Maximum number of source files displayed in the Routine Info window.
@cindex Speed, of online help
@cindex XML Help Catalog
-For IDL system routines, extensive documentation is supplied with IDL.
+For IDL system routines, extensive documentation is supplied with IDL@.
IDLWAVE can access the HTML version of this documentation very quickly
and accurately, based on the local context. This can be @emph{much}
faster than using the IDL online help application, because IDLWAVE
usually gets you to the right place in the documentation directly ---
-e.g. a specific keyword of a routine --- without any additional browsing
+e.g., a specific keyword of a routine --- without any additional browsing
and scrolling.
For this online help to work, an HTML version of the IDL documentation
@@ -1331,7 +1331,7 @@ When using completion and Emacs pops up a @file{*Completions*} buffer
with possible completions, clicking with @kbd{Mouse-3} on a completion
item invokes help on that item (@pxref{Completion}). Items for which
help is available in the online system documentation (vs. just the
-program source itself) will be emphasized (e.g. colored blue).
+program source itself) will be emphasized (e.g., colored blue).
@end itemize
@noindent
In both cases, a blue face indicates that the item is documented in
@@ -1501,7 +1501,7 @@ displaying source file.
@defopt idlwave-help-doclib-name (@code{"name"})
The case-insensitive heading word in doclib headers to locate the
-@emph{name} section. Can be a regexp, e.g. @code{"\\(name\\|nom\\)"}.
+@emph{name} section. Can be a regexp, e.g., @code{"\\(name\\|nom\\)"}.
@end defopt
@defopt idlwave-help-doclib-keyword (@code{"KEYWORD"})
@@ -1576,7 +1576,7 @@ If the list of completions is too long to fit in the
@kbd{M-@key{TAB}} repeatedly. Online help (if installed) for each
possible completion is available by clicking with @kbd{Mouse-3} on the
item. Items for which system online help (from the IDL manual) is
-available will be emphasized (e.g. colored blue). For other items, the
+available will be emphasized (e.g., colored blue). For other items, the
corresponding source code or DocLib header will be used as the help
text.
@@ -1681,14 +1681,14 @@ narrow down the number of possible completions. The variable
@code{idlwave-query-class} can be configured to make such prompting the
default for all methods (not recommended), or selectively for very
common methods for which the number of completing keywords would be too
-large (e.g. @code{Init,SetProperty,GetProperty}).
+large (e.g., @code{Init,SetProperty,GetProperty}).
@cindex Saving object class on @code{->}
@cindex @code{->}
-After you have specified the class for a particular statement (e.g. when
+After you have specified the class for a particular statement (e.g., when
completing the method), IDLWAVE can remember it for the rest of the
editing session. Subsequent completions in the same statement
-(e.g. keywords) can then reuse this class information. This works by
+(e.g., keywords) can then reuse this class information. This works by
placing a text property on the method invocation operator @samp{->},
after which the operator will be shown in a different face (bold by
default). The variable @code{idlwave-store-inquired-class} can be used
@@ -1737,7 +1737,7 @@ be used (as in the buffer).
@cindex Keyword inheritance
@cindex Inheritance, keyword
-Class inheritance affects which methods are called in IDL. An object of
+Class inheritance affects which methods are called in IDL@. An object of
a class which inherits methods from one or more superclasses can
override that method by defining its own method of the same name, extend
the method by calling the method(s) of its superclass(es) in its
@@ -1783,7 +1783,7 @@ class-driven keyword inheritance will be used for Completion.
@cindex Structure tag completion
In many programs, especially those involving widgets, large structures
-(e.g. the @samp{state} structure) are used to communicate among
+(e.g., the @samp{state} structure) are used to communicate among
routines. It is very convenient to be able to complete structure tags,
in the same way as for instance variables (tags) of the @samp{self}
object (@pxref{Object Method Completion and Class Ambiguity}). Add-in
@@ -1795,7 +1795,7 @@ specific assumption: the exact same variable name is used to refer to
the structure in all parts of the program. This is entirely unenforced
by the IDL language, but is a typical convention. If you consistently
refer to the same structure with the same variable name
-(e.g. @samp{state}), structure tags which are read from its definition
+(e.g., @samp{state}), structure tags which are read from its definition
in the same file can be used for completion.
Structure tag completion is not enabled by default. To enable it,
@@ -2070,7 +2070,7 @@ abbreviation strings.
@end defopt
@defopt idlwave-abbrev-move (@code{t})
-Non-@code{nil} means the abbrev hook can move point, e.g. to end up
+Non-@code{nil} means the abbrev hook can move point, e.g., to end up
between the parentheses of a function call.
@end defopt
@@ -2103,7 +2103,7 @@ must be non-@code{nil}.
@item
@cindex Foreign code, adapting
@cindex Actions, applied to foreign code
-Actions can also be applied to a larger piece of code, e.g. to convert
+Actions can also be applied to a larger piece of code, e.g., to convert
foreign code to your own style. To do this, mark the relevant part of
the code and execute @kbd{M-x expand-region-abbrevs}. Useful marking
commands are @kbd{C-x h} (the entire file) or @kbd{C-M-h} (the current
@@ -2185,7 +2185,7 @@ operators (outside of strings and comments, of course), try this in
Note that the modified assignment operators which begin with a word
(@samp{AND=}, @samp{OR=}, @samp{NOT=}, etc.) require a leading space to
be recognized (e.g @code{vAND=4} would be interpreted as a variable
-@code{vAND}). Also note that, since e.g., @code{>} and @code{>=} are
+@code{vAND}). Also note that since, e.g., @code{>} and @code{>=} are
both valid operators, it is impossible to surround both by blanks while
they are being typed. Similarly with @code{&} and @code{&&}. For
these, a compromise is made: the padding is placed on the left, and if
@@ -2605,13 +2605,13 @@ Size of IDL graphics windows popped up by special IDLWAVE command.
@cindex Spells, magic
IDLWAVE works in line input mode: You compose a full command line, using
all the power Emacs gives you to do this. When you press @key{RET}, the
-whole line is sent to IDL. Sometimes it is necessary to send single
+whole line is sent to IDL@. Sometimes it is necessary to send single
characters (without a newline), for example when an IDL program is
waiting for single character input with the @code{GET_KBRD} function.
You can send a single character to IDL with the command @kbd{C-c C-x}
(@code{idlwave-shell-send-char}). When you press @kbd{C-c C-y}
(@code{idlwave-shell-char-mode-loop}), IDLWAVE runs a blocking loop
-which accepts characters and immediately sends them to IDL. The loop
+which accepts characters and immediately sends them to IDL@. The loop
can be exited with @kbd{C-g}. It terminates also automatically when the
current IDL command is finished. Check the documentation of the two
variables described below for a way to make IDL programs trigger
@@ -2745,7 +2745,7 @@ example, if you include in @file{.emacs}:
@end lisp
@noindent a breakpoint can then be set by pressing @kbd{b} while holding down
-@kbd{shift} and @kbd{control} keys, i.e. @kbd{C-S-b}. Compiling a
+@kbd{shift} and @kbd{control} keys, i.e., @kbd{C-S-b}. Compiling a
source file will be on @kbd{C-S-c}, deleting a breakpoint @kbd{C-S-d},
etc. In the remainder of this chapter we will assume that the
@kbd{C-c C-d} bindings are active, but each of these bindings will
@@ -2783,11 +2783,11 @@ more of @code{control}, @code{meta}, @code{super}, @code{hyper},
IDLWAVE helps you set breakpoints and step through code. Setting a
breakpoint in the current line of the source buffer is accomplished
with @kbd{C-c C-d C-b} (@code{idlwave-shell-break-here}). With a
-prefix arg of 1 (i.e. @kbd{C-1 C-c C-d C-b}), the breakpoint gets a
+prefix arg of 1 (i.e., @kbd{C-1 C-c C-d C-b}), the breakpoint gets a
@code{/ONCE} keyword, meaning that it will be deleted after first use.
-With a numeric prefix greater than one (e.g. @kbd{C-4 C-c C-d C-b}),
+With a numeric prefix greater than one (e.g., @kbd{C-4 C-c C-d C-b}),
the breakpoint will only be active the @code{nth} time it is hit.
-With a single non-numeric prefix (i.e. @kbd{C-u C-c C-d C-b}), prompt
+With a single non-numeric prefix (i.e., @kbd{C-u C-c C-d C-b}), prompt
for a condition --- an IDL expression to be evaluated and trigger the
breakpoint only if true. To clear the breakpoint in the current line,
use @kbd{C-c C-d C-d} (@code{idlwave-clear-current-bp}). When
@@ -3042,7 +3042,7 @@ with shortcut of examine type.
Most single-character electric debug bindings use the final keystroke
of the equivalent multiple key commands (which are of course also
-still available), but some differ (e.g. @kbd{e},@kbd{t},@kbd{q},@kbd{x}).
+still available), but some differ (e.g., @kbd{e},@kbd{t},@kbd{q},@kbd{x}).
Some have additional convenience bindings (like @kbd{@key{SPACE}} for
stepping). All prefix and other argument options described in this
section for the commands invoked by electric debug bindings are still
@@ -3106,7 +3106,7 @@ window, but is useful for immediate stepping, etc.
@cindex Mouse binding to print expressions
@kindex C-c C-d C-p
-Do you find yourself repeatedly typing, e.g. @code{print,n_elements(x)},
+Do you find yourself repeatedly typing, e.g., @code{print,n_elements(x)},
and similar statements to remind yourself of the
type/size/structure/value/etc. of variables and expressions in your code
or at the command line? IDLWAVE has a suite of special commands to
@@ -3149,7 +3149,7 @@ print, only an initial portion of long arrays will be printed, up to
For added speed and convenience, there are mouse bindings which allow
you to click on expressions and examine their values. Use
@kbd{S-Mouse-2} to print an expression and @kbd{C-M-Mouse-2} to invoke
-help (i.e. you need to hold down @key{META} and @key{CONTROL} while
+help (i.e., you need to hold down @key{META} and @key{CONTROL} while
clicking with the middle mouse button). If you simply click, the
nearest expression will be selected in the same manner as described
above. You can also @emph{drag} the mouse in order to highlight
@@ -3177,7 +3177,7 @@ with a @samp{( )} will be interpreted as function calls.
@cindex ROUTINE_NAMES, IDL procedure
N.B.: printing values of expressions on higher levels of the calling
stack uses the @emph{unsupported} IDL routine @code{ROUTINE_NAMES},
-which may or may not be available in future versions of IDL. Caveat
+which may or may not be available in future versions of IDL@. Caveat
Examinor.
@end itemize
@@ -3503,7 +3503,7 @@ extending the internal built-in information available for IDL system
routines (@pxref{Routine Info}) to other source collections.
Starting with version 5.0, there are two types of catalogs available
-with IDLWAVE. The traditional @emph{user catalog} and the newer
+with IDLWAVE@. The traditional @emph{user catalog} and the newer
@emph{library catalogs}. Although they can be used interchangeably, the
library catalogs are more flexible, and preferred. There are few
occasions when a user catalog might be preferred --- read below. Both
@@ -3513,7 +3513,7 @@ To facilitate the catalog systems, IDLWAVE stores information it gathers
from the shell about the IDL search paths, and can write this
information out automatically, or on-demand (menu @code{Debug->Save Path
Info}). On systems with no shell from which to discover the path
-information (e.g. Windows), a library path must be specified in
+information (e.g., Windows), a library path must be specified in
@code{idlwave-library-path} to allow library catalogs to be located, and
to setup directories for user catalog scan (@pxref{User Catalog} for
more on this variable). Note that, before the shell is running, IDLWAVE
@@ -3530,12 +3530,12 @@ to locate library catalogs.
@end defopt
@defopt idlwave-library-path
-IDL library path for Windows and MacOS. Under Unix/MacOSX, will be
+IDL library path for Windows and MacOS@. Under Unix/MacOSX, will be
obtained from the Shell when run.
@end defopt
@defopt idlwave-system-directory
-The IDL system directory for Windows and MacOS. Also needed for
+The IDL system directory for Windows and MacOS@. Also needed for
locating HTML help and the IDL Assistant for IDL v6.2 and later. Under
Unix/MacOSX, will be obtained from the Shell and recorded, if run.
@end defopt
@@ -3565,19 +3565,19 @@ in directories containing @code{.pro} routine files. They are
discovered on the IDL search path and loaded automatically when routine
information is read. Each catalog file documents the routines found in
that directory --- one catalog per directory. Every catalog has a
-library name associated with it (e.g. @emph{AstroLib}). This name will
+library name associated with it (e.g., @emph{AstroLib}). This name will
be shown briefly when the catalog is found, and in the routine info of
routines it documents.
Many popular libraries of routines are shipped with IDLWAVE catalog
files by default, and so will be automatically discovered. Library
catalogs are scanned externally to Emacs using a tool provided with
-IDLWAVE. Each catalog can be re-scanned independently of any other.
+IDLWAVE@. Each catalog can be re-scanned independently of any other.
Catalogs can easily be made available system-wide with a common source
repository, providing uniform routine information, and lifting the
burden of scanning from the user (who may not even know they're using a
scanned catalog). Since all catalogs are independent, they can be
-re-scanned automatically to gather updates, e.g. in a @file{cron} job.
+re-scanned automatically to gather updates, e.g., in a @file{cron} job.
Scanning is much faster than with the built-in user catalog method. One
minor disadvantage: the entire IDL search path is scanned for catalog
files every time IDLWAVE starts up, which might be slow if accessing IDL
@@ -3719,7 +3719,7 @@ C-i}. Here are the different routines (also available in the Menu
@item @kbd{M-x idlwave-list-buffer-load-path-shadows}
This command checks the names of all routines defined in the current
buffer for shadowing conflicts with other routines accessible to
-IDLWAVE. The command also has a key binding: @kbd{C-c C-b}
+IDLWAVE@. The command also has a key binding: @kbd{C-c C-b}
@item @kbd{M-x idlwave-list-shell-load-path-shadows}.
Checks all routines compiled under the shell for shadowing. This is
very useful when you have written a complete application. Just compile
@@ -3744,7 +3744,7 @@ many other reasons.
@cindex @code{!DIR}, IDL variable
Users of Windows and MacOS (not X) also must set the variable
@code{idlwave-system-directory} to the value of the @code{!DIR} system
-variable in IDL. IDLWAVE appends @file{lib} to the value of this
+variable in IDL@. IDLWAVE appends @file{lib} to the value of this
variable and assumes that all files found on that path are system
routines.
@@ -3791,7 +3791,7 @@ itself.
There are a wide variety of possible browsers to use for displaying
the online HTML help available with IDLWAVE (starting with version
5.0). Since IDL v6.2, a single cross-platform HTML help browser, the
-@emph{IDL Assistant} is distributed with IDL. If this help browser is
+@emph{IDL Assistant} is distributed with IDL@. If this help browser is
available, it is the preferred choice, and the default. The variable
@code{idlwave-help-use-assistant}, enabled by default, controls
whether this help browser is used. If you use the IDL Assistant, the
@@ -3879,7 +3879,7 @@ features which:
@itemize @minus
@item
-are not self-evident (i.e. too magic) when used by an unsuspecting user.
+are not self-evident (i.e., too magic) when used by an unsuspecting user.
@item
are too intrusive.
@item
@@ -3910,7 +3910,7 @@ the old maintainer had in his @file{.emacs}:
However, if you are an Emacs power-user and want IDLWAVE to work
completely differently, you can change almost every aspect of it. Here
-is an example of a much more extensive configuration of IDLWAVE. The
+is an example of a much more extensive configuration of IDLWAVE@. The
user is King!
@example
@@ -4121,7 +4121,7 @@ under MacOSX}
If you run Emacs directly as an Aqua application, rather than from the
console shell, the environment is set not from your usual shell
-configuration files (e.g. @file{.cshrc}), but from the file
+configuration files (e.g., @file{.cshrc}), but from the file
@file{~/.MacOSX/environment.plist}. Either include your path settings
there, or start Emacs and IDLWAVE from the shell.
@@ -4136,7 +4136,7 @@ which includes it by default.
cl-builtin-gethash} on completion or routine info.}
This error arises if you upgraded Emacs from 20.x to 21.x without
-re-installing IDLWAVE. Old Emacs and new Emacs are not byte-compatible
+re-installing IDLWAVE@. Old Emacs and new Emacs are not byte-compatible
in compiled lisp files. Presumably, you kept the original .elc files in
place, and this is the source of the error. If you recompile (or just
"make; make install") from source, it should resolve this problem.
@@ -4190,7 +4190,7 @@ load file}}.
The problem is that your Emacs is not finding the version of IDLWAVE you
installed. Many Emacsen come with an older bundled copy of IDLWAVE
-(e.g. v4.7 for Emacs 21.x), which is likely what's being used instead.
+(e.g., v4.7 for Emacs 21.x), which is likely what's being used instead.
You need to make sure your Emacs @emph{load-path} contains the directory
where IDLWAVE is installed (@file{/usr/local/share/emacs/site-lisp}, by
default), @emph{before} Emacs's default search directories. You can
@@ -4244,13 +4244,13 @@ displayed as Latin characters!}
Unfortunately, the HTMLHelp files RSI provides attempt to switch to
@samp{Symbol} font to display Greek characters, which is not really an
-permitted method for doing this in HTML. There is a "workaround" for
+permitted method for doing this in HTML@. There is a "workaround" for
some browsers: @xref{HTML Help Browser Tips}.
@item @strong{In the shell, my long commands are truncated at 256 characters!}
This actually happens when running IDL in an XTerm as well. There are
-a couple of workarounds: @code{define_key,/control,'^d'} (e.g. in
+a couple of workarounds: @code{define_key,/control,'^d'} (e.g., in
your @file{$IDL_STARTUP} file) will disable the @samp{EOF} character
and give you a 512 character limit. You won't be able to use
@key{C-d} to quit the shell, however. Another possibility is
@@ -4259,7 +4259,7 @@ memory-bounded limit), but disables the processing of background
widget events (those with @code{/NO_BLOCK} passed to @code{XManager}).
@item @strong{When I invoke IDL HTML help on a routine, the page which
-is loaded is one page off, e.g. for @code{CONVERT_COORD}, I get
+is loaded is one page off, e.g., for @code{CONVERT_COORD}, I get
@code{CONTOUR}.}
You have a mismatch between your help index and the HTML help package
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 8952bfb9122..141b8da5728 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -78,7 +78,7 @@ Started' chapter.
@end ifinfo
@end ifnottex
-@insertcopying
+@insertcopying
@menu
* Getting Started:: Getting started using an Info reader.
@@ -264,7 +264,7 @@ links.
@format
>> If you are in Emacs and have a mouse, and if you already practiced
- typing @kbd{n} to get to the next node, click now with the left
+ typing @kbd{n} to get to the next node, click now with the left
mouse button on the @samp{Next} link to do the same ``the mouse way''.
@end format
@@ -324,7 +324,7 @@ the screen.
we call ``Backspace or DEL'' in this manual is labeled differently on
different keyboards. Look for a key which is a little ways above the
@key{ENTER} or @key{RET} key and which you normally use outside Emacs
-to erase the character before the cursor, i.e.@: the character you
+to erase the character before the cursor, i.e., the character you
typed last. It might be labeled @samp{Backspace} or @samp{<-} or
@samp{DEL}, or sometimes @samp{Delete}.} and @kbd{b} commands exist to
allow you to ``move around'' in a node that does not all fit on the
diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi
index 468283ffd93..1e835d44838 100644
--- a/doc/misc/mairix-el.texi
+++ b/doc/misc/mairix-el.texi
@@ -68,7 +68,7 @@ database.
Mairix is a tool for indexing and searching words in locally stored
mail. It was written by Richard Curnow and is licensed under the
-GPL. Mairix comes with most popular GNU/Linux distributions, but it also
+GPL@. Mairix comes with most popular GNU/Linux distributions, but it also
runs under Windows (with cygwin), Mac OS X and Solaris. The homepage can
be found at
@uref{http://www.rpcurnow.force9.co.uk/mairix/index.html}
@@ -246,7 +246,7 @@ modifying `mairix-widget-fields-list'.
@kindex M-x mairix-widget-search-based-on-article
@findex mairix-widget-search-based-on-article
Create a mairix query using graphical widgets, but based on the
-currently displayed article, i.e. the available fields will be filled
+currently displayed article, i.e., the available fields will be filled
with the current header values.
@item mairix-search-from-this-article
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index ef752a96fdc..68e14c9b253 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -163,8 +163,8 @@ header should be. If it does not, it should just return @code{nil}, and
the normal methods for determining the To header will be used.
Each list element should be a cons, where the @sc{car} should be the
-name of a header (e.g. @code{Cc}) and the @sc{cdr} should be the header
-value (e.g. @samp{larsi@@ifi.uio.no}). All these headers will be
+name of a header (e.g., @code{Cc}) and the @sc{cdr} should be the header
+value (e.g., @samp{larsi@@ifi.uio.no}). All these headers will be
inserted into the head of the outgoing mail.
@@ -407,7 +407,7 @@ and very difficult to follow.
@end itemize
-Gnus honors the MFT header in other's messages (i.e. while following
+Gnus honors the MFT header in other's messages (i.e., while following
up to someone else's post) and also provides support for generating
sensible MFT headers for outgoing messages as well.
@@ -1041,7 +1041,7 @@ modern cryptography, @acronym{S/MIME}, various PKCS standards, OpenSSL and
so on.
The @acronym{S/MIME} support in Message (and @acronym{MML}) require
-OpenSSL. OpenSSL performs the actual @acronym{S/MIME} sign/encrypt
+OpenSSL@. OpenSSL performs the actual @acronym{S/MIME} sign/encrypt
operations. OpenSSL can be found at @uref{http://www.openssl.org/}.
OpenSSL 0.9.6 and later should work. Version 0.9.5a cannot extract mail
addresses from certificates, and it insert a spurious CR character into
@@ -1054,7 +1054,7 @@ To be able to send encrypted mail, a personal certificate is not
required. Message (@acronym{MML}) need a certificate for the person to whom you
wish to communicate with though. You're asked for this when you type
@kbd{C-c C-m c s}. Currently there are two ways to retrieve this
-certificate, from a local file or from DNS. If you chose a local
+certificate, from a local file or from DNS@. If you chose a local
file, it need to contain a X.509 certificate in @acronym{PEM} format.
If you chose DNS, you're asked for the domain name where the
certificate is stored, the default is a good guess. To my belief,
@@ -1091,7 +1091,7 @@ The @file{key+cert.pem} file should be pointed to from the
@emph{Note!} Your private key is now stored unencrypted in the file,
so take care in handling it. Storing encrypted keys on the disk are
supported, and Gnus will ask you for a passphrase before invoking
-OpenSSL. Read the OpenSSL documentation for how to achieve this. If
+OpenSSL@. Read the OpenSSL documentation for how to achieve this. If
you use unencrypted keys (e.g., if they are on a secure storage, or if
you are on a secure single user machine) simply press @code{RET} at
the passphrase prompt.
@@ -1154,9 +1154,9 @@ your PGP implementation, so we refer to it.
If you have imported your old PGP 2.x key into GnuPG, and want to send
signed and encrypted messages to your fellow PGP 2.x users, you'll
discover that the receiver cannot understand what you send. One
-solution is to use PGP 2.x instead (e.g.@: if you use @code{pgg}, set
+solution is to use PGP 2.x instead (e.g., if you use @code{pgg}, set
@code{pgg-default-scheme} to @code{pgp}). You could also convince your
-fellow PGP 2.x users to convert to GnuPG.
+fellow PGP 2.x users to convert to GnuPG@.
@vindex mml-signencrypt-style-alist
As a final workaround, you can make the sign and encryption work in
two steps; separately sign, then encrypt a message. If you would like
@@ -1676,7 +1676,7 @@ installation.
Most versions of MH doesn't like being fed messages that contain the
headers in this variable. If this variable is non-@code{nil} (which is
the default), these headers will be removed before mailing when sending
-messages via MH. Set it to @code{nil} if your MH can handle these
+messages via MH@. Set it to @code{nil} if your MH can handle these
headers.
@item message-qmail-inject-program
@@ -1690,7 +1690,7 @@ Arguments passed to qmail-inject programs.
This should be a list of strings, one string for each argument. It
may also be a function.
-For e.g., if you wish to set the envelope sender address so that bounces
+E.g., if you wish to set the envelope sender address so that bounces
go to the right place or to deal with listserv's usage of that address, you
might set this variable to @code{'("-f" "you@@some.where")}.
@@ -1780,7 +1780,7 @@ This required header will be generated by Message. A unique ID will be
created based on the date, time, user name (for the local part) and the
domain part. For the domain part, message will look (in this order) at
@code{message-user-fqdn}, @code{system-name}, @code{mail-host-address}
-and @code{message-user-mail-address} (i.e. @code{user-mail-address})
+and @code{message-user-mail-address} (i.e., @code{user-mail-address})
until a probably valid fully qualified domain name (FQDN) was found.
@item User-Agent
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index e419ba05055..06ab93f91c7 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -206,7 +206,7 @@ History of MH-E
This manual introduces another interface to the MH mail system that is
accessible through the GNU Emacs editor, namely, @emph{MH-E}. MH-E is
easy to use. I don't assume that you know GNU Emacs or even MH at this
-point, since I didn't know either of them when I discovered MH-E.
+point, since I didn't know either of them when I discovered MH-E@.
However, MH-E was the tip of the iceberg, and I discovered more and
more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of
them.
@@ -540,7 +540,7 @@ installing MH-E.
If the @code{mh-version} command displays @samp{No MH variant
detected}@footnote{In very old versions of MH-E, you may get the error
message, @samp{Cannot find the commands `inc' and `mhl' and the file
-`components'} if MH-E can't find MH. In this case, you need to update
+`components'} if MH-E can't find MH@. In this case, you need to update
MH-E, and you may need to install MH too. However, newer versions of
MH-E are better at finding MH if it is on your system.}, then you need
to install MH or tell MH-E where to find MH.
@@ -550,11 +550,11 @@ to install MH or tell MH-E where to find MH.
@cindex GNU mailutils MH
If you don't have MH on your system already, you must install a
-variant of MH. The Debian mh-e package does this for you automatically
+variant of MH@. The Debian mh-e package does this for you automatically
(@pxref{Getting MH-E}). Most people use
@uref{http://www.nongnu.org/nmh/, nmh}, but you may be interested in
trying out @uref{http://www.gnu.org/software/mailutils/, GNU mailutils
-MH}, which supports IMAP. Your GNU/Linux distribution probably has
+MH}, which supports IMAP@. Your GNU/Linux distribution probably has
packages for both of these.
@cindex @command{install-mh}
@@ -671,7 +671,7 @@ chapter for a mapping between default key bindings and function
names.}. When you're done, you'll be able to send, read, and file
mail, which is all that a lot of people ever do. But if you're the
curious or adventurous type, read the rest of the manual to be able to
-use all the features of MH-E. I suggest you read this chapter first to
+use all the features of MH-E@. I suggest you read this chapter first to
get the big picture, and then you can read the manual as you wish.
@menu
@@ -1572,7 +1572,7 @@ command incorporates your mail and creates a buffer called
@samp{+inbox} in MH-Folder mode. The command @kbd{M-x mh-rmail} shows
you only new mail, not mail you have already read@footnote{If you want
to see your old mail as well, use @kbd{F r} to pull all your messages
-into MH-E. Or, give a prefix argument to @code{mh-rmail} so it will
+into MH-E@. Or, give a prefix argument to @code{mh-rmail} so it will
prompt you for folder to visit like @kbd{F v} (for example, @kbd{C-u
M-x mh-rmail @key{RET} bob @key{RET}}). @xref{Folders}.}.
@@ -2456,7 +2456,7 @@ that they do not really appear like an attachment at all to the
reader. Most of the time, this is desirable, so by default MH-E
suppresses the buttons for inline attachments. On the other hand, you
may receive code or HTML which the sender has added to his message as
-inline attachments so that you can read them in MH-E. In this case, it
+inline attachments so that you can read them in MH-E@. In this case, it
is useful to see the buttons so that you know you don't have to cut
and paste the code into a file; you can simply save the attachment. If
you want to make the buttons visible for inline attachments, you can
@@ -3222,7 +3222,7 @@ original configuration is displayed.
@cindex menu, @samp{Message}
@cindex using folders
-This chapter discusses the things you can do with folders within MH-E.
+This chapter discusses the things you can do with folders within MH-E@.
The commands in this chapter are also found in the @samp{Folder} and
@samp{Message} menus.
@@ -5705,7 +5705,7 @@ buffer and delete the draft message. Use the command @kbd{C-x k}
@cindex aliases
-MH aliases are used in the same way in MH-E as they are in MH. Any
+MH aliases are used in the same way in MH-E as they are in MH@. Any
alias listed as a recipient will be expanded when the message is sent.
This chapter discusses other things you can do with aliases in MH-E.
@@ -5816,7 +5816,7 @@ Otherwise, you can complete aliases in the header of the draft with
@vindex mh-alias-completion-ignore-case-flag
-As MH ignores case in the aliases, so too does MH-E. However, you may
+As MH ignores case in the aliases, so too does MH-E@. However, you may
turn off the option @code{mh-alias-completion-ignore-case-flag} to
make case significant which can be used to segregate completion of
your aliases. You might use uppercase for mailing lists and lowercase
@@ -8647,7 +8647,7 @@ modify. Note that for them to become accessible, you'll have to load
@vtable @code
@item gnus-secondary-select-methods
Select the @samp{nnml} value. This select method uses directories for
-folders and individual files for messages, just like MH. You do not
+folders and individual files for messages, just like MH@. You do not
have to set an address.
@c -------------------------
@item mail-sources
@@ -8725,7 +8725,7 @@ positive we won't ask for it.
@cindex SourceForge
@cindex mailing lists
-There are several mailing lists for MH-E. They are @i{mh-e-users at
+There are several mailing lists for MH-E@. They are @i{mh-e-users at
lists.sourceforge.net}, @i{mh-e-announce at lists.sourceforge.net},
and @i{mh-e-devel at lists.sourceforge.net}. You can subscribe or view
the archives at @uref{https://sourceforge.net/mail/?group_id=13357,
@@ -8792,9 +8792,9 @@ instead.
After you download and extract the MH-E tarball, read the
@file{README} file and @file{MH-E-NEWS}. These correspond to the
release notes and change log mentioned above. The file @file{README}
-contains instructions on installing MH-E. If you're already running
+contains instructions on installing MH-E@. If you're already running
Emacs, please quit that session and start again to load in the new
-MH-E. Check that you're running the new version with the command
+MH-E@. Check that you're running the new version with the command
@kbd{M-x mh-version}.
@cindex contributed software
@@ -8904,13 +8904,13 @@ limited the use and appeal of the package.
@cindex @command{xmh}, in MH-E history
In '89, I came to Wisconsin as a professor and decided not to work on
-MH-E. It was stable, except for minor bugs, and had enough
+MH-E@. It was stable, except for minor bugs, and had enough
functionality, so I let it be for a few years. Stephen Gildea of BBN
began to pester me about the bugs, but I ignored them. In 1990, he
went off to the X Consortium, said good bye, and said that he would
now be using @command{xmh}. A few months later, he came back and said
that he couldn't stand @command{xmh} and could I put a few more bug fixes
-into MH-E. At that point, I had no interest in fixing MH-E, so I gave
+into MH-E@. At that point, I had no interest in fixing MH-E, so I gave
the responsibility of maintenance to him and he has done a fine job
since then.
@@ -8931,7 +8931,7 @@ modifications of my own) and dislike having to use applications with
embedded editors; they never live up to Emacs.
MH is the mail reader of choice at BBN, so I converted to it. Since I
-didn't want to give up using an Emacs interface, I started using MH-E.
+didn't want to give up using an Emacs interface, I started using MH-E@.
As is my wont, I started hacking on it almost immediately. I first
used version 3.4m. One of the first features I added was to treat the
folder buffer as a file-visiting buffer: you could lock it, save it,
@@ -8943,7 +8943,7 @@ MH-E was too slow and optimized it a lot. Version, 3.7, distributed
with Emacs 18.56 in 1990, was noticeably faster.
When I moved to the X Consortium I became the first person there to
-not use xmh. (There is now one other engineer there using MH-E.) About
+not use xmh. (There is now one other engineer there using MH-E@.) About
this point I took over maintenance of MH-E from Jim and was finally
able to add some features Jim hadn't accepted, such as the backward
searching undo. My first release was 3.8 (Emacs 18.58) in 1992.
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index 5add229724c..60510f41e71 100644
--- a/doc/misc/newsticker.texi
+++ b/doc/misc/newsticker.texi
@@ -190,7 +190,7 @@ stop the periodic download, but will call
@node Configuration
@chapter Configuration
-All Newsticker options are customizable, i.e. they can be changed with
+All Newsticker options are customizable, i.e., they can be changed with
Emacs customization methods. Call the command
@code{customize-group} and enter @samp{newsticker} for the customization
group.
@@ -260,7 +260,7 @@ apply to the plainview reader only.
@item
@code{newsticker-ticker} contains options that define how headlines
-are shown in the echo area, i.e. the ``ticker''.
+are shown in the echo area, i.e., the ``ticker''.
@itemize
@item
diff --git a/doc/misc/nxml-mode.texi b/doc/misc/nxml-mode.texi
index c8d159e2363..a0e34b2cf5a 100644
--- a/doc/misc/nxml-mode.texi
+++ b/doc/misc/nxml-mode.texi
@@ -76,7 +76,7 @@ documents.
To get validation and schema-sensitive editing, you need a RELAX NG Compact
Syntax (RNC) schema for your document (@pxref{Locating a schema}). The
@file{etc/schema} directory includes some schemas for popular document
-types. See @url{http://relaxng.org/} for more information on RELAX NG.
+types. See @url{http://relaxng.org/} for more information on RELAX NG@.
You can use the @samp{Trang} program from
@url{http://www.thaiopensource.com/relaxng/trang.html} to
automatically create RNC schemas. This program can:
@@ -138,7 +138,7 @@ indicates point):
@end example
@noindent
-and the schema is XHTML. In this context, the symbol to be completed
+and the schema is XHTML@. In this context, the symbol to be completed
is @samp{h}. The possible completions consist of just
@samp{head}. Another example, is
@@ -288,7 +288,7 @@ and then following the instructions in the displayed buffer.
Emacs has several commands that operate on paragraphs, most
notably @kbd{M-q}. nXML mode redefines these to work in a way
-that is useful for XML. The exact rules that are used to find the
+that is useful for XML@. The exact rules that are used to find the
beginning and end of a paragraph are complicated; they are designed
mainly to ensure that @kbd{M-q} does the right thing.
@@ -355,7 +355,7 @@ child element. A section also contains its subordinate sections (its
subsections). The text content of a section consists of anything in a
section that is neither a subsection nor a heading.
-Note that this is a different model from that used by XHTML.
+Note that this is a different model from that used by XHTML@.
nXML mode's outline support will not be useful for XHTML unless you
adopt a convention of adding a @code{div} to enclose each
section, rather than having sections implicitly delimited by different
@@ -363,7 +363,7 @@ section, rather than having sections implicitly delimited by different
in a future version.
The variable @code{nxml-section-element-name-regexp} gives
-a regexp for the local names (i.e. the part of the name following any
+a regexp for the local names (i.e., the part of the name following any
prefix) of section elements. The variable
@code{nxml-heading-element-name-regexp} gives a regexp for the
local names of heading elements. For an element to be recognized
@@ -653,7 +653,7 @@ of any type is used.
As usual with XML-related technologies, resources are identified
by URIs. The @samp{uri} attribute identifies the schema by
-specifying the URI. The URI may be relative. If so, it is resolved
+specifying the URI@. The URI may be relative. If so, it is resolved
relative to the URI of the schema locating file that contains
attribute. This means that if the value of @samp{uri} attribute
does not contain a @samp{/}, then it will refer to a filename in
@@ -680,13 +680,13 @@ The @samp{pattern} attribute can be used instead of the
whose URI matches a pattern. The pattern has the same syntax as an
absolute or relative URI except that the path component of the URI can
use a @samp{*} character to stand for zero or more characters
-within a path segment (i.e. any character other @samp{/}).
+within a path segment (i.e., any character other @samp{/}).
Typically, the URI pattern looks like a relative URI, but, whereas a
relative URI in the @samp{resource} attribute is resolved into a
particular absolute URI using the base URI of the schema locating
file, a relative URI pattern matches if it matches some number of
complete path segments of the document's URI ending with the last path
-segment of the document's URI. For example,
+segment of the document's URI@. For example,
@example
<uri pattern="*.xsl" uri="xslt.rnc"/>
@@ -757,7 +757,7 @@ specifies that when the namespace URI of the document is
Type identifiers allow a level of indirection in locating the
schema for a document. Instead of associating the document directly
with a schema URI, the document is associated with a type identifier,
-which is in turn associated with a schema URI. nXML mode does not
+which is in turn associated with a schema URI@. nXML mode does not
constrain the format of type identifiers. They can be simply strings
without any formal structure or they can be public identifiers or
URIs. Note that these type identifiers have nothing to do with the
@@ -862,12 +862,12 @@ an @samp{applyFollowingRules} to the private file.
@chapter DTDs
nXML mode is designed to support the creation of standalone XML
-documents that do not depend on a DTD. Although it is common practice
+documents that do not depend on a DTD@. Although it is common practice
to insert a DOCTYPE declaration referencing an external DTD, this has
undesirable side-effects. It means that the document is no longer
self-contained. It also means that different XML parsers may interpret
the document in different ways, since the XML Recommendation does not
-require XML parsers to read the DTD. With DTDs, it was impractical to
+require XML parsers to read the DTD@. With DTDs, it was impractical to
get validation without using an external DTD or reference to an
parameter entity. With RELAX NG and other schema languages, you can
simultaneously get the benefits of validation and standalone XML
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index a69dc0fd81f..700dffd26bf 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -478,7 +478,7 @@ Capture - Refile - Archive
* Capture:: Capturing new stuff
* Attachments:: Add files to tasks
* RSS Feeds:: Getting input from RSS feeds
-* Protocols:: External (e.g.@: Browser) access to Emacs and Org
+* Protocols:: External (e.g., Browser) access to Emacs and Org
* Refiling notes:: Moving a tree from one place to another
* Archiving:: What to do with finished projects
@@ -838,7 +838,7 @@ ends, for example:
@cindex FAQ
There is a website for Org which provides links to the newest
version of Org, as well as additional information, frequently asked
-questions (FAQ), links to tutorials, etc@. This page is located at
+questions (FAQ), links to tutorials, etc. This page is located at
@uref{http://orgmode.org}.
@cindex print edition
@@ -996,7 +996,7 @@ packages, please take the time to check the list (@pxref{Conflicts}).
The four Org commands @command{org-store-link}, @command{org-capture},
@command{org-agenda}, and @command{org-iswitchb} should be accessible through
-global keys (i.e.@: anywhere in Emacs, not just in Org buffers). Here are
+global keys (i.e., anywhere in Emacs, not just in Org buffers). Here are
suggested bindings for these keys, please modify the keys to your own
liking.
@lisp
@@ -1324,7 +1324,7 @@ Expose all the headings of the subtree, CONTENT view for just one subtree.
@cindex show children, command
@orgcmd{C-c @key{TAB},show-children}
Expose all direct children of the subtree. With a numeric prefix argument N,
-expose all children down to level N.
+expose all children down to level N@.
@orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
Show the current subtree in an indirect buffer@footnote{The indirect
buffer
@@ -1351,7 +1351,7 @@ Copy the @i{visible} text in the region into the kill ring.
@cindex @code{showeverything}, STARTUP keyword
When Emacs first visits an Org file, the global state is set to
-OVERVIEW, i.e.@: only the top level headlines are visible. This can be
+OVERVIEW, i.e., only the top level headlines are visible. This can be
configured through the variable @code{org-startup-folded}, or on a
per-file basis by adding one of the following lines anywhere in the
buffer:
@@ -1371,7 +1371,7 @@ for this property are @code{folded}, @code{children}, @code{content}, and
@code{all}.
@table @asis
@orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
-Switch back to the startup visibility of the buffer, i.e.@: whatever is
+Switch back to the startup visibility of the buffer, i.e., whatever is
requested by startup options and @samp{VISIBILITY} properties in individual
entries.
@end table
@@ -1440,7 +1440,7 @@ headline@footnote{If you do not want the line to be split, customize the
variable @code{org-M-RET-may-split-line}.}. If the command is used at the
beginning of a headline, the new headline is created before the current line.
If at the beginning of any other line, the content of that line is made the
-new heading. If the command is used at the end of a folded subtree (i.e.@:
+new heading. If the command is used at the end of a folded subtree (i.e.,
behind the ellipses at the end of a headline), then a headline like the
current one will be inserted after the end of the subtree.
@orgcmd{C-@key{RET},org-insert-heading-respect-content}
@@ -1474,7 +1474,7 @@ level).
@orgcmd{M-S-@key{down},org-move-subtree-down}
Move subtree down (swap with next subtree of same level).
@orgcmd{C-c C-x C-w,org-cut-subtree}
-Kill subtree, i.e.@: remove it from buffer but save in kill ring.
+Kill subtree, i.e., remove it from buffer but save in kill ring.
With a numeric prefix argument N, kill N sequential subtrees.
@orgcmd{C-c C-x M-w,org-copy-subtree}
Copy subtree to kill ring. With a numeric prefix argument N, copy the N
@@ -1649,7 +1649,7 @@ a right parenthesis@footnote{You can filter out any of them by configuring
@samp{A)} by configuring @code{org-alphabetical-lists}. To minimize
confusion with normal text, those are limited to one character only. Beyond
that limit, bullets will automatically fallback to numbers.}. If you want a
-list to start with a different value (e.g.@: 20), start the text of the item
+list to start with a different value (e.g., 20), start the text of the item
with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
must be put @emph{before} the checkbox. If you have activated alphabetical
lists, you can also use counters like @code{[@@b]}.}. Those constructs can
@@ -1896,7 +1896,7 @@ or on a per-file basis by using
Org mode supports the creation of footnotes. In contrast to the
@file{footnote.el} package, Org mode's footnotes are designed for work on a
larger document, not only for one-off documents like emails. The basic
-syntax is similar to the one used by @file{footnote.el}, i.e.@: a footnote is
+syntax is similar to the one used by @file{footnote.el}, i.e., a footnote is
defined in a paragraph that is started by a footnote marker in square
brackets in column 0, no indentation allowed. If you need a paragraph break
inside a footnote, use the @LaTeX{} idiom @samp{\par}. The footnote reference
@@ -1973,7 +1973,7 @@ S @r{Short for first @code{r}, then @code{s} action.}
n @r{Normalize the footnotes by collecting all definitions (including}
@r{inline definitions) into a special section, and then numbering them}
@r{in sequence. The references will then also be numbers. This is}
- @r{meant to be the final step before finishing a document (e.g.@: sending}
+ @r{meant to be the final step before finishing a document (e.g., sending}
@r{off an email). The exporters do this automatically, and so could}
@r{something like @code{message-send-hook}.}
d @r{Delete the footnote at point, and all definitions of and references}
@@ -2044,7 +2044,7 @@ calculations are supported using the Emacs @file{calc} package
@section The built-in table editor
@cindex table editor, built-in
-Org makes it easy to format tables in plain ASCII. Any line with @samp{|} as
+Org makes it easy to format tables in plain ASCII@. Any line with @samp{|} as
the first non-whitespace character is considered part of a table. @samp{|}
is also the column separator@footnote{To insert a vertical bar into a table
field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}. A table
@@ -2429,7 +2429,7 @@ representation that looks like this:
@end example
Column specifications can be absolute like @code{$1},
-@code{$2},...@code{$@var{N}}, or relative to the current column (i.e.@: the
+@code{$2},...@code{$@var{N}}, or relative to the current column (i.e., the
column of the field which is being computed) like @code{$+1} or @code{$-2}.
@code{$<} and @code{$>} are immutable references to the first and last
column, respectively, and you can use @code{$>>>} to indicate the third
@@ -2445,13 +2445,13 @@ a stable way to the 5th and 12th field in the last row of the table.
However, this syntax is deprecated, it should not be used for new documents.
Use @code{@@>$} instead.} row in the table, respectively. You may also
specify the row relative to one of the hlines: @code{@@I} refers to the first
-hline, @code{@@II} to the second, etc@. @code{@@-I} refers to the first such
+hline, @code{@@II} to the second, etc. @code{@@-I} refers to the first such
line above the current line, @code{@@+I} to the first such line below the
current line. You can also write @code{@@III+2} which is the second data line
after the third hline in the table.
@code{@@0} and @code{$0} refer to the current row and column, respectively,
-i.e. to the row/column for the field being computed. Also, if you omit
+i.e., to the row/column for the field being computed. Also, if you omit
either the column or the row part of the reference, the current row/column is
implied.
@@ -2810,7 +2810,7 @@ following command:
Install a new formula for the current column and replace current field with
the result of the formula. The command prompts for a formula, with default
taken from the @samp{#+TBLFM} line, applies it to the current field and
-stores it. With a numeric prefix argument(e.g.@: @kbd{C-5 C-c =}) the command
+stores it. With a numeric prefix argument(e.g., @kbd{C-5 C-c =}) the command
will apply it to that many consecutive fields in the current column.
@end table
@@ -3115,7 +3115,7 @@ Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
@item with
Specify a @code{with} option to be inserted for every col being plotted
-(e.g.@: @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
+(e.g., @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
Defaults to @code{lines}.
@item file
@@ -3519,7 +3519,7 @@ variable @code{org-display-internal-link-with-indirect-buffer}}.
@cindex @code{inlineimages}, STARTUP keyword
@cindex @code{noinlineimages}, STARTUP keyword
Toggle the inline display of linked images. Normally this will only inline
-images that have no description part in the link, i.e.@: images that will also
+images that have no description part in the link, i.e., images that will also
be inlined during export. When called with a prefix argument, also display
images that do have a link description. You can ask for inline images to be
displayed at startup by configuring the variable
@@ -3629,7 +3629,7 @@ can define them in the file with
@noindent
In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
complete link abbreviations. You may also define a function
-@code{org-PREFIX-complete-link} that implements special (e.g.@: completion)
+@code{org-PREFIX-complete-link} that implements special (e.g., completion)
support for inserting such a link with @kbd{C-c C-l}. Such a function should
not accept any arguments, and return the full link with prefix.
@@ -3781,7 +3781,7 @@ with @code{shift-selection-mode}. See also the variable
View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
entire buffer, but shows all TODO items (with not-DONE state) and the
headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
-/ T}), search for a specific TODO. You will be prompted for the keyword, and
+/ T}), search for a specific TODO@. You will be prompted for the keyword, and
you can also give a list of keywords like @code{KWD1|KWD2|...} to list
entries that match any one of these keywords. With a numeric prefix argument
N, show the tree for the Nth keyword in the variable
@@ -3808,7 +3808,7 @@ option @code{org-todo-state-tags-triggers} for details.
@vindex org-todo-keywords
By default, marked TODO entries have one of only two states: TODO and
-DONE. Org mode allows you to classify TODO items in more complex ways
+DONE@. Org mode allows you to classify TODO items in more complex ways
with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
special setup, the TODO keyword system can work differently in different
files.
@@ -3847,9 +3847,9 @@ you don't provide the separator bar, the last state is used as the DONE
state.
@cindex completion, of TODO keywords
With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
-to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED. You may
+to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED@. You may
also use a numeric prefix argument to quickly select a specific state. For
-example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
+example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY@.
Or you can use @kbd{S-@key{left}} to go backward through the sequence. If you
define many keywords, you can use in-buffer completion
(@pxref{Completion}) or even a special one-key selection scheme
@@ -3876,13 +3876,13 @@ be set up like this:
In this case, different keywords do not indicate a sequence, but rather
different types. So the normal work flow would be to assign a task to a
-person, and later to mark it DONE. Org mode supports this style by adapting
+person, and later to mark it DONE@. Org mode supports this style by adapting
the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
@kbd{t} command in the timeline and agenda buffers.}. When used several
times in succession, it will still cycle through all names, in order to first
select the right type for a task. But when you return to the item after some
time and execute @kbd{C-c C-t} again, it will switch from any name directly
-to DONE. Use prefix arguments or completion to quickly select a specific
+to DONE@. Use prefix arguments or completion to quickly select a specific
name. You can also review the items of a specific TODO type in a sparse tree
by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
@@ -4047,13 +4047,13 @@ foreground or a background color.
@cindex property, ORDERED
The structure of Org files (hierarchy and lists) makes it easy to define TODO
dependencies. Usually, a parent TODO task should not be marked DONE until
-all subtasks (defined as children tasks) are marked as DONE. And sometimes
+all subtasks (defined as children tasks) are marked as DONE@. And sometimes
there is a logical sequence to a number of (sub)tasks, so that one task
cannot be acted upon before all siblings above it are done. If you customize
the variable @code{org-enforce-todo-dependencies}, Org will block entries
-from changing state to DONE while they have children that are not DONE.
+from changing state to DONE while they have children that are not DONE@.
Furthermore, if an entry has a property @code{ORDERED}, each of its children
-will be blocked until all earlier siblings are marked DONE. Here is an
+will be blocked until all earlier siblings are marked DONE@. Here is an
example:
@example
@@ -4194,7 +4194,7 @@ when you are using both @code{org-log-done} and state change logging.
However, it will never prompt for two notes---if you have configured
both, the state change recording note will take precedence and cancel
the @samp{Closing Note}.}, and that a note is recorded when switching to
-WAIT or CANCELED. The setting for WAIT is even more special: the
+WAIT or CANCELED@. The setting for WAIT is even more special: the
@samp{!} after the slash means that in addition to the note taken when
entering the state, a timestamp should be recorded when @i{leaving} the
WAIT state, if and only if the @i{target} state does not configure
@@ -5265,7 +5265,7 @@ values.
@noindent
The first column, @samp{%25ITEM}, means the first 25 characters of the
-item itself, i.e.@: of the headline. You probably always should start the
+item itself, i.e., of the headline. You probably always should start the
column definition with the @samp{ITEM} specifier. The other specifiers
create columns @samp{Owner} with a list of names as allowed values, for
@samp{Status} with four different possible values, and for a checkbox
@@ -5666,7 +5666,7 @@ letter ([dwmy]) to indicate change in days, weeks, months, or years. With a
single plus or minus, the date is always relative to today. With a
double plus or minus, it is relative to the default date. If instead of
a single letter, you use the abbreviation of day name, the date will be
-the Nth such day, e.g.@:
+the Nth such day, e.g.:
@example
+0 @result{} today
@@ -5694,7 +5694,7 @@ read the docstring of the variable
You can specify a time range by giving start and end times or by giving a
start time and a duration (in HH:MM format). Use one or two dash(es) as the
separator in the former case and use '+' as the separator in the latter
-case, e.g.@:
+case, e.g.:
@example
11am-1:15pm @result{} 11:00-13:15
@@ -5807,7 +5807,7 @@ On the deadline date, the task will be listed in the agenda. In
addition, the agenda for @emph{today} will carry a warning about the
approaching or missed deadline, starting
@code{org-deadline-warning-days} before the due date, and continuing
-until the entry is marked DONE. An example:
+until the entry is marked DONE@. An example:
@example
*** TODO write article about the Earth for the Guide
@@ -5827,10 +5827,10 @@ date.
@vindex org-agenda-skip-scheduled-if-done
The headline will be listed under the given date@footnote{It will still
-be listed on that date after it has been marked DONE. If you don't like
+be listed on that date after it has been marked DONE@. If you don't like
this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
addition, a reminder that the scheduled date has passed will be present
-in the compilation for @emph{today}, until the entry is marked DONE, i.e.@:
+in the compilation for @emph{today}, until the entry is marked DONE, i.e.,
the task will automatically be forwarded until completed.
@example
@@ -5919,7 +5919,7 @@ Sparse tree for deadlines and scheduled items after a given date.
@end table
Note that @code{org-schedule} and @code{org-deadline} supports
-setting the date by indicating a relative time: e.g. +1d will set
+setting the date by indicating a relative time: e.g., +1d will set
the date to the next day after today, and --1w will set the date
to the previous week before any current timestamp.
@@ -6488,7 +6488,7 @@ trees to an archive file keeps the system compact and fast.
* Capture:: Capturing new stuff
* Attachments:: Add files to tasks
* RSS Feeds:: Getting input from RSS feeds
-* Protocols:: External (e.g.@: Browser) access to Emacs and Org
+* Protocols:: External (e.g., Browser) access to Emacs and Org
* Refiling notes:: Moving a tree from one place to another
* Archiving:: What to do with finished projects
@end menu
@@ -7676,7 +7676,7 @@ commands}.
@cindex Boolean logic, for tag/property searches
A search string can use Boolean operators @samp{&} for AND and @samp{|} for
-OR. @samp{&} binds more strongly than @samp{|}. Parentheses are currently
+OR@. @samp{&} binds more strongly than @samp{|}. Parentheses are currently
not implemented. Each element in the search is either a tag, a regular
expression matching tags, or an expression like @code{PROPERTY OPERATOR
VALUE} with a comparison operator, accessing a property value. Each element
@@ -7712,7 +7712,7 @@ example, the ``property'' @code{TODO} represents the TODO keyword of the
entry. Or, the ``property'' @code{LEVEL} represents the level of an entry.
So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
-DONE. In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
+DONE@. In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
The ITEM special property cannot currently be used in tags/property
searches@footnote{But @pxref{x-agenda-skip-entry-regexp,
@@ -7751,7 +7751,7 @@ brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
assumed to be date/time specifications in the standard Org way, and the
comparison will be done accordingly. Special values that will be recognized
are @code{"<now>"} for now (including time), and @code{"<today>"}, and
-@code{"<tomorrow>"} for these days at 0:00 hours, i.e.@: without a time
+@code{"<tomorrow>"} for these days at 0:00 hours, i.e., without a time
specification. Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
@code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
respectively, can be used.
@@ -7784,7 +7784,7 @@ tags/property part of the search string (which may include several terms
connected with @samp{|}) with a @samp{/} and then specify a Boolean
expression just for TODO keywords. The syntax is then similar to that for
tags, but should be applied with care: for example, a positive selection on
-several TODO keywords cannot meaningfully be combined with boolean AND.
+several TODO keywords cannot meaningfully be combined with boolean AND@.
However, @emph{negative selection} combined with AND can be meaningful. To
make sure that only lines are checked that actually have any TODO keyword
(resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
@@ -8175,7 +8175,7 @@ always show a table with the clocked times for the timespan and file scope
covered by the current agenda view. The initial setting for this mode in new
agenda buffers can be set with the variable
@code{org-agenda-start-with-clockreport-mode}. By using a prefix argument
-when toggling this mode (i.e.@: @kbd{C-u R}), the clock table will not show
+when toggling this mode (i.e., @kbd{C-u R}), the clock table will not show
contributions from entries that are hidden by agenda filtering@footnote{Only
tags filtering will be respected here, effort filtering is ignored.}. See
also the variable @code{org-clock-report-include-clocking-task}.
@@ -9337,7 +9337,7 @@ switch to the end of the @code{BEGIN} line, to get the lines of the example
numbered. If you use a @code{+n} switch, the numbering from the previous
numbered snippet will be continued in the current one. In literal examples,
Org will interpret strings like @samp{(ref:name)} as labels, and use them as
-targets for special hyperlinks like @code{[[(name)]]} (i.e.@: the reference name
+targets for special hyperlinks like @code{[[(name)]]} (i.e., the reference name
enclosed in single parenthesis). In HTML, hovering the mouse over such a
link will remote-highlight the corresponding code line, which is kind of
cool.
@@ -9408,7 +9408,7 @@ include your @file{.emacs} file, you could use:
#+INCLUDE: "~/.emacs" src emacs-lisp
@end example
@noindent
-The optional second and third parameter are the markup (e.g.@: @samp{quote},
+The optional second and third parameter are the markup (e.g., @samp{quote},
@samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
language for formatting the contents. The markup is optional; if it is not
given, the text will be assumed to be in Org mode format and will be
@@ -9866,13 +9866,13 @@ Insert template with export options, see example below.
#+AUTHOR: the author (default taken from @code{user-full-name})
#+DATE: a date, an Org timestamp@footnote{@code{org-export-date-timestamp-format} defines how this timestamp will be exported.}, or a format string for @code{format-time-string}
#+EMAIL: his/her email address (default from @code{user-mail-address})
-#+DESCRIPTION: the page description, e.g.@: for the XHTML meta tag
-#+KEYWORDS: the page keywords, e.g.@: for the XHTML meta tag
-#+LANGUAGE: language for HTML, e.g.@: @samp{en} (@code{org-export-default-language})
+#+DESCRIPTION: the page description, e.g., for the XHTML meta tag
+#+KEYWORDS: the page keywords, e.g., for the XHTML meta tag
+#+LANGUAGE: language for HTML, e.g., @samp{en} (@code{org-export-default-language})
#+TEXT: Some descriptive text to be inserted at the beginning.
#+TEXT: Several lines may be given.
#+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
-#+BIND: lisp-var lisp-val, e.g.@:: @code{org-export-latex-low-levels itemize}
+#+BIND: lisp-var lisp-val, e.g., @code{org-export-latex-low-levels itemize}
@r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
#+LINK_UP: the ``up'' link of an exported page
#+LINK_HOME: the ``home'' link of an exported page
@@ -9972,11 +9972,11 @@ separate Emacs process@footnote{To make this behavior the default, customize
the variable @code{org-export-run-in-background}.}.
@orgcmd{C-c C-e v,org-export-visible}
Like @kbd{C-c C-e}, but only export the text that is currently visible
-(i.e.@: not hidden by outline visibility).
+(i.e., not hidden by outline visibility).
@orgcmd{C-u C-u C-c C-e,org-export}
@vindex org-export-run-in-background
Call the exporter, but reverse the setting of
-@code{org-export-run-in-background}, i.e.@: request background processing if
+@code{org-export-run-in-background}, i.e., request background processing if
not set, or force processing in the current Emacs process if set.
@end table
@@ -9987,7 +9987,7 @@ not set, or force processing in the current Emacs process if set.
@cindex UTF-8 export
ASCII export produces a simple and very readable version of an Org mode
-file, containing only plain ASCII. Latin-1 and UTF-8 export augment the file
+file, containing only plain ASCII@. Latin-1 and UTF-8 export augment the file
with special characters and symbols available in these encodings.
@cindex region, active
@@ -10179,7 +10179,7 @@ All lines between these markers are exported literally
@cindex links, in HTML export
@cindex internal links, in HTML export
@cindex external links, in HTML export
-Internal links (@pxref{Internal links}) will continue to work in HTML. This
+Internal links (@pxref{Internal links}) will continue to work in HTML@. This
includes automatic links created by radio targets (@pxref{Radio
targets}). Links to external files will still work if the target file is on
the same @i{relative} path as the published Org file. Links to other
@@ -10919,7 +10919,7 @@ exported DocBook XML files invalid by not quoting DocBook code correctly.
@cindex DocBook recursive sections
DocBook exporter exports Org files as articles using the @code{article}
-element in DocBook. Recursive sections, i.e.@: @code{section} elements, are
+element in DocBook. Recursive sections, i.e., @code{section} elements, are
used in exported articles. Top level headlines in Org files are exported as
top level sections, and lower level headlines are exported as nested
sections. The entire structure of Org files will be exported completely, no
@@ -11996,7 +11996,7 @@ time.
@subsection Export of properties
-The exporter also takes TODO state information into consideration, i.e.@: if a
+The exporter also takes TODO state information into consideration, i.e., if a
task is marked as done it will have the corresponding attribute in
TaskJuggler (@samp{complete 100}). Also it will export any property on a task
resource or resource node which is known to TaskJuggler, such as
@@ -12048,7 +12048,7 @@ examples should illustrate this:
@subsection Reports
@vindex org-export-taskjuggler-default-reports
-TaskJuggler can produce many kinds of reports (e.g.@: gantt chart, resource
+TaskJuggler can produce many kinds of reports (e.g., gantt chart, resource
allocation, etc). The user defines what kind of reports should be generated
for a project in the TaskJuggler file. The exporter will automatically insert
some default reports in the file. These defaults are defined in
@@ -12104,7 +12104,7 @@ files in the calendar application. Org mode can export calendar information
in the standard iCalendar format. If you also want to have TODO entries
included in the export, configure the variable
@code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
-and TODO items as VTODO. It will also create events from deadlines that are
+and TODO items as VTODO@. It will also create events from deadlines that are
in non-TODO items. Deadlines and scheduling dates in TODO items will be used
to set the start and due dates for the TODO entry@footnote{See the variables
@code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
@@ -12208,7 +12208,7 @@ configures one project, and may be in one of the two following forms:
@lisp
("project-name" :property value :property value ...)
- @r{i.e.@: a well-formed property list with alternating keys and values}
+ @r{i.e., a well-formed property list with alternating keys and values}
@r{or}
("project-name" :components ("project-name" "project-name" ...))
@@ -12452,7 +12452,7 @@ something like @samp{[[file:foo.org][The foo]]} or simply
@samp{file:foo.org.} (@pxref{Hyperlinks}). When published, this link
becomes a link to @file{foo.html}. In this way, you can interlink the
pages of your "org web" project and the links will work as expected when
-you publish them to HTML. If you also publish the Org source file and want
+you publish them to HTML@. If you also publish the Org source file and want
to link to that, use an @code{http:} link instead of a @code{file:} link,
because @code{file:} links are converted to link to the corresponding
@file{html} file.
@@ -12704,7 +12704,7 @@ This may be necessary in particular if files include other files via
@cindex source code, working with
Source code can be included in Org mode documents using a @samp{src} block,
-e.g.@:
+e.g.:
@example
#+BEGIN_SRC emacs-lisp
@@ -12852,7 +12852,7 @@ variable @code{org-src-fontify-natively}.
It is possible to export the @emph{code} of code blocks, the @emph{results}
of code block evaluation, @emph{both} the code and the results of code block
evaluation, or @emph{none}. For most languages, the default exports code.
-However, for some languages (e.g.@: @code{ditaa}) the default exports the
+However, for some languages (e.g., @code{ditaa}) the default exports the
results of code block evaluation. For information on exporting code block
bodies, see @ref{Literal examples}.
@@ -13737,7 +13737,7 @@ then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
the value of the Emacs variable @code{default-directory}.
When using @code{:dir}, you should supply a relative path for file output
-(e.g.@: @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
+(e.g., @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
case that path will be interpreted relative to the default directory.
In other words, if you want your plot to go into a folder called @file{Work}
@@ -14177,7 +14177,7 @@ No column name pre-processing takes place
@item @code{yes}
Column names are removed and reapplied as with @code{nil} even if the table
-does not ``look like'' it has column names (i.e.@: the second row is not an
+does not ``look like'' it has column names (i.e., the second row is not an
hline)
@end itemize
@@ -14219,7 +14219,7 @@ variable indexing @xref{var, Indexable variable values}.
@subsubsection @code{:shebang}
Setting the @code{:shebang} header argument to a string value
-(e.g.@: @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
+(e.g., @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
first line of any tangled file holding the code block, and the file
permissions of the tangled file are set to make it executable.
@@ -14604,7 +14604,7 @@ option keyword is already complete, pressing @kbd{M-@key{TAB}} again
will insert example settings for this keyword.
@item
In the line after @samp{#+STARTUP: }, complete startup keywords,
-i.e.@: valid keys for this line.
+i.e., valid keys for this line.
@item
Elsewhere, complete dictionary words using Ispell.
@end itemize
@@ -14657,7 +14657,7 @@ additional details.
@vindex org-speed-commands-user
Single keys can be made to execute commands when the cursor is at the
-beginning of a headline, i.e.@: before the first star. Configure the variable
+beginning of a headline, i.e., before the first star. Configure the variable
@code{org-use-speed-commands} to activate this feature. There is a
pre-defined list of commands, and you can add more such commands using the
variable @code{org-speed-commands-user}. Speed keys do not only speed up
@@ -14806,7 +14806,7 @@ buffer, most useful for specifying the allowed values of a property.
@item #+SETUPFILE: file
This line defines a file that holds more in-buffer setup. Normally this is
entirely ignored. Only when the buffer is parsed for option-setting lines
-(i.e.@: when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
+(i.e., when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
settings line, or when exporting), then the contents of this file are parsed
as if they had been included in the buffer. In particular, the file can be
any other Org mode file with internal setup. You can visit the file the
@@ -15168,7 +15168,7 @@ example using the color @code{grey90} on a white background.
Things become cleaner still if you skip all the even levels and use only odd
levels 1, 3, 5..., effectively adding two stars to go from one outline level
to the next@footnote{When you need to specify a level for a property search
-or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}. In this
+or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc.}. In this
way we get the outline view shown at the beginning of this section. In order
to make the structure editing and export commands handle this convention
correctly, configure the variable @code{org-odd-levels-only}, or set this on
@@ -15259,7 +15259,7 @@ names for natural constants or units. Instead of defining your own
constants in the variable @code{org-table-formula-constants}, install
the @file{constants} package which defines a large number of constants
and units, and lets you use unit prefixes like @samp{M} for
-@samp{Mega}, etc@. You will need version 2.0 of this package, available
+@samp{Mega}, etc. You will need version 2.0 of this package, available
at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
the function @code{constants-get}, which has to be autoloaded in your
setup. See the installation instructions in the file
@@ -15626,7 +15626,7 @@ the link description when the link is later inserted into an Org
buffer with @kbd{C-c C-l}.
When it makes sense for your new link type, you may also define a function
-@code{org-PREFIX-complete-link} that implements special (e.g.@: completion)
+@code{org-PREFIX-complete-link} that implements special (e.g., completion)
support for inserting such a link with @kbd{C-c C-l}. Such a function should
not accept any arguments, and return the full link with prefix.
@@ -15832,9 +15832,9 @@ When you are done, press @kbd{C-c C-c} in the table to get the converted
table inserted between the two marker lines.
Now let's assume you want to make the table header by hand, because you
-want to control how columns are aligned, etc@. In this case we make sure
+want to control how columns are aligned, etc. In this case we make sure
that the table translator skips the first 2 lines of the source
-table, and tell the command to work as a @i{splice}, i.e.@: to not produce
+table, and tell the command to work as a @i{splice}, i.e., to not produce
header and footer commands of the target table:
@example
@@ -15917,7 +15917,7 @@ hands processing over to the generic translator. Here is the entire code:
As you can see, the properties passed into the function (variable
@var{PARAMS}) are combined with the ones newly defined in the function
-(variable @var{PARAMS2}). The ones passed into the function (i.e.@: the
+(variable @var{PARAMS2}). The ones passed into the function (i.e., the
ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
would like to use the @LaTeX{} translator, but wanted the line endings to
be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
@@ -16086,7 +16086,7 @@ using @code{org-agenda-skip-function}.
Let's say you want to produce a list of projects that contain a WAITING
tag anywhere in the project tree. Let's further assume that you have
marked all tree headings that define a project with the TODO keyword
-PROJECT. In this case you would run a TODO search for the keyword
+PROJECT@. In this case you would run a TODO search for the keyword
PROJECT, but skip the match unless there is a WAITING tag anywhere in
the subtree belonging to the project line.
@@ -16179,7 +16179,7 @@ line in Emacs batch mode. This extracted information can be sent
directly to a printer, or it can be read by a program that does further
processing of the data. The first of these commands is the function
@code{org-batch-agenda}, that produces an agenda view and sends it as
-ASCII text to STDOUT. The command takes a single string as parameter.
+ASCII text to STDOUT@. The command takes a single string as parameter.
If the string has length 1, it is used as a key to one of the commands
you have configured in @code{org-agenda-custom-commands}, basically any
key you can use after @kbd{C-c a}. For example, to directly print the
@@ -16292,7 +16292,7 @@ If WHICH is nil or `all', get all properties. If WHICH is
@vindex org-use-property-inheritance
@findex org-insert-property-drawer
@defun org-entry-get pom property &optional inherit
-Get value of PROPERTY for entry at point-or-marker POM. By default,
+Get value of PROPERTY for entry at point-or-marker POM@. By default,
this only looks at properties defined locally in the entry. If INHERIT
is non-nil and the entry does not have the property, then also check
higher levels of the hierarchy. If INHERIT is the symbol
@@ -16317,7 +16317,7 @@ Insert a property drawer for the current entry. Also
@end defun
@defun org-entry-put-multivalued-property pom property &rest values
-Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of
+Set PROPERTY at point-or-marker POM to VALUES@. VALUES should be a list of
strings. They will be concatenated, with spaces as separators.
@end defun
@@ -16374,7 +16374,7 @@ does not need to preserve point. After evaluation, the cursor will be
moved to the end of the line (presumably of the headline of the
processed entry) and search continues from there. Under some
circumstances, this may not produce the wanted results. For example,
-if you have removed (e.g.@: archived) the current (sub)tree it could
+if you have removed (e.g., archived) the current (sub)tree it could
mean that the next entry will be skipped entirely. In such cases, you
can specify the position from where search should continue by making
FUNC set the variable `org-map-continue-from' to the desired buffer
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi
index 92c309f5e98..993ddc22d43 100644
--- a/doc/misc/pcl-cvs.texi
+++ b/doc/misc/pcl-cvs.texi
@@ -63,7 +63,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@top PCL-CVS
-This manual describes PCL-CVS, the GNU Emacs front-end to CVS. It
+This manual describes PCL-CVS, the GNU Emacs front-end to CVS@. It
is nowhere near complete, so you are advised to use @kbd{M-x
customize-group RET pcl-cvs @key{RET}} and to look at the documentation strings
of the various commands and major modes for further information.
@@ -202,7 +202,7 @@ and cleanups.
the build and installation procedure.
@item
-@email{woods@@weird.com, Greg A.@: Woods} contributed code to implement
+@email{woods@@weird.com, Greg A. Woods} contributed code to implement
the use of per-file diff buffers, and vendor join diffs with emerge and
ediff, as well as various and sundry bug fixes and cleanups.
@@ -236,7 +236,7 @@ there would be no new releases of PCL-CVS.
@cindex Sample session
This document assumes that you know what CVS is, and that you at least
-know the fundamental concepts of CVS. If that is not the case, you
+know the fundamental concepts of CVS@. If that is not the case, you
should read the CVS documentation. Type @kbd{info -f cvs} or @kbd{man
cvs}.
@@ -476,7 +476,7 @@ This chapter describes all the commands that you can use in PCL-CVS.
@end iftex
@ifnottex
The nodes in this menu contains explanations about all the commands that
-you can use in PCL-CVS. They are grouped together by type.
+you can use in PCL-CVS@. They are grouped together by type.
@end ifnottex
@menu
@@ -568,7 +568,7 @@ argument to the command (e.g., by typing
@cindex Command-line options to CVS
This section describes the convention used by nearly all PCL-CVS
-commands for setting optional flags sent to CVS. A single @kbd{C-u}
+commands for setting optional flags sent to CVS@. A single @kbd{C-u}
prefix argument is used to cause the command to prompt for flags to be
used for the current invocation of the command only. Two @kbd{C-u} prefix
arguments are used to prompt for flags which will be set permanently, for the
@@ -582,7 +582,7 @@ and the file will be added. Subsequent @samp{cvs add}
commands will use the previously prevailing flags.
As a second example, say you are about to perform a diff and want to see
-the result in unified diff format, i.e. you'd like to pass the flag
+the result in unified diff format, i.e., you'd like to pass the flag
@samp{-u} to both @samp{cvs diff} and @samp{diff}. You'd also like all
subsequent diffs to use this flag. You can type @kbd{C-u C-u = -u @key{RET}}
and the diff will be performed, and the default flags will be set to
@@ -789,8 +789,8 @@ risk of error, @kbd{C-c C-c} will ask for confirmation if the set of
selected files has changed between the first step and the last. You can
change this last detail with @code{log-edit-confirm}.
-As for the difference between @kbd{c} (i.e. @code{cvs-mode-commit}) and
-@kbd{C} (i.e. @code{cvs-mode-commit-setup}) is that the first gets you
+As for the difference between @kbd{c} (i.e., @code{cvs-mode-commit}) and
+@kbd{C} (i.e., @code{cvs-mode-commit-setup}) is that the first gets you
straight to @samp{*cvs-commit*} without erasing it or changing anything
to its content, while the second first erases @samp{*cvs-commit*}
and tries to initialize it with a sane default (it does that by either
@@ -1391,7 +1391,7 @@ Below is a partial list of currently known problems with PCL-CVS.
@table @asis
@item Unexpected output from CVS
-Unexpected output from CVS may confuse PCL-CVS. It will create
+Unexpected output from CVS may confuse PCL-CVS@. It will create
warning messages in the @samp{*cvs*} buffer alerting you to any parse errors.
If you get these messages, please send a bug report to the email
addresses listed above. Include the contents of the @samp{*cvs*} buffer, the
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi
index 5aa9b1eb230..0ea0bbf84d1 100644
--- a/doc/misc/pgg.texi
+++ b/doc/misc/pgg.texi
@@ -89,12 +89,12 @@ PGG requires at least one implementation of privacy guard system.
This document assumes that you have already obtained and installed them
and that you are familiar with its basic functions.
-By default, PGG uses GnuPG. If you are new to such a system, I
+By default, PGG uses GnuPG@. If you are new to such a system, I
recommend that you should look over the GNU Privacy Handbook (GPH)
which is available at @uref{http://www.gnupg.org/documentation/}.
When using GnuPG, we recommend the use of the @code{gpg-agent}
-program, which is distributed with versions 2.0 and later of GnuPG.
+program, which is distributed with versions 2.0 and later of GnuPG@.
This is a daemon to manage private keys independently from any
protocol, and provides the most secure way to input and cache your
passphrases (@pxref{Caching passphrase}). By default, PGG will
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index 0174c3fa87f..b72211111a7 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -167,7 +167,7 @@ Since this is so common, you can use @key{TAB} to do nick completion.
Use the command @kbd{M-x irc} to connect using the defaults.
@xref{Configuration}, if you want to change the defaults.
-Use @kbd{C-u M-x irc} if you don't want to use the defaults, eg. if you
+Use @kbd{C-u M-x irc} if you don't want to use the defaults, e.g., if you
want to connect to a different network, or connect to the same network
using a different nick. This will prompt you for four things:
@@ -514,7 +514,7 @@ like @code{rcirc-default-nick}.
@cindex full name
@cindex real name
@cindex surname
-This variable is used to set your ``real name'' on IRC. It defaults
+This variable is used to set your ``real name'' on IRC@. It defaults
to the name returned by @code{user-full-name}. If you want to hide
your full name, you might want to set it to some pseudonym.
@@ -764,7 +764,7 @@ You can control which notices get omitted via the
omit away messages:
@example
-(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY))
+(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY"))
@end example
@vindex rcirc-omit-threshold
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index 1ffa2473b27..a6339e72de6 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -272,7 +272,7 @@ of the Makefile. Basically, you need to change the path specifications
for Emacs Lisp files and info files. Also, enter the name of your Emacs
executable (usually either @samp{emacs} or @samp{xemacs}).
-Then, type
+Then, type
@example
make
@@ -353,7 +353,7 @@ PostScript or HTML files.
@RefTeX{} needs to access all files which are part of a multifile
document, and the BibTeX database files requested by the
@code{\bibliography} command. To find these files, @RefTeX{} will
-require a search path, i.e. a list of directories to check. Normally
+require a search path, i.e., a list of directories to check. Normally
this list is stored in the environment variables @code{TEXINPUTS} and
@code{BIBINPUTS} which are also used by @RefTeX{}. However, on some
systems these variables do not contain the full search path. If
@@ -736,14 +736,14 @@ keymap @code{reftex-toc-map} may be used.
@cindex Table of contents buffer, recentering
@kindex C-c -
If you call @code{reftex-toc} while the @file{*toc*} buffer already
-exists, the cursor will immediately jump to the right place, i.e. the
+exists, the cursor will immediately jump to the right place, i.e., the
section from which @code{reftex-toc} was called will be highlighted.
The command @kbd{C-c -} (@code{reftex-toc-recenter}) will only redisplay
the @file{*toc*} buffer and highlight the correct line without actually
selecting the @file{*toc*} window. This can be useful to quickly find
out where in the document you currently are. You can also automate this
by asking RefTeX to keep track of your current editing position in the
-TOC. The TOC window will then be updated whenever you stop typing for
+TOC@. The TOC window will then be updated whenever you stop typing for
more than @code{reftex-idle-time} seconds. By default this works only
with the dedicated @file{*TOC*} frame. But you can also force automatic
recentering of the TOC window on the current frame with
@@ -894,7 +894,7 @@ start a selection process and finally insert the complete
@vindex reftex-ref-macro-prompt
First, you can select which reference macro you want to use,
-e.g. @samp{\ref} or @samp{\pageref}. Later in the process you have
+e.g., @samp{\ref} or @samp{\pageref}. Later in the process you have
another chance to make this selection and you can therefore disable this
step by customizing @code{reftex-ref-macro-prompt} if you find it too
intrusive. @xref{Reference Styles}.
@@ -1021,7 +1021,7 @@ Cycle forward through active reference macros. The selected macro is
displayed by the @samp{S<...>} indicator in the mode line of the
selection buffer. This mechanism comes in handy if you are using
@LaTeX{} packages like @code{varioref} or @code{fancyref} and want to
-use the special referencing macros they provide (e.g. @code{\vref} or
+use the special referencing macros they provide (e.g., @code{\vref} or
@code{\fref}) instead of @code{\ref}.
@item V
@@ -1102,7 +1102,7 @@ keymap @code{reftex-select-label-map} may be used.
@vindex reftex-label-alist-builtin
@RefTeX{} needs to be aware of the environments which can be referenced
-with a label (i.e. which carry their own counters). By default, @RefTeX{}
+with a label (i.e., which carry their own counters). By default, @RefTeX{}
recognizes all labeled environments and macros discussed in @cite{The
@LaTeX{} Companion by Goossens, Mittelbach & Samarin, Addison-Wesley
1994.}. These are:
@@ -1257,7 +1257,7 @@ to be used like this:
So we need to tell @RefTeX{} that @code{theorem} and @code{axiom} are new
labeled environments which define their own label categories. We can
-either use Lisp to do this (e.g. in @file{.emacs}) or use the custom
+either use Lisp to do this (e.g., in @file{.emacs}) or use the custom
library. With Lisp it would look like this
@lisp
@@ -1712,7 +1712,7 @@ extra step for reference macro selection, you can disable it by
customizing @code{reftex-ref-macro-prompt} and relying only on the
selection facilities provided in the last step.
-In the last step, i.e. the label selection, two key bindings are
+In the last step, i.e., the label selection, two key bindings are
provided to set the reference macro. Type @key{v} in order to cycle
forward through the list of available macros or @key{V} to cycle
backward. The mode line of the selection buffer shows the macro
@@ -1723,11 +1723,11 @@ through them you should adapt the order of entries in the variable
@code{reftex-ref-style-alist} to fit your liking.
For each entry in @code{reftex-ref-style-alist} a function with the name
-@code{reftex-<package>-<macro>} (e.g. @code{reftex-varioref-vref}) will
+@code{reftex-<package>-<macro>} (e.g., @code{reftex-varioref-vref}) will
be created automatically by @RefTeX{}. These functions can be used
instead of @kbd{C-c )} and provide an alternative way of having your
favorite referencing macro preselected and if cycling through the macros
-seems inconvenient to you.@footnote{You could e.g. bind
+seems inconvenient to you.@footnote{You could, e.g., bind
@code{reftex-varioref-vref} to @kbd{C-c v} and
@code{reftex-fancyref-fref} to @kbd{C-c f}.}
@@ -3059,7 +3059,7 @@ Specify the full search path directly in @RefTeX{}'s variables.
@item
Some @TeX{} systems provide stand-alone programs to do the file search just
-like @TeX{} and @BibTeX{}. E.g. Thomas Esser's @code{teTeX} uses the
+like @TeX{} and @BibTeX{}. E.g., Thomas Esser's @code{teTeX} uses the
@code{kpathsearch} library which provides the command @code{kpsewhich}
to search for files. @RefTeX{} can be configured to use this
program. Note that the exact syntax of the @code{kpsewhich}
@@ -3353,7 +3353,7 @@ association with the @code{\documentclass} and @code{\usepackage}
commands of a document (@pxref{Style Files,,,auctex}). Support for
@RefTeX{} in such a style file is useful when the @LaTeX{} style
defines macros or environments connected with labels, citations, or the
-index. Many style files (e.g. @file{amsmath.el} or @file{natbib.el})
+index. Many style files (e.g., @file{amsmath.el} or @file{natbib.el})
distributed with @AUCTeX{} already support @RefTeX{} in this
way.
@@ -3541,7 +3541,7 @@ document. @xref{AUCTeX}.
@cindex @code{iso-cvt}, Emacs package
@cindex Emacs packages, @code{iso-cvt}
When using packages which make the buffer representation of a file
-different from its disk representation (e.g. x-symbol, isotex,
+different from its disk representation (e.g., x-symbol, isotex,
iso-cvt) you may find that @RefTeX{}'s parsing information sometimes
reflects the disk state of a file. This happens only in @emph{unvisited}
parts of a multifile document, because @RefTeX{} visits these files
@@ -3555,7 +3555,7 @@ this:
@vindex reftex-keep-temporary-buffers
@code{(setq reftex-keep-temporary-buffers t)}@*
This implies that @RefTeX{} will load all parts of a multifile
-document into Emacs (i.e. there won't be any temporary buffers).
+document into Emacs (i.e., there won't be any temporary buffers).
@item
@vindex reftex-initialize-temporary-buffers
@code{(setq reftex-initialize-temporary-buffers t)}@*
@@ -3573,7 +3573,7 @@ See also the variable @code{reftex-refontify-context}.
@cindex @code{pf}, LaTeX package
@cindex LaTeX packages, @code{pf}
Some packages use an additional argument to a @code{\begin} macro
-to specify a label. E.g. Lamport's @file{pf.sty} uses both
+to specify a label. E.g., Lamport's @file{pf.sty} uses both
@example
\step@{@var{label}@}@{@var{claim}@} and \begin@{step+@}@{@var{label}@}
@var{claim}
@@ -3932,7 +3932,7 @@ commands always select the nearest entry with the correct new level.
@end defopt
@defopt reftex-toc-max-level
-The maximum level of toc entries which will be included in the TOC.
+The maximum level of toc entries which will be included in the TOC@.
Section headings with a bigger level will be ignored. In RefTeX,
chapters are level 1, sections level 2 etc. This variable can be
changed from within the @file{*toc*} buffer with the @kbd{t} key.
@@ -4138,7 +4138,7 @@ If an integer, use the nth argument of the macro. As a special case,
1000 means to get text after the last macro argument.
@item
If a string, use as regexp to search @emph{backward} from the label.
-Context is then the text following the end of the match. E.g. setting
+Context is then the text following the end of the match. E.g., setting
this to @samp{\\caption[[@{]} will use the caption in a figure or table
environment. @samp{\\begin@{eqnarray@}\|\\\\} works for
eqnarrays.
@@ -4166,7 +4166,7 @@ context:
Label context is used in two ways by @RefTeX{}: For display in the label
menu, and to derive a label string. If you want to use a different
method for each of these, specify them as a dotted pair.
-E.g. @code{(nil . t)} uses the text after the label (@code{nil}) for
+E.g., @code{(nil . t)} uses the text after the label (@code{nil}) for
display, and text from the default position (@code{t}) to derive a label
string. This is actually used for section labels.
@@ -4237,13 +4237,13 @@ Possible values for this option are:
t @r{This means to trust any label prefixes found.}
regexp @r{If a regexp, only prefixes matched by the regexp are trusted.}
list @r{List of accepted prefixes, as strings. The colon is part of}
- @r{the prefix, e.g. ("fn:" "eqn:" "item:").}
+ @r{the prefix, e.g., ("fn:" "eqn:" "item:").}
nil @r{Never trust a label prefix.}
@end example
The only disadvantage of using this feature is that the label context
displayed in the label selection buffer along with each label is
simply some text after the label definition. This is no problem if you
-place labels keeping this in mind (e.g. @i{before} the equation, @i{at
+place labels keeping this in mind (e.g., @i{before} the equation, @i{at
the beginning} of a fig/tab caption ...). Anyway, it is probably best
to use the regexp or the list value types to fine-tune this feature.
For example, if your document contains thousands of footnotes with
@@ -4446,7 +4446,7 @@ Controls if @code{reftex-reference} prompts for the reference macro.
If non-@code{nil}, should be a function which produces the string to
insert as a reference. Note that the insertion format can also be
changed with @code{reftex-label-alist}. This hook also is used by the
-special commands to insert e.g. @code{\vref} and @code{\fref}
+special commands to insert, e.g., @code{\vref} and @code{\fref}
references, so even if you set this, your setting will be ignored by the
special commands. The function will be called with three arguments, the
@var{label}, the @var{default format} which normally is
@@ -4760,7 +4760,7 @@ The default can be selected with @key{RET} during selection or
completion. Valid values of this variable are:
@example
nil @r{Do not provide a default index}
-"tag" @r{The default index tag given as a string, e.g. "idx"}
+"tag" @r{The default index tag given as a string, e.g., "idx"}
last @r{The last used index tag will be offered as default}
@end example
@end defopt
@@ -4770,7 +4770,7 @@ Format of index entries when copied from inside math mode. When
@code{reftex-index-selection-or-word} is executed inside @TeX{} math mode,
the index key copied from the buffer is processed with this format
string through the @code{format} function. This can be used to add the
-math delimiters (e.g. @samp{$}) to the string. Requires the
+math delimiters (e.g., @samp{$}) to the string. Requires the
@file{texmathp.el} library which is part of @AUCTeX{}.
@end defopt
@@ -5170,7 +5170,7 @@ Never refontify.
@item t
Always refontify.
@item 1
-Refontify when necessary, e.g. with old versions of the x-symbol
+Refontify when necessary, e.g., with old versions of the x-symbol
package.
@end table
The option is ignored when @code{reftex-use-fonts} is @code{nil}.
@@ -5418,7 +5418,7 @@ the TOC buffer promote/demote the section at point or all sections in
the current region.
@item
New option @code{reftex-toc-split-windows-fraction} to set the size of
-the window used by the TOC. This makes the old variable
+the window used by the TOC@. This makes the old variable
@code{reftex-toc-split-windows-horizontally-fraction} obsolete.
@item
A dedicated frame can show the TOC with the current section
@@ -5812,7 +5812,7 @@ Fixed bug with AUCTeX @code{TeX-master}.
@itemize @bullet
@item
The selection now uses a recursive edit, much like minibuffer input.
-This removes all restrictions during selection. E.g. you can now
+This removes all restrictions during selection. E.g., you can now
switch buffers at will, use the mouse etc.
@item
New option @code{reftex-highlight-selection}.
@@ -5888,7 +5888,7 @@ When no BibTeX database files are specified, citations can also use
@noindent @b{Version 3.11}
@itemize @bullet
@item
-Fixed bug which led to naked label in (e.g.) footnotes.
+Fixed bug which led to naked label in (e.g.@:) footnotes.
@item
Added scroll-other-window functions to RefTeX-Select.
@end itemize
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index 1dd7d1b6153..f97d835e50c 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -100,7 +100,7 @@ There are many different databases out there---and good ones---which
this mode is not trying to replace. Rather, it's how that data gets
there that's the question. Most of the time, we just want to say
"Remember so-and-so's phone number, or that I have to buy dinner for the
-cats tonight." That's the FACT. How it's stored is really the
+cats tonight." That's the FACT@. How it's stored is really the
computer's problem. But at this point in time, it's most definitely
also the user's problem, and sometimes so laboriously so that people
just let data slip, rather than expend the effort to record it.
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index a2fe0f68a74..d6d57421ec2 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -120,7 +120,7 @@ sent. Supercite is re-initialized in each new reply buffer.
@cindex attribute, attributing
Typical usage is as follows. You want to reply or followup to a message
-in your MUA. You will probably hit @kbd{r} (i.e., ``reply'') or @kbd{f}
+in your MUA@. You will probably hit @kbd{r} (i.e., ``reply'') or @kbd{f}
(i.e., ``forward'') to begin composing the reply. In response, the MUA
will create a reply buffer and initialize the outgoing mail headers
appropriately. The body of the reply will usually be empty at this
@@ -165,7 +165,7 @@ reply or forward command. This command will actually perform citations
by calling a hook variable to which Supercite's top-level function
@code{sc-cite-original} has been added. When @code{sc-cite-original} is
executed, the original message must be set up in a very specific way,
-but this is handled automatically by the MUA. @xref{Hints to MUA
+but this is handled automatically by the MUA@. @xref{Hints to MUA
Authors}.@refill
@cindex info alist
@@ -202,7 +202,7 @@ When the original message is cited by @code{sc-cite-original}, it will
cited text and want to re-fill it, you must use an add-on package such
as @cite{filladapt} or @cite{gin-mode}. These packages can recognize
Supercited text and will fill them appropriately. Emacs's built-in
-filling routines, e.g@. @code{fill-paragraph}, do not recognize cited
+filling routines, e.g., @code{fill-paragraph}, do not recognize cited
text and will not re-fill them properly because it cannot guess the
@code{fill-prefix} being used.
@xref{Post-yank Formatting Commands}, for details.@refill
@@ -213,7 +213,7 @@ beautifications on the cited original text, maintaining consistent and
informative citations throughout. Supercite tries to be as configurable
as possible to allow for a wide range of personalized citation styles,
but it is also immediately useful with the default configuration, once
-it has been properly connected to your MUA. @xref{Getting Connected},
+it has been properly connected to your MUA@. @xref{Getting Connected},
for more details.@refill
@node Citations
@@ -388,7 +388,7 @@ change @code{sc-citation-root-regexp} you should always also change
@dfn{Mail header information keys} are nuggets of information that
Supercite extracts from the various mail headers of the original
-message, placed in the reply buffer by the MUA. Information is kept in
+message, placed in the reply buffer by the MUA@. Information is kept in
the @dfn{Info Alist} as key-value pairs, and can be retrieved for use in
various places within Supercite, such as in header rewrite functions and
attribution selection. Other bits of data, composed and created by
@@ -532,7 +532,7 @@ beginning at zero.
@cindex header rewrite functions, built-in
Below are examples of the various built-in header rewrite functions.
-Please note the following:@: first, the text which appears in the
+Please note the following: first, the text which appears in the
examples below as @var{infokey} indicates that the corresponding value
of the info key from the info alist will be inserted there.
(@pxref{Information Keys and the Info Alist}). For example, in @code{sc-header-on-said}
@@ -1132,8 +1132,8 @@ Each element in this list contains lists of the following form:
@example
@group
-(@var{infokey} ((@var{regexp} @. @var{attribution})
- (@var{regexp} @. @var{attribution})
+(@var{infokey} ((@var{regexp} . @var{attribution})
+ (@var{regexp} . @var{attribution})
(@dots{})))
@end group
@end example
@@ -1240,7 +1240,7 @@ post-selection hook, the local variables @code{attribution} and
variables in your hook functions, you change the attribution and
citation strings used by Supercite. One possible use of this would be
to override any automatically derived attribution string when it is only
-one character long; e.g. you prefer to use @code{"initials"} but the
+one character long; e.g., you prefer to use @code{"initials"} but the
author only has one name.@refill
@node Author Names
@@ -1284,7 +1284,7 @@ is used for this purpose. As implied by its name, this variable is an
association list, where each element is a cons cell of the form:
@example
-(@var{regexp} @. @var{position})
+(@var{regexp} . @var{position})
@end example
@noindent
@@ -1295,7 +1295,7 @@ Thus to strip out all titles of ``Dr.'', ``Mr.'', etc. from the name,
@code{sc-name-filter-alist} would have an entry such as:
@example
-("^\\(Mr\\|Mrs\\|Ms\\|Dr\\)[.]?$" @. 0)
+("^\\(Mr\\|Mrs\\|Ms\\|Dr\\)[.]?$" . 0)
@end example
@noindent
@@ -1486,8 +1486,8 @@ consulted to find the frame to use (@code{sc-cite-frame-alist},
respectively). These frames can contain alists of the form:
@example
-((@var{infokey} (@var{regexp} @. @var{frame}) (@var{regexp} @. @var{frame}) @dots{})
- (@var{infokey} (@var{regexp} @. @var{frame}) (@var{regexp} @. @var{frame}) @dots{})
+((@var{infokey} (@var{regexp} . @var{frame}) (@var{regexp} . @var{frame}) @dots{})
+ (@var{infokey} (@var{regexp} . @var{frame}) (@var{regexp} . @var{frame}) @dots{})
(@dots{}))
@end example
@@ -1819,7 +1819,7 @@ steps:
@item
Insert the original message, including the mail headers into the reply
buffer. At this point you should not modify the raw text in any way
-(except for any necessary decoding, e.g. of quoted-printable text), and
+(except for any necessary decoding, e.g., of quoted-printable text), and
you should place all the original headers into the body of the reply.
This means that many of the mail headers will be duplicated, one copy
above the @code{mail-header-separator} line and one copy below, however
diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi
index 9d6fb11db50..f483c899bf2 100644
--- a/doc/misc/sem-user.texi
+++ b/doc/misc/sem-user.texi
@@ -59,7 +59,7 @@ minor modes. The variable @code{semantic-default-submodes} determines
which auxiliary modes are enabled; the defaults are SemanticDB mode
(@pxref{SemanticDB}) and Global Semantic Idle Scheduler mode
(@pxref{Idle Scheduler}). You can also toggle the auxiliary minor
-modes separately, using their mode functions (e.g. @kbd{M-x
+modes separately, using their mode functions (e.g., @kbd{M-x
semanticdb-minor-mode}), or via the @samp{Development} menu. The
various auxiliary minor modes are described in the following sections.
@@ -105,7 +105,7 @@ valid mode symbols are:
Semantic mode provides a number of commands for navigating, querying,
and editing source code in a language-aware manner. These commands
generally act on @dfn{tags}, which are the source-code units deemed
-``important'' by the present programming language (e.g. functions in
+``important'' by the present programming language (e.g., functions in
the C programming language).
These commands may be used in any buffer that has been parsed by
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index cccd74dec0f..fecba99952f 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -912,7 +912,7 @@ You can edit the data area, but don't insert or delete any newlines
except in the local-variables part, since @acronym{SES} locates things by
counting newlines. Use @kbd{C-x C-e} at the end of a line to install
your edits into the spreadsheet data structures (this does not update
-the print area, use e.g. @kbd{C-c C-l} for that).
+the print area, use, e.g., @kbd{C-c C-l} for that).
The data area is maintained as an image of spreadsheet data
structures that area stored in buffer-local variables. If the data
diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi
index 4e4df3f0bbb..67824afb898 100644
--- a/doc/misc/smtpmail.texi
+++ b/doc/misc/smtpmail.texi
@@ -101,7 +101,7 @@ spool, then.
@cindex IMAP
When your computer is not always connected to the internet, you
must get the mail from the remote mail host using a protocol such as
-POP3 or IMAP. POP3 essentially downloads all your mail from the mail
+POP3 or IMAP@. POP3 essentially downloads all your mail from the mail
host to your computer. The mail is stored in some file on your
computer, and again, all your MUA has to do is read mail from the
spool.
@@ -219,7 +219,7 @@ The following example illustrates what you could put in
@cindex user name
Most SMTP servers require clients to authenticate themselves before
they are allowed to send mail. Authentication usually involves
-supplying a user name and password.
+supplying a user name and password.
If you have not configured anything, then the first time you try to
send mail via a server, Emacs (version 24.1 and later) prompts you
@@ -260,7 +260,7 @@ file, @pxref{Top,,auth-source, auth, Emacs auth-source Library}.
The process by which the SMTP library authenticates you to the server
is known as ``Simple Authentication and Security Layer'' (SASL).
There are various SASL mechanisms, and this library supports three of
-them: CRAM-MD5, PLAIN, and LOGIN. It tries each of them, in that order,
+them: CRAM-MD5, PLAIN, and LOGIN@. It tries each of them, in that order,
until one succeeds. The first uses a form of encryption to obscure
your password, while the other two do not.
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index a983f76ffd3..4918321b171 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -7,7 +7,7 @@
@c This is *so* much nicer :)
@footnotestyle end
-@c In the Tramp CVS, the version number is auto-frobbed from
+@c In the Tramp repository, 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.
@@ -106,7 +106,7 @@ If you're using the other Emacs flavor, you should read the
@ifhtml
The latest release of @value{tramp} is available for
@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
-@ref{Obtaining Tramp} for more details, including the CVS server
+@ref{Obtaining Tramp} for more details, including the Git server
details.
@value{tramp} also has a @uref{http://savannah.gnu.org/projects/tramp/,
@@ -377,13 +377,13 @@ includes @value{tramp} already, and there is a @value{tramp} package
for XEmacs, as well. So maybe it is easier to just use those. But if
you want the bleeding edge, read on@dots{...}
-For the especially brave, @value{tramp} is available from CVS. The CVS
+For the especially brave, @value{tramp} is available from Git. The Git
version is the latest version of the code and may contain incomplete
features or new issues. Use these versions at your own risk.
Instructions for obtaining the latest development version of @value{tramp}
-from CVS can be found by going to the Savannah project page at the
-following URL and then clicking on the CVS link in the navigation bar
+from Git can be found by going to the Savannah project page at the
+following URL and then clicking on the Git link in the navigation bar
at the top.
@noindent
@@ -394,8 +394,14 @@ Or follow the example session below:
@example
] @strong{cd ~/@value{emacsdir}}
-] @strong{export CVS_RSH="ssh"}
-] @strong{cvs -z3 -d:pserver:anonymous@@cvs.savannah.gnu.org:/sources/tramp co tramp}
+] @strong{git clone git://git.savannah.gnu.org/tramp.git}
+@end example
+
+@noindent
+Tramp developers use instead
+
+@example
+] @strong{git clone login@@git.sv.gnu.org:/srv/git/tramp.git}
@end example
@noindent
@@ -405,12 +411,11 @@ updates from the repository by issuing the command:
@example
] @strong{cd ~/@value{emacsdir}/tramp}
-] @strong{export CVS_RSH="ssh"}
-] @strong{cvs update -d}
+] @strong{git pull}
@end example
@noindent
-Once you've got updated files from the CVS repository, you need to run
+Once you've got updated files from the Git repository, you need to run
@command{autoconf} in order to get an up-to-date @file{configure}
script:
@@ -447,7 +452,8 @@ GVFS integration started in February 2009.
Remote commands on Windows hosts are available since September 2011.
@end ifset
Ad-hoc multi-hop methods (with a changed syntax) have been reenabled
-in November 2011.
+in November 2011. In November 2012, Juergen Hoetzel's
+@file{tramp-adb.el} has been added.
In December 2001, @value{tramp} has been added to the XEmacs package
repository. Being part of the Emacs repository happened in June 2002,
@@ -710,7 +716,7 @@ This is another method from the Kerberos suite. It behaves like @option{su}.
@cindex plink method
This method is mostly interesting for Windows users using the PuTTY
-implementation of SSH. It uses @samp{plink -ssh} to log in to the
+implementation of SSH@. It uses @samp{plink -ssh} to log in to the
remote host.
This supports the @samp{-P} argument.
@@ -736,6 +742,16 @@ expects PuTTY session names, calling @samp{plink -load @var{session}
hasn't defined a user name. Different port numbers must be defined in
the session.
+
+@item @option{adb}
+@cindex method adb
+@cindex adb method
+
+This special method uses the Android Debug Bridge for connecting
+Android devices. The Android Debug Bridge, part of the Android SDK,
+must be installed locally. The variable @var{tramp-adb-sdk-dir} must
+be set to its installation directory.
+
@end table
@@ -980,7 +996,7 @@ This works only for unified filenames, see @ref{Issues}.
@cindex method smb
@cindex smb method
-This is another not natural @value{tramp} method. It uses the
+This is another not native @value{tramp} method. It uses the
@command{smbclient} command on different Unices in order to connect to
an SMB server. An SMB server might be a Samba (or CIFS) server on
another UNIX host or, more interesting, a host running MS Windows. So
@@ -990,7 +1006,7 @@ XP, MS Windows Vista, and MS Windows 7.
The first directory in the localname must be a share name on the remote
host. Remember that the @code{$} character, in which default shares
usually end, must be written @code{$$} due to environment variable
-substitution in file names. If no share name is given (i.e. remote
+substitution in file names. If no share name is given (i.e., remote
directory @code{/}), all available shares are listed.
Since authorization is done on share level, you will always be
@@ -1037,7 +1053,7 @@ name.
The connection methods described in this section are based on GVFS
@uref{http://en.wikipedia.org/wiki/GVFS}. Via GVFS, the remote
-filesystem is mounted locally through FUSE. @value{tramp} uses
+filesystem is mounted locally through FUSE@. @value{tramp} uses
this local mounted directory internally.
The communication with GVFS is implemented via D-Bus messages.
@@ -1077,7 +1093,7 @@ FUSE, it also needs the SYNCE-GVFS plugin.
@defopt tramp-gvfs-methods
This customer option, a list, defines the external methods which
-shall be used with GVFS. Per default, these are @option{dav},
+shall be used with GVFS@. Per default, these are @option{dav},
@option{davs}, @option{obex} and @option{synce}. Other possible
values are @option{ftp}, @option{sftp} and @option{smb}.
@end defopt
@@ -2923,7 +2939,7 @@ to @code{nil}, @ref{Filename completion}.
Disable version control. If you access remote files which are not
under version control, a lot of check operations can be avoided by
-disabling VC. This can be achieved by
+disabling VC@. This can be achieved by
@lisp
(setq vc-ignore-dir-regexp
@@ -3252,7 +3268,7 @@ local host as @samp{root} user, is possible just by @kbd{C-x C-f
@item Use configuration possibilities of your method:
-Several connection methods (i.e. the programs used) offer powerful
+Several connection methods (i.e., the programs used) offer powerful
configuration possibilities (@pxref{Customizing Completion}). In the
given case, this could be @file{~/.ssh/config}:
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index 90ab7f5554f..f42007348ee 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -137,7 +137,7 @@ Given a parsed URI, this function returns the corresponding URI string.
@cindex parsed URI
The return value of @code{url-generic-parse-url}, and the argument
expected by @code{url-recreate-url}, is a @dfn{parsed URI}: a CL
-structure whose slots hold the various components of the URI.
+structure whose slots hold the various components of the URI@.
@xref{top,the CL Manual,,cl,GNU Emacs Common Lisp Emulation}, for
details about CL structures. Most of the other functions in the
@code{url} library act on parsed URIs.
@@ -154,7 +154,7 @@ details about CL structures. Most of the other functions in the
@table @code
@item type
-The URI scheme (a string, e.g.@: @code{http}). @xref{Supported URL
+The URI scheme (a string, e.g., @code{http}). @xref{Supported URL
Types}, for a list of schemes that the @code{url} library knows how to
process. This slot can also be @code{nil}, if the URI is not fully
specified.
@@ -190,7 +190,7 @@ component specifies a ``secondary resource'', such as a section of a
webpage.
@item fullness
-This is @code{t} if the URI is fully specified, i.e.@: the
+This is @code{t} if the URI is fully specified, i.e., the
hierarchical components of the URI (the hostname and/or username
and/or password) are preceded by @samp{//}.
@end table
@@ -239,7 +239,7 @@ percent-encoded in accordance with RFC 3986.
@defun url-encode-url url-string
This function return a properly URI-encoded version of
@var{url-string}. It also performs @dfn{URI normalization},
-e.g.@: converting the scheme component to lowercase if it was
+e.g., converting the scheme component to lowercase if it was
previously uppercase.
@end defun
@@ -278,7 +278,7 @@ carriage returns and line feeds, which are normally forbidden in URIs.
@chapter Retrieving URLs
The @code{url} library defines the following three functions for
-retrieving the data specified by a URL. The actual retrieval protocol
+retrieving the data specified by a URL@. The actual retrieval protocol
depends on the URL's URI scheme, and is performed by lower-level
scheme-specific functions. (Those lower-level functions are not
documented here, and generally should not be called directly.)
@@ -385,7 +385,7 @@ The @code{http} scheme refers to the Hypertext Transfer Protocol. The
Its default port is 80.
The @code{https} scheme is a secure version of @code{http}, with
-transmission via SSL. It is defined in RFC 2069, and its default port
+transmission via SSL@. It is defined in RFC 2069, and its default port
is 443. When using @code{https}, the @code{url} library performs SSL
encryption via the @code{ssl} library, by forcing the @code{ssl}
gateway method to be used. @xref{Gateways in general}.
@@ -485,7 +485,7 @@ HTTP supports an @samp{OPTIONS} method describing things supported by
the URL@.
@defun url-http-options url
-Returns a property list describing options available for URL. The
+Returns a property list describing options available for URL@. The
property list members are:
@table @code
@@ -583,7 +583,7 @@ A @code{mailto} URL specifies an email message to be sent to a given
email address. For example, @samp{mailto:foo@@bar.com} specifies
sending a message to @samp{foo@@bar.com}. The ``retrieval method''
for such URLs is to open a mail composition buffer in which the
-appropriate content (e.g.@: the recipient address) has been filled in.
+appropriate content (e.g., the recipient address) has been filled in.
As defined in RFC 2368, a @code{mailto} URL has the form
@@ -652,7 +652,7 @@ tunneled through SSL and has default port 563.
@vindex NNTPSERVER
@defopt url-news-server
This variable specifies the default news server from which to fetch
-news, if no server was specified in the URL. The default value,
+news, if no server was specified in the URL@. The default value,
@code{nil}, means to use the server specified by the standard
environment variable @samp{NNTPSERVER}, or @samp{news} if that
environment variable is unset.
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi
index 0d9bb286330..4e85da70ca2 100644
--- a/doc/misc/vip.texi
+++ b/doc/misc/vip.texi
@@ -53,13 +53,13 @@ concentrate mainly on differences from Vi, especially features unique to
VIP.
It is recommended that you read nodes on survey and on customization before
-you start using VIP. Other nodes may be visited as needed.
+you start using VIP@. Other nodes may be visited as needed.
Comments and bug reports are welcome. Please send messages to
@code{ms@@Sail.Stanford.Edu} if you are outside of Japan and to
@code{masahiko@@sato.riec.tohoku.junet} if you are in Japan.@refill
-@insertcopying
+@insertcopying
@end ifnottex
@@ -83,7 +83,7 @@ concentrate mainly on differences from Vi, especially features unique to
VIP.
It is recommended that you read chapters on survey and on customization
-before you start using VIP. Other chapters may be used as future
+before you start using VIP@. Other chapters may be used as future
references.
Comments and bug reports are welcome. Please send messages to
@@ -263,7 +263,7 @@ emacs mode vi mode insert mode
@kindex 032 @kbd{C-z} (@code{vip-change-mode-to-vi})
-You will be in this mode just after you loaded VIP. You can do all
+You will be in this mode just after you loaded VIP@. You can do all
normal Emacs editing in this mode. Note that the key @kbd{C-z} is globally
bound to @code{vip-change-mode-to-vi}. So, if you type @kbd{C-z} in this mode
then you will be in vi mode.@refill
@@ -688,7 +688,7 @@ Replace.
@chapter Vi Commands
This chapter describes Vi commands other than Ex commands implemented in
-VIP. Except for the last section which discusses insert mode, all the
+VIP@. Except for the last section which discusses insert mode, all the
commands described in this chapter are to be used in vi mode.
@menu
@@ -1716,7 +1716,7 @@ character @samp{|}.
@end menu
@node Ex Command Reference, Customization, Ex Commands, Ex Commands
@section Ex Command Reference
-In this section we briefly explain all the Ex commands supported by VIP.
+In this section we briefly explain all the Ex commands supported by VIP@.
Most Ex commands expect @var{address} as their argument, and they use
default addresses if they are not explicitly given. In the following, such
default addresses will be shown in parentheses.
@@ -1875,7 +1875,7 @@ customizing VIP.
@node Customizing Constants, Customizing Key Bindings, Customization, Customization
@section Customizing Constants
An easy way to customize VIP is to change the values of constants used
-in VIP. Here is the list of the constants used in VIP and their default
+in VIP@. Here is the list of the constants used in VIP and their default
values.
@table @code
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 94f7e53ce8c..5fb1f92363a 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -208,7 +208,7 @@ A buffer has a distinguished position called the @dfn{point}.
A @dfn{point} is always between 2 characters, and is @dfn{looking at}
the right hand character. The cursor is positioned on the right hand
character. Thus, when the @dfn{point} is looking at the end-of-line,
-the cursor is on the end-of-line character, i.e.@: beyond the last
+the cursor is on the end-of-line character, i.e., beyond the last
character on the line. This is the default Emacs behavior.@refill
The default settings of Viper try to mimic the behavior of Vi, preventing
@@ -301,7 +301,7 @@ You can also turn Viper on and off at any time while in Vi command mode.
more information.@refill
Emacs uses Control and Meta modifiers. These are denoted as C and M,
-e.g.@: @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}. The Meta key is
+e.g., @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}. The Meta key is
usually located on each side of the Space bar; it is used in a manner
similar to the Control key, e.g., @kbd{M-x} means typing @kbd{x} while
holding the Meta key down. For keyboards that do not have a Meta key,
@@ -2681,7 +2681,7 @@ just left. This lets one use these functions in a multi-frame
configuration. However, this may require some getting used to. For
instance, if you are typing in a frame, A, and then move the mouse to frame
B and click to invoke mouse search, search (or insertion) will be performed
-in frame A. To perform search/insertion in frame B, you will first have to
+in frame A@. To perform search/insertion in frame B, you will first have to
shift focus there, which doesn't happen until you type a character or
perform some other action in frame B---mouse search doesn't shift focus.
@@ -3670,7 +3670,7 @@ Join <count> lines (default 2).
@item :[x,y]s/<pat>/<repl>/<f>
Substitute (on lines x through y) the pattern
<pat> (default the last pattern) with <repl>. Useful
-flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+flags <f> are @samp{g} for @samp{global} (i.e., change every
non-overlapping occurrence of <pat>) and @samp{c} for
@samp{confirm} (type @samp{y} to confirm a particular
substitution, else @samp{n} ). Instead of @kbd{/} any
@@ -3694,7 +3694,7 @@ Same as @kbd{:copy}.
@item :[x,y]move [z]
Move text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
@item &
-Repeat latest Ex substitute command, e.g.
+Repeat latest Ex substitute command, e.g.,
@kbd{:s/wrong/right}.
@item :x,yp
@itemx :g/Pat/p
@@ -3794,7 +3794,7 @@ Search in the tags file where <name> is defined (file, line), and go to it.
@item :[x,y]s/<pat>/<repl>/<f>
Substitute (on lines x through y) the pattern <pat> (default the last
pattern) with <repl>. Useful
-flags <f> are @samp{g} for @samp{global} (i.e.@: change every
+flags <f> are @samp{g} for @samp{global} (i.e., change every
non-overlapping occurrence of <pat>) and @samp{c} for
@samp{confirm} (type @samp{y} to confirm a particular
substitution, else @samp{n}). Instead of @kbd{/} any
@@ -3804,7 +3804,7 @@ delimiter.
Note: @emph{The newline character (inserted as @kbd{C-qC-j})
can be used in <repl>}.
@item &
-Repeat latest Ex substitute command, e.g.@: @kbd{:s/wrong/right}.
+Repeat latest Ex substitute command, e.g., @kbd{:s/wrong/right}.
@item :global /<pattern>/<ex-command>
@itemx :g /<pattern>/<ex-command>
Execute <ex-command> on all lines that match <pattern>.
@@ -4476,12 +4476,12 @@ dxc@@xprt.net (David X Callaway),
edmonds@@edmonds.home.cs.ubc.ca (Brian Edmonds),
gin@@mo.msk.ru (Golubev I.N.),
gviswana@@cs.wisc.edu (Guhan Viswanathan),
-gvr@@halcyon.com (George V.@: Reilly),
+gvr@@halcyon.com (George V. Reilly),
hatazaki@@bach.convex.com (Takao Hatazaki),
hpz@@ibmhpz.aug.ipp-garching.mpg.de (Hans-Peter Zehrfeld),
irie@@t.email.ne.jp (Irie Tetsuya),
jackr@@dblues.engr.sgi.com (Jack Repenning),
-jamesm@@bga.com (D.J.@: Miller II),
+jamesm@@bga.com (D.J. Miller II),
jjm@@hplb.hpl.hp.com (Jean-Jacques Moreau),
jl@@cse.ogi.edu (John Launchbury),
jobrien@@hchp.org (John O'Brien),
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index 24fe3e63ac9..4152b52250c 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -663,7 +663,7 @@ in the buffer with a positive tabbing order, or @code{nil}
@vindex parent@r{ keyword}
@item :parent
-The parent of a nested widget (e.g.@: a @code{menu-choice} item or an
+The parent of a nested widget (e.g., a @code{menu-choice} item or an
element of a @code{editable-list} widget).
@vindex sibling-args@r{ keyword}
@@ -813,7 +813,7 @@ Face used for highlighting the editable field. Default is
@vindex secret@r{ keyword}
@item :secret
-Character used to display the value. You can set this to e.g.@: @code{?*}
+Character used to display the value. You can set this to, e.g., @code{?*}
if the field contains a password or other secret information. By
default, this is @code{nil}, and the value is not secret.
@@ -918,8 +918,8 @@ Insert a literal @samp{%}.
@vindex button-args@r{ keyword}
@item :button-args
-A list of keywords to pass to the radio buttons. Useful for setting
-e.g.@: the @samp{:help-echo} for each button.
+A list of keywords to pass to the radio buttons. Useful for setting,
+e.g., the @samp{:help-echo} for each button.
@vindex buttons@r{ keyword}
@item :buttons
@@ -1068,12 +1068,12 @@ Usually a checklist will only match if the items are in the exact
sequence given in the specification. By setting @code{:greedy} to
non-@code{nil}, it will allow the items to come in any sequence.
However, if you extract the value they will be in the sequence given
-in the checklist, i.e.@: the original sequence is forgotten.
+in the checklist, i.e., the original sequence is forgotten.
@vindex button-args@r{ keyword}
@item :button-args
-A list of keywords to pass to the checkboxes. Useful for setting
-e.g.@: the @samp{:help-echo} for each checkbox.
+A list of keywords to pass to the checkboxes. Useful for setting,
+e.g., the @samp{:help-echo} for each checkbox.
@vindex buttons@r{ keyword}
@item :buttons
@@ -1464,7 +1464,7 @@ property @var{property}.
@end defun
Occasionally it can be useful to know which kind of widget you have,
-i.e.@: the name of the widget type you gave when the widget was created.
+i.e., the name of the widget type you gave when the widget was created.
@defun widget-type widget
Return the name of @var{widget}, a symbol.
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index 7f72b5faafb..16fb83ad18f 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -385,7 +385,7 @@ configuration file named (by default) @file{man.conf} (or something very
similar), which seems to be the standard mechanism under GNU/Linux, then
it parses that. To be precise, ``something very similar'' means
starting with @samp{man} and ending with @samp{.conf} and possibly more
-lowercase letters, e.g.@: @file{manual.configuration}.
+lowercase letters, e.g., @file{manual.configuration}.
The search path and/or precise full path name for this file are set by
the value of the customizable user option @code{woman-man.conf-path}.
If all else fails, WoMan uses a plausible default man search path.
@@ -414,7 +414,7 @@ files that it can access, which can be very slow, especially if a
network is involved. For this reason, it caches various amounts of
information, after which retrieving it from the cache is very fast. If
the cache ever gets out of synchronism with reality, running the
-@code{woman} command with a prefix argument (e.g.@: @kbd{C-u M-x woman})
+@code{woman} command with a prefix argument (e.g., @kbd{C-u M-x woman})
will force it to rebuild its cache. This is necessary only if the names
or locations of any man files change; it is not necessary if only their
contents change. It would always be necessary if such a change occurred
@@ -485,7 +485,7 @@ You can also bind the variable @code{woman-use-topic-at-point} locally
to a non-@code{nil} value (using @code{let}), in which case
@code{woman} will can use the suggested topic without confirmation if
possible. This may be useful to provide special private key bindings,
-e.g.@: this key binding for @kbd{C-c w} runs WoMan on the topic at
+e.g., this key binding for @kbd{C-c w} runs WoMan on the topic at
point without seeking confirmation:
@lisp
@@ -511,7 +511,7 @@ The filename interface is accessed principally via the extended command
all (provided WoMan is installed and loaded or set up to autoload).
This command can be used to browse any accessible man file, regardless
of its filename or location. If the file is compressed then automatic
-file decompression must already be turned on (e.g.@: see the
+file decompression must already be turned on (e.g., see the
@samp{Help->Options} submenu)---it is turned on automatically only by
the @code{woman} topic interface.
@@ -554,7 +554,7 @@ primarily used internally by WoMan.
Emacs provides an interface to detect automatically the format of a file
and decode it when it is visited. It is used primarily by the
-facilities for editing rich (i.e.@: formatted) text, as a way to store
+facilities for editing rich (i.e., formatted) text, as a way to store
formatting information transparently as @acronym{ASCII} markup. WoMan can in
principle use this interface, but it must be configured explicitly.
@@ -686,7 +686,7 @@ described by @code{Man-see-also-regexp}.
Man pages usually contain a ``SEE ALSO'' section containing references
to other man pages. If these man pages are installed then WoMan can
-easily be directed to follow the reference, i.e.@: to find and format the
+easily be directed to follow the reference, i.e., to find and format the
man page. When the mouse is passed over a correctly formatted reference
it is highlighted, in which case clicking the middle button
@kbd{Mouse-2} will cause WoMan to follow the reference. Alternatively,
@@ -763,13 +763,13 @@ item had been used.
@kindex q
@findex Man-quit
Bury the buffer containing the current man page (@code{Man-quit}),
-i.e.@: move it to the bottom of the buffer stack.
+i.e., move it to the bottom of the buffer stack.
@item k
@kindex k
@findex Man-kill
Kill the buffer containing the current man page (@code{Man-kill}),
-i.e.@: delete it completely so that it can be retrieved only by formatting
+i.e., delete it completely so that it can be retrieved only by formatting
the page again.
@item M-p
@@ -786,7 +786,7 @@ Find the next WoMan buffer (@code{WoMan-next-manpage}).
@kindex R
@findex woman-reformat-last-file
Call WoMan to reformat the last man page formatted by WoMan
-(@code{woman-reformat-last-file}), e.g.@: after changing the fill column.
+(@code{woman-reformat-last-file}), e.g., after changing the fill column.
@end table
@@ -862,7 +862,7 @@ All WoMan user options are customizable, and it is recommended to
change them only via the standard Emacs customization facilities.
WoMan defines a top-level customization group called @code{WoMan}
under the parent group @code{Help}. It can be accessed either via the
-standard Emacs facilities, e.g.@: via the @samp{Help->Customize}
+standard Emacs facilities, e.g., via the @samp{Help->Customize}
submenu, or via the WoMan major mode menu.
The top-level WoMan group contains only a few general options and three
@@ -874,7 +874,7 @@ customization should be possible via existing user options.
@vtable @code
@item woman-show-log
A boolean value that defaults to @code{nil}. If non-@code{nil} then show the
-@code{*WoMan-Log*} buffer if appropriate, i.e.@: if any warning messages
+@code{*WoMan-Log*} buffer if appropriate, i.e., if any warning messages
are written to it. @xref{Log, , The *WoMan-Log* Buffer}.
@item woman-pre-format-hook
@@ -960,13 +960,13 @@ is
@end lisp
Any environment variables (names of which must have the Unix-style form
-@code{$NAME}, e.g.@: @code{$HOME}, @code{$EMACSDATA}, @code{$EMACS_DIR},
+@code{$NAME}, e.g., @code{$HOME}, @code{$EMACSDATA}, @code{$EMACS_DIR},
regardless of platform) are evaluated first but each element must
evaluate to a @emph{single} directory name. Trailing @file{/}s are
ignored. (Specific directories in @code{woman-path} are also searched.)
On Microsoft platforms I recommend including drive letters explicitly,
-e.g.
+e.g.:
@lisp
("C:/Cygwin/usr/man" "C:/usr/man" "C:/usr/local/man")
@@ -1010,7 +1010,7 @@ and unreadable files are ignored. The default value on MS-DOS is
and on other platforms is @code{nil}.
Any environment variables (names of which must have the Unix-style form
-@code{$NAME}, e.g.@: @code{$HOME}, @code{$EMACSDATA}, @code{$EMACS_DIR},
+@code{$NAME}, e.g., @code{$HOME}, @code{$EMACSDATA}, @code{$EMACS_DIR},
regardless of platform) are evaluated first but each element must
evaluate to a @emph{single} directory name (regexp, see above). For
example
@@ -1064,7 +1064,7 @@ suppresses this action. The ``standard'' non-@code{nil} filename is
@item woman-dired-keys
A list of @code{dired} mode keys to be defined to run WoMan on the
-current file, e.g.@: @code{("w" "W")} or any non-@code{nil} atom to
+current file, e.g., @code{("w" "W")} or any non-@code{nil} atom to
automatically define @kbd{w} and @kbd{W} if they are unbound, or
@code{nil} to do nothing. Default is @code{t}.
@@ -1229,7 +1229,7 @@ WoMan provides partial experimental support for special symbols,
initially only for MS-Windows and only for MS-Windows fonts. This
includes both non-@acronym{ASCII} characters from the main text font and use
of a separate symbol font. Later, support will be added for other font
-types (e.g.@: @code{bdf} fonts) and for the X Window System. In Emacs
+types (e.g., @code{bdf} fonts) and for the X Window System. In Emacs
20.7, the current support works partially under Windows 9x but may not
work on any other platform.
@@ -1312,7 +1312,7 @@ is output.
@cindex reporting bugs
@cindex bugs, reporting
-If WoMan fails completely, or formats a file incorrectly (i.e.@:
+If WoMan fails completely, or formats a file incorrectly (i.e.,
obviously wrongly or significantly differently from @code{man}) or
inelegantly, then please
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 72b05e7f6f5..ad0f9e9c7e8 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,15 @@
+2012-12-06 Andreas Schwab <schwab@linux-m68k.org>
+
+ * themes/leuven-theme.el: Convert to Unix format.
+
+2012-12-06 Fabrice Niessen <fniessen@pirilampo.org>
+
+ * themes/leuven-theme.el: New theme.
+
+2012-12-04 Michael Albinus <michael.albinus@gmx.de>
+
+ * NEWS: Mention new Tramp method "adb".
+
2012-11-25 Bill Wohler <wohler@newt.com>
Release MH-E version 8.4.
diff --git a/etc/NEWS b/etc/NEWS
index f0f4e6fb84e..361e49afe04 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -24,11 +24,17 @@ so we will look at it and add it to the manual.
* Installation Changes in Emacs 24.4
* Startup Changes in Emacs 24.4
* Changes in Emacs 24.4
+
++++
+** `eval-defun' on an already defined defcustom calls the :set function,
+if there is one.
+
* Editing Changes in Emacs 24.4
* Changes in Specialized Modes and Packages in Emacs 24.4
+** New macro cl-tagbody in cl-lib.
** Calc
*** Calc by default now uses the Gregorian calendar for all dates, and
@@ -43,9 +49,28 @@ Nil, the default value, means to always use the Gregorian calendar.
The value (YEAR MONTH DAY) means to start using the Gregorian calendar
on the given date.
+** ERC
+
+*** New option `erc-accidental-paste-threshold-seconds'.
+If set to a number, this can be used to avoid accidentally paste large
+amounts of data into the ERC input.
+
+** Icomplete is a bit more like IDO.
+*** key bindings to navigate through and select the completions.
+*** The icomplete-separator is customizable, and its default has changed.
+*** Removed icomplete-show-key-bindings.
+
** MH-E has been updated to MH-E version 8.4.
See MH-E-NEWS for details.
+---
+** The unrmail command converts from BABYL to mboxrd rather than mboxo.
+Customize `unrmail-mbox-format' to change this.
+
+---
+** Similarly, customize `rmail-mbox-format' to influence some minor aspects
+of how Rmail displays non-MIME messages.
+
+++
** New function `ses-rename-cell' to give SES cells arbitrary names.
@@ -58,11 +83,28 @@ New features include:
name and arguments. Useful to trace the value of (current-buffer) or
(point) when the function is invoked.
+** New command `delete-duplicate-lines' has two types of operation:
+when its arg ADJACENT is non-nil (when called interactively with C-u C-u)
+it works like the utility `uniq'. Otherwise by default it deletes
+duplicate lines everywhere in the region without regard to adjacency.
+
+** Tramp
++++
+*** New connection method "adb", which allows to access Android
+devices by the Android Debug Bridge. The variable `tramp-adb-sdk-dir'
+must be set to the Android SDK installation directory.
+
** Woman
*** The commands `woman-default-faces' and `woman-monochrome-faces'
are obsolete. Customize the `woman-* faces instead.
+** Obsolete packages:
+
+*** longlines.el is obsolete; use visual-line-mode instead.
+
+*** terminal.el is obsolete; use term.el instead.
+
* New Modes and Packages in Emacs 24.4
** New nadvice.el package offering lighter-weight advice facilities.
@@ -801,9 +843,9 @@ The function `user-variable-p' is now an obsolete alias for
+++
** The return values of `defalias', `defun' and `defmacro' have changed,
-and are now undefined. For backwards compatibility, defun and
-defmacro currently return the name of the newly defined function/macro
-but this should not be relied upon.
+and are now undefined. For backwards compatibility, `defun' and
+`defmacro' currently return the name of the newly defined
+function/macro, but this should not be relied upon.
---
** `face-spec-set' no longer sets frame-specific attributes when the
@@ -1050,6 +1092,12 @@ takes precedence over most other maps for a short while (normally one key).
+++
** New macros `setq-local' and `defvar-local'.
+** Changes to special forms and macros
++++
+*** `defun' and `defmacro' are now macros rather than special forms
++++
+*** `kbd' is now a function rather than a macro.
+
+++
** New fringe bitmap `exclamation-mark'.
diff --git a/etc/themes/leuven-theme.el b/etc/themes/leuven-theme.el
new file mode 100644
index 00000000000..af1b808c0ec
--- /dev/null
+++ b/etc/themes/leuven-theme.el
@@ -0,0 +1,595 @@
+;;; leuven-theme.el --- Emacs custom theme
+
+;; Copyright (C) 2003-2012 Free Software Foundation, Inc.
+;; Time-stamp: <2012-12-05 Wed 10:47>
+
+;; Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(deftheme leuven
+ "Face colors with a light background.
+Basic, Font Lock, Isearch, Gnus, Message, Diff, Ediff, Flyspell,
+Semantic, and Ansi-Color faces are included -- and much more...")
+
+(let ((class '((class color) (min-colors 89)))
+ ;; Leuven generic colors
+ (cancel '(:slant italic :strike-through t :foreground "gray55"))
+ (clock-line '(:box (:line-width 1 :color "#335EA8") :foreground "black" :background "#EEC900"))
+ (code-block '(:foreground "#000088" :background "#FBF9EA"))
+ (code-inline '(:box (:line-width 1 :color "#DDDDDD") :foreground "#000088" :background "#FFFFE0"))
+ (column '(:height 1.0 :weight normal :slant normal :underline nil :strike-through nil :foreground "#E6AD4F" :background "#FFF2DE"))
+ (diff-added '(:foreground "#008000" :background "#DDFFDD"))
+ (diff-hunk-header '(:box (:line-width 1 :color "#FFE0FF") :foreground "#990099" :background "#FFEEFF"))
+ (diff-none '(:foreground "gray33"))
+ (diff-removed '(:foreground "#A60000" :background "#FFDDDD"))
+ (directory '(:weight bold :foreground "blue" :background "#FFFFD2"))
+ (highlight-line '(:inverse-video t))
+ (link '(:underline t :foreground "#006DAF"))
+ (mail-header-name '(:weight bold :foreground "black"))
+ (marked-line '(:weight bold :foreground "white" :background "red"))
+ (match '(:background "#FFFF99"))
+ (ol1 '(:height 1.3 :weight bold :overline "#A7A7A7" :foreground "#3C3C3C" :background "#F0F0F0"))
+ (ol2 '(:height 1.0 :weight bold :overline "#123555" :foreground "#123555" :background "#E5F4FB"))
+ (ol3 '(:height 1.0 :weight bold :overline "#005522" :foreground "#005522" :background "#EFFFEF"))
+ (ol4 '(:height 1.0 :weight bold :slant normal :foreground "#EA6300"))
+ (ol5 '(:height 1.0 :weight bold :slant normal :foreground "#E3258D"))
+ (ol6 '(:height 1.0 :weight bold :slant italic :foreground "#0077CC"))
+ (ol7 '(:height 1.0 :weight bold :slant italic :foreground "#2EAE2C"))
+ (ol8 '(:height 1.0 :weight bold :slant italic :foreground "#FD8008"))
+ (region '(:background "#D2D9E0"))
+ (shadow '(:foreground "#7F7F7F"))
+ (string '(:foreground "#008000"))
+ (subject '(:weight bold :foreground "#CF5D60"))
+ (symlink '(:foreground "deep sky blue"))
+ (vc-branch '(:box (:line-width 1 :color "#00CC33") :foreground "black" :background "#AAFFAA")))
+
+ (custom-theme-set-faces
+ 'leuven
+ `(default ((,class (:background "#ffffff" :foreground "#333333"))))
+ `(bold ((,class (:weight bold :foreground "black"))))
+ `(bold-italic ((,class (:weight bold :slant italic :foreground "black"))))
+ `(italic ((,class (:slant italic :foreground "#1A1A1A"))))
+ `(underline ((,class (:underline t))))
+ `(cursor ((,class (:background "#15ff00"))))
+ ;; Highlighting faces
+ `(fringe ((,class (:foreground "#808080" :background "#DDEEFF"))))
+ `(highlight ((,class (:background "#FFFF00"))))
+ `(region ((t ,region)))
+ `(secondary-selection ((t ,match))) ;; used by Org-mode for highlighting matched entries and keywords
+ `(isearch ((,class (:weight bold :foreground "#00AA00" :background "#99FF99"))))
+ `(isearch-fail ((,class (:weight bold :foreground "black" :background "#FF9999"))))
+ `(lazy-highlight ((,class (:weight bold :foreground "#990099" :background "#FF66FF"))))
+ `(trailing-whitespace ((t (:background "#F6EBFE"))))
+ `(whitespace-line ((t (:foreground "#CC0000" :background "#FFFF88"))))
+ `(whitespace-tab ((t (:foreground "lightgray" :background "beige"))))
+ `(whitespace-indentation ((t (:foreground "firebrick" :background "yellow"))))
+ `(whitespace-trailing ((t (:weight bold :foreground "yellow" :background "red1"))))
+ `(whitespace-hspace ((t (:background "#CCE8F6"))))
+ ;; Mode line faces
+ `(mode-line ((,class (:box (:line-width 1 :color "#1A2F54") :foreground "#85CEEB" :background "#335EA8"))))
+ `(mode-line-inactive ((,class (:box (:line-width 1 :color "#4E4E4C") :foreground "#F0F0EF" :background "#9B9C97"))))
+ `(mode-line-buffer-id ((,class (:weight bold :foreground "white"))))
+ `(mode-line-emphasis ((,class (:weight bold :foreground "white"))))
+ `(mode-line-highlight ((,class (:foreground "yellow"))))
+ ;; Escape and prompt faces
+ `(minibuffer-prompt ((,class (:weight bold :foreground "black" :background "gold"))))
+ `(minibuffer-noticeable-prompt ((,class (:weight bold :foreground "black" :background "gold"))))
+ `(escape-glyph ((,class (:foreground "#008ED1"))))
+ `(error ((,class (:foreground "red"))))
+ `(warning ((,class (:foreground "orange"))))
+ `(success ((,class (:foreground "green"))))
+ ;; Font lock faces
+ `(font-lock-builtin-face ((,class (:foreground "#FF5803"))))
+ `(font-lock-comment-delimiter-face ((,class (:foreground "#EE0000"))))
+ `(font-lock-comment-face ((,class (:slant italic :foreground "#EE0000"))))
+ `(font-lock-constant-face ((,class (:foreground "#009944"))))
+ `(font-lock-doc-face ((,class (:foreground "#BA2121"))))
+ `(font-lock-doc-string-face ((,class (:foreground "#63639C"))))
+ `(font-lock-function-name-face ((,class (:foreground "#1A50B8"))))
+ `(font-lock-keyword-face ((,class (:bold t :foreground "#A535AE"))))
+ `(font-lock-preprocessor-face ((,class (:bold t :foreground "#A3A3A3"))))
+ `(font-lock-reference-face ((,class (:foreground "dark cyan"))))
+ `(font-lock-regexp-grouping-backslash ((,class (:bold t :weight bold))))
+ `(font-lock-regexp-grouping-construct ((,class (:bold t :weight bold))))
+ `(font-lock-string-face ((t ,string)))
+ `(font-lock-type-face ((,class (:foreground "#1B781F"))))
+ `(font-lock-variable-name-face ((,class (:foreground "#2E91AF"))))
+ `(font-lock-warning-face ((,class (:weight bold :foreground "red"))))
+ ;; Button and link faces
+ `(link ((,class (:foreground "#8ac6f2" :underline t))))
+ `(link-visited ((,class (:foreground "#e5786d" :underline t))))
+ `(button ((,class (:underline t :foreground "#006DAF"))))
+ `(header-line ((,class (:weight bold :underline "black" :overline "black" :foreground "black" :background "#FFFF88"))))
+ ;; Gnus faces
+ `(gnus-group-news-1-empty ((,class (:foreground "#5050B0"))))
+ `(gnus-group-news-1 ((,class (:weight bold :foreground "#FF50B0"))))
+ `(gnus-group-news-2-empty ((,class (:foreground "#660066"))))
+ `(gnus-group-news-2 ((,class (:weight bold :foreground "#FF0066"))))
+ `(gnus-group-news-3-empty ((,class (:foreground "#808080"))))
+ `(gnus-group-news-3 ((,class (:weight bold :foreground "black"))))
+ `(gnus-group-news-4-empty ((,class (:foreground "#990000"))))
+ `(gnus-group-news-4 ((,class (:weight bold :foreground "#FF0000"))))
+ `(gnus-group-news-5-empty ((,class (:foreground "#000099"))))
+ `(gnus-group-news-5 ((,class (:weight bold :foreground "#FF0099"))))
+ `(gnus-group-news-6-empty ((,class (:foreground "#808080"))))
+ `(gnus-group-news-6 ((,class (:weight bold :foreground "gray50"))))
+ `(gnus-group-mail-1-empty ((,class (:foreground "#5050B0"))))
+ `(gnus-group-mail-1 ((,class (:weight bold :foreground "#FF50B0"))))
+ `(gnus-group-mail-2-empty ((,class (:foreground "#660066"))))
+ `(gnus-group-mail-2 ((,class (:weight bold :foreground "#FF0066"))))
+ `(gnus-group-mail-3-empty ((,class (:foreground "#808080"))))
+ `(gnus-group-mail-3 ((,class (:weight bold :foreground "black"))))
+ `(gnus-group-mail-low-empty ((t ,cancel)))
+ `(gnus-group-mail-low ((t ,cancel)))
+ `(gnus-header-content ((,class (:family "Sans Serif" :foreground "#786FB4"))))
+ `(gnus-header-from ((,class (:family "Sans Serif" :foreground "blue"))))
+ `(gnus-header-subject ((t ,subject)))
+ `(gnus-header-name ((t ,mail-header-name)))
+ `(gnus-header-newsgroups ((,class (:family "Sans Serif" :foreground "#3399CC"))))
+ ;; Message faces
+ `(message-header-name ((t ,mail-header-name)))
+ `(message-header-cc ((,class (:family "Sans Serif" :foreground "blue"))))
+ `(message-header-other ((,class (:family "Sans Serif" :foreground "#3399CC"))))
+ `(message-header-subject ((t ,subject)))
+ `(message-header-to ((,class (:family "Sans Serif" :foreground "blue"))))
+ `(message-cited-text ((,class (:foreground "#5050B0"))))
+ `(message-separator ((,class (:family "Sans Serif" :weight bold :foreground "red"))))
+ `(message-header-newsgroups ((,class (:family "Sans Serif" :foreground "#3399CC"))))
+ `(message-header-xheader ((,class (:foreground "red"))))
+ `(message-mml ((,class (:foreground "forest green"))))
+ ;; Diff
+ `(diff-added ((t ,diff-added)))
+ `(diff-changed ((,class (:foreground "blue" :background "#DDDDFF"))))
+ `(diff-context ((t ,diff-none)))
+ `(diff-file-header ((,class (:foreground "#0000CC" :background "#EAF2F5"))))
+ `(diff-file1-hunk-header ((,class (:foreground "dark magenta" :background "#EAF2F5"))))
+ `(diff-file2-hunk-header ((,class (:foreground "#2B7E2A" :background "#EAF2F5"))))
+ `(diff-header ((,class (:foreground "#999999" :background "#EAF2F5"))))
+ `(diff-hunk-header ((t ,diff-hunk-header)))
+ `(diff-index ((,class (:family "Sans Serif" :height 1.1 :weight bold :foreground "#4183C4" :background "#EAF2F5"))))
+ `(diff-indicator-added ((,class (:background "#AAFFAA"))))
+ `(diff-indicator-changed ((,class (:background "#AAAAFF"))))
+ `(diff-indicator-removed ((,class (:background "#FFAAAA"))))
+ `(diff-refine-change ((,class (:background "#DDDDFF"))))
+ `(diff-removed ((t ,diff-removed)))
+ ;; SMerge
+ `(smerge-refined-change ((,class (:background "#AAAAFF"))))
+ ;; Ediff
+ `(ediff-current-diff-A ((,class (:foreground "gray33" :background "#FFDDDD"))))
+ `(ediff-current-diff-B ((,class (:foreground "gray33" :background "#DDFFDD"))))
+ `(ediff-current-diff-C ((,class (:foreground "black" :background "cyan"))))
+ `(ediff-even-diff-A ((,class (:foreground "black" :background "light grey"))))
+ `(ediff-even-diff-B ((,class (:foreground "black" :background "light grey"))))
+ `(ediff-fine-diff-A ((,class (:foreground "#A60000" :background "#FFAAAA"))))
+ `(ediff-fine-diff-B ((,class (:foreground "#008000" :background "#55FF55"))))
+ `(ediff-odd-diff-A ((,class (:foreground "black" :background "light grey"))))
+ `(ediff-odd-diff-B ((,class (:foreground "black" :background "light grey"))))
+ ;; Flyspell
+ `(flyspell-duplicate ((,class (:underline "#008000"))))
+ `(flyspell-incorrect ((,class (:underline "red"))))
+ ;; ;; Semantic faces
+ ;; `(semantic-decoration-on-includes ((,class (:underline ,cham-4))))
+ ;; `(semantic-decoration-on-private-members-face ((,class (:background ,alum-2))))
+ ;; `(semantic-decoration-on-protected-members-face ((,class (:background ,alum-2))))
+ ;; `(semantic-decoration-on-unknown-includes ((,class (:background ,choc-3))))
+ ;; `(semantic-decoration-on-unparsed-includes ((,class (:underline ,orange-3))))
+ ;; `(semantic-tag-boundary-face ((,class (:overline ,blue-1))))
+ ;; `(semantic-unmatched-syntax-face ((,class (:underline ,red-1))))
+
+ `(Info-title-1-face ((t ,ol1)))
+ `(Info-title-2-face ((t ,ol2)))
+ `(Info-title-3-face ((t ,ol3)))
+ `(Info-title-4-face ((t ,ol4)))
+ `(bbdb-company ((,class (:slant italic :foreground "steel blue"))))
+ `(bbdb-field-name ((,class (:weight bold :foreground "steel blue"))))
+ `(bbdb-field-value ((,class (:foreground "steel blue"))))
+ `(bbdb-name ((,class (:underline t :foreground "#FF6633"))))
+ `(browse-kill-ring-separator-face ((,class (:weight bold :foreground "slate gray"))))
+ `(calendar-today ((,class (:weight bold :background "#CCCCFF"))))
+ `(cfw:face-annotation ((,class (:foreground "RosyBrown" :inherit cfw:face-day-title))))
+ `(cfw:face-day-title ((,class (:background "#F8F9FF"))))
+ `(cfw:face-default-content ((,class (:foreground "#2952A3"))))
+ `(cfw:face-default-day ((,class (:weight bold :inherit cfw:face-day-title))))
+ `(cfw:face-disable ((,class (:foreground "DarkGray" :inherit cfw:face-day-title))))
+ `(cfw:face-grid ((,class (:foreground "SlateBlue"))))
+ `(cfw:face-header ((,class (:foreground "blue" :background "#D4E5FF" :weight bold))))
+ `(cfw:face-holiday ((,class (:background "#FFD5E5"))))
+ `(cfw:face-periods ((,class (:background "#668CD9" :foreground "white" :slant italic))))
+ `(cfw:face-saturday ((,class (:foreground "SlateGray4" :background "gray90" :weight bold))))
+ `(cfw:face-select ((,class (:background "#C3C9F8"))))
+ `(cfw:face-sunday ((,class (:foreground "red2" :background "#FFD5E5" :weight bold))))
+ `(cfw:face-title ((,class (:foreground "DarkGrey" :weight bold :height 2.0 :inherit variable-pitch))))
+ `(cfw:face-today ((,class (:background "#FFF7D7"))))
+ `(cfw:face-today-title ((,class (:background "#FAD163"))))
+ `(cfw:face-toolbar ((,class (:foreground "gray90" :background "gray90"))))
+ `(cfw:face-toolbar-button-off ((,class (:foreground "LightSkyBlue4" :background "white"))))
+ `(cfw:face-toolbar-button-on ((,class (:foreground "LightPink3" :background "gray94"))))
+ `(change-log-date-face ((,class (:foreground "purple"))))
+ `(change-log-file ((,class (:weight bold :foreground "#4183C4"))))
+ `(circe-highlight-all-nicks-face ((,class (:foreground "blue" :background "#F0F0F0")))) ;; other nick names
+ `(circe-highlight-nick-face ((,class (:foreground "#009300" :background "#F0F0F0")))) ;; messages with my nick cited
+ `(circe-my-message-face ((,class (:foreground "#8B8B8B" :background "#F0F0F0"))))
+ `(circe-originator-face ((,class (:foreground "blue"))))
+ `(circe-prompt-face ((,class (:foreground "red"))))
+ `(circe-server-face ((,class (:foreground "#99CAE5"))))
+ `(comint-highlight-input ((t ,code-block)))
+ `(comint-highlight-prompt ((,class (:foreground "#008ED1" :background "#EAEAFF"))))
+ `(compare-windows ((,class (:background "#FFFF00"))))
+ `(compilation-error ((,class (:weight bold :foreground "red"))))
+ `(compilation-info ((,class (:weight bold :foreground "#2A489E")))) ;; used for grep
+ `(compilation-line-number ((,class (:bold t :foreground "#A535AE"))))
+ `(compilation-warning ((,class (:weight bold :foreground "orange"))))
+ `(css-property ((,class (:foreground "#00AA00"))))
+ `(css-selector ((,class (:weight bold :foreground "blue"))))
+ `(custom-button ((,class (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ `(custom-button-mouse ((,class (:background "grey90" :foreground "black" :box (:line-width 2 :style released-button)))))
+ `(custom-button-pressed ((,class (:foreground "black" :background "light grey" :box (:line-width 2 :style pressed-button)))))
+ `(custom-button-pressed-unraised ((,class (:underline t :foreground "magenta4"))))
+ `(custom-button-unraised ((,class (:underline t))))
+ `(custom-changed ((,class (:foreground "white" :background "blue"))))
+ `(custom-comment ((,class (:background "gray85"))))
+ `(custom-comment-tag ((,class (:foreground "blue4"))))
+ `(custom-documentation ((,class (nil))))
+ `(custom-face-tag ((,class (:family "Sans Serif" :weight bold :height 1.2))))
+ `(custom-group-tag ((,class (:bold t :foreground "blue1" :weight bold :height 1.2))))
+ `(custom-group-tag-1 ((,class (:bold t :family "Sans Serif" :foreground "red1" :weight bold :height 1.2))))
+ `(custom-invalid ((,class (:foreground "yellow" :background "red"))))
+ `(custom-link ((,class (:underline t :foreground "blue1"))))
+ `(custom-modified ((,class (:foreground "white" :background "blue"))))
+ `(custom-rogue ((,class (:foreground "pink" :background "black"))))
+ `(custom-saved ((,class (:underline t))))
+ `(custom-set ((,class (:foreground "blue" :background "white"))))
+ `(custom-state ((,class (:foreground "green4"))))
+ `(custom-themed ((,class (:background "blue1" :foreground "white"))))
+ `(custom-variable-button ((,class (:weight bold :underline t))))
+ `(custom-variable-tag ((,class (:bold t :family "Sans Serif" :foreground "blue1" :weight bold :height 1.2))))
+ `(diary-face ((,class (:foreground "#87C9FC"))))
+ `(dircolors-face-asm ((,class (:foreground "black"))))
+ `(dircolors-face-backup ((,class (:foreground "black"))))
+ `(dircolors-face-compress ((,class (:foreground "red"))))
+ `(dircolors-face-dir ((t ,directory)))
+ `(dircolors-face-doc ((,class (:foreground "black"))))
+ `(dircolors-face-dos ((,class (:foreground "green3"))))
+ `(dircolors-face-emacs ((,class (:foreground "black"))))
+ `(dircolors-face-exec ((,class (:foreground "green3"))))
+ `(dircolors-face-html ((,class (:foreground "black"))))
+ `(dircolors-face-img ((,class (:foreground "black"))))
+ `(dircolors-face-lang ((,class (:foreground "black"))))
+ `(dircolors-face-lang-interface ((,class (:foreground "black"))))
+ `(dircolors-face-make ((,class (:foreground "black"))))
+ `(dircolors-face-objet ((,class (:foreground "black"))))
+ `(dircolors-face-package ((,class (:foreground "red"))))
+ `(dircolors-face-paddb ((,class (:foreground "black"))))
+ `(dircolors-face-ps ((,class (:foreground "black"))))
+ `(dircolors-face-sound ((,class (:foreground "black"))))
+ `(dircolors-face-tar ((,class (:foreground "red"))))
+ `(dircolors-face-text ((,class (:foreground "black"))))
+ `(dircolors-face-yacc ((,class (:foreground "black"))))
+ `(dired-directory ((t ,directory)))
+ `(dired-header ((t ,directory)))
+ `(dired-ignored ((,class (:strike-through t :foreground "red"))))
+ `(dired-mark ((t ,marked-line)))
+ `(dired-marked ((t ,marked-line)))
+ `(dired-symlink ((t ,symlink)))
+ `(diredp-compressed-file-suffix ((,class (:foreground "red"))))
+ `(diredp-date-time ((,class (:foreground "purple"))))
+ `(diredp-dir-heading ((t ,directory)))
+ `(diredp-dir-priv ((t ,directory)))
+ `(diredp-exec-priv ((,class (:background "#03C03C"))))
+ `(diredp-executable-tag ((,class (:foreground "green3" :background "white"))))
+ `(diredp-file-name ((,class (:foreground "black"))))
+ `(diredp-file-suffix ((,class (:foreground "#008000"))))
+ `(diredp-flag-mark-line ((t ,marked-line)))
+ `(diredp-ignored-file-name ((,class (:strike-through t :foreground "red"))))
+ `(diredp-read-priv ((,class (:background "#0A99FF"))))
+ `(diredp-write-priv ((,class (:foreground "white" :background "#FF4040"))))
+ `(file-name-shadow ((t ,shadow)))
+ `(font-latex-bold-face ((,class (:weight bold :foreground "medium sea green"))))
+ `(font-latex-math-face ((,class (:foreground "blue"))))
+ `(font-latex-sectioning-1-face ((,class (:family "Sans Serif" :height 2.7 :weight bold :foreground "cornflower blue"))))
+ `(font-latex-sectioning-2-face ((t ,ol1)))
+ `(font-latex-sectioning-3-face ((t ,ol2)))
+ `(font-latex-sectioning-4-face ((t ,ol3)))
+ `(font-latex-sectioning-5-face ((t ,ol4)))
+ `(font-latex-sedate-face ((,class (:foreground "#FF5803"))))
+ `(font-latex-string-face ((,class (:bold t :foreground "#0066FF"))))
+ `(font-latex-verbatim-face ((,class (:foreground "tan1"))))
+ `(gnus-cite-attribution-face ((,class (:foreground "#5050B0"))))
+ `(gnus-cite-face-1 ((,class (:foreground "#5050B0"))))
+ `(gnus-cite-face-10 ((,class (:foreground "#990000"))))
+ `(gnus-cite-face-2 ((,class (:foreground "#660066"))))
+ `(gnus-cite-face-3 ((,class (:foreground "#007777"))))
+ `(gnus-cite-face-4 ((,class (:foreground "#990000"))))
+ `(gnus-cite-face-5 ((,class (:foreground "#000099"))))
+ `(gnus-cite-face-6 ((,class (:foreground "#BB6600"))))
+ `(gnus-cite-face-7 ((,class (:foreground "#5050B0"))))
+ `(gnus-cite-face-8 ((,class (:foreground "#660066"))))
+ `(gnus-cite-face-9 ((,class (:foreground "#007777"))))
+ `(gnus-emphasis-bold ((,class (:weight bold))))
+ `(gnus-emphasis-highlight-words ((,class (:foreground "yellow" :background "black"))))
+ `(gnus-picon ((,class (:foreground "yellow" :background "white"))))
+ `(gnus-picon-xbm ((,class (:foreground "yellow" :background "white"))))
+ `(gnus-signature ((,class (:foreground "#7F7F7F"))))
+ `(gnus-splash ((,class (:foreground "#FF8C00"))))
+ `(gnus-summary-cancelled ((t ,cancel)))
+ `(gnus-summary-high-ancient ((,class (:weight normal :foreground "#808080" :background "#FFFFE6"))))
+ `(gnus-summary-high-read ((,class (:weight normal :foreground "#808080" :background "#FFFFE6"))))
+ `(gnus-summary-high-ticked ((,class (:weight normal :foreground "black" :background "#E7AEB0"))))
+ `(gnus-summary-high-unread ((,class (:weight normal :foreground "black" :background "#FFFFCC"))))
+ `(gnus-summary-low-ancient ((,class (:slant italic :foreground "gray55"))))
+ `(gnus-summary-low-read ((,class (:slant italic :foreground "gray55" :background "#E0E0E0"))))
+ `(gnus-summary-low-ticked ((,class (:slant italic :foreground "black" :background "#E7AEB0"))))
+ `(gnus-summary-low-unread ((,class (:slant italic :foreground "black"))))
+ `(gnus-summary-normal-ancient ((,class (:foreground "#808080"))))
+ `(gnus-summary-normal-read ((,class (:foreground "#808080"))))
+ `(gnus-summary-normal-ticked ((,class (:foreground "black" :background "#E7AEB0"))))
+ `(gnus-summary-normal-unread ((,class (:foreground "black"))))
+ `(gnus-summary-selected ((,class (:foreground "black" :background "#FFD0D0" :underline t))))
+ `(gnus-x-face ((,class (:foreground "black" :background "white"))))
+ `(helm-action ((,class (:foreground "#335EA8"))))
+ `(helm-bookmarks-su-face ((,class (:foreground "red"))))
+ `(helm-candidate-number ((,class (:foreground "black" :background "#FFFF66"))))
+ `(helm-dir-heading ((,class (:foreground "blue" :background "pink"))))
+ `(helm-dir-priv ((,class (:foreground "dark red" :background "light grey"))))
+ `(helm-ff-directory ((t ,directory)))
+ `(helm-ff-executable ((,class (:foreground "green3" :background "white"))))
+ `(helm-ff-file ((,class (:foreground "black"))))
+ `(helm-ff-invalid-symlink ((,class (:foreground "yellow" :background "red"))))
+ `(helm-ff-symlink ((t ,symlink)))
+ `(helm-file-name ((,class (:foreground "blue"))))
+ `(helm-gentoo-match-face ((,class (:foreground "red"))))
+ `(helm-grep-running ((,class (:weight bold :foreground "white"))))
+ `(helm-isearch-match ((,class (:background "#CCFFCC"))))
+ `(helm-match ((t ,match)))
+ `(helm-overlay-line-face ((,class (:underline t :foreground "white" :background "IndianRed4"))))
+ `(helm-selection ((t ,highlight-line)))
+ `(helm-source-header ((,class (:family "Sans Serif" :height 1.3 :weight bold :foreground "white" :background "#666699"))))
+ `(helm-visible-mark ((t ,marked-line)))
+ `(helm-w3m-bookmarks-face ((,class (:underline t :foreground "cyan1"))))
+ `(highlight-symbol-face ((,class (:background "#FFFFA0"))))
+ `(hl-line ((t ,highlight-line)))
+ `(holiday-face ((,class (:background "#B6B2AE"))))
+ `(html-helper-bold-face ((,class (:weight bold :foreground "black"))))
+ `(html-helper-italic-face ((,class (:slant italic :foreground "black"))))
+ `(html-helper-underline-face ((,class (:underline t :foreground "black"))))
+ `(html-tag-face ((,class (:foreground "blue"))))
+ `(info-file ((,class (:family "Sans Serif" :height 1.8 :weight bold :box (:line-width 1 :color "#0000CC") :foreground "cornflower blue" :background "LightSteelBlue1"))))
+ `(info-header-node ((,class (:underline t :foreground "orange")))) ;; nodes in header
+ `(info-header-xref ((,class (:underline t :foreground "dodger blue")))) ;; cross references in header
+ `(info-menu-header ((,class (:family "Sans Serif" :height 1.6 :weight bold :underline t :foreground "#00CC00")))) ;; menu titles (headers) -- major topics
+ `(info-menu-star ((,class (:foreground "black")))) ;; every 3rd menu item
+ `(info-node ((,class (:underline t :foreground "blue")))) ;; node names
+ `(info-quoted-name ((t ,code-inline)))
+ `(info-string ((t ,string)))
+ `(info-title-1 ((t ,ol1)))
+ `(info-xref ((,class (:weight bold :underline t :foreground "blue")))) ;; unvisited cross-references
+ `(info-xref-visited ((,class (:weight bold :foreground "magenta4")))) ;; previously visited cross-references
+ `(light-symbol-face ((,class (:background "#FFFFA0"))))
+ `(linum ((,class (:foreground "#AFB7BA" :background "#DDEEFF"))))
+ `(log-view-file ((,class (:foreground "#0000CC" :background "#EAF2F5"))))
+ `(lui-button-face ((t ,link)))
+ `(lui-highlight-face ((,class (:box '(:line-width 1 :color "#CC0000") :foreground "#CC0000" :background "#FFFF88")))) ;; my nickname
+ `(lui-time-stamp-face ((,class (:foreground "purple"))))
+ `(magit-branch ((t ,vc-branch)))
+ `(magit-diff-add ((t ,diff-added)))
+ `(magit-diff-del ((t ,diff-removed)))
+ `(magit-diff-file-header ((,class (:family "Sans Serif" :height 1.1 :weight bold :foreground "#4183C4"))))
+ `(magit-diff-hunk-header ((t ,diff-hunk-header)))
+ `(magit-diff-none ((t ,diff-none)))
+ `(magit-header ((,class (:foreground "white" :background "#FF4040"))))
+ `(magit-item-highlight ((,class (:background "#EAF2F5"))))
+ `(magit-item-mark ((t ,marked-line)))
+ `(magit-log-head-label ((,class (:box (:line-width 1 :color "blue" :style nil)))))
+ `(magit-log-tag-label ((,class (:box (:line-width 1 :color "#00CC00" :style nil)))))
+ `(magit-section-title ((,class (:family "Sans Serif" :height 1.8 :weight bold :foreground "cornflower blue"))))
+ `(makefile-space-face ((,class (:background "hot pink"))))
+ `(makefile-targets ((,class (:weight bold :foreground "blue"))))
+ `(match ((t ,match)))
+ `(mm-uu-extract ((t ,code-block)))
+ `(moccur-current-line-face ((,class (:background "#FFFFCC" :foreground "black"))))
+ `(moccur-face ((,class (:background "#FFFF99" :foreground "black"))))
+ `(nobreak-space ((,class (:background "#CCE8F6"))))
+ `(nxml-attribute-local-name-face ((,class (:foreground "magenta"))))
+ `(nxml-attribute-value-delimiter-face ((,class (:foreground "green4"))))
+ `(nxml-attribute-value-face ((,class (:foreground "green4"))))
+ `(nxml-comment-content-face ((,class (:slant italic :foreground "red"))))
+ `(nxml-comment-delimiter-face ((,class (:foreground "red"))))
+ `(nxml-element-local-name ((,class (:box (:line-width 1 :color "#999999") :background "#DEDEDE" :foreground "#000088"))))
+ `(nxml-element-local-name-face ((,class (:foreground "blue"))))
+ `(nxml-processing-instruction-target-face ((,class (:foreground "purple1"))))
+ `(nxml-tag-delimiter-face ((,class (:foreground "blue"))))
+ `(nxml-tag-slash-face ((,class (:foreground "blue"))))
+ `(org-agenda-calendar-event ((,class (:weight bold :foreground "white" :background "#1662AF"))))
+ `(org-agenda-calendar-sexp ((,class (:foreground "black" :background "#80CBFF"))))
+ `(org-agenda-clocking ((t ,clock-line)))
+ `(org-agenda-column-dateline ((t ,column)))
+ `(org-agenda-current-time ((,class (:underline t :foreground "#1662AF"))))
+ `(org-agenda-date ((,class (:height 1.6 :weight normal :foreground "#0063F5"))))
+ `(org-agenda-date-today ((,class (:height 1.6 :weight bold :foreground "#1662AF"))))
+ `(org-agenda-date-weekend ((,class (:height 1.6 :weight normal :foreground "dim gray"))))
+ `(org-agenda-diary ((,class (:weight bold :foreground "green4" :background "light blue"))))
+ `(org-agenda-dimmed-todo-face ((,class (:foreground "gold2"))))
+ `(org-agenda-done ((,class (:foreground "#555555" :background "#EEEEEE"))))
+ `(org-agenda-filter-category ((,class (:weight bold :foreground "orange"))))
+ `(org-agenda-filter-tags ((,class (:weight bold :foreground "orange"))))
+ `(org-agenda-restriction-lock ((,class (:weight bold :foreground "white" :background "orange"))))
+ `(org-agenda-structure ((,class (:height 1.6 :weight bold :box (:line-width 1 :color "#999999") :foreground "#666666" :background "#CCCCCC"))))
+ `(org-archived ((,class (:foreground "gray70"))))
+ `(org-beamer-tag ((,class (:box (:line-width 1 :color "#FABC18") :foreground "#2C2C2C" :background "#FFF8D0"))))
+ `(org-block ((t ,code-block)))
+ `(org-block-background ((,class (:background "#FFFFE0"))))
+ `(org-block-begin-line ((,class (:underline "#A7A6AA" :foreground "#555555" :background "#E2E1D5"))))
+ `(org-block-end-line ((,class (:overline "#A7A6AA" :foreground "#555555" :background "#E2E1D5"))))
+ `(org-checkbox ((,class (:weight bold :foreground "white" :background "#777777" :box (:line-width 1 :style pressed-button)))))
+ `(org-clock-overlay ((,class (:foreground "white" :background "SkyBlue4"))))
+ `(org-code ((t ,code-inline)))
+ `(org-column ((t ,column)))
+ `(org-column-title ((t ,column)))
+ `(org-date ((,class (:underline t :foreground "#00459E"))))
+ `(org-default ((,class (:foreground "#333333"))))
+ `(org-dim ((,class (:foreground "#AAAAAA"))))
+ `(org-document-info ((,class (:foreground "#484848"))))
+ `(org-document-info-keyword ((,class (:foreground "#008ED1" :background "#EAEAFF"))))
+ `(org-document-title ((,class (:family "Sans Serif" :height 1.8 :weight bold :foreground "black"))))
+ `(org-done ((,class (:weight bold :box (:line-width 1 :color "#BBBBBB") :foreground "#BBBBBB" :background "#F0F0F0"))))
+ `(org-drawer ((,class (:foreground "light sky blue"))))
+ `(org-ellipsis ((,class (:underline "#B0EEB0" :foreground "#00BB00"))))
+ `(org-example ((,class (:foreground "blue" :background "#EAFFEA"))))
+ `(org-footnote ((,class (:underline t :foreground "#008ED1"))))
+ `(org-formula ((,class (:foreground "chocolate1"))))
+ `(org-headline-done ((,class (:height 1.0 :weight bold :strike-through "#BEBEBE" :foreground "#C5C5C5"))))
+ `(org-hide ((,class (:foreground "#E2E2E2"))))
+ `(org-inlinetask ((,class (:box (:line-width 1 :color "#EBEBEB") :foreground "#777777" :background "#FFFFD6"))))
+ `(org-latex-and-export-specials ((,class (:foreground "blue"))))
+ `(org-level-1 ((t ,ol1)))
+ `(org-level-2 ((t ,ol2)))
+ `(org-level-3 ((t ,ol3)))
+ `(org-level-4 ((t ,ol4)))
+ `(org-level-5 ((t ,ol5)))
+ `(org-level-6 ((t ,ol6)))
+ `(org-level-7 ((t ,ol7)))
+ `(org-level-8 ((t ,ol8)))
+ `(org-link ((t ,link)))
+ `(org-list-dt ((,class (:weight bold :foreground "#335EA8"))))
+ `(org-meta-line ((,class (:slant normal :foreground "#008ED1" :background "#EAEAFF"))))
+ `(org-mode-line-clock ((t ,clock-line)))
+ `(org-mode-line-clock-overrun ((,class (:weight bold :box (:line-width 1 :color "#335EA8") :foreground "white" :background "#FF4040"))))
+ `(org-number-of-items ((,class (:weight bold :foreground "white" :background "#79BA79"))))
+ `(org-property-value ((,class (:foreground "#00A000"))))
+ `(org-quote ((,class (:slant italic :foreground "dim gray" :background "#FFFFE0"))))
+ `(org-scheduled ((,class (:slant italic :foreground "#0063DC"))))
+ `(org-scheduled-previously ((,class (:weight bold :foreground "#373737"))))
+ `(org-scheduled-today ((,class (:foreground "black" :background "#FFFFCB"))))
+ `(org-sexp-date ((,class (:foreground "purple"))))
+ `(org-special-keyword ((,class (:weight bold :foreground "#00BB00" :background "#EAFFEA"))))
+ `(org-table ((,class (:foreground "dark green" :background "#EAFFEA"))))
+ `(org-tag ((,class (:height 1.0 :weight normal :slant italic :foreground "#3C424F" :background "#E5ECFA"))))
+ `(org-target ((,class (:underline t))))
+ `(org-time-grid ((,class (:foreground "#6D6D6D"))))
+ `(org-todo ((,class (:weight bold :box (:line-width 1 :color "#D8ABA7") :foreground "#D8ABA7" :background "#FFE6E4"))))
+ `(org-upcoming-deadline ((,class (:foreground "#FF5555"))))
+ `(org-verbatim ((,class (:box (:line-width 1 :color "#DDDDDD") :foreground "#000088" :background "#E0FFE0"))))
+ `(org-verse ((,class (:slant italic :foreground "dim gray" :background "#EEEEEE"))))
+ `(org-warning ((,class (:weight bold :foreground "black" :background "#CCE7FF"))))
+ `(outline-1 ((t ,ol1)))
+ `(outline-2 ((t ,ol2)))
+ `(outline-3 ((t ,ol3)))
+ `(outline-4 ((t ,ol4)))
+ `(outline-5 ((t ,ol5)))
+ `(outline-6 ((t ,ol6)))
+ `(outline-7 ((t ,ol7)))
+ `(outline-8 ((t ,ol8)))
+ `(pabbrev-debug-display-label-face ((,class (:background "chartreuse"))))
+ `(pabbrev-suggestions-face ((,class (:weight bold :foreground "white" :background "red"))))
+ `(pabbrev-suggestions-label-face ((,class (:weight bold :foreground "white" :background "purple"))))
+ `(paren-face-match ((,class (:foreground "white" :background "#FF3F3F"))))
+ `(paren-face-mismatch ((,class (:weight bold :foreground "white" :background "purple"))))
+ `(paren-face-no-match ((,class (:weight bold :foreground "white" :background "purple"))))
+ `(pp^L-highlight ((,class (:strike-through t))))
+ `(recover-this-file ((,class (:background "white" :background "#FF3F3F"))))
+ `(sh-heredoc ((,class (:foreground "blue" :background "#FBF9EA"))))
+ `(shadow ((t ,shadow)))
+ `(shell-option-face ((,class (:foreground "forest green"))))
+ `(shell-output-2-face ((,class (:foreground "blue"))))
+ `(shell-output-3-face ((,class (:foreground "purple"))))
+ `(shell-output-face ((,class (:foreground "black"))))
+ `(shell-prompt-face ((,class (:weight bold :foreground "yellow"))))
+ `(show-paren-match ((,class (:foreground "white" :background "#FF3F3F"))))
+ `(show-paren-mismatch ((,class (:weight bold :foreground "white" :background "purple"))))
+ `(speedbar-button-face ((,class (:foreground "green4"))))
+ `(speedbar-directory-face ((,class (:foreground "blue4"))))
+ `(speedbar-file-face ((,class (:foreground "cyan4"))))
+ `(speedbar-highlight-face ((,class (:background "green"))))
+ `(speedbar-selected-face ((,class (:underline t :foreground "red"))))
+ `(speedbar-tag-face ((,class (:foreground "brown"))))
+ `(svn-status-directory-face ((t ,directory)))
+ `(svn-status-filename-face ((,class (:weight bold :foreground "#4183C4"))))
+ `(svn-status-locked-face ((,class (:weight bold :foreground "red"))))
+ `(svn-status-marked-face ((t ,marked-line)))
+ `(svn-status-marked-popup-face ((,class (:weight bold :foreground "green3"))))
+ `(svn-status-switched-face ((,class (:slant italic :foreground "gray55"))))
+ `(svn-status-symlink-face ((t ,symlink)))
+ `(svn-status-update-available-face ((,class (:foreground "orange"))))
+ `(tex-verbatim ((,class (:foreground "blue"))))
+ `(tool-bar ((,class (:box (:line-width 1 :style released-button) :foreground "black" :background "gray75"))))
+ `(tooltip ((,class (:foreground "black" :background "light yellow"))))
+ `(trailing-whitespace ((,class (:background "#F6EBFE"))))
+ `(traverse-match-face ((,class (:weight bold :foreground "blue violet"))))
+ `(vc-annotate-face-3F3FFF ((,class (:foreground "#3F3FFF" :background "black"))))
+ `(vc-annotate-face-3F6CFF ((,class (:foreground "#3F3FFF" :background "black"))))
+ `(vc-annotate-face-3F99FF ((,class (:foreground "#3F99FF" :background "black"))))
+ `(vc-annotate-face-3FC6FF ((,class (:foreground "#3F99FF" :background "black"))))
+ `(vc-annotate-face-3FF3FF ((,class (:foreground "#3FF3FF" :background "black"))))
+ `(vc-annotate-face-3FFF56 ((,class (:foreground "#4BFF4B" :background "black"))))
+ `(vc-annotate-face-3FFF83 ((,class (:foreground "#3FFFB0" :background "black"))))
+ `(vc-annotate-face-3FFFB0 ((,class (:foreground "#3FFFB0" :background "black"))))
+ `(vc-annotate-face-3FFFDD ((,class (:foreground "#3FF3FF" :background "black"))))
+ `(vc-annotate-face-56FF3F ((,class (:foreground "#4BFF4B" :background "black"))))
+ `(vc-annotate-face-83FF3F ((,class (:foreground "#B0FF3F" :background "black"))))
+ `(vc-annotate-face-B0FF3F ((,class (:foreground "#B0FF3F" :background "black"))))
+ `(vc-annotate-face-DDFF3F ((,class (:foreground "#FFF33F" :background "black"))))
+ `(vc-annotate-face-FF3F3F ((,class (:foreground "#FF3F3F" :background "black"))))
+ `(vc-annotate-face-FF6C3F ((,class (:foreground "#FF3F3F" :background "black"))))
+ `(vc-annotate-face-FF993F ((,class (:foreground "#FF993F" :background "black"))))
+ `(vc-annotate-face-FFC63F ((,class (:foreground "#FF993F" :background "black"))))
+ `(vc-annotate-face-FFF33F ((,class (:foreground "#FFF33F" :background "black"))))
+ `(w3m-anchor ((t ,link)))
+ `(w3m-arrived-anchor ((,class (:foreground "purple1"))))
+ `(w3m-bitmap-image-face ((,class (:foreground "gray4" :background "green"))))
+ `(w3m-bold ((,class (:weight bold :foreground "medium sea green"))))
+ `(w3m-current-anchor ((,class (:weight bold :underline t :foreground "blue"))))
+ `(w3m-form ((,class (:underline t :foreground "tan1"))))
+ `(w3m-form-button-face ((,class (:weight bold :underline t :foreground "gray4" :background "light grey"))))
+ `(w3m-form-button-mouse-face ((,class (:underline t :foreground "light grey" :background "#2B7E2A"))))
+ `(w3m-form-button-pressed-face ((,class (:weight bold :underline t :foreground "gray4" :background "light grey"))))
+ `(w3m-header-line-location-content-face ((,class (:foreground "#7F7F7F":background "#F7F7F7"))))
+ `(w3m-header-line-location-title-face ((,class (:foreground "#2C55B1" :background "#F7F7F7"))))
+ `(w3m-history-current-url-face ((,class (:foreground "lemon chiffon"))))
+ `(w3m-image-face ((,class (:weight bold :foreground "DarkSeaGreen2"))))
+ `(w3m-link-numbering ((,class (:foreground "#B4C7EB")))) ;; mouseless browsing
+ `(w3m-strike-through-face ((,class (:strike-through t))))
+ `(w3m-underline-face ((,class (:underline t))))
+ `(which-func ((,class (:weight bold :foreground "white"))))
+ `(whitespace-hspace ((,class (:background "#CCE8F6"))))
+ `(whitespace-indentation ((,class (:foreground "firebrick" :background "yellow"))))
+ `(whitespace-line ((,class (:foreground "#CC0000" :background "#FFFF88"))))
+ `(whitespace-tab ((,class (:foreground "lightgray" :background "beige"))))
+ `(whitespace-trailing ((,class (:weight bold :foreground "yellow" :background "red1"))))
+ `(widget-button-face ((t ,link)))
+ `(widget-button-pressed-face ((,class (:foreground "red"))))
+ `(widget-documentation-face ((,class (:foreground "green4"))))
+ `(widget-field-face ((,class (:background "gray85"))))
+ `(widget-inactive-face ((,class (:foreground "dim gray"))))
+ `(widget-single-line-field-face ((,class (:background "gray85"))))
+ `(yas/field-debug-face ((,class (:background "ivory2"))))
+ `(yas/field-highlight-face ((,class (:background "DarkSeaGreen1"))))
+ ))
+
+(custom-theme-set-variables
+ 'leuven
+ '(ansi-color-names-vector ["#242424" "#e5786d" "#95e454" "#cae682"
+ "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"]))
+
+(provide-theme 'leuven)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; leuven-theme.el ends here
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 6a67c99b5c0..74fd88ccd9a 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-04 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * quail/latin-ltx.el: Avoid deprecated chars for \langle and \rangle.
+ Remove \rightparengtr and \leftparengtr for lack of consensus.
+ Suggested by Mattias Engdegård <mattiase@bredband.net> (bug#12948).
+
2012-09-05 Eli Zaretskii <eliz@gnu.org>
* quail/hebrew.el ("yiddish-royal"): Fix several bogus entries.
diff --git a/leim/quail/latin-ltx.el b/leim/quail/latin-ltx.el
index 9f4c9664899..4609075a57c 100644
--- a/leim/quail/latin-ltx.el
+++ b/leim/quail/latin-ltx.el
@@ -463,7 +463,7 @@ system, including many technical ones. Examples:
("\\infty" ?∞)
("\\int" ?∫)
("\\intercal" ?⊺)
- ("\\langle" ?〈)
+ ("\\langle" ?⟨) ;; Was ?〈, see bug#12948.
("\\lbrace" ?{)
("\\lbrack" ?\[)
("\\lceil" ?⌈)
@@ -475,7 +475,7 @@ system, including many technical ones. Examples:
("\\leftharpoondown" ?↽)
("\\leftharpoonup" ?↼)
("\\leftleftarrows" ?⇇)
- ("\\leftparengtr" ?〈)
+ ;; ("\\leftparengtr" ?〈), see bug#12948.
("\\leftrightarrow" ?↔)
("\\leftrightarrows" ?⇆)
("\\leftrightharpoons" ?⇋)
@@ -593,7 +593,7 @@ system, including many technical ones. Examples:
("\\propto" ?âˆ)
("\\qed" ?∎)
("\\quad" ?â€)
- ("\\rangle" ?〉)
+ ("\\rangle" ?⟩) ;; Was ?〉, see bug#12948.
("\\rbrace" ?})
("\\rbrack" ?\])
("\\rceil" ?⌉)
@@ -604,7 +604,7 @@ system, including many technical ones. Examples:
("\\rightharpoonup" ?⇀)
("\\rightleftarrows" ?⇄)
("\\rightleftharpoons" ?⇌)
- ("\\rightparengtr" ?〉)
+ ;; ("\\rightparengtr" ?⦔) ;; Was ?〉, see bug#12948.
("\\rightrightarrows" ?⇉)
("\\rightthreetimes" ?⋌)
("\\risingdotseq" ?≓)
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index b85ba12a5b2..480ddabd44a 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,19 @@
+2012-12-02 Kevin Ryde <user42@zip.com.au>
+
+ * etags.c (Lisp_functions): Skip (defvar foo) declarations unless
+ the --declarations flag is enabled (Bug#5600).
+ (Lisp_help): Update.
+ (skip_name): New function.
+
+2012-12-01 Kevin Ryde <user42@zip.com.au>
+
+ * etags.c (Perl_functions): Support "use constant" (Bug#5055).
+
+2012-11-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Assume POSIX 1003.1-1988 or later for errno.h (Bug#12968).
+ * movemail.c (main): Assume EAGAIN and EBUSY.
+
2012-11-23 Paul Eggert <eggert@cs.ucla.edu>
movemail: treat EACCES etc. failures as permanent
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b6af17b8edf..d393c4d2e4a 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -353,6 +353,7 @@ static void put_entries (node *);
static char *concat (const char *, const char *, const char *);
static char *skip_spaces (char *);
static char *skip_non_spaces (char *);
+static char *skip_name (char *);
static char *savenstr (const char *, int);
static char *savestr (const char *);
static char *etags_strchr (const char *, int);
@@ -619,7 +620,8 @@ static const char Lisp_help [] =
"In Lisp code, any function defined with `defun', any variable\n\
defined with `defvar' or `defconst', and in general the first\n\
argument of any expression that starts with `(def' in column zero\n\
-is a tag.";
+is a tag.\n\
+The `--declarations' option tags \"(defvar foo)\" constructs too.";
static const char *Lua_suffixes [] =
{ "lua", "LUA", NULL };
@@ -4269,6 +4271,7 @@ Asm_labels (FILE *inf)
/*
* Perl support
* Perl sub names: /^sub[ \t\n]+[^ \t\n{]+/
+ * /^use constant[ \t\n]+[^ \t\n{=,;]+/
* Perl variable names: /^(my|local).../
* Original code by Bart Robinson <lomew@cs.utah.edu> (1995)
* Additions by Michael Ernst <mernst@alum.mit.edu> (1997)
@@ -4291,9 +4294,10 @@ Perl_functions (FILE *inf)
}
else if (LOOKING_AT (cp, "sub"))
{
- char *pos;
- char *sp = cp;
+ char *pos, *sp;
+ subr:
+ sp = cp;
while (!notinname (*cp))
cp++;
if (cp == sp)
@@ -4316,8 +4320,21 @@ Perl_functions (FILE *inf)
lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
free (name);
}
+ }
+ else if (LOOKING_AT (cp, "use constant")
+ || LOOKING_AT (cp, "use constant::defer"))
+ {
+ /* For hash style multi-constant like
+ use constant { FOO => 123,
+ BAR => 456 };
+ only the first FOO is picked up. Parsing across the value
+ expressions would be difficult in general, due to possible nested
+ hashes, here-documents, etc. */
+ if (*cp == '{')
+ cp = skip_spaces (cp+1);
+ goto subr;
}
- else if (globals) /* only if we are tagging global vars */
+ else if (globals) /* only if we are tagging global vars */
{
/* Skip a qualifier, if any. */
bool qual = LOOKING_AT (cp, "my") || LOOKING_AT (cp, "local");
@@ -4732,6 +4749,19 @@ Lisp_functions (FILE *inf)
if (dbp[0] != '(')
continue;
+ /* "(defvar foo)" is a declaration rather than a definition. */
+ if (! declarations)
+ {
+ char *p = dbp + 1;
+ if (LOOKING_AT (p, "defvar"))
+ {
+ p = skip_name (p); /* past var name */
+ p = skip_spaces (p);
+ if (*p == ')')
+ continue;
+ }
+ }
+
if (strneq (dbp+1, "def", 3) || strneq (dbp+1, "DEF", 3))
{
dbp = skip_non_spaces (dbp);
@@ -6292,6 +6322,16 @@ skip_non_spaces (char *cp)
return cp;
}
+/* Skip any chars in the "name" class.*/
+static char *
+skip_name (char *cp)
+{
+ /* '\0' is a notinname() so loop stops there too */
+ while (! notinname (*cp))
+ cp++;
+ return cp;
+}
+
/* Print error message and exit. */
void
fatal (const char *s1, const char *s2)
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 264b3d292c6..f2b2484c8e3 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -430,22 +430,10 @@ main (int argc, char **argv)
for certain failure codes. */
if (status < 0)
{
- if (++lockcount <= 5)
+ if (++lockcount <= 5 && (errno == EAGAIN || errno == EBUSY))
{
-#ifdef EAGAIN
- if (errno == EAGAIN)
- {
- sleep (1);
- goto retry_lock;
- }
-#endif
-#ifdef EBUSY
- if (errno == EBUSY)
- {
- sleep (1);
- goto retry_lock;
- }
-#endif
+ sleep (1);
+ goto retry_lock;
}
pfatal_with_name (inname);
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index 834f63169e2..420520fbce7 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -21,7 +21,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=at-internal --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=openat-die --avoid=openat-h --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=at-internal --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=openat-die --avoid=openat-h --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask putenv readlink sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
MOSTLYCLEANFILES += core *.stackdump
@@ -439,6 +439,15 @@ EXTRA_libgnu_a_SOURCES += pthread_sigmask.c
## end gnulib module pthread_sigmask
+## begin gnulib module putenv
+
+
+EXTRA_DIST += putenv.c
+
+EXTRA_libgnu_a_SOURCES += putenv.c
+
+## end gnulib module putenv
+
## begin gnulib module readlink
@@ -457,6 +466,15 @@ EXTRA_DIST += root-uid.h
## end gnulib module root-uid
+## begin gnulib module sig2str
+
+
+EXTRA_DIST += sig2str.c sig2str.h
+
+EXTRA_libgnu_a_SOURCES += sig2str.c
+
+## end gnulib module sig2str
+
## begin gnulib module signal-h
BUILT_SOURCES += signal.h
@@ -756,6 +774,7 @@ EXTRA_DIST += stdint.in.h
## begin gnulib module stdio
BUILT_SOURCES += stdio.h
+libgnu_a_SOURCES += stdio.c
# We need the following in order to create <stdio.h> when the system
# doesn't have one that works with the given compiler.
@@ -1251,6 +1270,7 @@ EXTRA_DIST += u64.h
## begin gnulib module unistd
BUILT_SOURCES += unistd.h
+libgnu_a_SOURCES += unistd.c
# We need the following in order to create an empty placeholder for
# <unistd.h> when the system doesn't have one.
@@ -1398,6 +1418,15 @@ EXTRA_DIST += unistd.in.h
## end gnulib module unistd
+## begin gnulib module unsetenv
+
+
+EXTRA_DIST += unsetenv.c
+
+EXTRA_libgnu_a_SOURCES += unsetenv.c
+
+## end gnulib module unsetenv
+
## begin gnulib module utimens
libgnu_a_SOURCES += utimens.c
diff --git a/lib/lstat.c b/lib/lstat.c
index db119a10d3f..97fe6bb2d53 100644
--- a/lib/lstat.c
+++ b/lib/lstat.c
@@ -35,7 +35,7 @@ typedef int dummy;
# include <sys/stat.h>
# undef __need_system_sys_stat_h
-static inline int
+static int
orig_lstat (const char *filename, struct stat *buf)
{
return lstat (filename, buf);
diff --git a/lib/makefile.w32-in b/lib/makefile.w32-in
index 67171e07900..b27e21032b3 100644
--- a/lib/makefile.w32-in
+++ b/lib/makefile.w32-in
@@ -42,6 +42,7 @@ GNULIBOBJS = $(BLD)/c-ctype.$(O) \
$(BLD)/sha1.$(O) \
$(BLD)/sha256.$(O) \
$(BLD)/sha512.$(O) \
+ $(BLD)/sig2str.$(O) \
$(BLD)/stat-time.$(O) \
$(BLD)/timespec.$(O) \
$(BLD)/u64.$(O) \
@@ -239,6 +240,13 @@ $(BLD)/filemode.$(O) : \
$(CONFIG_H) \
$(FILEMODE_H)
+$(BLD)/sig2str.$(O) : \
+ $(GNU_LIB)/sig2str.c \
+ $(CONFIG_H) \
+ $(GNU_LIB)/sig2str.h \
+ $(GNU_LIB)/intprops.h
+
+
# The following dependencies are for supporting parallel builds, where
# we must make sure $(BLD) exists before any compilation starts.
#
@@ -322,4 +330,3 @@ getopt_h:
execinfo.h: execinfo.in.h
$(CP) execinfo.in.h $@
-
diff --git a/lib/md5.c b/lib/md5.c
index 30b7e50e3ae..6e6d61270dd 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -83,7 +83,7 @@ md5_init_ctx (struct md5_ctx *ctx)
/* Copy the 4 byte value from v into the memory location pointed to by *cp,
If your architecture allows unaligned access this is equivalent to
* (uint32_t *) cp = v */
-static inline void
+static void
set_uint32 (char *cp, uint32_t v)
{
memcpy (cp, &v, sizeof v);
diff --git a/lib/putenv.c b/lib/putenv.c
new file mode 100644
index 00000000000..3c0f7ead330
--- /dev/null
+++ b/lib/putenv.c
@@ -0,0 +1,134 @@
+/* Copyright (C) 1991, 1994, 1997-1998, 2000, 2003-2012 Free Software
+ Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C
+ Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 3 of the License, or any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <stddef.h>
+
+/* Include errno.h *after* sys/types.h to work around header problems
+ on AIX 3.2.5. */
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+#include <string.h>
+#include <unistd.h>
+
+#if _LIBC
+# if HAVE_GNU_LD
+# define environ __environ
+# else
+extern char **environ;
+# endif
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of 'environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif
+
+static int
+_unsetenv (const char *name)
+{
+ size_t len;
+ char **ep;
+
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ len = strlen (name);
+
+ LOCK;
+
+ ep = environ;
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
+
+ UNLOCK;
+
+ return 0;
+}
+
+
+/* Put STRING, which is of the form "NAME=VALUE", in the environment.
+ If STRING contains no '=', then remove STRING from the environment. */
+int
+putenv (char *string)
+{
+ const char *const name_end = strchr (string, '=');
+ register size_t size;
+ register char **ep;
+
+ if (name_end == NULL)
+ {
+ /* Remove the variable from the environment. */
+ return _unsetenv (string);
+ }
+
+ size = 0;
+ for (ep = environ; *ep != NULL; ++ep)
+ if (!strncmp (*ep, string, name_end - string) &&
+ (*ep)[name_end - string] == '=')
+ break;
+ else
+ ++size;
+
+ if (*ep == NULL)
+ {
+ static char **last_environ = NULL;
+ char **new_environ = (char **) malloc ((size + 2) * sizeof (char *));
+ if (new_environ == NULL)
+ return -1;
+ (void) memcpy ((void *) new_environ, (void *) environ,
+ size * sizeof (char *));
+ new_environ[size] = (char *) string;
+ new_environ[size + 1] = NULL;
+ free (last_environ);
+ last_environ = new_environ;
+ environ = new_environ;
+ }
+ else
+ *ep = string;
+
+ return 0;
+}
diff --git a/lib/sha1.c b/lib/sha1.c
index 0d82af14bc9..b9505dd9467 100644
--- a/lib/sha1.c
+++ b/lib/sha1.c
@@ -70,7 +70,7 @@ sha1_init_ctx (struct sha1_ctx *ctx)
/* Copy the 4 byte value from v into the memory location pointed to by *cp,
If your architecture allows unaligned access this is equivalent to
* (uint32_t *) cp = v */
-static inline void
+static void
set_uint32 (char *cp, uint32_t v)
{
memcpy (cp, &v, sizeof v);
diff --git a/lib/sha256.c b/lib/sha256.c
index a8d29da18dd..55273c6a3bc 100644
--- a/lib/sha256.c
+++ b/lib/sha256.c
@@ -90,7 +90,7 @@ sha224_init_ctx (struct sha256_ctx *ctx)
/* Copy the value from v into the memory location pointed to by *cp,
If your architecture allows unaligned access this is equivalent to
* (uint32_t *) cp = v */
-static inline void
+static void
set_uint32 (char *cp, uint32_t v)
{
memcpy (cp, &v, sizeof v);
diff --git a/lib/sha512.c b/lib/sha512.c
index cf62f2034e5..dfb67a305d8 100644
--- a/lib/sha512.c
+++ b/lib/sha512.c
@@ -97,7 +97,7 @@ sha384_init_ctx (struct sha512_ctx *ctx)
/* Copy the value from V into the memory location pointed to by *CP,
If your architecture allows unaligned access, this is equivalent to
* (__typeof__ (v) *) cp = v */
-static inline void
+static void
set_uint64 (char *cp, u64 v)
{
memcpy (cp, &v, sizeof v);
diff --git a/lib/sig2str.c b/lib/sig2str.c
new file mode 100644
index 00000000000..2f5b21cc36f
--- /dev/null
+++ b/lib/sig2str.c
@@ -0,0 +1,345 @@
+/* sig2str.c -- convert between signal names and numbers
+
+ Copyright (C) 2002, 2004, 2006, 2009-2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include <limits.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "sig2str.h"
+
+#ifndef SIGRTMIN
+# define SIGRTMIN 0
+# undef SIGRTMAX
+#endif
+#ifndef SIGRTMAX
+# define SIGRTMAX (SIGRTMIN - 1)
+#endif
+
+#define NUMNAME(name) { SIG##name, #name }
+
+/* Signal names and numbers. Put the preferred name first. */
+static struct numname { int num; char const name[8]; } numname_table[] =
+ {
+ /* Signals required by POSIX 1003.1-2001 base, listed in
+ traditional numeric order where possible. */
+#ifdef SIGHUP
+ NUMNAME (HUP),
+#endif
+#ifdef SIGINT
+ NUMNAME (INT),
+#endif
+#ifdef SIGQUIT
+ NUMNAME (QUIT),
+#endif
+#ifdef SIGILL
+ NUMNAME (ILL),
+#endif
+#ifdef SIGTRAP
+ NUMNAME (TRAP),
+#endif
+#ifdef SIGABRT
+ NUMNAME (ABRT),
+#endif
+#ifdef SIGFPE
+ NUMNAME (FPE),
+#endif
+#ifdef SIGKILL
+ NUMNAME (KILL),
+#endif
+#ifdef SIGSEGV
+ NUMNAME (SEGV),
+#endif
+ /* On Haiku, SIGSEGV == SIGBUS, but we prefer SIGSEGV to match
+ strsignal.c output, so SIGBUS must be listed second. */
+#ifdef SIGBUS
+ NUMNAME (BUS),
+#endif
+#ifdef SIGPIPE
+ NUMNAME (PIPE),
+#endif
+#ifdef SIGALRM
+ NUMNAME (ALRM),
+#endif
+#ifdef SIGTERM
+ NUMNAME (TERM),
+#endif
+#ifdef SIGUSR1
+ NUMNAME (USR1),
+#endif
+#ifdef SIGUSR2
+ NUMNAME (USR2),
+#endif
+#ifdef SIGCHLD
+ NUMNAME (CHLD),
+#endif
+#ifdef SIGURG
+ NUMNAME (URG),
+#endif
+#ifdef SIGSTOP
+ NUMNAME (STOP),
+#endif
+#ifdef SIGTSTP
+ NUMNAME (TSTP),
+#endif
+#ifdef SIGCONT
+ NUMNAME (CONT),
+#endif
+#ifdef SIGTTIN
+ NUMNAME (TTIN),
+#endif
+#ifdef SIGTTOU
+ NUMNAME (TTOU),
+#endif
+
+ /* Signals required by POSIX 1003.1-2001 with the XSI extension. */
+#ifdef SIGSYS
+ NUMNAME (SYS),
+#endif
+#ifdef SIGPOLL
+ NUMNAME (POLL),
+#endif
+#ifdef SIGVTALRM
+ NUMNAME (VTALRM),
+#endif
+#ifdef SIGPROF
+ NUMNAME (PROF),
+#endif
+#ifdef SIGXCPU
+ NUMNAME (XCPU),
+#endif
+#ifdef SIGXFSZ
+ NUMNAME (XFSZ),
+#endif
+
+ /* Unix Version 7. */
+#ifdef SIGIOT
+ NUMNAME (IOT), /* Older name for ABRT. */
+#endif
+#ifdef SIGEMT
+ NUMNAME (EMT),
+#endif
+
+ /* USG Unix. */
+#ifdef SIGPHONE
+ NUMNAME (PHONE),
+#endif
+#ifdef SIGWIND
+ NUMNAME (WIND),
+#endif
+
+ /* Unix System V. */
+#ifdef SIGCLD
+ NUMNAME (CLD),
+#endif
+#ifdef SIGPWR
+ NUMNAME (PWR),
+#endif
+
+ /* GNU/Linux 2.2 and Solaris 8. */
+#ifdef SIGCANCEL
+ NUMNAME (CANCEL),
+#endif
+#ifdef SIGLWP
+ NUMNAME (LWP),
+#endif
+#ifdef SIGWAITING
+ NUMNAME (WAITING),
+#endif
+#ifdef SIGFREEZE
+ NUMNAME (FREEZE),
+#endif
+#ifdef SIGTHAW
+ NUMNAME (THAW),
+#endif
+#ifdef SIGLOST
+ NUMNAME (LOST),
+#endif
+#ifdef SIGWINCH
+ NUMNAME (WINCH),
+#endif
+
+ /* GNU/Linux 2.2. */
+#ifdef SIGINFO
+ NUMNAME (INFO),
+#endif
+#ifdef SIGIO
+ NUMNAME (IO),
+#endif
+#ifdef SIGSTKFLT
+ NUMNAME (STKFLT),
+#endif
+
+ /* AIX 5L. */
+#ifdef SIGDANGER
+ NUMNAME (DANGER),
+#endif
+#ifdef SIGGRANT
+ NUMNAME (GRANT),
+#endif
+#ifdef SIGMIGRATE
+ NUMNAME (MIGRATE),
+#endif
+#ifdef SIGMSG
+ NUMNAME (MSG),
+#endif
+#ifdef SIGPRE
+ NUMNAME (PRE),
+#endif
+#ifdef SIGRETRACT
+ NUMNAME (RETRACT),
+#endif
+#ifdef SIGSAK
+ NUMNAME (SAK),
+#endif
+#ifdef SIGSOUND
+ NUMNAME (SOUND),
+#endif
+
+ /* Older AIX versions. */
+#ifdef SIGALRM1
+ NUMNAME (ALRM1), /* unknown; taken from Bash 2.05 */
+#endif
+#ifdef SIGKAP
+ NUMNAME (KAP), /* Older name for SIGGRANT. */
+#endif
+#ifdef SIGVIRT
+ NUMNAME (VIRT), /* unknown; taken from Bash 2.05 */
+#endif
+#ifdef SIGWINDOW
+ NUMNAME (WINDOW), /* Older name for SIGWINCH. */
+#endif
+
+ /* BeOS */
+#ifdef SIGKILLTHR
+ NUMNAME (KILLTHR),
+#endif
+
+ /* Older HP-UX versions. */
+#ifdef SIGDIL
+ NUMNAME (DIL),
+#endif
+
+ /* Korn shell and Bash, of uncertain vintage. */
+ { 0, "EXIT" }
+ };
+
+#define NUMNAME_ENTRIES (sizeof numname_table / sizeof numname_table[0])
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of "digit" even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+/* Convert the signal name SIGNAME to a signal number. Return the
+ signal number if successful, -1 otherwise. */
+
+static int
+str2signum (char const *signame)
+{
+ if (ISDIGIT (*signame))
+ {
+ char *endp;
+ long int n = strtol (signame, &endp, 10);
+ if (! *endp && n <= SIGNUM_BOUND)
+ return n;
+ }
+ else
+ {
+ unsigned int i;
+ for (i = 0; i < NUMNAME_ENTRIES; i++)
+ if (strcmp (numname_table[i].name, signame) == 0)
+ return numname_table[i].num;
+
+ {
+ char *endp;
+ int rtmin = SIGRTMIN;
+ int rtmax = SIGRTMAX;
+
+ if (0 < rtmin && strncmp (signame, "RTMIN", 5) == 0)
+ {
+ long int n = strtol (signame + 5, &endp, 10);
+ if (! *endp && 0 <= n && n <= rtmax - rtmin)
+ return rtmin + n;
+ }
+ else if (0 < rtmax && strncmp (signame, "RTMAX", 5) == 0)
+ {
+ long int n = strtol (signame + 5, &endp, 10);
+ if (! *endp && rtmin - rtmax <= n && n <= 0)
+ return rtmax + n;
+ }
+ }
+ }
+
+ return -1;
+}
+
+/* Convert the signal name SIGNAME to the signal number *SIGNUM.
+ Return 0 if successful, -1 otherwise. */
+
+int
+str2sig (char const *signame, int *signum)
+{
+ *signum = str2signum (signame);
+ return *signum < 0 ? -1 : 0;
+}
+
+/* Convert SIGNUM to a signal name in SIGNAME. SIGNAME must point to
+ a buffer of at least SIG2STR_MAX bytes. Return 0 if successful, -1
+ otherwise. */
+
+int
+sig2str (int signum, char *signame)
+{
+ unsigned int i;
+ for (i = 0; i < NUMNAME_ENTRIES; i++)
+ if (numname_table[i].num == signum)
+ {
+ strcpy (signame, numname_table[i].name);
+ return 0;
+ }
+
+ {
+ int rtmin = SIGRTMIN;
+ int rtmax = SIGRTMAX;
+
+ if (! (rtmin <= signum && signum <= rtmax))
+ return -1;
+
+ if (signum <= rtmin + (rtmax - rtmin) / 2)
+ {
+ int delta = signum - rtmin;
+ sprintf (signame, delta ? "RTMIN+%d" : "RTMIN", delta);
+ }
+ else
+ {
+ int delta = rtmax - signum;
+ sprintf (signame, delta ? "RTMAX-%d" : "RTMAX", delta);
+ }
+
+ return 0;
+ }
+}
diff --git a/lib/sig2str.h b/lib/sig2str.h
new file mode 100644
index 00000000000..75eff7d7c1a
--- /dev/null
+++ b/lib/sig2str.h
@@ -0,0 +1,43 @@
+/* sig2str.h -- convert between signal names and numbers
+
+ Copyright (C) 2002, 2005, 2009-2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert. */
+
+#include <signal.h>
+
+/* Don't override system declarations of SIG2STR_MAX, sig2str, str2sig. */
+#ifndef SIG2STR_MAX
+
+# include "intprops.h"
+
+/* Size of a buffer needed to hold a signal name like "HUP". */
+# define SIG2STR_MAX (sizeof "SIGRTMAX" + INT_STRLEN_BOUND (int) - 1)
+
+int sig2str (int, char *);
+int str2sig (char const *, int *);
+
+#endif
+
+/* An upper bound on signal numbers allowed by the system. */
+
+#if defined _sys_nsig
+# define SIGNUM_BOUND (_sys_nsig - 1)
+#elif defined NSIG
+# define SIGNUM_BOUND (NSIG - 1)
+#else
+# define SIGNUM_BOUND 64
+#endif
diff --git a/lib/stat.c b/lib/stat.c
index 75995408906..c0bcb88320f 100644
--- a/lib/stat.c
+++ b/lib/stat.c
@@ -42,7 +42,7 @@
# endif
#endif
-static inline int
+static int
orig_stat (const char *filename, struct stat *buf)
{
return stat (filename, buf);
diff --git a/lib/stdio.c b/lib/stdio.c
new file mode 100644
index 00000000000..e6ed82996b7
--- /dev/null
+++ b/lib/stdio.c
@@ -0,0 +1,3 @@
+#include <config.h>
+#define _GL_STDIO_INLINE _GL_EXTERN_INLINE
+#include "stdio.h"
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
index b1b543dee72..f3b52d28f6b 100644
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -46,6 +46,11 @@
#ifndef _@GUARD_PREFIX@_STDIO_H
#define _@GUARD_PREFIX@_STDIO_H
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_STDIO_INLINE
+# define _GL_STDIO_INLINE _GL_INLINE
+#endif
+
/* Get va_list. Needed on many systems, including glibc 2.8. */
#include <stdarg.h>
@@ -581,7 +586,7 @@ _GL_CXXALIAS_SYS (fwrite, size_t,
This affects only function declaration attributes, so it's not
needed for C++. */
# if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL
-static inline size_t _GL_ARG_NONNULL ((1, 4))
+_GL_STDIO_INLINE size_t _GL_ARG_NONNULL ((1, 4))
rpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
{
size_t r = fwrite (ptr, s, n, stream);
@@ -1333,6 +1338,7 @@ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
"POSIX compliance");
#endif
+_GL_INLINE_HEADER_END
#endif /* _@GUARD_PREFIX@_STDIO_H */
#endif /* _@GUARD_PREFIX@_STDIO_H */
diff --git a/lib/sys_stat.in.h b/lib/sys_stat.in.h
index 2efc1e92e06..ac05ddb5cec 100644
--- a/lib/sys_stat.in.h
+++ b/lib/sys_stat.in.h
@@ -497,7 +497,7 @@ _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
# if !GNULIB_defined_rpl_mkdir
-static inline int
+static int
rpl_mkdir (char const *name, mode_t mode)
{
return _mkdir (name);
diff --git a/lib/unistd.c b/lib/unistd.c
new file mode 100644
index 00000000000..6c6a8e268c0
--- /dev/null
+++ b/lib/unistd.c
@@ -0,0 +1,3 @@
+#include <config.h>
+#define _GL_UNISTD_INLINE _GL_EXTERN_INLINE
+#include "unistd.h"
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
index e904e512ee8..6171f77ac71 100644
--- a/lib/unistd.in.h
+++ b/lib/unistd.in.h
@@ -127,6 +127,11 @@
# include <getopt.h>
#endif
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_UNISTD_INLINE
+# define _GL_UNISTD_INLINE _GL_INLINE
+#endif
+
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_ARG_NONNULL is copied here. */
@@ -404,7 +409,7 @@ extern char **environ;
# endif
#elif defined GNULIB_POSIXCHECK
# if HAVE_RAW_DECL_ENVIRON
-static inline char ***
+_GL_UNISTD_INLINE char ***
rpl_environ (void)
{
return &environ;
@@ -862,7 +867,7 @@ _GL_CXXALIAS_RPL (getpagesize, int, (void));
# define getpagesize() _gl_getpagesize ()
# else
# if !GNULIB_defined_getpagesize_function
-static inline int
+_GL_UNISTD_INLINE int
getpagesize ()
{
return _gl_getpagesize ();
@@ -1530,6 +1535,7 @@ _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
_GL_CXXALIASWARN (write);
#endif
+_GL_INLINE_HEADER_END
#endif /* _@GUARD_PREFIX@_UNISTD_H */
#endif /* _@GUARD_PREFIX@_UNISTD_H */
diff --git a/lib/unsetenv.c b/lib/unsetenv.c
new file mode 100644
index 00000000000..ddbe9a4d293
--- /dev/null
+++ b/lib/unsetenv.c
@@ -0,0 +1,127 @@
+/* Copyright (C) 1992, 1995-2002, 2005-2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc
+ optimizes away the name == NULL test below. */
+#define _GL_ARG_NONNULL(params)
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <errno.h>
+#if !_LIBC
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+#include <string.h>
+#include <unistd.h>
+
+#if !_LIBC
+# define __environ environ
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of 'environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif
+
+/* In the GNU C library we must keep the namespace clean. */
+#ifdef _LIBC
+# define unsetenv __unsetenv
+#endif
+
+#if _LIBC || !HAVE_UNSETENV
+
+int
+unsetenv (const char *name)
+{
+ size_t len;
+ char **ep;
+
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ len = strlen (name);
+
+ LOCK;
+
+ ep = __environ;
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
+
+ UNLOCK;
+
+ return 0;
+}
+
+#ifdef _LIBC
+# undef unsetenv
+weak_alias (__unsetenv, unsetenv)
+#endif
+
+#else /* HAVE_UNSETENV */
+
+# undef unsetenv
+# if !HAVE_DECL_UNSETENV
+# if VOID_UNSETENV
+extern void unsetenv (const char *);
+# else
+extern int unsetenv (const char *);
+# endif
+# endif
+
+/* Call the underlying unsetenv, in case there is hidden bookkeeping
+ that needs updating beyond just modifying environ. */
+int
+rpl_unsetenv (const char *name)
+{
+ int result = 0;
+ if (!name || !*name || strchr (name, '='))
+ {
+ errno = EINVAL;
+ return -1;
+ }
+ while (getenv (name))
+# if !VOID_UNSETENV
+ result =
+# endif
+ unsetenv (name);
+ return result;
+}
+
+#endif /* HAVE_UNSETENV */
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9e403af6416..8515c110c42 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,520 @@
+2012-12-09 Glenn Morris <rgm@gnu.org>
+
+ * emacs-lisp/lisp-mode.el (eval-defun-1): Doc fix.
+ Respect a defcustom's :set function, if appropriate. (Bug#109)
+ (eval-defun): Doc fix.
+
+2012-12-08 Juri Linkov <juri@jurta.org>
+
+ * info.el (Info-copy-current-node-name, Info-breadcrumbs)
+ (Info-fontify-node, Info-bookmark-make-record): Remove the
+ file extension from Info-current-file (Bug#13016).
+
+2012-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * hi-lock.el (hi-lock-unface-buffer): If there's no matching regexp at
+ point, still provide some default.
+ (hi-lock--regexps-at-point): Don't enforce a "hi-lock-" prefix on face
+ names, since we don't use it right now. Actually return the list.
+ (hi-lock-file-patterns, hi-lock-interactive-patterns): Use defvar-local.
+
+2012-12-07 Chong Yidong <cyd@gnu.org>
+
+ * novice.el (disabled-command-function): Remove a spurious help
+ xref (Bug#13043). Suggested by Kelly Dean.
+
+ * subr.el (text-clone-maintain): Fix clone overlay deletion when a
+ syntax is specified (Bug#13025).
+
+ * info.el (Info-set-mode-line): Remove the file extension from
+ Info-current-file if there is one (Bug#13016).
+
+2012-12-07 Glenn Morris <rgm@gnu.org>
+
+ * mail/rmail.el (rmail-mime-decoded): New permanent local.
+ (rmail-show-message-1): Set rmail-mime-decoded when appropriate.
+ * mail/rmailedit.el (rmail-cease-edit): Respect rmail-mbox-format
+ and rmail-mime-decoded. (Bug#9841)
+
+ * mail/unrmail.el (unrmail-mbox-format): New option. (Bug#6574)
+ (batch-unrmail, unrmail): Doc fixes.
+ (unrmail): Respect unrmail-mbox-format.
+ * mail/rmail.el (rmail-mbox-format): New option.
+ (rmail-show-message-1): Respect rmail-mbox-format.
+
+2012-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/cl-macs.el (cl-tagbody): New macro.
+
+2012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ Further cleanup of the "cl-" namespace. Fit CL in 80 columns.
+ * emacs-lisp/cl-macs.el (cl--pop2, cl--optimize-safety)
+ (cl--optimize-speed, cl--not-toplevel, cl--parse-loop-clause)
+ (cl--expand-do-loop, cl--proclaim-history, cl--declare-stack)
+ (cl--do-proclaim, cl--proclaims-deferred): Rename from the "cl-" prefix.
+ (cl-progv): Don't rely on dynamic scoping to find the body.
+ * emacs-lisp/cl-lib.el (cl--optimize-speed, cl--optimize-safety)
+ (cl--proclaims-deferred): Rename from the "cl-" prefix.
+ (cl-declaim): Use backquotes.
+ * emacs-lisp/cl-extra.el (cl-make-random-state, cl-random-state-p):
+ Use "cl--" prefix for the object's tag.
+
+ * ses.el: Use advice-add/remove.
+ (ses--advice-copy-region-as-kill, ses--advice-yank): New functions.
+ (copy-region-as-kill, yank): Use advice-add.
+ (ses-unload-function): Use advice-remove.
+
+2012-12-06 Jonas Bernoulli <jonas@bernoul.li>
+
+ * button.el: Make them work in header-lines (bug#12817).
+ (button-map): Add bindings for header-line and mode-line use.
+ (button-get, button-put, button-label): `button' may now be a string.
+ (button-activate): Don't make it a defsubst.
+ (button--area-button-p, button--area-button-string): New functions.
+ (make-text-button): Fix the return value when `beg' was a string.
+ (push-button): Handle the mode-line case.
+
+2012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/sql.el: Use cl-lib and lexical-binding; various cleanup.
+ (sql-signum): Remove. Use `cl-signum' instead.
+ (sql-read-passwd): Remove; use read-passwd instread.
+ (sql-get-login-ext): Use read-string.
+ (sql-get-login): Use dolist and pcase.
+ (sql--completion-table): Rename from sql-try-completion.
+ Use complete-with-action.
+ (sql-mode): Don't change abbrev-all-caps globally.
+ (sql-connect): Don't rely on dynamic scoping for `new-name'.
+ (sql-postgres-completion-object): Initialize vars in their `let'.
+ (sql-comint-sybase, sql-comint-sqlite, sql-comint-mysql)
+ (sql-comint-solid, sql-comint-ms, sql-comint-postgres)
+ (sql-comint-interbase): Use a single append, without setq.
+ (sql-comint-linter): Same, and unwind-protect the LINTER_MBX var.
+
+ * hi-lock.el: Rework the default face and the serialize regexp code.
+ (hi-lock--auto-select-face-defaults): Remove.
+ (hi-lock-string-serialize-serial): Remove.
+ (hi-lock--hashcons-hash): Rename from hi-lock-string-serialize-hash;
+ make weak.
+ (hi-lock--hashcons): Rename from hi-lock-string-serialize, return an
+ equal string.
+ (hi-lock-set-pattern): Adjust accordingly.
+ (hi-lock--regexps-at-point): Simplify accordingly.
+ (hi-lock--auto-select-face-defaults): Remove.
+ (hi-lock--last-face): New var to replace it.
+ (hi-lock-read-face-name): Rewrite (bug#11095).
+ (hi-lock-unface-buffer): Arrange for the face to be the next default.
+
+2012-12-06 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-replace-environment-variables):
+ Hide compiler warning.
+ (tramp-file-name-for-operation): Remove `executable-find',
+ `start-process', `call-process' and `call-process-region'.
+
+ * net/tramp-compat.el (top): Don't require 'tramp-util and 'tramp-vc.
+
+ * net/tramp-gvfs.el (tramp-gvfs-dbus-event-error): Ensure backward
+ compatibility.
+
+ * net/tramp-sh.el (top): Remove `tramp-sh-handle-call-process-region'.
+
+2012-12-06 Chong Yidong <cyd@gnu.org>
+
+ * ffap.el (ffap-replace-file-component): Fix typo.
+
+2012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/octave-mod.el (octave-mark-block): Move out of tokens and
+ fix open-paren-like token test (bug#12785).
+
+2012-12-06 Glenn Morris <rgm@gnu.org>
+
+ * mail/rmailsum.el (rmail-new-summary): Tweak for
+ rmail-maybe-display-summary changing buffer. (Bug#13066)
+
+2012-12-06 Juri Linkov <juri@jurta.org>
+
+ * info.el (Info-fontify-node): Don't hide the last newline.
+ (Bug#12272)
+
+2012-12-06 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * mail/mailabbrev.el (mail-abbrev-expand-wrapper): Work in minibuffer
+ so as to enable message-read-from-minibuffer to expand mail aliases.
+
+2012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * minibuf-eldef.el (minibuf-eldef-update-minibuffer): Don't mess with
+ the `intangible' property.
+ Suggested by Christopher Schmidt <christopher@ch.ristopher.com>
+
+2012-12-05 Deniz Dogan <deniz@dogan.se>
+
+ * net/rcirc.el (rcirc-urls): Update documentation.
+ (rcirc-condition-filter): New function.
+ (rcirc-browse-url, rcirc-markup-urls): Use only URLs before point
+ and exclude consecutive duplicate URLs (Bug#6082).
+
+2012-12-05 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
+ Check return code of copy command.
+
+ * net/tramp-adb.el (tramp-adb-sdk-dir, tramp-adb-prompt):
+ Use group `tramp'. Add version.
+
+2012-12-05 Chong Yidong <cyd@gnu.org>
+
+ * ffap.el (ffap-url-regexp): Don't require matching at front of
+ string (Bug#4952).
+ (ffap-url-p): If only a substring matches, return that.
+ (ffap-url-at-point): Use the return value of ffap-url-p.
+ (ffap-read-file-or-url, ffap-read-file-or-url-internal)
+ (find-file-at-point, dired-at-point, dired-at-point-prompter)
+ (ffap-guess-file-name-at-point): Likewise.
+ (ffap-replace-file-component): Fix typo.
+
+ * info.el (info-display-manual): Add existing Info buffers, whose
+ files may not be in Info-directory-list, to the completion.
+ (info--manual-names): New helper function.
+
+2012-12-05 Glenn Morris <rgm@gnu.org>
+
+ * vc/vc-hg.el (vc-hg-resolve-when-done, vc-hg-find-file-hook):
+ New functions, for detecting and resolving conflicts. (Bug#10709)
+
+2012-12-04 Jambunathan K <kjambunathan@gmail.com>
+
+ * hi-lock.el (hi-lock-auto-select-face): New user variable.
+ (hi-lock-auto-select-face-defaults): New buffer local variable.
+ (hi-lock-read-face-name): Honor `hi-lock-auto-select-face'.
+ (hi-lock-unface-buffer): Prompt user with useful defaults.
+ With prefix arg, unhighlight all hi-lock patterns in buffer.
+
+2012-12-04 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * obsolete/terminal.el, obsolete/longlines.el: Add obsolecence info.
+
+2012-12-04 Michael Albinus <michael.albinus@gmx.de>
+
+ * Makefile.in (TRAMP_SRC):
+ * makefile.w32-in (TRAMP_SRC): Add tramp-adb.el.
+
+2012-12-04 Juergen Hoetzel <juergen@archlinux.org>
+
+ * net/tramp-adb.el: New package.
+
+2012-12-04 Chong Yidong <cyd@gnu.org>
+
+ * terminal.el: Move to obsolete/.
+
+ * longlines.el: Move to obsolete/.
+
+ * vc/ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3):
+ Remove code referring to longlines mode.
+
+2012-12-03 Juri Linkov <juri@jurta.org>
+
+ * sort.el (delete-duplicate-lines): New command. (Bug#13032)
+
+2012-12-03 Agustín Martín Domingo <agustin.martin@hispalinux.es>
+
+ * textmodes/ispell.el (ispell-init-process)
+ (ispell-start-process, ispell-internal-change-dictionary):
+ Make sure personal dictionary name is expanded after initial
+ `default-directory' value. Use expanded strings for
+ keep/restart checks and for value (Bug#13019).
+
+2012-12-03 Jay Belanger <jay.p.belanger@gmail.com>
+
+ * calc/calc-forms.el (math-date-to-iso-dt): Fix weekday number.
+
+2012-12-03 Leo Liu <sdl.web@gmail.com>
+
+ * files.el (dir-locals-read-from-file): Check file non-empty
+ before reading. (Bug#13038)
+
+2012-12-03 Glenn Morris <rgm@gnu.org>
+
+ * jka-cmpr-hook.el (jka-compr-get-compression-info):
+ Remove any version extension before checking filename. (Bug#13006)
+ (jka-compr-compression-info-list): Belated :version bump.
+
+2012-12-03 Chong Yidong <cyd@gnu.org>
+
+ * simple.el (transient-mark-mode): Doc fix (Bug#11523).
+
+ * buff-menu.el (Buffer-menu-delete-backwards, Buffer-menu-mode)
+ (buffer-menu): Doc fix (Bug#12294).
+
+2012-12-03 Roland Winkler <winkler@gnu.org>
+
+ * calendar/diary-lib.el (diary-header-line-format): Use keybinding
+ of diary-show-all-entries in the diary buffer (Bug#12994).
+
+2012-12-03 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-perl-encode): Use "read STDIN" instead of
+ "<STDIN>". This is binary safe.
+
+2012-12-03 Jay Belanger <jay.p.belanger@gmail.com>
+
+ * calc/calc-forms.el (math-absolute-from-iso-dt)
+ (math-date-to-iso-dt, math-parse-iso-date-validate)
+ (math-iso-dt-to-date): New functions.
+ (math-fd-iso-dt, math-fd-isoyear, math-fd-isoweek)
+ (math-fd-isoweekday): New variables.
+ (calc-date-notation, math-parse-standard-date, math-format-date)
+ (math-format-date-part): Add support for more formatting codes.
+
+2012-12-02 Dmitry Gutov <dgutov@yandex.ru>
+
+ * vc/vc.el (vc-delete-file, vc-rename-file): Default to the
+ current buffer's file name when called interactively (Bug#12488).
+
+2012-12-02 Juri Linkov <juri@jurta.org>
+
+ * info.el (info-display-manual): Don't clobber an existing Info
+ buffer (Bug#10770). Add completion (Bug#10771).
+
+2012-12-01 Yuya Nishihara <yuya@tcha.org> (tiny change)
+
+ * vc/vc-hooks.el (vc-find-file-hook): Expand buffer-file-truename
+ before using it for comparison (Bug#5297).
+
+2012-12-01 Jari Aalto <jari.aalto@cante.net>
+
+ * textmodes/css-mode.el (css-current-defun-name): New function.
+ (css-mode): Use it.
+
+ * textmodes/sgml-mode.el (html-current-defun-name): New function.
+ (html-mode): Use it.
+
+2012-12-01 Chong Yidong <cyd@gnu.org>
+
+ Modularize add-log-current-defun (Bug#2224).
+ Suggested by Jari Aalto.
+
+ * vc/add-log.el (add-log-current-defun-function): Doc fix.
+ (add-log-current-defun): Move mode-specific code to other files.
+ (add-log-lisp-like-modes, add-log-c-like-modes)
+ (add-log-tex-like-modes): Variables deleted.
+
+ * emacs-lisp/lisp-mode.el (lisp-current-defun-name): New.
+ (lisp-mode-variables): Use it.
+
+ * progmodes/cc-mode.el (c-common-init):
+ * progmodes/cperl-mode.el (cperl-mode): Set a value for
+ add-log-current-defun-function.
+
+ * progmodes/m4-mode.el (m4-current-defun-name): New function.
+ (m4-mode): Use it.
+
+ * progmodes/perl-mode.el (perl-current-defun-name): New.
+ (perl-mode): Use it.
+
+ * progmodes/scheme.el (scheme-mode-variables, dsssl-mode):
+ Use lisp-current-defun-name.
+
+ * textmodes/tex-mode.el (tex-current-defun-name): New.
+ (tex-common-initialization): Use it.
+
+ * textmodes/texinfo.el (texinfo-current-defun-name): New.
+ (texinfo-mode): Use it.
+
+2012-12-01 Chong Yidong <cyd@gnu.org>
+
+ * emacs-lisp/lisp-mode.el (lisp-mode-variables, lisp-mode):
+ * progmodes/autoconf.el (autoconf-mode):
+ * progmodes/js.el (js-mode):
+ * progmodes/make-mode.el (makefile-mode, makefile-makepp-mode)
+ (makefile-bsdmake-mode, makefile-imake-mode, makefile-browse):
+ * progmodes/perl-mode.el (perl-mode):
+ * progmodes/sh-script.el (sh-mode, sh-set-shell):
+ * textmodes/css-mode.el (css-mode):
+ * textmodes/sgml-mode.el (html-mode, sgml-mode)
+ (sgml-tags-invisible, sgml-guess-indent):
+ * textmodes/tex-mode.el (tex-common-initialization)
+ (latex-complete-bibtex-keys, tex-shell, tex-main-file)
+ (doctex-mode, plain-tex-mode, latex-mode):
+ * textmodes/texinfo.el (texinfo-mode): Use setq-local.
+
+2012-12-01 Kirk Kelsey <kirk.kelsey@0x4b.net>
+
+ * vc/vc-hg.el (vc-hg-next-revision):
+ Ensure use of default "tip" output format. (Bug#6968)
+
+2012-12-01 Kim F. Storm <storm@cua.dk>
+
+ * startup.el (fancy-startup-tail): Add a clickable link
+ (Bug#2176).
+
+2012-12-01 Chong Yidong <cyd@gnu.org>
+
+ * startup.el (fancy-startup-tail): Improve the message about
+ auto-save files (Bug#2176).
+
+ * files.el (recover-session): Improve the descriptive message, and
+ use substitute-command-keys.
+
+2012-12-01 Glenn Morris <rgm@gnu.org>
+
+ * ido.el (ido-file-internal):
+ Handle other-window, other-frame for dired. (Bug#13036)
+
+2012-11-30 Glenn Morris <rgm@gnu.org>
+
+ * icomplete.el (icomplete-separator): Fix :version.
+
+2012-11-30 Chong Yidong <cyd@gnu.org>
+
+ * shell.el (shell): For C-u M-x shell, use an inactive shell
+ buffer as the default (Bug#1975).
+ (shell-apply-ansi-color, shell-reapply-ansi-color): New functions.
+ (shell-mode): Use them to reapply ansi colorization if Shell mode
+ is re-enabled.
+
+2012-11-30 Yuriy Vostrikov <delamonpansie@gmail.com> (tiny change)
+
+ * vc/vc-git.el (vc-git-command): Disable the pager (Bug#6137).
+
+2012-11-30 Samuel Bronson <naesten@gmail.com>
+
+ * progmodes/grep.el (grep-compute-defaults): Do not pass the -e
+ flag to xargs, for compatibility with BSD xargs (Bug#11703).
+
+2012-11-30 Toru TSUNEYOSHI <t_tuneyosi@hotmail.com>
+
+ * textmodes/fill.el (fill-region-as-paragraph): Handle overshoot
+ by move-to-column (Bug#3234).
+
+2012-11-30 Chong Yidong <cyd@gnu.org>
+
+ * longlines.el (longlines-wrap-line, longlines-encode-region):
+ Preserve text properties (Bug#1425).
+
+2012-11-30 OKAZAKI Tetsurou <okazaki.tetsurou@gmail.com> (tiny change)
+
+ * vc/vc.el (vc-register): Allow registering a file which is
+ already registered with a different backend (Bug#10589).
+
+2012-11-29 Jambunathan K <kjambunathan@gmail.com>
+ Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * icomplete.el: Change separator; add ido-style commands.
+ (icomplete-show-key-bindings): Remove custom var.
+ (icomplete-get-keys): Remove function.
+ (icomplete-forward-completions, icomplete-backward-completions):
+ New commands.
+ (icomplete-minibuffer-map): New var.
+ (icomplete-minibuffer-setup): Use it.
+ (icomplete-exhibit): Don't delay if the list of completions is known.
+ (icomplete-separator): New custom.
+ (icomplete-completions): Use it.
+ * minibuffer.el (completion-all-sorted-completions): Delete duplicates.
+ (minibuffer-force-complete-and-exit): New command.
+ (minibuffer--complete-and-exit): New function extracted from
+ minibuffer-complete-and-exit.
+ (minibuffer-complete-and-exit): Use it.
+
+ * progmodes/etags.el (visit-tags-table-buffer): Give a more precise
+ error message when the file doesn't exist (bug#12974).
+
+2012-11-29 Kelly Dean <kellydeanch@yahoo.com> (tiny change)
+
+ * simple.el (activate-mark): Run activate-mark-hook (bug#13027).
+
+2012-11-29 Glenn Morris <rgm@gnu.org>
+
+ * files.el (hack-dir-local-variables): Warn if try to set
+ coding via dir-locals, since it doesn't work. (Bug#7169)
+
+ Add desktop support for restoring vc-dir buffers. (Bug#10606)
+ * vc/vc-dir.el (vc-dir-mode): Autoload it (for desktop restore).
+ Set buffer-local value of desktop-save-buffer.
+ (vc-dir-desktop-buffer-misc-data, vc-dir-restore-desktop-buffer):
+ New functions.
+ (desktop-buffer-mode-handlers): Add vc-dir-mode entry.
+ * desktop.el (desktop-save-buffer-p): Treat vc-dir like dired.
+
+ * files.el (inhibit-local-variables-ignore-case): New. (Bug#10610)
+ (inhibit-local-variables-p): Use inhibit-local-variables-ignore-case.
+ Doc fix.
+ (inhibit-local-variables-regexps, inhibit-local-variables-suffixes):
+ Doc fixes.
+
+2012-11-28 Jay Belanger <jay.p.belanger@gmail.com>
+
+ * calc/calc-forms.el (calc-date-notation): Fix regexp
+ used to find time codes. Fix symbol for seconds.
+
+2012-11-27 Glenn Morris <rgm@gnu.org>
+
+ * emacs-lisp/derived.el (derived-mode-make-docstring):
+ Don't mention "abbrev" or "syntax" if nil. (Bug#11277)
+
+2012-11-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * textmodes/table.el (table-insert): Don't use `symbol-name' on
+ lexically scoped variables (bug#13005).
+
+2012-11-27 Glenn Morris <rgm@gnu.org>
+
+ * vc/vc-hooks.el (vc-mistrust-permissions):
+ Default to t, to avoid data-loss. (Bug#11490)
+
+2012-11-27 Fabián Ezequiel Gallina <fgallina@cuca>
+
+ * progmodes/python.el (python-indent-guess-indent-offset):
+ If indentation is guessed make python-indent-offset buffer-local.
+
+ Fix Imenu regression.
+ * progmodes/python.el (python-nav-beginning-of-defun):
+ Fix forward movement when statement(s) separates point from defun.
+ (python-imenu-prev-index-position): New function.
+
+2012-11-27 Eli Zaretskii <eliz@gnu.org>
+
+ * subr.el (buffer-file-type): Declare with defvar-local. Doc fix.
+
+ * dos-w32.el (find-file-not-found-set-buffer-file-coding-system):
+ Don't set buffer-file-type. Return nil. (Bug#12989)
+
+2012-11-27 Glenn Morris <rgm@gnu.org>
+
+ * hippie-exp.el (hippie-expand-try-functions-list):
+ Re-autoload it. (Bug#12982)
+
+2012-11-27 Eli Zaretskii <eliz@gnu.org>
+
+ * descr-text.el (describe-char-padded-string):
+ Call internal-char-font only on GUI frames. (Bug#11964)
+
+2012-11-27 Andreas Schwab <schwab@linux-m68k.org>
+
+ * buff-menu.el (Buffer-menu-buffer+size-width): Fix customize type
+ and obsoletion message.
+
+2012-11-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/cl-macs.el (cl--transform-lambda): Add back `declare' in
+ the constructs to keep outside of the `cl-block' (bug#12977).
+
+2012-11-27 Chong Yidong <cyd@gnu.org>
+
+ * mouse.el (mouse-drag-line): Even if the line is not draggable,
+ keep reading until we get the up-event anyway, in order to process
+ the up-event for mouse-1-click-follows-link (Bug#12971).
+
+2012-11-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/advice.el (ad-should-compile): Don't compile advice if the
+ base function is not yet defined (bug#12965).
+ (ad-activate-advised-definition): Use ad-compile-function.
+ (ad-activate): Use cond.
+
2012-11-25 Leo Liu <sdl.web@gmail.com>
* textmodes/sgml-mode.el (sgml-tag): Fix indentation for closing tag.
@@ -10,14 +527,14 @@
Texinfo integration.
* textmodes/reftex.el (reftex-section-pre-regexp)
- (reftex-section-post-regexp, reftex-section-info-function): New
- variable.
- (reftex-compile-variables): Use variables
- reftex-section-pre-regexp, reftex-section-post-regexp, and
- reftex-section-info-function in order to be compatible with Texinfo integration.
+ (reftex-section-post-regexp, reftex-section-info-function):
+ New variable.
+ (reftex-compile-variables): Use variables reftex-section-pre-regexp,
+ reftex-section-post-regexp, and reftex-section-info-function in order
+ to be compatible with Texinfo integration.
- * textmodes/reftex-toc.el (reftex-toc-promote-action): use
- reftex-section-pre-regexp variable in order to be compatible with
+ * textmodes/reftex-toc.el (reftex-toc-promote-action):
+ use reftex-section-pre-regexp variable in order to be compatible with
Texinfo integration.
2012-11-25 Chong Yidong <cyd@gnu.org>
@@ -11480,7 +11997,7 @@
* dynamic-setting.el (font-setting-change-default-font): Don't
change the default face if SET-FONT argument is non-nil (Bug#9982).
-2012-01-29 Samuel Bronson <naesten@gmail.com> (tiny change)
+2012-01-29 Samuel Bronson <naesten@gmail.com>
* custom.el (defcustom): Add doc link to Lisp manual (Bug#10635).
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15
index 83657a98bfd..b97cd80cdba 100644
--- a/lisp/ChangeLog.15
+++ b/lisp/ChangeLog.15
@@ -7979,7 +7979,7 @@
Remember the buffers at head, rather than their name.
* iswitchb.el (iswitchb-kill-buffer): Re-make the list.
-2010-08-22 Kirk Kelsey <kirk.kelsey@0x4b.net> (tiny change)
+2010-08-22 Kirk Kelsey <kirk.kelsey@0x4b.net>
Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/make-mode.el (makefile-fill-paragraph): Account for the
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index 643b698c6e8..0b56dc8aec4 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -377,12 +377,12 @@ $(MH_E_DIR)/mh-loaddefs.el: $(MH_E_SRC)
# an own subdirectory. OTOH, it does not hurt to keep them in
# lisp/net.
TRAMP_DIR = $(lisp)/net
-TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-cache.el \
- $(TRAMP_DIR)/tramp-cmds.el $(TRAMP_DIR)/tramp-compat.el \
- $(TRAMP_DIR)/tramp-ftp.el $(TRAMP_DIR)/tramp-gvfs.el \
- $(TRAMP_DIR)/tramp-gw.el $(TRAMP_DIR)/tramp-sh.el \
- $(TRAMP_DIR)/tramp-smb.el $(TRAMP_DIR)/tramp-uu.el \
- $(TRAMP_DIR)/trampver.el
+TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-adb.el \
+ $(TRAMP_DIR)/tramp-cache.el $(TRAMP_DIR)/tramp-cmds.el \
+ $(TRAMP_DIR)/tramp-compat.el $(TRAMP_DIR)/tramp-ftp.el \
+ $(TRAMP_DIR)/tramp-gvfs.el $(TRAMP_DIR)/tramp-gw.el \
+ $(TRAMP_DIR)/tramp-sh.el $(TRAMP_DIR)/tramp-smb.el \
+ $(TRAMP_DIR)/tramp-uu.el $(TRAMP_DIR)/trampver.el
$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC)
$(emacs) -l autoload \
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 6ab6e548ab5..3161973ba32 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -55,12 +55,12 @@ If nil, use `Buffer-menu-name-width' and `Buffer-menu-size-width'.
If non-nil, the value of `Buffer-menu-name-width' is overridden;
the name column is assigned width `Buffer-menu-buffer+size-width'
minus `Buffer-menu-size-width'. This use is deprecated."
- :type 'number
+ :type '(choice (const nil) number)
:group 'Buffer-menu
:version "24.3")
(make-obsolete-variable 'Buffer-menu-buffer+size-width
- "`Buffer-menu-name-width' and `Buffer-menu-size-width'"
+ "use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead."
"24.3")
(defcustom Buffer-menu-name-width 19
@@ -204,31 +204,11 @@ commands.")
(define-derived-mode Buffer-menu-mode tabulated-list-mode "Buffer Menu"
"Major mode for Buffer Menu buffers.
-The Buffer Menu is invoked by the commands \\[list-buffers], \\[buffer-menu], and
-\\[buffer-menu-other-window]. See `buffer-menu' for details."
- (set (make-local-variable 'buffer-stale-function)
- (lambda (&optional _noconfirm) 'fast))
- (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t))
-
-(defun buffer-menu (&optional arg)
- "Switch to the Buffer Menu.
-By default, all buffers are listed except those whose names start
-with a space (which are for internal use). With prefix argument
-ARG, show only buffers that are visiting files.
-
-The first column (denoted \"C\") shows \".\" for the buffer from
-which you came. It shows \">\" for buffers you mark to be
-displayed, and \"D\" for those you mark for deletion.
-
-The \"R\" column has a \"%\" if the buffer is read-only.
-The \"M\" column has a \"*\" if it is modified, or \"S\" if you
-have marked it for saving.
-
-After this come the buffer name, its size in characters, its
-major mode, and the visited file name (if any).
+The Buffer Menu is invoked by the commands \\[list-buffers],
+\\[buffer-menu], and \\[buffer-menu-other-window].
+See `buffer-menu' for a description of its contents.
-
-In the Buffer Menu, the following commands are defined:
+In Buffer Menu mode, the following commands are defined:
\\<Buffer-menu-mode-map>
\\[quit-window] Remove the Buffer Menu from the display.
\\[Buffer-menu-this-window] Select current line's buffer in place of the buffer menu.
@@ -244,7 +224,7 @@ In the Buffer Menu, the following commands are defined:
\\[Buffer-menu-1-window] Select that buffer in full-frame window.
\\[Buffer-menu-2-window] Select that buffer in one window, together with the
buffer selected before this one in another window.
-\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers.
+\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers.
\\[Buffer-menu-isearch-buffers-regexp] Isearch for regexp in the marked buffers.
\\[Buffer-menu-visit-tags-table] visit-tags-table this buffer.
\\[Buffer-menu-not-modified] Clear modified-flag on that buffer.
@@ -259,6 +239,29 @@ In the Buffer Menu, the following commands are defined:
\\[revert-buffer] Update the list of buffers.
\\[Buffer-menu-toggle-files-only] Toggle whether the menu displays only file buffers.
\\[Buffer-menu-bury] Bury the buffer listed on this line."
+ (set (make-local-variable 'buffer-stale-function)
+ (lambda (&optional _noconfirm) 'fast))
+ (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t))
+
+(defun buffer-menu (&optional arg)
+ "Switch to the Buffer Menu.
+By default, the Buffer Menu lists all buffers except those whose
+names start with a space (which are for internal use). With
+prefix argument ARG, show only buffers that are visiting files.
+
+In the Buffer Menu, the first column (denoted \"C\") shows \".\"
+for the buffer from which you came, \">\" for buffers you mark to
+be displayed, and \"D\" for those you mark for deletion.
+
+The \"R\" column has a \"%\" if the buffer is read-only.
+The \"M\" column has a \"*\" if it is modified, or \"S\" if you
+have marked it for saving.
+
+The remaining columns show the buffer name, the buffer size in
+characters, its major mode, and the visited file name (if any).
+
+See `Buffer-menu-mode' for the keybindings available the Buffer
+Menu."
(interactive "P")
(switch-to-buffer (list-buffers-noselect arg))
(message
@@ -280,7 +283,7 @@ ARG, show only buffers that are visiting files."
(defun list-buffers (&optional arg)
"Display a list of existing buffers.
The list is displayed in a buffer named \"*Buffer List*\".
-See `buffer-menu' for details about the Buffer Menu buffer.
+See `buffer-menu' for a description of the Buffer Menu.
By default, all buffers are listed except those whose names start
with a space (which are for internal use). With prefix argument
@@ -377,7 +380,9 @@ buffers to delete; a negative ARG means to delete backwards."
(defun Buffer-menu-delete-backwards (&optional arg)
"Mark the buffer on this Buffer Menu line for deletion, and move up.
-Prefix ARG means move that many lines."
+A subsequent \\<Buffer-menu-mode-map>`\\[Buffer-menu-execute]'
+command will delete the marked buffer. Prefix ARG means move
+that many lines."
(interactive "p")
(Buffer-menu-delete (- (or arg 1))))
diff --git a/lisp/button.el b/lisp/button.el
index 3cf38fa64c6..c52dcabed08 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -64,6 +64,11 @@
;; might get converted to ^M when building loaddefs.el
(define-key map [(control ?m)] 'push-button)
(define-key map [mouse-2] 'push-button)
+ ;; FIXME: You'd think that for keymaps coming from text-properties on the
+ ;; mode-line or header-line, the `mode-line' or `header-line' prefix
+ ;; shouldn't be necessary!
+ (define-key map [mode-line mouse-2] 'push-button)
+ (define-key map [header-line mouse-2] 'push-button)
map)
"Keymap used by buttons.")
@@ -184,10 +189,12 @@ changes to a supertype are not reflected in its subtypes)."
(defun button-get (button prop)
"Get the property of button BUTTON named PROP."
- (if (overlayp button)
- (overlay-get button prop)
- ;; Must be a text-property button.
- (get-text-property button prop)))
+ (cond ((overlayp button)
+ (overlay-get button prop))
+ ((button--area-button-p button)
+ (get-text-property 0 prop (button--area-button-string button)))
+ (t ; Must be a text-property button.
+ (get-text-property button prop))))
(defun button-put (button prop val)
"Set BUTTON's PROP property to VAL."
@@ -202,21 +209,30 @@ changes to a supertype are not reflected in its subtypes)."
;; Disallow updating the `category' property directly.
(error "Button `category' property may not be set directly")))
;; Add the property.
- (if (overlayp button)
- (overlay-put button prop val)
- ;; Must be a text-property button.
- (put-text-property
- (or (previous-single-property-change (1+ button) 'button)
- (point-min))
- (or (next-single-property-change button 'button)
- (point-max))
- prop val)))
-
-(defsubst button-activate (button &optional use-mouse-action)
+ (cond ((overlayp button)
+ (overlay-put button prop val))
+ ((button--area-button-p button)
+ (setq button (button--area-button-string button))
+ (put-text-property 0 (length button) prop val button))
+ (t ; Must be a text-property button.
+ (put-text-property
+ (or (previous-single-property-change (1+ button) 'button)
+ (point-min))
+ (or (next-single-property-change button 'button)
+ (point-max))
+ prop val))))
+
+(defun button-activate (button &optional use-mouse-action)
"Call BUTTON's action property.
If USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action
instead of its normal action; if the button has no mouse-action,
-the normal action is used instead."
+the normal action is used instead.
+
+The action can either be a marker or a function. If it's a
+marker then goto it. Otherwise it it is a function then it is
+called with BUTTON as only argument. BUTTON is either an
+overlay, a buffer position, or (for buttons in the mode-line or
+header-line) a string."
(let ((action (or (and use-mouse-action (button-get button 'mouse-action))
(button-get button 'action))))
(if (markerp action)
@@ -228,7 +244,10 @@ the normal action is used instead."
(defun button-label (button)
"Return BUTTON's text label."
- (buffer-substring-no-properties (button-start button) (button-end button)))
+ (if (button--area-button-p button)
+ (substring-no-properties (button--area-button-string button))
+ (buffer-substring-no-properties (button-start button)
+ (button-end button))))
(defsubst button-type (button)
"Return BUTTON's button-type."
@@ -238,6 +257,12 @@ the normal action is used instead."
"Return t if BUTTON has button-type TYPE, or one of TYPE's subtypes."
(button-type-subtype-p (button-get button 'type) type))
+(defalias 'button--area-button-p 'stringp
+ "Return non-nil if BUTTON is an area button.
+Such area buttons are used for buttons in the mode-line and header-line.")
+
+(defalias 'button--area-button-string 'identity
+ "Return area button BUTTON's button-string.")
;; Creating overlay buttons
@@ -324,7 +349,7 @@ Also see `insert-text-button'."
(cons 'button (cons (list t) properties))
object)
;; Return something that can be used to get at the button.
- beg))
+ (or object beg)))
(defun insert-text-button (label &rest properties)
"Insert a button with the label LABEL.
@@ -405,7 +430,9 @@ POS may be either a buffer position or a mouse-event. If
USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action
instead of its normal action; if the button has no mouse-action,
the normal action is used instead. The action may be either a
-function to call or a marker to display.
+function to call or a marker to display and is invoked using
+`button-activate' (which see).
+
POS defaults to point, except when `push-button' is invoked
interactively as the result of a mouse-event, in which case, the
mouse event is used.
@@ -417,11 +444,13 @@ return t."
;; POS is a mouse event; switch to the proper window/buffer
(let ((posn (event-start pos)))
(with-current-buffer (window-buffer (posn-window posn))
- (push-button (posn-point posn) t)))
+ (if (posn-area posn)
+ ;; mode-line or header-line event
+ (button-activate (car (posn-string posn)) t)
+ (push-button (posn-point posn)) t)))
;; POS is just normal position
(let ((button (button-at (or pos (point)))))
- (if (not button)
- nil
+ (when button
(button-activate button use-mouse-action)
t))))
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index 98b22550f75..5ce76b14d72 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -94,7 +94,8 @@
(setcar (nthcdr arg calc-standard-date-formats) fmt))
(let ((case-fold-search nil))
(and (not (string-match "<.*>" fmt))
- (string-match "\\`[^hHspP]*\\([^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*[bBhHmpPsS]+[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*\\)[^hHspP]*\\'" fmt)
+ ;; Find time part to put in <...>
+ (string-match "\\`[^hHspPT]*\\([^ac-gi-lnoqrt-zAC-GI-OQRU-Z]*\\(bs\\|bm\\|bh\\|BS\\|BH\\|[hHmpPsST]\\)+[^ac-gi-lnoqrt-zAC-GI-OQRU-Z]*\\)[^hHspPT]*\\'" fmt)
(string-match (concat "[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*"
(regexp-quote (math-match-substring fmt 1))
"[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*") fmt)
@@ -125,7 +126,7 @@
lfmt nil))
(setq time nil))
(t
- (if (string-match "\\`[^a-zA-Z]*[bB][a-zA-Z]" fmt)
+ (if (string-match "\\`[^a-zA-Z]*[bBZI][a-zA-Z]" fmt)
(setq pos2 (1+ pos2)))
(while (and (< pos2 (length fmt))
(= (upcase (aref fmt pos2))
@@ -133,6 +134,7 @@
(setq pos2 (1+ pos2)))
(setq sym (intern (substring fmt pos pos2)))
(or (memq sym '(Y YY BY YYY YYYY
+ ZYYY IYYY Iww w
aa AA aaa AAA aaaa AAAA
bb BB bbb BBB bbbb BBBB
M MM BM mmm Mmm Mmmm MMM MMMM
@@ -140,8 +142,8 @@
W www Www Wwww WWW WWWW
h hh bh H HH BH
p P pp PP pppp PPPP
- m mm bm s ss bss SS BS C
- N n J j U b))
+ m mm bm s ss bs SS BS C
+ N n J j U b T))
(and (eq sym 'X) (not lfmt) (not fullfmt))
(error "Bad format code: %s" sym))
(and (memq sym '(bb BB bbb BBB bbbb BBBB))
@@ -454,6 +456,27 @@ in the Gregorian calendar and the remaining part determines the time."
(% (/ time 60) 60)
(math-add (% time 60) (nth 2 parts)))))))
+(defun math-date-to-iso-dt (date)
+ "Return the ISO8601 date (year week day) of DATE."
+ (unless (Math-integerp date)
+ (setq date (math-floor date)))
+ (let* ((approx (nth 0 (math-date-to-gregorian-dt (math-sub date 3))))
+ (year (math-add approx
+ (let ((y approx)
+ (sum 0))
+ (while (>= (math-compare date
+ (math-absolute-from-iso-dt (setq y (math-add y 1)) 1 1)) 0)
+ (setq sum (+ sum 1)))
+ sum))))
+ (list
+ year
+ (math-add (car (math-idivmod
+ (math-sub date (math-absolute-from-iso-dt year 1 1))
+ 7))
+ 1)
+ (let ((day (calcFunc-mod date 7)))
+ (if (= day 0) 7 day)))))
+
(defun math-dt-to-date (dt)
(or (integerp (nth 1 dt))
(math-reject-arg (nth 1 dt) 'fixnump))
@@ -472,6 +495,16 @@ in the Gregorian calendar and the remaining part determines the time."
'(float 864 2)))
date)))
+(defun math-iso-dt-to-date (dt)
+ (let ((date (math-absolute-from-iso-dt (car dt) (nth 1 dt) (nth 2 dt))))
+ (if (nth 3 dt)
+ (math-add (math-float date)
+ (math-div (math-add (+ (* (nth 3 dt) 3600)
+ (* (nth 4 dt) 60))
+ (nth 5 dt))
+ '(float 864 2)))
+ date)))
+
(defun math-date-parts (value &optional offset)
(let* ((date (math-floor value))
(time (math-round (math-mul (math-sub value (or offset date)) 86400)
@@ -593,6 +626,14 @@ in the Gregorian calendar."
;; calc-gregorian-switch is a customizable variable defined in calc.el
(defvar calc-gregorian-switch)
+(defun math-absolute-from-iso-dt (year week day)
+ "Return the DATE of the day given by the iso8601 day YEAR WEEK DAY."
+ (let* ((janfour (math-absolute-from-gregorian-dt year 1 4))
+ (prevmon (math-sub janfour
+ (cdr (math-idivmod (math-sub janfour 1) 7)))))
+ (math-add
+ (math-add prevmon (* (1- week) 7))
+ (if (zerop day) 6 (1- day)))))
(defun math-absolute-from-dt (year month day)
"Return the DATE of the day given by the day YEAR MONTH DAY.
@@ -637,6 +678,10 @@ in the Gregorian calendar."
(defvar math-fd-minute)
(defvar math-fd-second)
(defvar math-fd-bc-flag)
+(defvar math-fd-iso-dt)
+(defvar math-fd-isoyear)
+(defvar math-fd-isoweek)
+(defvar math-fd-isoweekday)
(defun math-format-date (math-fd-date)
(if (eq (car-safe math-fd-date) 'date)
@@ -644,12 +689,14 @@ in the Gregorian calendar."
(let ((entry (list math-fd-date calc-internal-prec calc-date-format)))
(or (cdr (assoc entry math-format-date-cache))
(let* ((math-fd-dt nil)
+ (math-fd-iso-dt nil)
(calc-group-digits nil)
(calc-leading-zeros nil)
(calc-number-radix 10)
(calc-twos-complement-mode nil)
math-fd-year math-fd-month math-fd-day math-fd-weekday
math-fd-hour math-fd-minute math-fd-second
+ math-fd-isoyear math-fd-isoweek math-fd-isoweekday
(math-fd-bc-flag nil)
(fmt (apply 'concat (mapcar 'math-format-date-part
calc-date-format))))
@@ -689,6 +736,23 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
math-julian-date-beginning-int)))
((eq x 'U)
(math-format-number (nth 1 (math-date-parts math-fd-date 719164))))
+ ((memq x '(IYYY Iww w))
+ (progn
+ (or math-fd-iso-dt
+ (setq math-fd-iso-dt (math-date-to-iso-dt math-fd-date)
+ math-fd-isoyear (car math-fd-iso-dt)
+ math-fd-isoweek (nth 1 math-fd-iso-dt)
+ math-fd-isoweekday (nth 2 math-fd-iso-dt)))
+ (cond ((eq x 'IYYY)
+ (let* ((neg (Math-negp math-fd-isoyear))
+ (pyear (calcFunc-abs math-fd-isoyear)))
+ (if (and (natnump pyear) (< pyear 10000))
+ (concat (if neg "-" "") (format "%04d" pyear))
+ (concat (if neg "-" "+") (math-format-number pyear)))))
+ ((eq x 'Iww)
+ (concat "W" (format "%02d" math-fd-isoweek)))
+ ((eq x 'w)
+ (format "%d" math-fd-isoweekday)))))
((progn
(or math-fd-dt
(progn
@@ -719,6 +783,15 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
(if (and (natnump math-fd-year) (< math-fd-year 100))
(format "+%d" math-fd-year)
(math-format-number math-fd-year)))
+ ((eq x 'ZYYY)
+ (let* ((year (if (Math-negp math-fd-year)
+ (math-add math-fd-year 1)
+ math-fd-year))
+ (neg (Math-negp year))
+ (pyear (calcFunc-abs year)))
+ (if (and (natnump pyear) (< pyear 10000))
+ (concat (if neg "-" "") (format "%04d" pyear))
+ (concat (if neg "-" "+") (math-format-number pyear)))))
((eq x 'b) "")
((eq x 'aa)
(and (not math-fd-bc-flag) "ad"))
@@ -744,6 +817,7 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
(and math-fd-bc-flag "b.c."))
((eq x 'BBBB)
(and math-fd-bc-flag "B.C."))
+ ((eq x 'T) "T")
((eq x 'M)
(format "%d" math-fd-month))
((eq x 'MM)
@@ -1008,6 +1082,20 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
(list 'date (math-dt-to-date (append (list year month day)
(and hour (list hour minute second))))))
+(defun math-parse-iso-date-validate (isoyear isoweek isoweekday hour minute second)
+ (if (or (< isoweek 1) (> isoweek 53))
+ (throw 'syntax "Week value is out of range"))
+ (and hour
+ (progn
+ (if (or (< hour 0) (> hour 23))
+ (throw 'syntax "Hour value is out of range"))
+ (if (or (< minute 0) (> minute 59))
+ (throw 'syntax "Minute value is out of range"))
+ (if (or (math-negp second) (not (Math-lessp second 60)))
+ (throw 'syntax "Seconds value is out of range"))))
+ (list 'date (math-iso-dt-to-date (append (list isoyear isoweek isoweekday)
+ (and hour (list hour minute second))))))
+
(defun math-parse-date-word (names &optional front)
(let ((n 1))
(while (and names (not (string-match (if (equal (car names) "Sep")
@@ -1028,6 +1116,7 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
(let ((case-fold-search t)
(okay t) num
(fmt calc-date-format) this next (gnext nil)
+ (isoyear nil) (isoweek nil) (isoweekday nil)
(year nil) (month nil) (day nil) (bigyear nil) (yearday nil)
(hour nil) (minute nil) (second nil) (bc-flag nil))
(while (and fmt okay)
@@ -1104,19 +1193,35 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
(if (string-match "\\`pm\\|p\\.m\\." math-pd-str)
(setq hour (if (= hour 12) 12 (% (+ hour 12) 24))
math-pd-str (substring math-pd-str (match-end 0))))))
- ((memq this '(Y YY BY YYY YYYY))
+ ((memq this '(Y YY BY YYY YYYY ZYYY))
(and (if (memq next '(MM DD ddd hh HH mm ss SS))
(if (memq this '(Y YY BYY))
(string-match "\\` *[0-9][0-9]" math-pd-str)
(string-match "\\`[0-9][0-9][0-9][0-9]" math-pd-str))
(string-match "\\`[-+]?[0-9]+" math-pd-str))
(setq year (math-match-substring math-pd-str 0)
- bigyear (or (eq this 'YYY)
+ bigyear (or (eq this 'YYY)
(memq (aref math-pd-str 0) '(?\+ ?\-)))
math-pd-str (substring math-pd-str (match-end 0))
- year (math-read-number year))))
+ year (math-read-number year))
+ (if (and (eq this 'ZYYY) (eq year 0))
+ (setq year (math-sub year 1)
+ bigyear t)
+ t)))
+ ((eq this 'IYYY)
+ (if (string-match "\\`[-+]?[0-9]+" math-pd-str)
+ (setq isoyear (string-to-number (math-match-substring math-pd-str 0))
+ math-pd-str (substring math-pd-str (match-end 0)))))
+ ((eq this 'Iww)
+ (if (string-match "W\\([0-9][0-9]\\)" math-pd-str)
+ (setq isoweek (string-to-number (math-match-substring math-pd-str 1))
+ math-pd-str (substring math-pd-str 3))))
((eq this 'b)
t)
+ ((eq this 'T)
+ (if (eq (aref math-pd-str 0) ?T)
+ (setq math-pd-str (substring math-pd-str 1))
+ t))
((memq this '(aa AA aaaa AAAA))
(if (string-match "\\` *\\(ad\\|a\\.d\\.\\)" math-pd-str)
(setq math-pd-str (substring math-pd-str (match-end 0)))))
@@ -1151,7 +1256,9 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
nil))
nil)
((eq this 'W)
- (and (>= num 0) (< num 7)))
+ (and (>= num 0) (< num 7)))
+ ((eq this 'w)
+ (setq isoweekday num))
((memq this '(d ddd bdd))
(setq yearday num))
((memq this '(M MM BM))
@@ -1168,18 +1275,20 @@ as measured in the integer number of days before December 31, 1 BC (Gregorian)."
(setq yearday nil)
(setq month 1 day 1)))
(if (and okay (equal math-pd-str ""))
- (and month day (or (not (or hour minute second))
- (and hour minute))
- (progn
- (or year (setq year (math-this-year)))
- (or second (setq second 0))
- (if bc-flag
- (setq year (math-neg (math-abs year))))
- (setq day (math-parse-date-validate year bigyear month day
- hour minute second))
- (if yearday
- (setq day (math-add day (1- yearday))))
- day)))))
+ (if isoyear
+ (math-parse-iso-date-validate isoyear isoweek isoweekday hour minute second)
+ (and month day (or (not (or hour minute second))
+ (and hour minute))
+ (progn
+ (or year (setq year (math-this-year)))
+ (or second (setq second 0))
+ (if bc-flag
+ (setq year (math-neg (math-abs year))))
+ (setq day (math-parse-date-validate year bigyear month day
+ hour minute second))
+ (if yearday
+ (setq day (math-add day (1- yearday))))
+ day))))))
(defun calcFunc-now (&optional zone)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 27c6f76581c..46a7f703019 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -444,8 +444,7 @@ The format of the header is specified by `diary-header-line-format'."
(defcustom diary-header-line-format
'(:eval (calendar-string-spread
(list (if diary-selective-display
- "Some text is hidden - press \"s\" in calendar \
-before edit/copy"
+ "Some text is hidden - press \"C-c C-s\" before edit/copy"
"Diary"))
?\s (window-width)))
"Format of the header line displayed by `diary-simple-display'.
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index c384b96df86..d531e15546a 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -354,7 +354,8 @@ This function is semi-obsolete. Use `get-char-code-property'."
;; Return a string of CH with composition for padding on both sides.
;; It is displayed without overlapping with the left/right columns.
(defsubst describe-char-padded-string (ch)
- (if (internal-char-font nil ch)
+ (if (and (display-multi-font-p)
+ (internal-char-font nil ch))
(compose-string (string ch) 0 1 (format "\t%c\t" ch))
(string ch)))
diff --git a/lisp/desktop.el b/lisp/desktop.el
index c8023bb43ed..5589dd025bc 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -825,7 +825,7 @@ MODE is the major mode.
(or (and filename
(stringp desktop-files-not-to-save)
(not (string-match desktop-files-not-to-save filename)))
- (and (eq mode 'dired-mode)
+ (and (memq mode '(dired-mode vc-dir-mode))
(with-current-buffer bufname
(not (setq dired-skip
(string-match desktop-files-not-to-save
diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el
index 4839d6b9239..cb043ce8559 100644
--- a/lisp/dos-w32.el
+++ b/lisp/dos-w32.el
@@ -210,7 +210,7 @@ set to the appropriate coding system, and the value of
(untranslated-file-p (buffer-file-name))))
(setq coding (coding-system-change-eol-conversion coding 0))
(setq buffer-file-coding-system coding))
- (setq buffer-file-type (eq buffer-file-coding-system 'no-conversion)))))
+ nil)))
;;; To set the default coding system on new files.
(add-hook 'find-file-not-found-functions
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index c2ebb3bbdc6..a947dceccc9 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -2900,19 +2900,18 @@ If COMPILE is non-nil and not a negative number then it returns t.
If COMPILE is a negative number then it returns nil.
If COMPILE is nil then the result depends on the value of
`ad-default-compilation-action' (which see)."
- (if (integerp compile)
- (>= compile 0)
- (if compile
- compile
- (cond ((eq ad-default-compilation-action 'never)
- nil)
- ((eq ad-default-compilation-action 'always)
- t)
- ((eq ad-default-compilation-action 'like-original)
- (or (ad-subr-p (ad-get-orig-definition function))
- (ad-compiled-p (ad-get-orig-definition function))))
- ;; everything else means `maybe':
- (t (featurep 'byte-compile))))))
+ (cond
+ ;; Don't compile until the real function definition is known (bug#12965).
+ ((not (ad-real-orig-definition function)) nil)
+ ((integerp compile) (>= compile 0))
+ (compile)
+ ((eq ad-default-compilation-action 'never) nil)
+ ((eq ad-default-compilation-action 'always) t)
+ ((eq ad-default-compilation-action 'like-original)
+ (or (ad-subr-p (ad-get-orig-definition function))
+ (ad-compiled-p (ad-get-orig-definition function))))
+ ;; everything else means `maybe':
+ (t (featurep 'byte-compile))))
(defun ad-activate-advised-definition (function compile)
"Redefine FUNCTION with its advised definition from cache or scratch.
@@ -2927,7 +2926,7 @@ The current definition and its cache-id will be put into the cache."
(ad-make-advised-definition function)))
(advice-add function :around advicefunname)
(if (ad-should-compile function compile)
- (byte-compile advicefunname))
+ (ad-compile-function function))
(if verified-cached-definition
(if (not (eq verified-cached-definition
(symbol-function advicefunname)))
@@ -3003,20 +3002,20 @@ definition will always be cached for later usage."
(interactive
(list (ad-read-advised-function "Activate advice of")
current-prefix-arg))
- (if (not (ad-is-advised function))
- (error "ad-activate: `%s' is not advised" function)
- ;; Just return for forward advised and not yet defined functions:
- (if (ad-get-orig-definition function)
- (if (not (ad-has-any-advice function))
- (ad-unadvise function)
- ;; Otherwise activate the advice:
- (cond ((ad-has-redefining-advice function)
- (ad-activate-advised-definition function compile)
- (ad-set-advice-info-field function 'active t)
- (eval (ad-make-hook-form function 'activation))
- function)
- ;; Here we are if we have all disabled advices:
- (t (ad-deactivate function)))))))
+ (cond
+ ((not (ad-is-advised function))
+ (error "ad-activate: `%s' is not advised" function))
+ ;; Just return for forward advised and not yet defined functions:
+ ((not (ad-get-orig-definition function)) nil)
+ ((not (ad-has-any-advice function)) (ad-unadvise function))
+ ;; Otherwise activate the advice:
+ ((ad-has-redefining-advice function)
+ (ad-activate-advised-definition function compile)
+ (ad-set-advice-info-field function 'active t)
+ (eval (ad-make-hook-form function 'activation))
+ function)
+ ;; Here we are if we have all disabled advices:
+ (t (ad-deactivate function))))
(defalias 'ad-activate-on 'ad-activate)
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 7c25972835b..b12b332d2e6 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -51,7 +51,8 @@ TYPE is a Common Lisp type specifier.
((eq type 'string) (if (stringp x) x (concat x)))
((eq type 'array) (if (arrayp x) x (vconcat x)))
((and (eq type 'character) (stringp x) (= (length x) 1)) (aref x 0))
- ((and (eq type 'character) (symbolp x)) (cl-coerce (symbol-name x) type))
+ ((and (eq type 'character) (symbolp x))
+ (cl-coerce (symbol-name x) type))
((eq type 'float) (float x))
((cl-typep x type) x)
(t (error "Can't coerce %s to type %s" x type))))
@@ -69,7 +70,7 @@ strings case-insensitively."
((stringp x)
(and (stringp y) (= (length x) (length y))
(or (string-equal x y)
- (string-equal (downcase x) (downcase y))))) ; lazy but simple!
+ (string-equal (downcase x) (downcase y))))) ;Lazy but simple!
((numberp x)
(and (numberp y) (= x y)))
((consp x)
@@ -439,14 +440,14 @@ Optional second arg STATE is a random-state object."
If STATE is t, return a new state object seeded from the time of day."
(cond ((null state) (cl-make-random-state cl--random-state))
((vectorp state) (copy-tree state t))
- ((integerp state) (vector 'cl-random-state-tag -1 30 state))
+ ((integerp state) (vector 'cl--random-state-tag -1 30 state))
(t (cl-make-random-state (cl--random-time)))))
;;;###autoload
(defun cl-random-state-p (object)
"Return t if OBJECT is a random-state object."
(and (vectorp object) (= (length object) 4)
- (eq (aref object 0) 'cl-random-state-tag)))
+ (eq (aref object 0) 'cl--random-state-tag)))
;; Implementation limits.
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index d5e5f4bbfbc..8120c87de16 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -93,8 +93,8 @@
(require 'macroexp)
-(defvar cl-optimize-speed 1)
-(defvar cl-optimize-safety 1)
+(defvar cl--optimize-speed 1)
+(defvar cl--optimize-safety 1)
;;;###autoload
(define-obsolete-variable-alias
@@ -248,23 +248,21 @@ one value.
(equal (buffer-name (symbol-value 'byte-compile--outbuffer))
" *Compiler Output*"))))
-(defvar cl-proclaims-deferred nil)
+(defvar cl--proclaims-deferred nil)
(defun cl-proclaim (spec)
"Record a global declaration specified by SPEC."
- (if (fboundp 'cl-do-proclaim) (cl-do-proclaim spec t)
- (push spec cl-proclaims-deferred))
+ (if (fboundp 'cl--do-proclaim) (cl--do-proclaim spec t)
+ (push spec cl--proclaims-deferred))
nil)
(defmacro cl-declaim (&rest specs)
"Like `cl-proclaim', but takes any number of unevaluated, unquoted arguments.
Puts `(cl-eval-when (compile load eval) ...)' around the declarations
so that they are registered at compile-time as well as run-time."
- (let ((body (mapcar (function (lambda (x)
- (list 'cl-proclaim (list 'quote x))))
- specs)))
- (if (cl--compiling-file) (cl-list* 'cl-eval-when '(compile load eval) body)
- (cons 'progn body)))) ; avoid loading cl-macs.el for cl-eval-when
+ (let ((body (mapcar (lambda (x) `(cl-proclaim ',x) specs))))
+ (if (cl--compiling-file) `(cl-eval-when (compile load eval) ,@body)
+ `(progn ,@body)))) ; Avoid loading cl-macs.el for cl-eval-when.
;;; Symbols.
@@ -301,7 +299,8 @@ always returns nil."
"Return t if INTEGER is even."
(eq (logand integer 1) 0))
-(defvar cl--random-state (vector 'cl-random-state-tag -1 30 (cl--random-time)))
+(defvar cl--random-state
+ (vector 'cl--random-state-tag -1 30 (cl--random-time)))
(defconst cl-most-positive-float nil
"The largest value that a Lisp float can hold.
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 69882e36f22..f699ee7fb8e 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -11,7 +11,7 @@
;;;;;; cl--map-overlays cl--map-intervals cl--map-keymap-recursively
;;;;;; cl-notevery cl-notany cl-every cl-some cl-mapcon cl-mapcan
;;;;;; cl-mapl cl-mapc cl-maplist cl-map cl--mapcar-many cl-equalp
-;;;;;; cl-coerce) "cl-extra" "cl-extra.el" "8e9fee941c465ac0fee9b92a92d64154")
+;;;;;; cl-coerce) "cl-extra" "cl-extra.el" "3ee58411735a01dd1e1d3964fdcfae70")
;;; Generated autoloads from cl-extra.el
(autoload 'cl-coerce "cl-extra" "\
@@ -224,7 +224,7 @@ Return the value of SYMBOL's PROPNAME property, or DEFAULT if none.
\(fn SYMBOL PROPNAME &optional DEFAULT)" nil nil)
-(put 'cl-get 'compiler-macro #'cl--compiler-macro-get)
+(eval-and-compile (put 'cl-get 'compiler-macro #'cl--compiler-macro-get))
(autoload 'cl-getf "cl-extra" "\
Search PROPLIST for property PROPNAME; return its value or DEFAULT.
@@ -262,12 +262,12 @@ including `cl-block' and `cl-eval-when'.
;;;;;; cl-rotatef cl-shiftf cl-remf cl-psetf cl-declare cl-the cl-locally
;;;;;; cl-multiple-value-setq cl-multiple-value-bind cl-symbol-macrolet
;;;;;; cl-macrolet cl-labels cl-flet* cl-flet cl-progv cl-psetq
-;;;;;; cl-do-all-symbols cl-do-symbols cl-dotimes cl-dolist cl-do*
-;;;;;; cl-do cl-loop cl-return-from cl-return cl-block cl-etypecase
+;;;;;; cl-do-all-symbols cl-do-symbols cl-tagbody cl-dotimes cl-dolist
+;;;;;; cl-do* cl-do cl-loop cl-return-from cl-return cl-block cl-etypecase
;;;;;; cl-typecase cl-ecase cl-case cl-load-time-value cl-eval-when
;;;;;; cl-destructuring-bind cl-function cl-defmacro cl-defun cl-gentemp
;;;;;; cl-gensym cl--compiler-macro-cXXr cl--compiler-macro-list*)
-;;;;;; "cl-macs" "cl-macs.el" "a7d9b56ea588b869813de8ed7ec1fbcd")
+;;;;;; "cl-macs" "cl-macs.el" "d3af72b1cff3398fa1480065fc2887a2")
;;; Generated autoloads from cl-macs.el
(autoload 'cl--compiler-macro-list* "cl-macs" "\
@@ -465,6 +465,19 @@ nil.
(put 'cl-dotimes 'lisp-indent-function '1)
+(autoload 'cl-tagbody "cl-macs" "\
+Execute statements while providing for control transfers to labels.
+Each element of LABELS-OR-STMTS can be either a label (integer or symbol)
+or a `cons' cell, in which case it's taken to be a statement.
+This distinction is made before performing macroexpansion.
+Statements are executed in sequence left to right, discarding any return value,
+stopping only when reaching the end of LABELS-OR-STMTS.
+Any statement can transfer control at any time to the statements that follow
+one of the labels with the special form (go LABEL).
+Labels have lexical scope and dynamic extent.
+
+\(fn &rest LABELS-OR-STMTS)" nil t)
+
(autoload 'cl-do-symbols "cl-macs" "\
Loop over all symbols.
Evaluate BODY with VAR bound to each interned symbol, or to each symbol
@@ -759,7 +772,7 @@ surrounded by (cl-block NAME ...).
;;;;;; cl-nsubstitute-if cl-nsubstitute cl-substitute-if-not cl-substitute-if
;;;;;; cl-substitute cl-delete-duplicates cl-remove-duplicates cl-delete-if-not
;;;;;; cl-delete-if cl-delete cl-remove-if-not cl-remove-if cl-remove
-;;;;;; cl-replace cl-fill cl-reduce) "cl-seq" "cl-seq.el" "4c1e1191e82dc8d5449a5ec4d59efc10")
+;;;;;; cl-replace cl-fill cl-reduce) "cl-seq" "cl-seq.el" "4b8ddc5bea2fcc626526ce3644071568")
;;; Generated autoloads from cl-seq.el
(autoload 'cl-reduce "cl-seq" "\
@@ -1020,7 +1033,7 @@ Keywords supported: :test :test-not :key
\(fn ITEM LIST [KEYWORD VALUE]...)" nil nil)
-(put 'cl-member 'compiler-macro #'cl--compiler-macro-member)
+(eval-and-compile (put 'cl-member 'compiler-macro #'cl--compiler-macro-member))
(autoload 'cl-member-if "cl-seq" "\
Find the first item satisfying PREDICATE in LIST.
@@ -1050,7 +1063,7 @@ Keywords supported: :test :test-not :key
\(fn ITEM LIST [KEYWORD VALUE]...)" nil nil)
-(put 'cl-assoc 'compiler-macro #'cl--compiler-macro-assoc)
+(eval-and-compile (put 'cl-assoc 'compiler-macro #'cl--compiler-macro-assoc))
(autoload 'cl-assoc-if "cl-seq" "\
Find the first item whose car satisfies PREDICATE in LIST.
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 918e992512c..39df7befcd2 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -48,13 +48,13 @@
;; `gv' is required here because cl-macs can be loaded before loaddefs.el.
(require 'gv)
-(defmacro cl-pop2 (place)
+(defmacro cl--pop2 (place)
(declare (debug edebug-sexps))
`(prog1 (car (cdr ,place))
(setq ,place (cdr (cdr ,place)))))
-(defvar cl-optimize-safety)
-(defvar cl-optimize-speed)
+(defvar cl--optimize-safety)
+(defvar cl--optimize-speed)
;;; Initialization.
@@ -216,12 +216,17 @@ The name is made by appending a number to PREFIX, default \"G\"."
(defvar cl--bind-inits) (defvar cl--bind-lets) (defvar cl--bind-forms)
(defun cl--transform-lambda (form bind-block)
+ "Transform a function form FORM of name BIND-BLOCK.
+BIND-BLOCK is the name of the symbol to which the function will be bound,
+and which will be used for the name of the `cl-block' surrounding the
+function's body.
+FORM is of the form (ARGS . BODY)."
(let* ((args (car form)) (body (cdr form)) (orig-args args)
(cl--bind-block bind-block) (cl--bind-defs nil) (cl--bind-enquote nil)
(cl--bind-inits nil) (cl--bind-lets nil) (cl--bind-forms nil)
(header nil) (simple-args nil))
(while (or (stringp (car body))
- (memq (car-safe (car body)) '(interactive cl-declare)))
+ (memq (car-safe (car body)) '(interactive declare cl-declare)))
(push (pop body) header))
(setq args (if (listp args) (cl-copy-list args) (list '&rest args)))
(let ((p (last args))) (if (cdr p) (setcdr p (list '&rest (cdr p)))))
@@ -426,7 +431,7 @@ its argument list allows full Common Lisp conventions."
(if (memq '&environment args) (error "&environment used incorrectly"))
(let ((save-args args)
(restarg (memq '&rest args))
- (safety (if (cl--compiling-file) cl-optimize-safety 3))
+ (safety (if (cl--compiling-file) cl--optimize-safety 3))
(keys nil)
(laterarg nil) (exactarg nil) minarg)
(or num (setq num 0))
@@ -435,7 +440,7 @@ its argument list allows full Common Lisp conventions."
(setq restarg (cadr restarg)))
(push (list restarg expr) cl--bind-lets)
(if (eq (car args) '&whole)
- (push (list (cl-pop2 args) restarg) cl--bind-lets))
+ (push (list (cl--pop2 args) restarg) cl--bind-lets))
(let ((p args))
(setq minarg restarg)
(while (and p (not (memq (car p) cl--lambda-list-keywords)))
@@ -471,7 +476,7 @@ its argument list allows full Common Lisp conventions."
(if def `(if ,restarg ,poparg ,def) poparg))
(setq num (1+ num))))))
(if (eq (car args) '&rest)
- (let ((arg (cl-pop2 args)))
+ (let ((arg (cl--pop2 args)))
(if (consp arg) (cl--do-arglist arg restarg)))
(or (eq (car args) '&key) (= safety 0) exactarg
(push `(if ,restarg
@@ -569,7 +574,7 @@ its argument list allows full Common Lisp conventions."
;;; The `cl-eval-when' form.
-(defvar cl-not-toplevel nil)
+(defvar cl--not-toplevel nil)
;;;###autoload
(defmacro cl-eval-when (when &rest body)
@@ -581,9 +586,9 @@ If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level.
\(fn (WHEN...) BODY...)"
(declare (indent 1) (debug ((&rest &or "compile" "load" "eval") body)))
(if (and (fboundp 'cl--compiling-file) (cl--compiling-file)
- (not cl-not-toplevel) (not (boundp 'for-effect))) ; horrible kludge
+ (not cl--not-toplevel) (not (boundp 'for-effect))) ;Horrible kludge.
(let ((comp (or (memq 'compile when) (memq :compile-toplevel when)))
- (cl-not-toplevel t))
+ (cl--not-toplevel t))
(if (or (memq 'load when) (memq :load-toplevel when))
(if comp (cons 'progn (mapcar 'cl--compile-time-too body))
`(if nil nil ,@body))
@@ -754,7 +759,8 @@ This is compatible with Common Lisp, but note that `defun' and
(defvar cl--loop-first-flag)
(defvar cl--loop-initially) (defvar cl--loop-map-form) (defvar cl--loop-name)
(defvar cl--loop-result) (defvar cl--loop-result-explicit)
-(defvar cl--loop-result-var) (defvar cl--loop-steps) (defvar cl--loop-symbol-macs)
+(defvar cl--loop-result-var) (defvar cl--loop-steps)
+(defvar cl--loop-symbol-macs)
;;;###autoload
(defmacro cl-loop (&rest loop-args)
@@ -787,7 +793,8 @@ Valid clauses are:
"return"] form]
;; Simple default, which covers 99% of the cases.
symbolp form)))
- (if (not (memq t (mapcar 'symbolp (delq nil (delq t (cl-copy-list loop-args))))))
+ (if (not (memq t (mapcar #'symbolp
+ (delq nil (delq t (cl-copy-list loop-args))))))
`(cl-block nil (while t ,@loop-args))
(let ((cl--loop-args loop-args) (cl--loop-name nil) (cl--loop-bindings nil)
(cl--loop-body nil) (cl--loop-steps nil)
@@ -798,14 +805,16 @@ Valid clauses are:
(cl--loop-map-form nil) (cl--loop-first-flag nil)
(cl--loop-destr-temps nil) (cl--loop-symbol-macs nil))
(setq cl--loop-args (append cl--loop-args '(cl-end-loop)))
- (while (not (eq (car cl--loop-args) 'cl-end-loop)) (cl-parse-loop-clause))
+ (while (not (eq (car cl--loop-args) 'cl-end-loop))
+ (cl--parse-loop-clause))
(if cl--loop-finish-flag
(push `((,cl--loop-finish-flag t)) cl--loop-bindings))
(if cl--loop-first-flag
(progn (push `((,cl--loop-first-flag t)) cl--loop-bindings)
(push `(setq ,cl--loop-first-flag nil) cl--loop-steps)))
(let* ((epilogue (nconc (nreverse cl--loop-finally)
- (list (or cl--loop-result-explicit cl--loop-result))))
+ (list (or cl--loop-result-explicit
+ cl--loop-result))))
(ands (cl--loop-build-ands (nreverse cl--loop-body)))
(while-body (nconc (cadr ands) (nreverse cl--loop-steps)))
(body (append
@@ -825,7 +834,8 @@ Valid clauses are:
`((if ,cl--loop-finish-flag
(progn ,@epilogue) ,cl--loop-result-var)))
epilogue))))
- (if cl--loop-result-var (push (list cl--loop-result-var) cl--loop-bindings))
+ (if cl--loop-result-var
+ (push (list cl--loop-result-var) cl--loop-bindings))
(while cl--loop-bindings
(if (cdar cl--loop-bindings)
(setq body (list (cl--loop-let (pop cl--loop-bindings) body t)))
@@ -835,7 +845,8 @@ Valid clauses are:
(push (car (pop cl--loop-bindings)) lets))
(setq body (list (cl--loop-let lets body nil))))))
(if cl--loop-symbol-macs
- (setq body (list `(cl-symbol-macrolet ,cl--loop-symbol-macs ,@body))))
+ (setq body
+ (list `(cl-symbol-macrolet ,cl--loop-symbol-macs ,@body))))
`(cl-block ,cl--loop-name ,@body)))))
;; Below is a complete spec for cl-loop, in several parts that correspond
@@ -990,7 +1001,7 @@ Valid clauses are:
-(defun cl-parse-loop-clause () ; uses loop-*
+(defun cl--parse-loop-clause () ; uses loop-*
(let ((word (pop cl--loop-args))
(hash-types '(hash-key hash-keys hash-value hash-values))
(key-types '(key-code key-codes key-seq key-seqs
@@ -1005,17 +1016,21 @@ Valid clauses are:
((eq word 'initially)
(if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
- (or (consp (car cl--loop-args)) (error "Syntax error on `initially' clause"))
+ (or (consp (car cl--loop-args))
+ (error "Syntax error on `initially' clause"))
(while (consp (car cl--loop-args))
(push (pop cl--loop-args) cl--loop-initially)))
((eq word 'finally)
(if (eq (car cl--loop-args) 'return)
- (setq cl--loop-result-explicit (or (cl-pop2 cl--loop-args) '(quote nil)))
+ (setq cl--loop-result-explicit
+ (or (cl--pop2 cl--loop-args) '(quote nil)))
(if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
- (or (consp (car cl--loop-args)) (error "Syntax error on `finally' clause"))
+ (or (consp (car cl--loop-args))
+ (error "Syntax error on `finally' clause"))
(if (and (eq (caar cl--loop-args) 'return) (null cl--loop-name))
- (setq cl--loop-result-explicit (or (nth 1 (pop cl--loop-args)) '(quote nil)))
+ (setq cl--loop-result-explicit
+ (or (nth 1 (pop cl--loop-args)) '(quote nil)))
(while (consp (car cl--loop-args))
(push (pop cl--loop-args) cl--loop-finally)))))
@@ -1031,7 +1046,8 @@ Valid clauses are:
(if (eq word 'being) (setq word (pop cl--loop-args)))
(if (memq word '(the each)) (setq word (pop cl--loop-args)))
(if (memq word '(buffer buffers))
- (setq word 'in cl--loop-args (cons '(buffer-list) cl--loop-args)))
+ (setq word 'in
+ cl--loop-args (cons '(buffer-list) cl--loop-args)))
(cond
((memq word '(from downfrom upfrom to downto upto
@@ -1040,15 +1056,19 @@ Valid clauses are:
(if (memq (car cl--loop-args) '(downto above))
(error "Must specify `from' value for downward cl-loop"))
(let* ((down (or (eq (car cl--loop-args) 'downfrom)
- (memq (cl-caddr cl--loop-args) '(downto above))))
+ (memq (cl-caddr cl--loop-args)
+ '(downto above))))
(excl (or (memq (car cl--loop-args) '(above below))
- (memq (cl-caddr cl--loop-args) '(above below))))
- (start (and (memq (car cl--loop-args) '(from upfrom downfrom))
- (cl-pop2 cl--loop-args)))
+ (memq (cl-caddr cl--loop-args)
+ '(above below))))
+ (start (and (memq (car cl--loop-args)
+ '(from upfrom downfrom))
+ (cl--pop2 cl--loop-args)))
(end (and (memq (car cl--loop-args)
'(to upto downto above below))
- (cl-pop2 cl--loop-args)))
- (step (and (eq (car cl--loop-args) 'by) (cl-pop2 cl--loop-args)))
+ (cl--pop2 cl--loop-args)))
+ (step (and (eq (car cl--loop-args) 'by)
+ (cl--pop2 cl--loop-args)))
(end-var (and (not (macroexp-const-p end))
(make-symbol "--cl-var--")))
(step-var (and (not (macroexp-const-p step))
@@ -1082,7 +1102,7 @@ Valid clauses are:
loop-for-sets))))
(push (list temp
(if (eq (car cl--loop-args) 'by)
- (let ((step (cl-pop2 cl--loop-args)))
+ (let ((step (cl--pop2 cl--loop-args)))
(if (and (memq (car-safe step)
'(quote function
cl-function))
@@ -1094,7 +1114,8 @@ Valid clauses are:
((eq word '=)
(let* ((start (pop cl--loop-args))
- (then (if (eq (car cl--loop-args) 'then) (cl-pop2 cl--loop-args) start)))
+ (then (if (eq (car cl--loop-args) 'then)
+ (cl--pop2 cl--loop-args) start)))
(push (list var nil) loop-for-bindings)
(if (or ands (eq (car cl--loop-args) 'and))
(progn
@@ -1131,14 +1152,15 @@ Valid clauses are:
(let ((ref (or (memq (car cl--loop-args) '(in-ref of-ref))
(and (not (memq (car cl--loop-args) '(in of)))
(error "Expected `of'"))))
- (seq (cl-pop2 cl--loop-args))
+ (seq (cl--pop2 cl--loop-args))
(temp-seq (make-symbol "--cl-seq--"))
- (temp-idx (if (eq (car cl--loop-args) 'using)
- (if (and (= (length (cadr cl--loop-args)) 2)
- (eq (cl-caadr cl--loop-args) 'index))
- (cadr (cl-pop2 cl--loop-args))
- (error "Bad `using' clause"))
- (make-symbol "--cl-idx--"))))
+ (temp-idx
+ (if (eq (car cl--loop-args) 'using)
+ (if (and (= (length (cadr cl--loop-args)) 2)
+ (eq (cl-caadr cl--loop-args) 'index))
+ (cadr (cl--pop2 cl--loop-args))
+ (error "Bad `using' clause"))
+ (make-symbol "--cl-idx--"))))
(push (list temp-seq seq) loop-for-bindings)
(push (list temp-idx 0) loop-for-bindings)
(if ref
@@ -1161,15 +1183,17 @@ Valid clauses are:
loop-for-steps)))
((memq word hash-types)
- (or (memq (car cl--loop-args) '(in of)) (error "Expected `of'"))
- (let* ((table (cl-pop2 cl--loop-args))
- (other (if (eq (car cl--loop-args) 'using)
- (if (and (= (length (cadr cl--loop-args)) 2)
- (memq (cl-caadr cl--loop-args) hash-types)
- (not (eq (cl-caadr cl--loop-args) word)))
- (cadr (cl-pop2 cl--loop-args))
- (error "Bad `using' clause"))
- (make-symbol "--cl-var--"))))
+ (or (memq (car cl--loop-args) '(in of))
+ (error "Expected `of'"))
+ (let* ((table (cl--pop2 cl--loop-args))
+ (other
+ (if (eq (car cl--loop-args) 'using)
+ (if (and (= (length (cadr cl--loop-args)) 2)
+ (memq (cl-caadr cl--loop-args) hash-types)
+ (not (eq (cl-caadr cl--loop-args) word)))
+ (cadr (cl--pop2 cl--loop-args))
+ (error "Bad `using' clause"))
+ (make-symbol "--cl-var--"))))
(if (memq word '(hash-value hash-values))
(setq var (prog1 other (setq other var))))
(setq cl--loop-map-form
@@ -1177,16 +1201,19 @@ Valid clauses are:
((memq word '(symbol present-symbol external-symbol
symbols present-symbols external-symbols))
- (let ((ob (and (memq (car cl--loop-args) '(in of)) (cl-pop2 cl--loop-args))))
+ (let ((ob (and (memq (car cl--loop-args) '(in of))
+ (cl--pop2 cl--loop-args))))
(setq cl--loop-map-form
`(mapatoms (lambda (,var) . --cl-map) ,ob))))
((memq word '(overlay overlays extent extents))
(let ((buf nil) (from nil) (to nil))
(while (memq (car cl--loop-args) '(in of from to))
- (cond ((eq (car cl--loop-args) 'from) (setq from (cl-pop2 cl--loop-args)))
- ((eq (car cl--loop-args) 'to) (setq to (cl-pop2 cl--loop-args)))
- (t (setq buf (cl-pop2 cl--loop-args)))))
+ (cond ((eq (car cl--loop-args) 'from)
+ (setq from (cl--pop2 cl--loop-args)))
+ ((eq (car cl--loop-args) 'to)
+ (setq to (cl--pop2 cl--loop-args)))
+ (t (setq buf (cl--pop2 cl--loop-args)))))
(setq cl--loop-map-form
`(cl--map-overlays
(lambda (,var ,(make-symbol "--cl-var--"))
@@ -1198,11 +1225,13 @@ Valid clauses are:
(var1 (make-symbol "--cl-var1--"))
(var2 (make-symbol "--cl-var2--")))
(while (memq (car cl--loop-args) '(in of property from to))
- (cond ((eq (car cl--loop-args) 'from) (setq from (cl-pop2 cl--loop-args)))
- ((eq (car cl--loop-args) 'to) (setq to (cl-pop2 cl--loop-args)))
+ (cond ((eq (car cl--loop-args) 'from)
+ (setq from (cl--pop2 cl--loop-args)))
+ ((eq (car cl--loop-args) 'to)
+ (setq to (cl--pop2 cl--loop-args)))
((eq (car cl--loop-args) 'property)
- (setq prop (cl-pop2 cl--loop-args)))
- (t (setq buf (cl-pop2 cl--loop-args)))))
+ (setq prop (cl--pop2 cl--loop-args)))
+ (t (setq buf (cl--pop2 cl--loop-args)))))
(if (and (consp var) (symbolp (car var)) (symbolp (cdr var)))
(setq var1 (car var) var2 (cdr var))
(push (list var `(cons ,var1 ,var2)) loop-for-sets))
@@ -1212,15 +1241,17 @@ Valid clauses are:
,buf ,prop ,from ,to))))
((memq word key-types)
- (or (memq (car cl--loop-args) '(in of)) (error "Expected `of'"))
- (let ((cl-map (cl-pop2 cl--loop-args))
- (other (if (eq (car cl--loop-args) 'using)
- (if (and (= (length (cadr cl--loop-args)) 2)
- (memq (cl-caadr cl--loop-args) key-types)
- (not (eq (cl-caadr cl--loop-args) word)))
- (cadr (cl-pop2 cl--loop-args))
- (error "Bad `using' clause"))
- (make-symbol "--cl-var--"))))
+ (or (memq (car cl--loop-args) '(in of))
+ (error "Expected `of'"))
+ (let ((cl-map (cl--pop2 cl--loop-args))
+ (other
+ (if (eq (car cl--loop-args) 'using)
+ (if (and (= (length (cadr cl--loop-args)) 2)
+ (memq (cl-caadr cl--loop-args) key-types)
+ (not (eq (cl-caadr cl--loop-args) word)))
+ (cadr (cl--pop2 cl--loop-args))
+ (error "Bad `using' clause"))
+ (make-symbol "--cl-var--"))))
(if (memq word '(key-binding key-bindings))
(setq var (prog1 other (setq other var))))
(setq cl--loop-map-form
@@ -1240,7 +1271,8 @@ Valid clauses are:
loop-for-steps)))
((memq word '(window windows))
- (let ((scr (and (memq (car cl--loop-args) '(in of)) (cl-pop2 cl--loop-args)))
+ (let ((scr (and (memq (car cl--loop-args) '(in of))
+ (cl--pop2 cl--loop-args)))
(temp (make-symbol "--cl-var--"))
(minip (make-symbol "--cl-minip--")))
(push (list var (if scr
@@ -1335,7 +1367,8 @@ Valid clauses are:
((memq word '(minimize minimizing maximize maximizing))
(let* ((what (pop cl--loop-args))
- (temp (if (cl--simple-expr-p what) what (make-symbol "--cl-var--")))
+ (temp (if (cl--simple-expr-p what) what
+ (make-symbol "--cl-var--")))
(var (cl--loop-handle-accum nil))
(func (intern (substring (symbol-name word) 0 3)))
(set `(setq ,var (if ,var (,func ,var ,temp) ,temp))))
@@ -1346,7 +1379,8 @@ Valid clauses are:
((eq word 'with)
(let ((bindings nil))
(while (progn (push (list (pop cl--loop-args)
- (and (eq (car cl--loop-args) '=) (cl-pop2 cl--loop-args)))
+ (and (eq (car cl--loop-args) '=)
+ (cl--pop2 cl--loop-args)))
bindings)
(eq (car cl--loop-args) 'and))
(pop cl--loop-args))
@@ -1359,19 +1393,23 @@ Valid clauses are:
(push `(not ,(pop cl--loop-args)) cl--loop-body))
((eq word 'always)
- (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
+ (or cl--loop-finish-flag
+ (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
(push `(setq ,cl--loop-finish-flag ,(pop cl--loop-args)) cl--loop-body)
(setq cl--loop-result t))
((eq word 'never)
- (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
+ (or cl--loop-finish-flag
+ (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
(push `(setq ,cl--loop-finish-flag (not ,(pop cl--loop-args)))
cl--loop-body)
(setq cl--loop-result t))
((eq word 'thereis)
- (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
- (or cl--loop-result-var (setq cl--loop-result-var (make-symbol "--cl-var--")))
+ (or cl--loop-finish-flag
+ (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
+ (or cl--loop-result-var
+ (setq cl--loop-result-var (make-symbol "--cl-var--")))
(push `(setq ,cl--loop-finish-flag
(not (setq ,cl--loop-result-var ,(pop cl--loop-args))))
cl--loop-body))
@@ -1379,11 +1417,11 @@ Valid clauses are:
((memq word '(if when unless))
(let* ((cond (pop cl--loop-args))
(then (let ((cl--loop-body nil))
- (cl-parse-loop-clause)
+ (cl--parse-loop-clause)
(cl--loop-build-ands (nreverse cl--loop-body))))
(else (let ((cl--loop-body nil))
(if (eq (car cl--loop-args) 'else)
- (progn (pop cl--loop-args) (cl-parse-loop-clause)))
+ (progn (pop cl--loop-args) (cl--parse-loop-clause)))
(cl--loop-build-ands (nreverse cl--loop-body))))
(simple (and (eq (car then) t) (eq (car else) t))))
(if (eq (car cl--loop-args) 'end) (pop cl--loop-args))
@@ -1405,8 +1443,10 @@ Valid clauses are:
(push (cons 'progn (nreverse (cons t body))) cl--loop-body)))
((eq word 'return)
- (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-var--")))
- (or cl--loop-result-var (setq cl--loop-result-var (make-symbol "--cl-var--")))
+ (or cl--loop-finish-flag
+ (setq cl--loop-finish-flag (make-symbol "--cl-var--")))
+ (or cl--loop-result-var
+ (setq cl--loop-result-var (make-symbol "--cl-var--")))
(push `(setq ,cl--loop-result-var ,(pop cl--loop-args)
,cl--loop-finish-flag nil) cl--loop-body))
@@ -1416,7 +1456,7 @@ Valid clauses are:
(or handler (error "Expected a cl-loop keyword, found %s" word))
(funcall handler))))
(if (eq (car cl--loop-args) 'and)
- (progn (pop cl--loop-args) (cl-parse-loop-clause)))))
+ (progn (pop cl--loop-args) (cl--parse-loop-clause)))))
(defun cl--loop-let (specs body par) ; uses loop-*
(let ((p specs) (temps nil) (new nil))
@@ -1435,10 +1475,12 @@ Valid clauses are:
(if (and (consp (car specs)) (listp (caar specs)))
(let* ((spec (caar specs)) (nspecs nil)
(expr (cadr (pop specs)))
- (temp (cdr (or (assq spec cl--loop-destr-temps)
- (car (push (cons spec (or (last spec 0)
- (make-symbol "--cl-var--")))
- cl--loop-destr-temps))))))
+ (temp
+ (cdr (or (assq spec cl--loop-destr-temps)
+ (car (push (cons spec
+ (or (last spec 0)
+ (make-symbol "--cl-var--")))
+ cl--loop-destr-temps))))))
(push (list temp expr) new)
(while (consp spec)
(push (list (pop spec)
@@ -1447,24 +1489,27 @@ Valid clauses are:
(setq specs (nconc (nreverse nspecs) specs)))
(push (pop specs) new)))
(if (eq body 'setq)
- (let ((set (cons (if par 'cl-psetq 'setq) (apply 'nconc (nreverse new)))))
+ (let ((set (cons (if par 'cl-psetq 'setq)
+ (apply 'nconc (nreverse new)))))
(if temps `(let* ,(nreverse temps) ,set) set))
`(,(if par 'let 'let*)
,(nconc (nreverse temps) (nreverse new)) ,@body))))
-(defun cl--loop-handle-accum (def &optional func) ; uses loop-*
+(defun cl--loop-handle-accum (def &optional func) ; uses loop-*
(if (eq (car cl--loop-args) 'into)
- (let ((var (cl-pop2 cl--loop-args)))
+ (let ((var (cl--pop2 cl--loop-args)))
(or (memq var cl--loop-accum-vars)
(progn (push (list (list var def)) cl--loop-bindings)
(push var cl--loop-accum-vars)))
var)
(or cl--loop-accum-var
(progn
- (push (list (list (setq cl--loop-accum-var (make-symbol "--cl-var--")) def))
- cl--loop-bindings)
+ (push (list (list
+ (setq cl--loop-accum-var (make-symbol "--cl-var--"))
+ def))
+ cl--loop-bindings)
(setq cl--loop-result (if func (list func cl--loop-accum-var)
- cl--loop-accum-var))
+ cl--loop-accum-var))
cl--loop-accum-var))))
(defun cl--loop-build-ands (clauses)
@@ -1511,7 +1556,7 @@ such that COMBO is equivalent to (and . CLAUSES)."
((&rest &or symbolp (symbolp &optional form form))
(form body)
cl-declarations body)))
- (cl-expand-do-loop steps endtest body nil))
+ (cl--expand-do-loop steps endtest body nil))
;;;###autoload
(defmacro cl-do* (steps endtest &rest body)
@@ -1519,9 +1564,9 @@ such that COMBO is equivalent to (and . CLAUSES)."
\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
(declare (indent 2) (debug cl-do))
- (cl-expand-do-loop steps endtest body t))
+ (cl--expand-do-loop steps endtest body t))
-(defun cl-expand-do-loop (steps endtest body star)
+(defun cl--expand-do-loop (steps endtest body star)
`(cl-block nil
(,(if star 'let* 'let)
,(mapcar (lambda (c) (if (consp c) (list (car c) (nth 1 c)) c))
@@ -1566,6 +1611,52 @@ nil.
(if (advice-member-p #'cl--wrap-in-nil-block 'dotimes)
loop `(cl-block nil ,loop))))
+(defvar cl--tagbody-alist nil)
+
+;;;###autoload
+(defmacro cl-tagbody (&rest labels-or-stmts)
+ "Execute statements while providing for control transfers to labels.
+Each element of LABELS-OR-STMTS can be either a label (integer or symbol)
+or a `cons' cell, in which case it's taken to be a statement.
+This distinction is made before performing macroexpansion.
+Statements are executed in sequence left to right, discarding any return value,
+stopping only when reaching the end of LABELS-OR-STMTS.
+Any statement can transfer control at any time to the statements that follow
+one of the labels with the special form (go LABEL).
+Labels have lexical scope and dynamic extent."
+ (let ((blocks '())
+ (first-label (if (consp (car labels-or-stmts))
+ 'cl--preamble (pop labels-or-stmts))))
+ (let ((block (list first-label)))
+ (dolist (label-or-stmt labels-or-stmts)
+ (if (consp label-or-stmt) (push label-or-stmt block)
+ ;; Add a "go to next block" to implement the fallthrough.
+ (unless (eq 'go (car-safe (car-safe block)))
+ (push `(go ,label-or-stmt) block))
+ (push (nreverse block) blocks)
+ (setq block (list label-or-stmt))))
+ (unless (eq 'go (car-safe (car-safe block)))
+ (push `(go cl--exit) block))
+ (push (nreverse block) blocks))
+ (let ((catch-tag (make-symbol "cl--tagbody-tag")))
+ (push (cons 'cl--exit catch-tag) cl--tagbody-alist)
+ (dolist (block blocks)
+ (push (cons (car block) catch-tag) cl--tagbody-alist))
+ (macroexpand-all
+ `(let ((next-label ',first-label))
+ (while
+ (not (eq (setq next-label
+ (catch ',catch-tag
+ (cl-case next-label
+ ,@blocks)))
+ 'cl--exit))))
+ `((go . ,(lambda (label)
+ (let ((catch-tag (cdr (assq label cl--tagbody-alist))))
+ (unless catch-tag
+ (error "Unknown cl-tagbody go label `%S'" label))
+ `(throw ',catch-tag ',label))))
+ ,@macroexpand-all-environment)))))
+
;;;###autoload
(defmacro cl-do-symbols (spec &rest body)
"Loop over all symbols.
@@ -1615,19 +1706,18 @@ second list (or to nil if VALUES is shorter than SYMBOLS); then the
BODY forms are executed and their result is returned. This is much like
a `let' form, except that the list of symbols can be computed at run-time."
(declare (indent 2) (debug (form form body)))
- (let ((bodyfun (make-symbol "cl--progv-body"))
+ (let ((bodyfun (make-symbol "body"))
(binds (make-symbol "binds"))
(syms (make-symbol "syms"))
(vals (make-symbol "vals")))
`(progn
- (defvar ,bodyfun)
(let* ((,syms ,symbols)
(,vals ,values)
(,bodyfun (lambda () ,@body))
(,binds ()))
(while ,syms
(push (list (pop ,syms) (list 'quote (pop ,vals))) ,binds))
- (eval (list 'let ,binds '(funcall ,bodyfun)))))))
+ (eval (list 'let ,binds (list 'funcall (list 'quote ,bodyfun))))))))
(defvar cl--labels-convert-cache nil)
@@ -1898,11 +1988,11 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C).
(declare (indent 1) (debug (cl-type-spec form)))
form)
-(defvar cl-proclaim-history t) ; for future compilers
-(defvar cl-declare-stack t) ; for future compilers
+(defvar cl--proclaim-history t) ; for future compilers
+(defvar cl--declare-stack t) ; for future compilers
-(defun cl-do-proclaim (spec hist)
- (and hist (listp cl-proclaim-history) (push spec cl-proclaim-history))
+(defun cl--do-proclaim (spec hist)
+ (and hist (listp cl--proclaim-history) (push spec cl--proclaim-history))
(cond ((eq (car-safe spec) 'special)
(if (boundp 'byte-compile-bound-variables)
(setq byte-compile-bound-variables
@@ -1927,9 +2017,9 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C).
'((0 nil) (1 t) (2 t) (3 t))))
(safety (assq (nth 1 (assq 'safety (cdr spec)))
'((0 t) (1 t) (2 t) (3 nil)))))
- (if speed (setq cl-optimize-speed (car speed)
+ (if speed (setq cl--optimize-speed (car speed)
byte-optimize (nth 1 speed)))
- (if safety (setq cl-optimize-safety (car safety)
+ (if safety (setq cl--optimize-safety (car safety)
byte-compile-delete-errors (nth 1 safety)))))
((and (eq (car-safe spec) 'warn) (boundp 'byte-compile-warnings))
@@ -1941,10 +2031,10 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C).
nil)
;;; Process any proclamations made before cl-macs was loaded.
-(defvar cl-proclaims-deferred)
-(let ((p (reverse cl-proclaims-deferred)))
- (while p (cl-do-proclaim (pop p) t))
- (setq cl-proclaims-deferred nil))
+(defvar cl--proclaims-deferred)
+(let ((p (reverse cl--proclaims-deferred)))
+ (while p (cl--do-proclaim (pop p) t))
+ (setq cl--proclaims-deferred nil))
;;;###autoload
(defmacro cl-declare (&rest specs)
@@ -1957,8 +2047,8 @@ will turn off byte-compile warnings in the function.
See Info node `(cl)Declarations' for details."
(if (cl--compiling-file)
(while specs
- (if (listp cl-declare-stack) (push (car specs) cl-declare-stack))
- (cl-do-proclaim (pop specs) nil)))
+ (if (listp cl--declare-stack) (push (car specs) cl--declare-stack))
+ (cl--do-proclaim (pop specs) nil)))
nil)
;;; The standard modify macros.
@@ -2204,7 +2294,7 @@ value, that slot cannot be set via `setf'.
(copier (intern (format "copy-%s" name)))
(predicate (intern (format "%s-p" name)))
(print-func nil) (print-auto nil)
- (safety (if (cl--compiling-file) cl-optimize-safety 3))
+ (safety (if (cl--compiling-file) cl--optimize-safety 3))
(include nil)
(tag (intern (format "cl-struct-%s" name)))
(tag-symbol (intern (format "cl-struct-%s-tags" name)))
@@ -2449,7 +2539,8 @@ The type name can then be used in `cl-typecase', `cl-check-type', etc."
(if (consp (cadr type)) `(> ,val ,(cl-caadr type))
`(>= ,val ,(cadr type))))
,(if (memq (cl-caddr type) '(* nil)) t
- (if (consp (cl-caddr type)) `(< ,val ,(cl-caaddr type))
+ (if (consp (cl-caddr type))
+ `(< ,val ,(cl-caaddr type))
`(<= ,val ,(cl-caddr type)))))))
((memq (car type) '(and or not))
(cons (car type)
@@ -2474,7 +2565,7 @@ TYPE is a Common Lisp-style type specifier."
STRING is an optional description of the desired type."
(declare (debug (place cl-type-spec &optional stringp)))
(and (or (not (cl--compiling-file))
- (< cl-optimize-speed 3) (= cl-optimize-safety 3))
+ (< cl--optimize-speed 3) (= cl--optimize-safety 3))
(let* ((temp (if (cl--simple-expr-p form 3)
form (make-symbol "--cl-var--")))
(body `(or ,(cl--make-type-test temp type)
@@ -2494,7 +2585,7 @@ They are not evaluated unless the assertion fails. If STRING is
omitted, a default message listing FORM itself is used."
(declare (debug (form &rest form)))
(and (or (not (cl--compiling-file))
- (< cl-optimize-speed 3) (= cl-optimize-safety 3))
+ (< cl--optimize-speed 3) (= cl--optimize-safety 3))
(let ((sargs (and show-args
(delq nil (mapcar (lambda (x)
(unless (macroexp-const-p x)
@@ -2690,14 +2781,14 @@ surrounded by (cl-block NAME ...).
;;; Things that are side-effect-free.
(mapc (lambda (x) (put x 'side-effect-free t))
- '(cl-oddp cl-evenp cl-signum last butlast cl-ldiff cl-pairlis cl-gcd cl-lcm
- cl-isqrt cl-floor cl-ceiling cl-truncate cl-round cl-mod cl-rem cl-subseq
- cl-list-length cl-get cl-getf))
+ '(cl-oddp cl-evenp cl-signum last butlast cl-ldiff cl-pairlis cl-gcd
+ cl-lcm cl-isqrt cl-floor cl-ceiling cl-truncate cl-round cl-mod cl-rem
+ cl-subseq cl-list-length cl-get cl-getf))
;;; Things that are side-effect-and-error-free.
(mapc (lambda (x) (put x 'side-effect-free 'error-free))
- '(eql cl-floatp-safe cl-list* cl-subst cl-acons cl-equalp cl-random-state-p
- copy-tree cl-sublis))
+ '(eql cl-floatp-safe cl-list* cl-subst cl-acons cl-equalp
+ cl-random-state-p copy-tree cl-sublis))
(run-hooks 'cl-macs-load-hook)
diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el
index 1fa562e328a..b8fd3c29b5c 100644
--- a/lisp/emacs-lisp/cl-seq.el
+++ b/lisp/emacs-lisp/cl-seq.el
@@ -105,6 +105,9 @@
(eq (not (funcall cl-test ,x ,y)) cl-test-not)
(eql ,x ,y)))
+;; Yuck! These vars are set/bound by cl--parsing-keywords to match :if :test
+;; and :key keyword args, and they are also accessed (sometimes) via dynamic
+;; scoping (and some of those accesses are from macro-expanded code).
(defvar cl-test) (defvar cl-test-not)
(defvar cl-if) (defvar cl-if-not)
(defvar cl-key)
@@ -333,7 +336,8 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
(defun cl--delete-duplicates (cl-seq cl-keys cl-copy)
(if (listp cl-seq)
- (cl--parsing-keywords (:test :test-not :key (:start 0) :end :from-end :if)
+ (cl--parsing-keywords
+ (:test :test-not :key (:start 0) :end :from-end :if)
()
(if cl-from-end
(let ((cl-p (nthcdr cl-start cl-seq)) cl-i)
@@ -776,7 +780,8 @@ to avoid corrupting the original LIST1 and LIST2.
(setq cl-list1 (prog1 cl-list2 (setq cl-list2 cl-list1))))
(while cl-list2
(if (or cl-keys (numberp (car cl-list2)))
- (setq cl-list1 (apply 'cl-adjoin (car cl-list2) cl-list1 cl-keys))
+ (setq cl-list1
+ (apply 'cl-adjoin (car cl-list2) cl-list1 cl-keys))
(or (memq (car cl-list2) cl-list1)
(push (car cl-list2) cl-list1)))
(pop cl-list2))
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index 8c8d37b2194..f4b79eb3016 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -295,16 +295,32 @@ is not very useful."
;; Use a default docstring.
(setq docstring
(if (null parent)
- (format "Major-mode.
-Uses keymap `%s', abbrev table `%s' and syntax-table `%s'." map abbrev syntax)
+ ;; FIXME filling.
+ (format "Major-mode.\nUses keymap `%s'%s%s." map
+ (if abbrev (format "%s abbrev table `%s'"
+ (if syntax "," " and") abbrev) "")
+ (if syntax (format " and syntax-table `%s'" syntax) ""))
(format "Major mode derived from `%s' by `define-derived-mode'.
-It inherits all of the parent's attributes, but has its own keymap,
-abbrev table and syntax table:
-
- `%s', `%s' and `%s'
-
-which more-or-less shadow %s's corresponding tables."
- parent map abbrev syntax parent))))
+It inherits all of the parent's attributes, but has its own keymap%s:
+
+ `%s'%s
+
+which more-or-less shadow%s %s's corresponding table%s."
+ parent
+ (cond ((and abbrev syntax)
+ ",\nabbrev table and syntax table")
+ (abbrev "\nand abbrev table")
+ (syntax "\nand syntax table")
+ (t ""))
+ map
+ (cond ((and abbrev syntax)
+ (format ", `%s' and `%s'" abbrev syntax))
+ ((or abbrev syntax)
+ (format " and `%s'" (or abbrev syntax)))
+ (t ""))
+ (if (or abbrev syntax) "" "s")
+ parent
+ (if (or abbrev syntax) "s" "")))))
(unless (string-match (regexp-quote (symbol-name hook)) docstring)
;; Make sure the docstring mentions the mode's hook.
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index bc61a24d9dc..df6680a6d94 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -195,45 +195,34 @@ score-mode.el. KEYWORDS-CASE-INSENSITIVE non-nil means that for
font-lock keywords will not be case sensitive."
(when lisp-syntax
(set-syntax-table lisp-mode-syntax-table))
- (make-local-variable 'paragraph-ignore-fill-prefix)
- (setq paragraph-ignore-fill-prefix t)
- (make-local-variable 'fill-paragraph-function)
- (setq fill-paragraph-function 'lisp-fill-paragraph)
+ (setq-local paragraph-ignore-fill-prefix t)
+ (setq-local fill-paragraph-function 'lisp-fill-paragraph)
;; Adaptive fill mode gets the fill wrong for a one-line paragraph made of
;; a single docstring. Let's fix it here.
- (set (make-local-variable 'adaptive-fill-function)
- (lambda () (if (looking-at "\\s-+\"[^\n\"]+\"\\s-*$") "")))
+ (setq-local adaptive-fill-function
+ (lambda () (if (looking-at "\\s-+\"[^\n\"]+\"\\s-*$") "")))
;; Adaptive fill mode gets in the way of auto-fill,
;; and should make no difference for explicit fill
;; because lisp-fill-paragraph should do the job.
;; I believe that newcomment's auto-fill code properly deals with it -stef
;;(set (make-local-variable 'adaptive-fill-mode) nil)
- (make-local-variable 'indent-line-function)
- (setq indent-line-function 'lisp-indent-line)
- (make-local-variable 'outline-regexp)
- (setq outline-regexp ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(")
- (make-local-variable 'outline-level)
- (setq outline-level 'lisp-outline-level)
- (make-local-variable 'comment-start)
- (setq comment-start ";")
- (make-local-variable 'comment-start-skip)
+ (setq-local indent-line-function 'lisp-indent-line)
+ (setq-local outline-regexp ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(")
+ (setq-local outline-level 'lisp-outline-level)
+ (setq-local add-log-current-defun-function #'lisp-current-defun-name)
+ (setq-local comment-start ";")
;; Look within the line for a ; following an even number of backslashes
;; after either a non-backslash or the line beginning.
- (setq comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
- (make-local-variable 'font-lock-comment-start-skip)
+ (setq-local comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
;; Font lock mode uses this only when it KNOWS a comment is starting.
- (setq font-lock-comment-start-skip ";+ *")
- (make-local-variable 'comment-add)
- (setq comment-add 1) ;default to `;;' in comment-region
- (make-local-variable 'comment-column)
- (setq comment-column 40)
+ (setq-local font-lock-comment-start-skip ";+ *")
+ (setq-local comment-add 1) ;default to `;;' in comment-region
+ (setq-local comment-column 40)
;; Don't get confused by `;' in doc strings when paragraph-filling.
- (set (make-local-variable 'comment-use-global-state) t)
- (make-local-variable 'imenu-generic-expression)
- (setq imenu-generic-expression lisp-imenu-generic-expression)
- (make-local-variable 'multibyte-syntax-as-symbol)
- (setq multibyte-syntax-as-symbol t)
- (set (make-local-variable 'syntax-begin-function) 'beginning-of-defun)
+ (setq-local comment-use-global-state t)
+ (setq-local imenu-generic-expression lisp-imenu-generic-expression)
+ (setq-local multibyte-syntax-as-symbol t)
+ (setq-local syntax-begin-function 'beginning-of-defun)
(setq font-lock-defaults
`((lisp-font-lock-keywords
lisp-font-lock-keywords-1 lisp-font-lock-keywords-2)
@@ -249,6 +238,32 @@ font-lock keywords will not be case sensitive."
1000
len)))
+(defun lisp-current-defun-name ()
+ "Return the name of the defun at point, or nil."
+ (save-excursion
+ (let ((location (point)))
+ ;; If we are now precisely at the beginning of a defun, make sure
+ ;; beginning-of-defun finds that one rather than the previous one.
+ (or (eobp) (forward-char 1))
+ (beginning-of-defun)
+ ;; Make sure we are really inside the defun found, not after it.
+ (when (and (looking-at "\\s(")
+ (progn (end-of-defun)
+ (< location (point)))
+ (progn (forward-sexp -1)
+ (>= location (point))))
+ (if (looking-at "\\s(")
+ (forward-char 1))
+ ;; Skip the defining construct name, typically "defun" or
+ ;; "defvar".
+ (forward-sexp 1)
+ ;; The second element is usually a symbol being defined. If it
+ ;; is not, use the first symbol in it.
+ (skip-chars-forward " \t\n'(")
+ (buffer-substring-no-properties (point)
+ (progn (forward-sexp 1)
+ (point)))))))
+
(defvar lisp-mode-shared-map
(let ((map (make-sparse-keymap)))
(define-key map "\e\C-q" 'indent-sexp)
@@ -519,10 +534,9 @@ or to switch back to an existing one.
Entry to this mode calls the value of `lisp-mode-hook'
if that value is non-nil."
(lisp-mode-variables nil t)
- (set (make-local-variable 'find-tag-default-function) 'lisp-find-tag-default)
- (make-local-variable 'comment-start-skip)
- (setq comment-start-skip
- "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
+ (setq-local find-tag-default-function 'lisp-find-tag-default)
+ (setq-local comment-start-skip
+ "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
(setq imenu-case-fold-search t))
(defun lisp-find-tag-default ()
@@ -816,6 +830,7 @@ this command arranges for all errors to enter the debugger."
(defun eval-defun-1 (form)
"Treat some expressions specially.
Reset the `defvar' and `defcustom' variables to the initial value.
+\(For `defcustom', use the :set function if there is one.)
Reinitialize the face according to the `defface' specification."
;; The code in edebug-defun should be consistent with this, but not
;; the same, since this gets a macroexpanded form.
@@ -831,14 +846,19 @@ Reinitialize the face according to the `defface' specification."
;; `custom-declare-variable' with a quoted value arg.
((and (eq (car form) 'custom-declare-variable)
(default-boundp (eval (nth 1 form) lexical-binding)))
- ;; Force variable to be bound.
- (set-default (eval (nth 1 form) lexical-binding)
- ;; The second arg is an expression that evaluates to
- ;; an expression. The second evaluation is the one
- ;; normally performed not be normal execution but by
- ;; custom-initialize-set (for example), which does not
- ;; use lexical-binding.
- (eval (eval (nth 2 form) lexical-binding)))
+ ;; Force variable to be bound, using :set function if specified.
+ (let ((setfunc (memq :set form)))
+ (when setfunc
+ (setq setfunc (car-safe (cdr-safe setfunc)))
+ (or (functionp setfunc) (setq setfunc nil)))
+ (funcall (or setfunc 'set-default)
+ (eval (nth 1 form) lexical-binding)
+ ;; The second arg is an expression that evaluates to
+ ;; an expression. The second evaluation is the one
+ ;; normally performed not by normal execution but by
+ ;; custom-initialize-set (for example), which does not
+ ;; use lexical-binding.
+ (eval (eval (nth 2 form) lexical-binding))))
form)
;; `defface' is macroexpanded to `custom-declare-face'.
((eq (car form) 'custom-declare-face)
@@ -901,11 +921,12 @@ Return the result of evaluation."
If the current defun is actually a call to `defvar' or `defcustom',
evaluating it this way resets the variable using its initial value
-expression even if the variable already has some other value.
-\(Normally `defvar' and `defcustom' do not alter the value if there
-already is one.) In an analogous way, evaluating a `defface'
-overrides any customizations of the face, so that it becomes
-defined exactly as the `defface' expression says.
+expression (using the defcustom's :set function if there is one), even
+if the variable already has some other value. \(Normally `defvar' and
+`defcustom' do not alter the value if there already is one.) In an
+analogous way, evaluating a `defface' overrides any customizations of
+the face, so that it becomes defined exactly as the `defface' expression
+says.
If `eval-expression-debug-on-error' is non-nil, which is the default,
this command arranges for all errors to enter the debugger.
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 3f9824545cf..847b995997c 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,18 @@
+2012-11-30 Glenn Morris <rgm@gnu.org>
+
+ * erc.el (erc-accidental-paste-threshold-seconds): Add :version.
+
+2012-11-30 Eric Hanchrow <eric.hanchrow@gmail.com>
+
+ * erc.el (erc-last-input-time): New variable.
+ (erc-accidental-paste-threshold-seconds): New option to avoid
+ sending accidentally-pasted text to the server (Bug#11592).
+ (erc-send-current-line): Use it.
+
+2012-11-30 Chong Yidong <cyd@gnu.org>
+
+ * erc.el (erc-lurker-cleanup, erc-lurker-p): Use float-time.
+
2012-11-23 Stefan Monnier <monnier@iro.umontreal.ca>
* erc-backend.el: Fix last change that missed calls to `second'
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index cec9718e751..bead7759e13 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -2534,9 +2534,9 @@ consumption for long-lived IRC or Emacs sessions."
(maphash
(lambda (nick last-PRIVMSG-time)
(when
- (> (time-to-seconds (time-subtract
- (current-time)
- last-PRIVMSG-time))
+ (> (float-time (time-subtract
+ (current-time)
+ last-PRIVMSG-time))
erc-lurker-threshold-time)
(remhash nick hash)))
hash)
@@ -2602,7 +2602,7 @@ server within `erc-lurker-threshold-time'. See also
(gethash (erc-lurker-maybe-trim nick)
(gethash server erc-lurker-state (make-hash-table)))))
(or (null last-PRIVMSG-time)
- (> (time-to-seconds
+ (> (float-time
(time-subtract (current-time) last-PRIVMSG-time))
erc-lurker-threshold-time))))
@@ -5215,42 +5215,66 @@ Specifically, return the position of `erc-insert-marker'."
"Return the value of `point' at the end of the input line."
(point-max))
+(defvar erc-last-input-time 0
+ "Time of last call to `erc-send-current-line'.
+If that function has never been called, the value is 0.")
+
+(defcustom erc-accidental-paste-threshold-seconds nil
+ "Minimum time, in seconds, before sending new lines via IRC.
+If the value is a number, `erc-send-current-line' signals an
+error if its previous invocation was less than this much time
+ago. This is useful so that if you accidentally enter large
+amounts of text into the ERC buffer, that text is not sent to the
+IRC server.
+
+If the value is nil, `erc-send-current-line' always considers any
+submitted line to be intentional."
+ :group 'erc
+ :version "24.4"
+ :type '(choice number (other :tag "disabled" nil)))
+
(defun erc-send-current-line ()
"Parse current line and send it to IRC."
(interactive)
- (save-restriction
- (widen)
- (if (< (point) (erc-beg-of-input-line))
- (erc-error "Point is not in the input area")
- (let ((inhibit-read-only t)
- (str (erc-user-input))
- (old-buf (current-buffer)))
- (if (and (not (erc-server-buffer-live-p))
- (not (erc-command-no-process-p str)))
- (erc-error "ERC: No process running")
- (erc-set-active-buffer (current-buffer))
-
- ;; Kill the input and the prompt
- (delete-region (erc-beg-of-input-line)
- (erc-end-of-input-line))
-
- (unwind-protect
- (erc-send-input str)
- ;; Fix the buffer if the command didn't kill it
- (when (buffer-live-p old-buf)
- (with-current-buffer old-buf
- (save-restriction
- (widen)
- (goto-char (point-max))
- (when (processp erc-server-process)
- (set-marker (process-mark erc-server-process) (point)))
- (set-marker erc-insert-marker (point))
- (let ((buffer-modified (buffer-modified-p)))
- (erc-display-prompt)
- (set-buffer-modified-p buffer-modified))))))
-
- ;; Only when last hook has been run...
- (run-hook-with-args 'erc-send-completed-hook str))))))
+ (let ((now (float-time)))
+ (if (or (not erc-accidental-paste-threshold-seconds)
+ (< erc-accidental-paste-threshold-seconds
+ (- now erc-last-input-time)))
+ (save-restriction
+ (widen)
+ (if (< (point) (erc-beg-of-input-line))
+ (erc-error "Point is not in the input area")
+ (let ((inhibit-read-only t)
+ (str (erc-user-input))
+ (old-buf (current-buffer)))
+ (if (and (not (erc-server-buffer-live-p))
+ (not (erc-command-no-process-p str)))
+ (erc-error "ERC: No process running")
+ (erc-set-active-buffer (current-buffer))
+ ;; Kill the input and the prompt
+ (delete-region (erc-beg-of-input-line)
+ (erc-end-of-input-line))
+ (unwind-protect
+ (erc-send-input str)
+ ;; Fix the buffer if the command didn't kill it
+ (when (buffer-live-p old-buf)
+ (with-current-buffer old-buf
+ (save-restriction
+ (widen)
+ (goto-char (point-max))
+ (when (processp erc-server-process)
+ (set-marker (process-mark erc-server-process) (point)))
+ (set-marker erc-insert-marker (point))
+ (let ((buffer-modified (buffer-modified-p)))
+ (erc-display-prompt)
+ (set-buffer-modified-p buffer-modified))))))
+
+ ;; Only when last hook has been run...
+ (run-hook-with-args 'erc-send-completed-hook str))))
+ (setq erc-last-input-time now))
+ (switch-to-buffer "*ERC Accidental Paste Overflow*")
+ (lwarn 'erc :warning
+ "You seem to have accidentally pasted some text!"))))
(defun erc-user-input ()
"Return the input of the user in the current buffer."
diff --git a/lisp/faces.el b/lisp/faces.el
index 2a0b77b19c4..280d85c34e9 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1622,7 +1622,7 @@ the face's attributes on existing frames."
(if (memq spec-type '(reset saved-face))
(put face 'customized-face nil))
;; Setting the face spec via Custom empties out any override spec,
- ;; similar to how setting a variable via Custom changes its valus.
+ ;; similar to how setting a variable via Custom changes its values.
(if (memq spec-type '(customized-face saved-face reset))
(put face 'face-override-spec nil))
;; If we reset the face based on its custom spec, it is unmodified
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 4c75609fe01..00be6b91571 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -181,7 +181,7 @@ Note this name may be omitted if it equals the default
;; Could just use `url-nonrelative-link' of w3, if loaded.
;; This regexp is not exhaustive, it just matches common cases.
(concat
- "\\`\\("
+ "\\("
"news\\(post\\)?:\\|mailto:\\|file:" ; no host ok
"\\|"
"\\(ftp\\|https?\\|telnet\\|gopher\\|www\\|wais\\)://" ; needs host
@@ -484,7 +484,7 @@ Returned values:
"In remote FULLNAME, replace path with NAME. May return nil."
;; Use efs if loaded, but do not load it otherwise.
(if (fboundp 'efs-replace-path-component)
- (funcall efs-replace-path-component fullname name)
+ (funcall 'efs-replace-path-component fullname name)
(and (stringp fullname)
(stringp name)
(concat (file-remote-p fullname) name))))
@@ -606,10 +606,11 @@ Looks at `ffap-ftp-default-user', returns \"\" for \"localhost\"."
(defsubst ffap-url-p (string)
"If STRING looks like an URL, return it (maybe improved), else nil."
- (let ((case-fold-search t))
- (and ffap-url-regexp (string-match ffap-url-regexp string)
- ;; I lied, no improvement:
- string)))
+ (when (and (stringp string) ffap-url-regexp)
+ (let* ((case-fold-search t)
+ (match (string-match ffap-url-regexp string)))
+ (cond ((eq match 0) string)
+ (match (substring string match))))))
;; Broke these out of ffap-fixup-url, for use of ffap-url package.
(defun ffap-url-unwrap-local (url)
@@ -1122,10 +1123,8 @@ Assumes the buffer has not changed."
(equal (ffap-string-around) "<>")
;; (ffap-user-p name):
(not (string-match "~" (expand-file-name (concat "~" name)))))
- (setq name (concat "mailto:" name))))
-
- (if (ffap-url-p name)
- name)))))
+ (setq name (concat "mailto:" name)))
+ ((ffap-url-p name)))))))
(defvar ffap-gopher-regexp
"^.*\\<\\(Type\\|Name\\|Path\\|Host\\|Port\\) *= *\\(.*\\) *$"
@@ -1297,13 +1296,11 @@ which may actually result in an URL rather than a filename."
(let (dir)
;; Tricky: guess may have or be a local directory, like "w3/w3.elc"
;; or "w3/" or "../el/ffap.el" or "../../../"
- (or (ffap-url-p guess)
- (progn
- (or (ffap-file-remote-p guess)
- (setq guess
- (abbreviate-file-name (expand-file-name guess))
- ))
- (setq dir (file-name-directory guess))))
+ (unless (ffap-url-p guess)
+ (unless (ffap-file-remote-p guess)
+ (setq guess
+ (abbreviate-file-name (expand-file-name guess))))
+ (setq dir (file-name-directory guess)))
(let ((minibuffer-completing-file-name t)
(completion-ignore-case read-file-name-completion-ignore-case)
(fnh-elem (cons ffap-url-regexp 'url-file-handler)))
@@ -1327,11 +1324,8 @@ which may actually result in an URL rather than a filename."
;; other modifications to be lost (e.g. when Tramp gets loaded
;; during the completing-read call).
(setq file-name-handler-alist (delq fnh-elem file-name-handler-alist))))
- ;; Do file substitution like (interactive "F"), suggested by MCOOK.
- (or (ffap-url-p guess) (setq guess (substitute-in-file-name guess)))
- ;; Should not do it on url's, where $ is a common (VMS?) character.
- ;; Note: upcoming url.el package ought to handle this automatically.
- guess))
+ (or (ffap-url-p guess)
+ (substitute-in-file-name guess))))
(defun ffap-read-url-internal (string pred action)
"Complete URLs from history, treating given string as valid."
@@ -1346,11 +1340,10 @@ which may actually result in an URL rather than a filename."
(t t))))
(defun ffap-read-file-or-url-internal (string pred action)
- (unless string ;Why would this ever happen?
- (setq string default-directory))
- (if (ffap-url-p string)
- (ffap-read-url-internal string pred action)
- (read-file-name-internal string pred action)))
+ (let ((url (ffap-url-p string)))
+ (if url
+ (ffap-read-url-internal url pred action)
+ (read-file-name-internal (or string default-directory) pred action))))
;; The rest of this page is just to work with package complete.el.
;; This code assumes that you load ffap.el after complete.el.
@@ -1441,30 +1434,31 @@ and the functions `ffap-file-at-point' and `ffap-url-at-point'."
(let (current-prefix-arg) ; we already interpreted it
(call-interactively ffap-file-finder))
(or filename (setq filename (ffap-prompter)))
- (cond
- ((ffap-url-p filename)
- (let (current-prefix-arg) ; w3 2.3.25 bug, reported by KPC
- (funcall ffap-url-fetcher filename)))
- ((and ffap-pass-wildcards-to-dired
- ffap-dired-wildcards
- (string-match ffap-dired-wildcards filename))
- (funcall ffap-directory-finder filename))
- ((and ffap-dired-wildcards
- (string-match ffap-dired-wildcards filename)
- find-file-wildcards
- ;; Check if it's find-file that supports wildcards arg
- (memq ffap-file-finder '(find-file find-alternate-file)))
- (funcall ffap-file-finder (expand-file-name filename) t))
- ((or (not ffap-newfile-prompt)
- (file-exists-p filename)
- (y-or-n-p "File does not exist, create buffer? "))
- (funcall ffap-file-finder
- ;; expand-file-name fixes "~/~/.emacs" bug sent by CHUCKR.
- (expand-file-name filename)))
- ;; User does not want to find a non-existent file:
- ((signal 'file-error (list "Opening file buffer"
- "no such file or directory"
- filename))))))
+ (let ((url (ffap-url-p filename)))
+ (cond
+ (url
+ (let (current-prefix-arg)
+ (funcall ffap-url-fetcher url)))
+ ((and ffap-pass-wildcards-to-dired
+ ffap-dired-wildcards
+ (string-match ffap-dired-wildcards filename))
+ (funcall ffap-directory-finder filename))
+ ((and ffap-dired-wildcards
+ (string-match ffap-dired-wildcards filename)
+ find-file-wildcards
+ ;; Check if it's find-file that supports wildcards arg
+ (memq ffap-file-finder '(find-file find-alternate-file)))
+ (funcall ffap-file-finder (expand-file-name filename) t))
+ ((or (not ffap-newfile-prompt)
+ (file-exists-p filename)
+ (y-or-n-p "File does not exist, create buffer? "))
+ (funcall ffap-file-finder
+ ;; expand-file-name fixes "~/~/.emacs" bug sent by CHUCKR.
+ (expand-file-name filename)))
+ ;; User does not want to find a non-existent file:
+ ((signal 'file-error (list "Opening file buffer"
+ "no such file or directory"
+ filename)))))))
;; Shortcut: allow {M-x ffap} rather than {M-x find-file-at-point}.
;;;###autoload
@@ -1820,25 +1814,26 @@ If `dired-at-point-require-prefix' is set, the prefix meaning is reversed."
(let (current-prefix-arg) ; already interpreted
(call-interactively ffap-directory-finder))
(or filename (setq filename (dired-at-point-prompter)))
- (cond
- ((ffap-url-p filename)
- (funcall ffap-url-fetcher filename))
- ((and ffap-dired-wildcards
- (string-match ffap-dired-wildcards filename))
- (funcall ffap-directory-finder filename))
- ((file-exists-p filename)
- (if (file-directory-p filename)
+ (let ((url (ffap-url-p filename)))
+ (cond
+ (url
+ (funcall ffap-url-fetcher url))
+ ((and ffap-dired-wildcards
+ (string-match ffap-dired-wildcards filename))
+ (funcall ffap-directory-finder filename))
+ ((file-exists-p filename)
+ (if (file-directory-p filename)
+ (funcall ffap-directory-finder
+ (expand-file-name filename))
(funcall ffap-directory-finder
- (expand-file-name filename))
- (funcall ffap-directory-finder
- (concat (expand-file-name filename) "*"))))
- ((and (file-writable-p
- (or (file-name-directory (directory-file-name filename))
- filename))
- (y-or-n-p "Directory does not exist, create it? "))
- (make-directory filename)
- (funcall ffap-directory-finder filename))
- ((error "No such file or directory `%s'" filename)))))
+ (concat (expand-file-name filename) "*"))))
+ ((and (file-writable-p
+ (or (file-name-directory (directory-file-name filename))
+ filename))
+ (y-or-n-p "Directory does not exist, create it? "))
+ (make-directory filename)
+ (funcall ffap-directory-finder filename))
+ ((error "No such file or directory `%s'" filename))))))
(defun dired-at-point-prompter (&optional guess)
;; Does guess and prompt step for find-file-at-point.
@@ -1851,23 +1846,23 @@ If `dired-at-point-require-prefix' is set, the prefix meaning is reversed."
(ffap-url-regexp "Dired file or URL: ")
(t "Dired file: "))
(prog1
- (setq guess (or guess
- (let ((guess (ffap-guesser)))
- (if (or (not guess)
- (ffap-url-p guess)
- (ffap-file-remote-p guess))
- guess
- (setq guess (abbreviate-file-name
- (expand-file-name guess)))
- (cond
- ;; Interpret local directory as a directory.
- ((file-directory-p guess)
- (file-name-as-directory guess))
- ;; Get directory component from local files.
- ((file-regular-p guess)
- (file-name-directory guess))
- (guess))))
- ))
+ (setq guess
+ (let ((guess (or guess (ffap-guesser))))
+ (cond
+ ((null guess) nil)
+ ((ffap-url-p guess))
+ ((ffap-file-remote-p guess)
+ guess)
+ ((progn
+ (setq guess (abbreviate-file-name
+ (expand-file-name guess)))
+ ;; Interpret local directory as a directory.
+ (file-directory-p guess))
+ (file-name-as-directory guess))
+ ;; Get directory component from local files.
+ ((file-regular-p guess)
+ (file-name-directory guess))
+ (guess))))
(and guess (ffap-highlight))))
(ffap-highlight t)))
@@ -1916,22 +1911,17 @@ Only intended for interactive use."
(defun ffap-guess-file-name-at-point ()
"Try to get a file name at point.
This hook is intended to be put in `file-name-at-point-functions'."
- (when (fboundp 'ffap-guesser)
- ;; Logic from `ffap-read-file-or-url' and `dired-at-point-prompter'.
- (let ((guess (ffap-guesser)))
- (setq guess
- (if (or (not guess)
- (and (fboundp 'ffap-url-p)
- (ffap-url-p guess))
- (and (fboundp 'ffap-file-remote-p)
- (ffap-file-remote-p guess)))
- guess
- (abbreviate-file-name (expand-file-name guess))))
- (when guess
- (if (file-directory-p guess)
- (file-name-as-directory guess)
- guess)))))
-
+ (let ((guess (ffap-guesser)))
+ (when (stringp guess)
+ (let ((url (ffap-url-p guess)))
+ (or url
+ (progn
+ (unless (ffap-file-remote-p guess)
+ (setq guess
+ (abbreviate-file-name (expand-file-name guess))))
+ (if (file-directory-p guess)
+ (file-name-as-directory guess)
+ guess)))))))
;;; Offer default global bindings (`ffap-bindings'):
diff --git a/lisp/files.el b/lisp/files.el
index 496f9bf8fa4..c8a75f67820 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2502,25 +2502,31 @@ They may happen to contain sequences that look like local variable
specifications, but are not really, or they may be containers for
member files with their own local variable sections, which are
not appropriate for the containing file.
-See also `inhibit-local-variables-suffixes'.")
+The function `inhibit-local-variables-p' uses this.")
(define-obsolete-variable-alias 'inhibit-first-line-modes-suffixes
'inhibit-local-variables-suffixes "24.1")
(defvar inhibit-local-variables-suffixes nil
"List of regexps matching suffixes to remove from file names.
-When checking `inhibit-local-variables-regexps', we first discard
-from the end of the file name anything that matches one of these regexps.")
+The function `inhibit-local-variables-p' uses this: when checking
+a file name, it first discards from the end of the name anything that
+matches one of these regexps.")
+
+;; Can't think of any situation in which you'd want this to be nil...
+(defvar inhibit-local-variables-ignore-case t
+ "Non-nil means `inhibit-local-variables-p' ignores case.")
-;; TODO explicitly add case-fold-search t?
(defun inhibit-local-variables-p ()
"Return non-nil if file local variables should be ignored.
This checks the file (or buffer) name against `inhibit-local-variables-regexps'
-and `inhibit-local-variables-suffixes'."
+and `inhibit-local-variables-suffixes'. If
+`inhibit-local-variables-ignore-case' is non-nil, this ignores case."
(let ((temp inhibit-local-variables-regexps)
(name (if buffer-file-name
(file-name-sans-versions buffer-file-name)
- (buffer-name))))
+ (buffer-name)))
+ (case-fold-search inhibit-local-variables-ignore-case))
(while (let ((sufs inhibit-local-variables-suffixes))
(while (and sufs (not (string-match (car sufs) name)))
(setq sufs (cdr sufs)))
@@ -3634,14 +3640,15 @@ is found. Returns the new class name."
(condition-case err
(progn
(insert-file-contents file)
- (let* ((dir-name (file-name-directory file))
- (class-name (intern dir-name))
- (variables (let ((read-circle nil))
- (read (current-buffer)))))
- (dir-locals-set-class-variables class-name variables)
- (dir-locals-set-directory-class dir-name class-name
- (nth 5 (file-attributes file)))
- class-name))
+ (unless (zerop (buffer-size))
+ (let* ((dir-name (file-name-directory file))
+ (class-name (intern dir-name))
+ (variables (let ((read-circle nil))
+ (read (current-buffer)))))
+ (dir-locals-set-class-variables class-name variables)
+ (dir-locals-set-directory-class dir-name class-name
+ (nth 5 (file-attributes file)))
+ class-name)))
(error (message "Error reading dir-locals: %S" err) nil)))))
(defcustom enable-remote-dir-locals nil
@@ -3676,10 +3683,13 @@ and `file-local-variables-alist', without applying them."
(dir-locals-get-class-variables class) dir-name nil)))
(when variables
(dolist (elt variables)
- (unless (memq (car elt) '(eval mode))
- (setq dir-local-variables-alist
- (assq-delete-all (car elt) dir-local-variables-alist)))
- (push elt dir-local-variables-alist))
+ (if (eq (car elt) 'coding)
+ (display-warning :warning
+ "Coding cannot be specified by dir-locals")
+ (unless (memq (car elt) '(eval mode))
+ (setq dir-local-variables-alist
+ (assq-delete-all (car elt) dir-local-variables-alist)))
+ (push elt dir-local-variables-alist)))
(hack-local-variables-filter variables dir-name)))))))
(defun hack-dir-local-variables-non-file-buffer ()
@@ -5408,18 +5418,20 @@ Then you'll be asked about a number of files to recover."
(let ((ls-lisp-support-shell-wildcards t))
(dired (concat auto-save-list-file-prefix "*")
(concat dired-listing-switches " -t")))
+ (use-local-map (nconc (make-sparse-keymap) (current-local-map)))
+ (define-key (current-local-map) "\C-c\C-c" 'recover-session-finish)
(save-excursion
(goto-char (point-min))
(or (looking-at " Move to the session you want to recover,")
(let ((inhibit-read-only t))
;; Each line starts with a space
;; so that Font Lock mode won't highlight the first character.
- (insert " Move to the session you want to recover,\n"
- " then type C-c C-c to select it.\n\n"
- " You can also delete some of these files;\n"
- " type d on a line to mark that file for deletion.\n\n"))))
- (use-local-map (nconc (make-sparse-keymap) (current-local-map)))
- (define-key (current-local-map) "\C-c\C-c" 'recover-session-finish))
+ (insert " To recover a session, move to it and type C-c C-c.\n"
+ (substitute-command-keys
+ " To delete a session file, type \
+\\[dired-flag-file-deletion] on its line to flag
+ the file for deletion, then \\[dired-do-flagged-delete] to \
+delete flagged files.\n\n"))))))
(defun recover-session-finish ()
"Choose one saved session to recover auto-save files from.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index d0dfd100f44..2d2d9318bd6 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,90 @@
+2012-12-06 Sam Steingold <sds@gnu.org>
+
+ * gnus-start.el (gnus-before-resume-hook): Add.
+ (gnus-1): Run it when Gnus is alive.
+
+2012-12-06 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gmm-utils.el (gmm-called-interactively-p): Restore as a macro.
+ * gnus-art.el (article-unsplit-urls)
+ * gnus-bookmark.el (gnus-bookmark-bmenu-list)
+ * gnus-registry.el (gnus-registry-get-article-marks)
+ * message.el (message-goto-body): Use it.
+ (message-called-interactively-p): Remove.
+
+ * spam-stat.el (spam-stat-called-interactively-p): New macro.
+ (spam-stat-score-buffer): Use it.
+
+ * spam.el: Silence the warnings against BBDB functions when compiling.
+
+ * gnus-score.el (gnus-score-decode-text-parts):
+ Use append+mapcar instead of the cl function mapcan.
+
+ * gmm-utils.el (gmm-flet): Remove.
+
+ * gnus-sync.el (gnus-sync-lesync-call):
+ Avoid overriding json-alist-p.
+
+ * message.el (message-read-from-minibuffer):
+ Avoid overriding mail-abbrev-in-expansion-header-p.
+
+2012-12-05 Sam Steingold <sds@gnu.org>
+
+ * gnus.el (gnus-delete-gnus-frame): Extract from `gnus-other-frame'.
+ (gnus-other-frame): Add `gnus-delete-gnus-frame' to
+ `gnus-suspend-gnus-hook' in addition to `gnus-exit-gnus-hook'.
+
+2012-12-05 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gmm-utils.el (gmm-called-interactively-p): Revert.
+ This seems to cause Emacs to get stuck!
+ * gnus-art.el (article-unsplit-urls)
+ * gnus-bookmark.el (gnus-bookmark-bmenu-list)
+ * gnus-registry.el (gnus-registry-get-article-marks)
+ * message.el (message-goto-body)
+ (message-called-interactively-p): Revert.
+
+ * gmm-utils.el (gmm-called-interactively-p): New function.
+ * gnus-art.el (article-unsplit-urls)
+ * gnus-bookmark.el (gnus-bookmark-bmenu-list)
+ * gnus-registry.el (gnus-registry-get-article-marks)
+ * message.el (message-goto-body): Use it.
+ (message-called-interactively-p): Remove.
+
+ * gmm-utils.el (gmm-flet): Restore it using cl-letf.
+ * gnus-sync.el (gnus-sync-lesync-call)
+ * message.el (message-read-from-minibuffer): Use it.
+
+2012-12-05 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gmm-utils.el (gmm-flet): Remove.
+ * gnus-sync.el (gnus-sync-lesync-call)
+ * message.el (message-read-from-minibuffer): Don't use it.
+
+2012-12-04 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gmm-utils.el (gmm-labels): Use cl-labels if available.
+
+2012-12-04 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gmm-utils.el (gmm-flet, gmm-labels): New macros.
+
+ * gnus-sync.el (gnus-sync-lesync-call)
+ * message.el (message-read-from-minibuffer): Use gmm-flet.
+
+ * gnus-score.el (gnus-score-decode-text-parts): Use gmm-labels.
+
+ * gnus-util.el (gnus-macroexpand-all): Remove.
+
+2012-12-03 Andreas Schwab <schwab@linux-m68k.org>
+
+ * gnus-sum.el (gnus-summary-mode-map): Bind gnus-summary-widget-forward
+ to TAB, not [tab].
+ (gnus-summary-article-map): Likewise.
+
+ * gnus-sync.el (gnus-sync-newsrc-offsets): Restore definition.
+ (gnus-sync-save): Use correct format for gnus-sync-newsrc-loader.
+
2012-11-19 Katsumi Yamaoka <yamaoka@jpl.org>
* message.el (message-get-reply-headers):
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index 975b83370ba..0f03d479534 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -417,6 +417,31 @@ coding-system."
(write-region start end filename append visit lockname))
(write-region start end filename append visit lockname mustbenew)))
+;; `interactive-p' is obsolete since Emacs 23.2.
+(defmacro gmm-called-interactively-p (kind)
+ (condition-case nil
+ (progn
+ (eval '(called-interactively-p 'any))
+ ;; Emacs >=23.2
+ `(called-interactively-p ,kind))
+ ;; Emacs <23.2
+ (wrong-number-of-arguments '(called-interactively-p))
+ ;; XEmacs
+ (void-function '(interactive-p))))
+
+;; `labels' is obsolete since Emacs 24.3.
+(defmacro gmm-labels (bindings &rest body)
+ "Make temporary function bindings.
+The bindings can be recursive and the scoping is lexical, but capturing
+them in closures will only work if `lexical-binding' is in use. But in
+Emacs 24.2 and older, the lexical scoping is handled via `lexical-let'
+rather than relying on `lexical-binding'.
+
+\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
+ `(,(progn (require 'cl) (if (fboundp 'cl-labels) 'cl-labels 'labels))
+ ,bindings ,@body))
+(put 'gmm-labels 'lisp-indent-function 1)
+
(provide 'gmm-utils)
;;; gmm-utils.el ends here
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index edcd7da2ddd..9dfe119f831 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2718,7 +2718,7 @@ If READ-CHARSET, ask for a coding system."
(while (re-search-forward
"\\(\\(https?\\|ftp\\)://\\S-+\\) *\n\\(\\S-+\\)" nil t)
(replace-match "\\1\\3" t)))
- (when (interactive-p)
+ (when (gmm-called-interactively-p 'any)
(gnus-treat-article nil))))
(defun article-wash-html ()
diff --git a/lisp/gnus/gnus-bookmark.el b/lisp/gnus/gnus-bookmark.el
index 9f6654dd12d..e447322777e 100644
--- a/lisp/gnus/gnus-bookmark.el
+++ b/lisp/gnus/gnus-bookmark.el
@@ -367,7 +367,7 @@ The leftmost column displays a D if the bookmark is flagged for
deletion, or > if it is flagged for displaying."
(interactive)
(gnus-bookmark-maybe-load-default-file)
- (if (interactive-p)
+ (if (gmm-called-interactively-p 'any)
(switch-to-buffer (get-buffer-create "*Gnus Bookmark List*"))
(set-buffer (get-buffer-create "*Gnus Bookmark List*")))
(let ((inhibit-read-only t)
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 71e00967548..5e20f5fb706 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -982,7 +982,7 @@ only the last one's marks are returned."
(let* ((article (last articles))
(id (gnus-registry-fetch-message-id-fast article))
(marks (when id (gnus-registry-get-id-key id 'mark))))
- (when (interactive-p)
+ (when (gmm-called-interactively-p 'any)
(gnus-message 1 "Marks are %S" marks))
marks))
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index b7061960839..4a47b738134 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -33,6 +33,7 @@
(require 'gnus-win)
(require 'message)
(require 'score-mode)
+(require 'gmm-utils)
(defcustom gnus-global-score-files nil
"List of global score files and directories.
@@ -1718,33 +1719,37 @@ score in `gnus-newsgroup-scored' by SCORE."
nil)
(defun gnus-score-decode-text-parts ()
- (labels ((mm-text-parts (handle)
- (cond ((stringp (car handle))
- (let ((parts (mapcan #'mm-text-parts (cdr handle))))
- (if (equal "multipart/alternative" (car handle))
- ;; pick the first supported alternative
- (list (car parts))
- parts)))
-
- ((bufferp (car handle))
- (when (string-match "^text/" (mm-handle-media-type handle))
- (list handle)))
-
- (t (mapcan #'mm-text-parts handle))))
- (my-mm-display-part (handle)
- (when handle
- (save-restriction
- (narrow-to-region (point) (point))
- (mm-display-inline handle)
- (goto-char (point-max))))))
+ (gmm-labels
+ ((mm-text-parts
+ (handle)
+ (cond ((stringp (car handle))
+ (let ((parts (apply #'append
+ (mapcar #'mm-text-parts (cdr handle)))))
+ (if (equal "multipart/alternative" (car handle))
+ ;; pick the first supported alternative
+ (list (car parts))
+ parts)))
+
+ ((bufferp (car handle))
+ (when (string-match "^text/" (mm-handle-media-type handle))
+ (list handle)))
+
+ (t (apply #'append (mapcar #'mm-text-parts handle)))))
+ (my-mm-display-part
+ (handle)
+ (when handle
+ (save-restriction
+ (narrow-to-region (point) (point))
+ (mm-display-inline handle)
+ (goto-char (point-max))))))
(let (;(mm-text-html-renderer 'w3m-standalone)
- (handles (mm-dissect-buffer t)))
+ (handles (mm-dissect-buffer t)))
(save-excursion
- (article-goto-body)
- (delete-region (point) (point-max))
- (mapc #'my-mm-display-part (mm-text-parts handles))
- handles))))
+ (article-goto-body)
+ (delete-region (point) (point-max))
+ (mapc #'my-mm-display-part (mm-text-parts handles))
+ handles))))
(defun gnus-score-body (scores header now expire &optional trace)
(if gnus-agent-fetching
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index eaf17d9e579..a8b6c5b4816 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -395,7 +395,15 @@ This hook is called after Gnus is connected to the NNTP server."
(defcustom gnus-before-startup-hook nil
"A hook called before startup.
-This hook is called as the first thing when Gnus is started."
+This hook is called as the first thing when Gnus is started.
+See also `gnus-before-resume-hook'."
+ :group 'gnus-start
+ :type 'hook)
+
+(defcustom gnus-before-resume-hook nil
+ "A hook called before resuming Gnus after suspend.
+This hook is called as the first thing when Gnus is resumed after a suspend.
+See also `gnus-before-startup-hook'."
:group 'gnus-start
:type 'hook)
@@ -749,6 +757,7 @@ prompt the user for the name of an NNTP server to use."
(if (gnus-alive-p)
(progn
+ (gnus-run-hooks 'gnus-before-resume-hook)
(switch-to-buffer gnus-group-buffer)
(gnus-group-get-new-news
(and (numberp arg)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index b44b953bec6..1d4f470aea2 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -1911,7 +1911,7 @@ increase the score of each group you read."
"a" gnus-summary-post-news
"x" gnus-summary-limit-to-unread
"s" gnus-summary-isearch-article
- [tab] gnus-summary-widget-forward
+ "\t" gnus-summary-widget-forward
[backtab] gnus-summary-widget-backward
"t" gnus-summary-toggle-header
"g" gnus-summary-show-article
@@ -2076,7 +2076,7 @@ increase the score of each group you read."
"W" gnus-warp-to-article
"g" gnus-summary-show-article
"s" gnus-summary-isearch-article
- [tab] gnus-summary-widget-forward
+ "\t" gnus-summary-widget-forward
[backtab] gnus-summary-widget-backward
"P" gnus-summary-print-article
"S" gnus-sticky-article
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
index b5f8379e367..0ec9fedffe3 100644
--- a/lisp/gnus/gnus-sync.el
+++ b/lisp/gnus/gnus-sync.el
@@ -109,6 +109,13 @@ this setting is harmless until the user chooses a sync backend."
:group 'gnus-sync
:type '(repeat regexp))
+(defcustom gnus-sync-newsrc-offsets '(2 3)
+ "List of per-group data to be synchronized."
+ :group 'gnus-sync
+ :version "24.4"
+ :type '(set (const :tag "Read ranges" 2)
+ (const :tag "Marks" 3)))
+
(defcustom gnus-sync-global-vars nil
"List of global variables to be synchronized.
You may want to sync `gnus-newsrc-last-checked-date' but pretty
@@ -169,16 +176,15 @@ and `gnus-topic-alist'. Also see `gnus-variable-list'."
(defun gnus-sync-lesync-call (url method headers &optional kvdata)
"Make an access request to URL using KVDATA and METHOD.
KVDATA must be an alist."
- (flet ((json-alist-p (list) (gnus-sync-json-alist-p list))) ; temp patch
- (let ((url-request-method method)
- (url-request-extra-headers headers)
- (url-request-data (if kvdata (json-encode kvdata) nil)))
- (with-current-buffer (url-retrieve-synchronously url)
- (let ((data (gnus-sync-lesync-parse)))
- (gnus-message 12 "gnus-sync-lesync-call: %s URL %s sent %S got %S"
- method url `((headers . ,headers) (data ,kvdata)) data)
- (kill-buffer (current-buffer))
- data)))))
+ (let ((url-request-method method)
+ (url-request-extra-headers headers)
+ (url-request-data (if kvdata (json-encode kvdata) nil)))
+ (with-current-buffer (url-retrieve-synchronously url)
+ (let ((data (gnus-sync-lesync-parse)))
+ (gnus-message 12 "gnus-sync-lesync-call: %s URL %s sent %S got %S"
+ method url `((headers . ,headers) (data ,kvdata)) data)
+ (kill-buffer (current-buffer))
+ data))))
(defun gnus-sync-lesync-PUT (url headers &optional data)
(gnus-sync-lesync-call url "PUT" headers data))
@@ -743,7 +749,15 @@ With a prefix, FORCE is set and all groups will be saved."
;; entry in gnus-newsrc-alist whose group matches any of the
;; gnus-sync-newsrc-groups
;; TODO: keep the old contents for groups we don't have!
- (let ((gnus-sync-newsrc-loader (gnus-sync-newsrc-loader-builder)))
+ (let ((gnus-sync-newsrc-loader
+ (loop for entry in (cdr gnus-newsrc-alist)
+ when (gnus-grep-in-list
+ (car entry) ;the group name
+ gnus-sync-newsrc-groups)
+ collect (cons (car entry)
+ (mapcar (lambda (offset)
+ (cons offset (nth offset entry)))
+ gnus-sync-newsrc-offsets)))))
(with-temp-file gnus-sync-backend
(progn
(let ((coding-system-for-write gnus-ding-file-coding-system)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index f5e1077f8c4..7b1e2b5c792 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1938,27 +1938,6 @@ to case differences."
(string-equal (downcase str1) (downcase prefix))
(string-equal str1 prefix))))))
-(eval-and-compile
- (if (fboundp 'macroexpand-all)
- (defalias 'gnus-macroexpand-all 'macroexpand-all)
- (defun gnus-macroexpand-all (form &optional environment)
- "Return result of expanding macros at all levels in FORM.
-If no macros are expanded, FORM is returned unchanged.
-The second optional arg ENVIRONMENT specifies an environment of macro
-definitions to shadow the loaded ones for use in file byte-compilation."
- (if (consp form)
- (let ((idx 1)
- (len (length (setq form (copy-sequence form))))
- expanded)
- (while (< idx len)
- (setcar (nthcdr idx form) (gnus-macroexpand-all (nth idx form)
- environment))
- (setq idx (1+ idx)))
- (if (eq (setq expanded (macroexpand form environment)) form)
- form
- (gnus-macroexpand-all expanded environment)))
- form))))
-
;; Simple check: can be a macro but this way, although slow, it's really clear.
;; We don't use `bound-and-true-p' because it's not in XEmacs.
(defun gnus-bound-and-true-p (sym)
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 8fbde5c8ecc..70e7f711f3d 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -4348,6 +4348,14 @@ server."
(interactive "P")
(gnus arg nil 'slave))
+(defun gnus-delete-gnus-frame ()
+ "Delete gnus frame unless it is the only one.
+Used for `gnus-exit-gnus-hook' in `gnus-other-frame'."
+ (when (and (frame-live-p gnus-other-frame-object)
+ (cdr (frame-list)))
+ (delete-frame gnus-other-frame-object))
+ (setq gnus-other-frame-object nil))
+
;;;###autoload
(defun gnus-other-frame (&optional arg display)
"Pop up a frame to read news.
@@ -4388,12 +4396,13 @@ current display is used."
(if alive
(switch-to-buffer gnus-group-buffer)
(funcall gnus-other-frame-function arg)
- (add-hook 'gnus-exit-gnus-hook
- (lambda nil
- (when (and (frame-live-p gnus-other-frame-object)
- (cdr (frame-list)))
- (delete-frame gnus-other-frame-object))
- (setq gnus-other-frame-object nil)))))))
+ (add-hook 'gnus-exit-gnus-hook 'gnus-delete-gnus-frame)
+ ;; One might argue that `gnus-delete-gnus-frame' should not be called
+ ;; from `gnus-suspend-gnus-hook', but, on the other hand, one might
+ ;; argue that it should. No matter what you think, for the sake of
+ ;; those who want it to be called from it, please keep (defun
+ ;; gnus-delete-gnus-frame) even if you remove the next `add-hook'.
+ (add-hook 'gnus-suspend-gnus-hook 'gnus-delete-gnus-frame)))))
;;;###autoload
(defun gnus (&optional arg dont-connect slave)
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 5a2b4334582..0e2c5debe4d 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -3137,22 +3137,10 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
(push-mark)
(message-position-on-field "Summary" "Subject"))
-(eval-when-compile
- (defmacro message-called-interactively-p (kind)
- (condition-case nil
- (progn
- (eval '(called-interactively-p 'any))
- ;; Emacs >=23.2
- `(called-interactively-p ,kind))
- ;; Emacs <23.2
- (wrong-number-of-arguments '(called-interactively-p))
- ;; XEmacs
- (void-function '(interactive-p)))))
-
(defun message-goto-body ()
"Move point to the beginning of the message body."
(interactive)
- (when (and (message-called-interactively-p 'any)
+ (when (and (gmm-called-interactively-p 'any)
(looking-at "[ \t]*\n"))
(expand-abbrev))
(push-mark)
@@ -8141,8 +8129,7 @@ regexp VARSTR."
(if (fboundp 'mail-abbrevs-setup)
(let ((minibuffer-setup-hook 'mail-abbrevs-setup)
(minibuffer-local-map message-minibuffer-local-map))
- (flet ((mail-abbrev-in-expansion-header-p nil t))
- (read-from-minibuffer prompt initial-contents)))
+ (read-from-minibuffer prompt initial-contents))
(let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook)
(minibuffer-local-map message-minibuffer-local-map))
(read-string prompt initial-contents))))
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index 04f90ee038d..9165e4193de 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -494,6 +494,18 @@ where DIFF is the difference between SCORE and 0.5."
(setcdr (nthcdr 14 result) nil)
result))
+(eval-when-compile
+ (defmacro spam-stat-called-interactively-p (kind)
+ (condition-case nil
+ (progn
+ (eval '(called-interactively-p 'any))
+ ;; Emacs >=23.2
+ `(called-interactively-p ,kind))
+ ;; Emacs <23.2
+ (wrong-number-of-arguments '(called-interactively-p))
+ ;; XEmacs
+ (void-function '(interactive-p)))))
+
(defun spam-stat-score-buffer ()
"Return a score describing the spam-probability for this buffer.
Add user supplied modifications if supplied."
@@ -511,7 +523,7 @@ Add user supplied modifications if supplied."
(error nil)))
(ans
(if score1s (+ score0 score1s) score0)))
- (when (interactive-p)
+ (when (spam-stat-called-interactively-p 'any)
(message "%S" ans))
ans))
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index c3be15adc1a..bacad983c78 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -2092,22 +2092,24 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(declare-function gnus-extract-address-components "gnus-util" (from))
(eval-and-compile
- (when (condition-case nil
- (progn
- (require 'bbdb)
- (require 'bbdb-com))
- (file-error
- ;; `bbdb-records' should not be bound as an autoload function
- ;; before loading bbdb because of `bbdb-hashtable-size'.
- (defalias 'bbdb-buffer 'ignore)
- (defalias 'bbdb-create-internal 'ignore)
- (defalias 'bbdb-records 'ignore)
- (defalias 'spam-BBDB-register-routine 'ignore)
- (defalias 'spam-enter-ham-BBDB 'ignore)
- (defalias 'spam-exists-in-BBDB-p 'ignore)
- (defalias 'bbdb-gethash 'ignore)
- nil))
+ (condition-case nil
+ (progn
+ (require 'bbdb)
+ (require 'bbdb-com))
+ (file-error
+ ;; `bbdb-records' should not be bound as an autoload function
+ ;; before loading bbdb because of `bbdb-hashtable-size'.
+ (defalias 'bbdb-buffer 'ignore)
+ (defalias 'bbdb-create-internal 'ignore)
+ (defalias 'bbdb-records 'ignore)
+ (defalias 'spam-BBDB-register-routine 'ignore)
+ (defalias 'spam-enter-ham-BBDB 'ignore)
+ (defalias 'spam-exists-in-BBDB-p 'ignore)
+ (defalias 'bbdb-gethash 'ignore)
+ nil)))
+(eval-and-compile
+ (when (featurep 'bbdb-com)
;; when the BBDB changes, we want to clear out our cache
(defun spam-clear-cache-BBDB (&rest immaterial)
(spam-clear-cache 'spam-use-BBDB))
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 59743124cc5..de875c72593 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -1,4 +1,4 @@
-;;; hi-lock.el --- minor mode for interactive automatic highlighting
+;;; hi-lock.el --- minor mode for interactive automatic highlighting -*- lexical-binding: t -*-
;; Copyright (C) 2000-2012 Free Software Foundation, Inc.
@@ -135,6 +135,13 @@ patterns."
;; It can have a function value.
(put 'hi-lock-file-patterns-policy 'risky-local-variable t)
+(defcustom hi-lock-auto-select-face nil
+ "Non-nil if highlighting commands should not prompt for face names.
+When non-nil, each hi-lock command will cycle through faces in
+`hi-lock-face-defaults' without prompting."
+ :type 'boolean
+ :version "24.4")
+
(defgroup hi-lock-faces nil
"Faces for hi-lock."
:group 'hi-lock
@@ -198,11 +205,13 @@ patterns."
"Face for hi-lock mode."
:group 'hi-lock-faces)
-(defvar hi-lock-file-patterns nil
+(defvar-local hi-lock-file-patterns nil
"Patterns found in file for hi-lock. Should not be changed.")
+(put 'hi-lock-file-patterns 'permanent-local t)
-(defvar hi-lock-interactive-patterns nil
+(defvar-local hi-lock-interactive-patterns nil
"Patterns provided to hi-lock by user. Should not be changed.")
+(put 'hi-lock-interactive-patterns 'permanent-local t)
(define-obsolete-variable-alias 'hi-lock-face-history
'hi-lock-face-defaults "23.1")
@@ -211,9 +220,6 @@ patterns."
"hi-blue-b" "hi-red-b" "hi-green-b" "hi-black-hb")
"Default faces for hi-lock interactive functions.")
-;;(dolist (f hi-lock-face-defaults)
-;; (unless (facep f) (error "%s not a face" f)))
-
(define-obsolete-variable-alias 'hi-lock-regexp-history
'regexp-history
"23.1")
@@ -232,11 +238,6 @@ that older functionality. This variable avoids multiple reminders.")
Assumption is made if `hi-lock-mode' used in the *scratch* buffer while
a library is being loaded.")
-(make-variable-buffer-local 'hi-lock-interactive-patterns)
-(put 'hi-lock-interactive-patterns 'permanent-local t)
-(make-variable-buffer-local 'hi-lock-file-patterns)
-(put 'hi-lock-file-patterns 'permanent-local t)
-
(defvar hi-lock-menu
(let ((map (make-sparse-keymap "Hi Lock")))
(define-key-after map [highlight-regexp]
@@ -463,56 +464,93 @@ updated as you type."
(declare-function x-popup-menu "menu.c" (position menu))
+(defun hi-lock--regexps-at-point ()
+ (let ((regexps '()))
+ ;; When using overlays, there is no ambiguity on the best
+ ;; choice of regexp.
+ (let ((regexp (get-char-property (point) 'hi-lock-overlay-regexp)))
+ (when regexp (push regexp regexps)))
+ ;; With font-locking on, check if the cursor is on an highlighted text.
+ ;; Checking for hi-lock face is a good heuristic. FIXME: use "hi-lock-".
+ (and (string-match "\\`hi-" (face-name (face-at-point)))
+ (let* ((hi-text
+ (buffer-substring-no-properties
+ (previous-single-property-change (point) 'face)
+ (next-single-property-change (point) 'face))))
+ ;; Compute hi-lock patterns that match the
+ ;; highlighted text at point. Use this later in
+ ;; during completing-read.
+ (dolist (hi-lock-pattern hi-lock-interactive-patterns)
+ (let ((regexp (car hi-lock-pattern)))
+ (if (string-match regexp hi-text)
+ (push regexp regexps))))))
+ regexps))
+
+(defvar-local hi-lock--last-face nil)
+
;;;###autoload
(defalias 'unhighlight-regexp 'hi-lock-unface-buffer)
;;;###autoload
(defun hi-lock-unface-buffer (regexp)
"Remove highlighting of each match to REGEXP set by hi-lock.
Interactively, prompt for REGEXP, accepting only regexps
-previously inserted by hi-lock interactive functions."
+previously inserted by hi-lock interactive functions.
+If REGEXP is t (or if \\[universal-argument] was specified interactively),
+then remove all hi-lock highlighting."
(interactive
- (if (and (display-popup-menus-p)
- (listp last-nonmenu-event)
- use-dialog-box)
- (catch 'snafu
- (or
- (x-popup-menu
- t
- (cons
- `keymap
- (cons "Select Pattern to Unhighlight"
- (mapcar (lambda (pattern)
- (list (car pattern)
- (format
- "%s (%s)" (car pattern)
- (symbol-name
- (car
- (cdr (car (cdr (car (cdr pattern))))))))
- (cons nil nil)
- (car pattern)))
- hi-lock-interactive-patterns))))
- ;; If the user clicks outside the menu, meaning that they
- ;; change their mind, x-popup-menu returns nil, and
- ;; interactive signals a wrong number of arguments error.
- ;; To prevent that, we return an empty string, which will
- ;; effectively disable the rest of the function.
- (throw 'snafu '(""))))
- (let ((history-list (mapcar (lambda (p) (car p))
- hi-lock-interactive-patterns)))
- (unless hi-lock-interactive-patterns
- (error "No highlighting to remove"))
+ (cond
+ (current-prefix-arg (list t))
+ ((and (display-popup-menus-p)
+ (listp last-nonmenu-event)
+ use-dialog-box)
+ (catch 'snafu
+ (or
+ (x-popup-menu
+ t
+ (cons
+ `keymap
+ (cons "Select Pattern to Unhighlight"
+ (mapcar (lambda (pattern)
+ (list (car pattern)
+ (format
+ "%s (%s)" (car pattern)
+ (cadr (cadr (cadr pattern))))
+ (cons nil nil)
+ (car pattern)))
+ hi-lock-interactive-patterns))))
+ ;; If the user clicks outside the menu, meaning that they
+ ;; change their mind, x-popup-menu returns nil, and
+ ;; interactive signals a wrong number of arguments error.
+ ;; To prevent that, we return an empty string, which will
+ ;; effectively disable the rest of the function.
+ (throw 'snafu '("")))))
+ (t
+ ;; Un-highlighting triggered via keyboard action.
+ (unless hi-lock-interactive-patterns
+ (error "No highlighting to remove"))
+ ;; Infer the regexp to un-highlight based on cursor position.
+ (let* ((defaults (or (hi-lock--regexps-at-point)
+ (mapcar #'car hi-lock-interactive-patterns))))
(list
- (completing-read "Regexp to unhighlight: "
- hi-lock-interactive-patterns nil t
- (car (car hi-lock-interactive-patterns))
- (cons 'history-list 1))))))
- (let ((keyword (assoc regexp hi-lock-interactive-patterns)))
+ (completing-read (if (null defaults)
+ "Regexp to unhighlight: "
+ (format "Regexp to unhighlight (default %s): "
+ (car defaults)))
+ hi-lock-interactive-patterns
+ nil t nil nil defaults))))))
+ (dolist (keyword (if (eq regexp t) hi-lock-interactive-patterns
+ (list (assoc regexp hi-lock-interactive-patterns))))
(when keyword
+ (let ((face (cadr (cadr (cadr keyword)))))
+ ;; Make `face' the next one to use by default.
+ (setq hi-lock--last-face
+ (cadr (member (symbol-name face)
+ (reverse hi-lock-face-defaults)))))
(font-lock-remove-keywords nil (list keyword))
(setq hi-lock-interactive-patterns
(delq keyword hi-lock-interactive-patterns))
(remove-overlays
- nil nil 'hi-lock-overlay-regexp (hi-lock-string-serialize regexp))
+ nil nil 'hi-lock-overlay-regexp (hi-lock--hashcons regexp))
(when font-lock-fontified (font-lock-fontify-buffer)))))
;;;###autoload
@@ -567,23 +605,28 @@ not suitable."
regexp))
(defun hi-lock-read-face-name ()
- "Read face name from minibuffer with completion and history."
- (intern (completing-read
- "Highlight using face: "
- obarray 'facep t
- (cons (car hi-lock-face-defaults)
- (let ((prefix
- (try-completion
- (substring (car hi-lock-face-defaults) 0 1)
- hi-lock-face-defaults)))
- (if (and (stringp prefix)
- (not (equal prefix (car hi-lock-face-defaults))))
- (length prefix) 0)))
- 'face-name-history
- (cdr hi-lock-face-defaults))))
+ "Return face for interactive highlighting.
+When `hi-lock-auto-select-face' is non-nil, just return the next face.
+Otherwise, read face name from minibuffer with completion and history."
+ (let ((default (or (cadr (member hi-lock--last-face hi-lock-face-defaults))
+ (car hi-lock-face-defaults))))
+ (setq hi-lock--last-face
+ (if (and hi-lock-auto-select-face (not current-prefix-arg))
+ default
+ (completing-read
+ (format "Highlight using face (default %s): " default)
+ obarray 'facep t nil 'face-name-history
+ (append (member default hi-lock-face-defaults)
+ hi-lock-face-defaults))))
+ (unless (member hi-lock--last-face hi-lock-face-defaults)
+ (setq hi-lock-face-defaults
+ (append hi-lock-face-defaults (list hi-lock--last-face))))
+ (intern hi-lock--last-face)))
(defun hi-lock-set-pattern (regexp face)
"Highlight REGEXP with face FACE."
+ ;; Hashcons the regexp, so it can be passed to remove-overlays later.
+ (setq regexp (hi-lock--hashcons regexp))
(let ((pattern (list regexp (list 0 (list 'quote face) t))))
(unless (member pattern hi-lock-interactive-patterns)
(push pattern hi-lock-interactive-patterns)
@@ -591,8 +634,7 @@ not suitable."
(progn
(font-lock-add-keywords nil (list pattern) t)
(font-lock-fontify-buffer))
- (let* ((serial (hi-lock-string-serialize regexp))
- (range-min (- (point) (/ hi-lock-highlight-range 2)))
+ (let* ((range-min (- (point) (/ hi-lock-highlight-range 2)))
(range-max (+ (point) (/ hi-lock-highlight-range 2)))
(search-start
(max (point-min)
@@ -605,7 +647,7 @@ not suitable."
(while (re-search-forward regexp search-end t)
(let ((overlay (make-overlay (match-beginning 0) (match-end 0))))
(overlay-put overlay 'hi-lock-overlay t)
- (overlay-put overlay 'hi-lock-overlay-regexp serial)
+ (overlay-put overlay 'hi-lock-overlay-regexp regexp)
(overlay-put overlay 'face face))
(goto-char (match-end 0)))))))))
@@ -655,25 +697,14 @@ not suitable."
(font-lock-add-keywords nil hi-lock-file-patterns t)
(font-lock-add-keywords nil hi-lock-interactive-patterns t)))
-(defvar hi-lock-string-serialize-hash
- (make-hash-table :test 'equal)
- "Hash table used to assign unique numbers to strings.")
+(defvar hi-lock--hashcons-hash
+ (make-hash-table :test 'equal :weakness t)
+ "Hash table used to hash cons regexps.")
-(defvar hi-lock-string-serialize-serial 1
- "Number assigned to last new string in call to `hi-lock-string-serialize'.
-A string is considered new if it had not previously been used in a call to
-`hi-lock-string-serialize'.")
-
-(defun hi-lock-string-serialize (string)
- "Return unique serial number for STRING."
- (interactive)
- (let ((val (gethash string hi-lock-string-serialize-hash)))
- (if val val
- (puthash string
- (setq hi-lock-string-serialize-serial
- (1+ hi-lock-string-serialize-serial))
- hi-lock-string-serialize-hash)
- hi-lock-string-serialize-serial)))
+(defun hi-lock--hashcons (string)
+ "Return unique object equal to STRING."
+ (or (gethash string hi-lock--hashcons-hash)
+ (puthash string string hi-lock--hashcons-hash)))
(defun hi-lock-unload-function ()
"Unload the Hi-Lock library."
diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el
index 2f0a6e3af59..d2c69c70b75 100644
--- a/lisp/hippie-exp.el
+++ b/lisp/hippie-exp.el
@@ -199,6 +199,8 @@
(defvar he-search-window ())
+;;; Autoloaded for historical reasons (bug#12982)
+;;;###autoload
(defcustom hippie-expand-try-functions-list
'(try-complete-file-name-partially
try-complete-file-name
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index a4e3e339470..08d8c28816f 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -71,6 +71,11 @@
(make-obsolete-variable
'icomplete-prospects-length 'icomplete-prospects-height "23.1")
+(defcustom icomplete-separator " | "
+ "String used by icomplete to separate alternatives in the minibuffer."
+ :type 'string
+ :version "24.4")
+
;;;_* User Customization variables
(defcustom icomplete-prospects-height
;; 20 is an estimated common size for the prompt + minibuffer content, to
@@ -97,11 +102,6 @@ See `icomplete-delay-completions-threshold'."
:type 'integer
:group 'icomplete)
-(defcustom icomplete-show-key-bindings t
- "If non-nil, show key bindings as well as completion for sole matches."
- :type 'boolean
- :group 'icomplete)
-
(defcustom icomplete-minibuffer-setup-hook nil
"Icomplete-specific customization of minibuffer setup.
@@ -145,23 +145,6 @@ Use `icomplete-mode' function to set it up properly for incremental
minibuffer completion.")
(add-hook 'icomplete-post-command-hook 'icomplete-exhibit)
-(defun icomplete-get-keys (func-name)
- "Return strings naming keys bound to FUNC-NAME, or nil if none.
-Examines the prior, not current, buffer, presuming that current buffer
-is minibuffer."
- (when (commandp func-name)
- (save-excursion
- (let* ((sym (intern func-name))
- (buf (other-buffer nil t))
- (keys (with-current-buffer buf (where-is-internal sym))))
- (when keys
- (concat "<"
- (mapconcat 'key-description
- (sort keys
- #'(lambda (x y)
- (< (length x) (length y))))
- ", ")
- ">"))))))
;;;_ = icomplete-with-completion-tables
(defvar icomplete-with-completion-tables '(internal-complete-buffer)
"Specialized completion tables with which icomplete should operate.
@@ -169,6 +152,37 @@ is minibuffer."
Icomplete does not operate with any specialized completion tables
except those on this list.")
+(defvar icomplete-minibuffer-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map [?\M-\t] 'minibuffer-force-complete)
+ (define-key map [?\C-j] 'minibuffer-force-complete-and-exit)
+ (define-key map [?\C-s] 'icomplete-forward-completions)
+ (define-key map [?\C-r] 'icomplete-backward-completions)
+ map))
+
+(defun icomplete-forward-completions ()
+ "Step forward completions by one entry.
+Second entry becomes the first and can be selected with
+`minibuffer-force-complete-and-exit'."
+ (interactive)
+ (let* ((comps (completion-all-sorted-completions))
+ (last (last comps)))
+ (setcdr last (cons (car comps) (cdr last)))
+ (completion--cache-all-sorted-completions (cdr comps))))
+
+(defun icomplete-backward-completions ()
+ "Step backward completions by one entry.
+Last entry becomes the first and can be selected with
+`minibuffer-force-complete-and-exit'."
+ (interactive)
+ (let* ((comps (completion-all-sorted-completions))
+ (last-but-one (last comps 2))
+ (last (cdr last-but-one)))
+ (when last
+ (setcdr last-but-one (cdr last))
+ (push (car last) comps)
+ (completion--cache-all-sorted-completions comps))))
+
;;;_ > icomplete-mode (&optional prefix)
;;;###autoload
(define-minor-mode icomplete-mode
@@ -208,6 +222,8 @@ Conditions are:
Usually run by inclusion in `minibuffer-setup-hook'."
(when (and icomplete-mode (icomplete-simple-completing-p))
(set (make-local-variable 'completion-show-inline-help) nil)
+ (use-local-map (make-composed-keymap icomplete-minibuffer-map
+ (current-local-map)))
(add-hook 'pre-command-hook
(lambda () (let ((non-essential t))
(run-hooks 'icomplete-pre-command-hook)))
@@ -239,27 +255,29 @@ and `minibuffer-setup-hook'."
(goto-char (point-max))
; Insert the match-status information:
(if (and (> (point-max) (minibuffer-prompt-end))
- buffer-undo-list ; Wait for some user input.
- (or
- ;; Don't bother with delay after certain number of chars:
- (> (- (point) (field-beginning)) icomplete-max-delay-chars)
- ;; Don't delay if alternatives number is small enough:
- (and (sequencep minibuffer-completion-table)
- (< (length minibuffer-completion-table)
- icomplete-delay-completions-threshold))
- ;; Delay - give some grace time for next keystroke, before
+ buffer-undo-list ; Wait for some user input.
+ (or
+ ;; Don't bother with delay after certain number of chars:
+ (> (- (point) (field-beginning)) icomplete-max-delay-chars)
+ ;; Don't delay if the completions are known.
+ completion-all-sorted-completions
+ ;; Don't delay if alternatives number is small enough:
+ (and (sequencep minibuffer-completion-table)
+ (< (length minibuffer-completion-table)
+ icomplete-delay-completions-threshold))
+ ;; Delay - give some grace time for next keystroke, before
;; embarking on computing completions:
(sit-for icomplete-compute-delay)))
(let ((text (while-no-input
- (icomplete-completions
- (field-string)
- minibuffer-completion-table
- minibuffer-completion-predicate
+ (icomplete-completions
+ (field-string)
+ minibuffer-completion-table
+ minibuffer-completion-predicate
(not minibuffer-completion-confirm))))
(buffer-undo-list t)
deactivate-mark)
;; Do nothing if while-no-input was aborted.
- (when (stringp text)
+ (when (stringp text)
(move-overlay icomplete-overlay (point) (point) (current-buffer))
;; The current C cursor code doesn't know to use the overlay's
;; marker's stickiness to figure out whether to place the cursor
@@ -365,17 +383,14 @@ are exhibited within the square braces.)"
(if prospects
(concat determ
"{"
- (and most-is-exact ",")
- (mapconcat 'identity (nreverse prospects) ",")
- (and limit ",...")
+ (and most-is-exact
+ (substring icomplete-separator
+ (string-match "[^ ]" icomplete-separator)))
+ (mapconcat 'identity (nreverse prospects)
+ icomplete-separator)
+ (and limit (concat icomplete-separator "…"))
"}")
- (concat determ
- " [Matched"
- (let ((keys (and icomplete-show-key-bindings
- (commandp (intern-soft most))
- (icomplete-get-keys most))))
- (if keys (concat "; " keys) ""))
- "]"))))))
+ (concat determ " [Matched]"))))))
;;_* Local emacs vars.
;;Local variables:
diff --git a/lisp/ido.el b/lisp/ido.el
index f4f9c27c847..7044fa496db 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -2389,7 +2389,10 @@ If cursor is not at the end of the user input, move to end of input."
(ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil ido-text 'ido-enter-insert-file))
((eq ido-exit 'dired)
- (dired (concat ido-current-directory (or ido-text ""))))
+ (funcall (cond ((eq method 'other-window) 'dired-other-window)
+ ((eq method 'other-frame) 'dired-other-frame)
+ (t 'dired))
+ (concat ido-current-directory (or ido-text ""))))
((eq ido-exit 'ffap)
(find-file-at-point))
diff --git a/lisp/info.el b/lisp/info.el
index b0ef5c6bc4d..4c7bb981afc 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1668,7 +1668,9 @@ escaped (\\\",\\\\)."
" ("
(if (stringp Info-current-file)
(replace-regexp-in-string
- "%" "%%" (file-name-nondirectory Info-current-file))
+ "%" "%%"
+ (file-name-sans-extension
+ (file-name-nondirectory Info-current-file)))
(format "*%S*" Info-current-file))
") "
(if Info-current-node
@@ -4032,7 +4034,9 @@ With a zero prefix arg, put the name inside a function call to `info'."
(unless Info-current-node
(user-error "No current Info node"))
(let ((node (if (stringp Info-current-file)
- (concat "(" (file-name-nondirectory Info-current-file) ") "
+ (concat "(" (file-name-sans-extension
+ (file-name-nondirectory Info-current-file))
+ ") "
Info-current-node))))
(if (zerop (prefix-numeric-value arg))
(setq node (concat "(info \"" node "\")")))
@@ -4419,7 +4423,8 @@ first line or header line, and for breadcrumb links.")
(if (not (equal node "Top")) node
(format "(%s)Top"
(if (stringp Info-current-file)
- (file-name-nondirectory Info-current-file)
+ (file-name-sans-extension
+ (file-name-nondirectory Info-current-file))
;; Some legacy code can still use a symbol.
Info-current-file)))))
(setq line (concat
@@ -4531,7 +4536,8 @@ first line or header line, and for breadcrumb links.")
(if (re-search-forward
(format "File: %s\\([^,\n\t]+\\),"
(if (stringp Info-current-file)
- (file-name-nondirectory Info-current-file)
+ (file-name-sans-extension
+ (file-name-nondirectory Info-current-file))
Info-current-file))
header-end t)
(put-text-property (match-beginning 1) (match-end 1)
@@ -4826,8 +4832,8 @@ first line or header line, and for breadcrumb links.")
;; Hide empty lines at the end of the node.
(goto-char (point-max))
(skip-chars-backward "\n")
- (when (< (1+ (point)) (point-max))
- (put-text-property (1+ (point)) (point-max) 'invisible t))
+ (when (< (point) (1- (point-max)))
+ (put-text-property (point) (1- (point-max)) 'invisible t))
(set-buffer-modified-p nil))))
@@ -5069,7 +5075,8 @@ BUFFER is the buffer speedbar is requesting buttons for."
"This implements the `bookmark-make-record-function' type (which see)
for Info nodes."
(let* ((file (and (stringp Info-current-file)
- (file-name-nondirectory Info-current-file)))
+ (file-name-sans-extension
+ (file-name-nondirectory Info-current-file))))
(bookmark-name (if file
(concat "(" file ") " Info-current-node)
Info-current-node))
@@ -5097,8 +5104,16 @@ type returned by `Info-bookmark-make-record', which see."
;;;###autoload
(defun info-display-manual (manual)
- "Go to Info buffer that displays MANUAL, creating it if none already exists."
- (interactive "sManual name: ")
+ "Display an Info buffer displaying MANUAL.
+If there is an existing Info buffer for MANUAL, display it.
+Otherwise, visit the manual in a new Info buffer."
+ (interactive
+ (list
+ (progn
+ (info-initialize)
+ (completing-read "Manual name: "
+ (info--manual-names)
+ nil t))))
(let ((blist (buffer-list))
(manual-re (concat "\\(/\\|\\`\\)" manual "\\(\\.\\|\\'\\)"))
(case-fold-search t)
@@ -5113,7 +5128,22 @@ type returned by `Info-bookmark-make-record', which see."
(if found
(switch-to-buffer found)
(info-initialize)
- (info (Info-find-file manual)))))
+ (info (Info-find-file manual)
+ (generate-new-buffer-name "*info*")))))
+
+(defun info--manual-names ()
+ (let (names)
+ (dolist (buffer (buffer-list))
+ (with-current-buffer buffer
+ (and (eq major-mode 'Info-mode)
+ (stringp Info-current-file)
+ (push (file-name-sans-extension
+ (file-name-nondirectory Info-current-file))
+ names))))
+ (delete-dups (append (nreverse names)
+ (apply-partially 'Info-read-node-name-2
+ Info-directory-list
+ (mapcar 'car Info-suffix-list))))))
(provide 'info)
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index e4743ada045..75d1bbbad6b 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -109,6 +109,7 @@ Otherwise, it is nil.")
"Return information about the compression scheme of FILENAME.
The determination as to which compression scheme, if any, to use is
based on the filename itself and `jka-compr-compression-info-list'."
+ (setq filename (file-name-sans-versions filename))
(catch 'compression-info
(let ((case-fold-search nil))
(dolist (x jka-compr-compression-info-list)
@@ -191,19 +192,6 @@ options through Custom does this automatically."
;; I have this defined so that .Z files are assumed to be in unix
;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt.
-
-;; FIXME? It seems ugly that one has to add "\\(~\\|\\.~[0-9]+~\\)?" to
-;; all the regexps here, in order to match backup files etc.
-;; It's trivial to modify jka-compr-get-compression-info to match
-;; regexps against file-name-sans-versions, but this regexp is also
-;; used to build a file-name-handler-alist entry.
-;; find-file-name-handler does not use file-name-sans-versions.
-;; Perhaps it should,
-;; http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg00812.html,
-;; but it's used all over the place and there are probably other ramifications.
-;; One could modify jka-compr-build-file-regexp to add the backup regexp,
-;; but jka-compr-compression-info-list is a defcustom to which
-;; anything could be added, so it's easiest to leave things as they are.
(defcustom jka-compr-compression-info-list
;;[regexp
;; compr-message compr-prog compr-args
@@ -310,6 +298,7 @@ variables. Setting this through Custom does that automatically."
(boolean :tag "Strip Extension")
(string :tag "Magic Bytes")))
:set 'jka-compr-set
+ :version "24.1" ; removed version extension piece
:group 'jka-compr)
(defcustom jka-compr-mode-alist-additions
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 876402f6fff..095a7229c60 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -5,7 +5,7 @@
;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
-;;;;;; "play/5x5.el" (20545 57511 257469 0))
+;;;;;; "play/5x5.el" (20545 60086 510404 0))
;;; Generated autoloads from play/5x5.el
(autoload '5x5 "5x5" "\
@@ -68,7 +68,7 @@ should return a grid vector array that is the new solution.
;;;***
;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el"
-;;;;;; (20576 42138 697312 0))
+;;;;;; (20576 17415 279992 225000))
;;; Generated autoloads from progmodes/ada-mode.el
(autoload 'ada-add-extensions "ada-mode" "\
@@ -88,7 +88,7 @@ Ada mode is the major mode for editing Ada code.
;;;***
;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/ada-stmt.el
(autoload 'ada-header "ada-stmt" "\
@@ -99,7 +99,7 @@ Insert a descriptive header at the top of the file.
;;;***
;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el"
-;;;;;; (20458 56750 651721 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/ada-xref.el
(autoload 'ada-find-file "ada-xref" "\
@@ -114,15 +114,16 @@ Completion is available.
;;;;;; add-change-log-entry-other-window add-change-log-entry find-change-log
;;;;;; prompt-for-change-log-name add-log-mailing-address add-log-full-name
;;;;;; add-log-current-defun-function) "add-log" "vc/add-log.el"
-;;;;;; (20586 48936 135199 0))
+;;;;;; (20665 35316 344720 209000))
;;; Generated autoloads from vc/add-log.el
(put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
(defvar add-log-current-defun-function nil "\
If non-nil, function to guess name of surrounding function.
-It is used by `add-log-current-defun' in preference to built-in rules.
-Returns function's name as a string, or nil if outside a function.")
+It is called by `add-log-current-defun' with no argument, and
+should return the function's name as a string, or nil if point is
+outside a function.")
(custom-autoload 'add-log-current-defun-function "add-log" t)
@@ -213,15 +214,6 @@ Runs `change-log-mode-hook'.
\(fn)" t nil)
-(defvar add-log-lisp-like-modes '(emacs-lisp-mode lisp-mode scheme-mode dsssl-mode lisp-interaction-mode) "\
-Modes that look like Lisp to `add-log-current-defun'.")
-
-(defvar add-log-c-like-modes '(c-mode c++-mode c++-c-mode objc-mode) "\
-Modes that look like C to `add-log-current-defun'.")
-
-(defvar add-log-tex-like-modes '(TeX-mode plain-TeX-mode LaTeX-mode tex-mode) "\
-Modes that look like TeX to `add-log-current-defun'.")
-
(autoload 'add-log-current-defun "add-log" "\
Return name of function definition point is in, or nil.
@@ -253,7 +245,7 @@ old-style time formats for entries are supported.
;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice
;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action)
-;;;;;; "advice" "emacs-lisp/advice.el" (20618 55210 422086 0))
+;;;;;; "advice" "emacs-lisp/advice.el" (20660 26176 137583 0))
;;; Generated autoloads from emacs-lisp/advice.el
(defvar ad-redefinition-action 'warn "\
@@ -352,7 +344,7 @@ POSITION ::= `first' | `last' | NUMBER. Optional, defaults to `first',
ARGLIST ::= An optional argument list to be used for the advised function
instead of the argument list of the original. The first one found in
before/around/after-advices will be used.
-FLAG ::= `protect'|`disable'|`activate'|`compile'|`preactivate'|`freeze'.
+FLAG ::= `protect'|`disable'|`activate'|`compile'|`preactivate'.
All flags can be specified with unambiguous initial substrings.
DOCSTRING ::= Optional documentation for this piece of advice.
INTERACTIVE-FORM ::= Optional interactive form to be used for the advised
@@ -378,13 +370,6 @@ time. This generates a compiled advised definition according to the current
advice state that will be used during activation if appropriate. Only use
this if the `defadvice' gets actually compiled.
-`freeze': Expands the `defadvice' into a redefining `defun/defmacro' according
-to this particular single advice. No other advice information will be saved.
-Frozen advices cannot be undone, they behave like a hard redefinition of
-the advised function. `freeze' implies `activate' and `preactivate'. The
-documentation of the advised function can be dumped onto the `DOC' file
-during preloading.
-
See Info node `(elisp)Advising Functions' for comprehensive documentation.
usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
[DOCSTRING] [INTERACTIVE-FORM]
@@ -398,7 +383,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
;;;### (autoloads (align-newline-and-indent align-unhighlight-rule
;;;;;; align-highlight-rule align-current align-entire align-regexp
-;;;;;; align) "align" "align.el" (20566 63671 243798 0))
+;;;;;; align) "align" "align.el" (20566 45971 994610 911000))
;;; Generated autoloads from align.el
(autoload 'align "align" "\
@@ -489,7 +474,7 @@ A replacement function for `newline-and-indent', aligning as it goes.
;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation
;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el"
-;;;;;; (20577 33959 40183 0))
+;;;;;; (20652 52617 313760 0))
;;; Generated autoloads from allout.el
(autoload 'allout-auto-activation-helper "allout" "\
@@ -850,7 +835,7 @@ for details on preparing Emacs for automatic allout activation.
;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation
;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el"
-;;;;;; (20545 57511 257469 0))
+;;;;;; (20545 60086 510404 0))
;;; Generated autoloads from allout-widgets.el
(let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads))))
@@ -910,7 +895,7 @@ outline hot-spot navigation (see `allout-mode').
;;;***
;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp"
-;;;;;; "net/ange-ftp.el" (20566 63671 243798 0))
+;;;;;; "net/ange-ftp.el" (20566 46265 242622 534000))
;;; Generated autoloads from net/ange-ftp.el
(defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir)
@@ -932,7 +917,7 @@ directory, so that Emacs will know its current contents.
;;;***
;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
-;;;;;; "animate" "play/animate.el" (20545 57511 257469 0))
+;;;;;; "animate" "play/animate.el" (20545 60086 510404 0))
;;; Generated autoloads from play/animate.el
(autoload 'animate-string "animate" "\
@@ -965,7 +950,7 @@ the buffer *Birthday-Present-for-Name*.
;;;***
;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on)
-;;;;;; "ansi-color" "ansi-color.el" (20577 33959 40183 0))
+;;;;;; "ansi-color" "ansi-color.el" (20647 7982 429263 0))
;;; Generated autoloads from ansi-color.el
(autoload 'ansi-color-for-comint-mode-on "ansi-color" "\
@@ -991,8 +976,8 @@ This is a good function to put in `comint-output-filter-functions'.
;;;***
;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules)
-;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20566 63671 243798
-;;;;;; 0))
+;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20566 46627 290641
+;;;;;; 925000))
;;; Generated autoloads from progmodes/antlr-mode.el
(autoload 'antlr-show-makefile-rules "antlr-mode" "\
@@ -1028,7 +1013,7 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'.
;;;***
;;;### (autoloads (appt-activate appt-add) "appt" "calendar/appt.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from calendar/appt.el
(autoload 'appt-add "appt" "\
@@ -1051,8 +1036,8 @@ ARG is positive, otherwise off.
;;;### (autoloads (apropos-documentation apropos-value apropos-library
;;;;;; apropos apropos-documentation-property apropos-command apropos-variable
-;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20523 62082
-;;;;;; 997685 0))
+;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from apropos.el
(autoload 'apropos-read-pattern "apropos" "\
@@ -1160,8 +1145,8 @@ Returns list of symbols and documentation found.
;;;***
-;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20614
-;;;;;; 54428 654267 0))
+;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20647
+;;;;;; 7982 429263 0))
;;; Generated autoloads from arc-mode.el
(autoload 'archive-mode "arc-mode" "\
@@ -1181,7 +1166,7 @@ archive.
;;;***
-;;;### (autoloads (array-mode) "array" "array.el" (20355 10021 546955
+;;;### (autoloads (array-mode) "array" "array.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from array.el
@@ -1253,8 +1238,8 @@ Entering array mode calls the function `array-mode-hook'.
;;;***
-;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20513
-;;;;;; 18948 537867 0))
+;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from textmodes/artist.el
(autoload 'artist-mode "artist" "\
@@ -1459,8 +1444,8 @@ Keymap summary
;;;***
-;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from progmodes/asm-mode.el
(autoload 'asm-mode "asm-mode" "\
@@ -1488,7 +1473,7 @@ Special commands:
;;;***
;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el"
-;;;;;; (20544 36659 880486 0))
+;;;;;; (20545 60086 510404 0))
;;; Generated autoloads from gnus/auth-source.el
(defvar auth-source-cache-expiry 7200 "\
@@ -1501,7 +1486,7 @@ let-binding.")
;;;***
;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from autoarg.el
(defvar autoarg-mode nil "\
@@ -1562,7 +1547,7 @@ This is similar to `autoarg-mode' but rebinds the keypad keys
;;;***
;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el"
-;;;;;; (20513 18948 537867 0))
+;;;;;; (20665 31909 588757 472000))
;;; Generated autoloads from progmodes/autoconf.el
(autoload 'autoconf-mode "autoconf" "\
@@ -1573,7 +1558,7 @@ Major mode for editing Autoconf configure.ac files.
;;;***
;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert)
-;;;;;; "autoinsert" "autoinsert.el" (20566 63671 243798 0))
+;;;;;; "autoinsert" "autoinsert.el" (20566 45969 322610 468000))
;;; Generated autoloads from autoinsert.el
(autoload 'auto-insert "autoinsert" "\
@@ -1613,7 +1598,7 @@ insert a template for the file depending on the mode of the buffer.
;;;### (autoloads (batch-update-autoloads update-directory-autoloads
;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el"
-;;;;;; (20594 43050 277913 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from emacs-lisp/autoload.el
(put 'generated-autoload-file 'safe-local-variable 'stringp)
@@ -1664,7 +1649,7 @@ should be non-nil).
;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode
;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode)
-;;;;;; "autorevert" "autorevert.el" (20476 31768 298871 0))
+;;;;;; "autorevert" "autorevert.el" (20629 14541 236054 412000))
;;; Generated autoloads from autorevert.el
(autoload 'auto-revert-mode "autorevert" "\
@@ -1753,7 +1738,7 @@ specifies in the mode line.
;;;***
;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid"
-;;;;;; "avoid.el" (20593 22184 581574 0))
+;;;;;; "avoid.el" (20594 14884 858174 0))
;;; Generated autoloads from avoid.el
(defvar mouse-avoidance-mode nil "\
@@ -1794,7 +1779,7 @@ definition of \"random distance\".)
;;;***
;;;### (autoloads (display-battery-mode battery) "battery" "battery.el"
-;;;;;; (20594 43050 277913 0))
+;;;;;; (20595 33984 147078 0))
;;; Generated autoloads from battery.el
(put 'battery-mode-line-string 'risky-local-variable t)
@@ -1830,7 +1815,7 @@ seconds.
;;;***
;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run)
-;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20557 48712 315579
+;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20557 23173 326608
;;;;;; 0))
;;; Generated autoloads from emacs-lisp/benchmark.el
@@ -1868,7 +1853,7 @@ For non-interactive use see also `benchmark-run' and
;;;***
;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize)
-;;;;;; "bibtex" "textmodes/bibtex.el" (20576 13095 881042 0))
+;;;;;; "bibtex" "textmodes/bibtex.el" (20575 51581 109735 0))
;;; Generated autoloads from textmodes/bibtex.el
(autoload 'bibtex-initialize "bibtex" "\
@@ -1957,7 +1942,7 @@ A prefix arg negates the value of `bibtex-search-entry-globally'.
;;;***
;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from textmodes/bibtex-style.el
(autoload 'bibtex-style-mode "bibtex-style" "\
@@ -1969,7 +1954,7 @@ Major mode for editing BibTeX style files.
;;;### (autoloads (binhex-decode-region binhex-decode-region-external
;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from mail/binhex.el
(defconst binhex-begin-line "^:...............................................................$" "\
@@ -1993,8 +1978,8 @@ Binhex decode region between START and END.
;;;***
-;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20551
-;;;;;; 9899 283417 0))
+;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20552
+;;;;;; 25066 479417 0))
;;; Generated autoloads from play/blackbox.el
(autoload 'blackbox "blackbox" "\
@@ -2117,7 +2102,7 @@ a reflection.
;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert
;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate
;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark"
-;;;;;; "bookmark.el" (20618 55210 422086 0))
+;;;;;; "bookmark.el" (20629 57223 201983 433000))
;;; Generated autoloads from bookmark.el
(define-key ctl-x-r-map "b" 'bookmark-jump)
(define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2318,7 +2303,7 @@ Incremental search of bookmarks, hiding the non-matches as we go.
;;;;;; browse-url-xdg-open browse-url-at-mouse browse-url-at-point
;;;;;; browse-url browse-url-of-region browse-url-of-dired-file
;;;;;; browse-url-of-buffer browse-url-of-file browse-url-browser-function)
-;;;;;; "browse-url" "net/browse-url.el" (20566 63671 243798 0))
+;;;;;; "browse-url" "net/browse-url.el" (20566 46699 734641 18000))
;;; Generated autoloads from net/browse-url.el
(defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2634,7 +2619,7 @@ from `browse-url-elinks-wrapper'.
;;;***
;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next)
-;;;;;; "bs" "bs.el" (20576 13095 881042 0))
+;;;;;; "bs" "bs.el" (20574 57829 481502 235000))
;;; Generated autoloads from bs.el
(autoload 'bs-cycle-next "bs" "\
@@ -2674,8 +2659,8 @@ name of buffer configuration.
;;;***
-;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20566 63671
-;;;;;; 243798 0))
+;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20566 46646
+;;;;;; 562639 12000))
;;; Generated autoloads from play/bubbles.el
(autoload 'bubbles "bubbles" "\
@@ -2697,7 +2682,7 @@ columns on its right towards the left.
;;;***
;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference"
-;;;;;; "progmodes/bug-reference.el" (20593 22184 581574 0))
+;;;;;; "progmodes/bug-reference.el" (20594 14884 858174 0))
;;; Generated autoloads from progmodes/bug-reference.el
(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format)))))
@@ -2721,7 +2706,7 @@ Like `bug-reference-mode', but only buttonize in comments and strings.
;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile
;;;;;; compile-defun byte-compile-file byte-recompile-directory
;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning)
-;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20599 27513 576550 0))
+;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20656 14460 296991 0))
;;; Generated autoloads from emacs-lisp/bytecomp.el
(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2841,8 +2826,8 @@ and corresponding effects.
;;;***
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from calendar/cal-china.el
(put 'calendar-chinese-time-zone 'risky-local-variable t)
@@ -2851,8 +2836,8 @@ and corresponding effects.
;;;***
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20461 32935
-;;;;;; 300400 0))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from calendar/cal-dst.el
(put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2864,7 +2849,7 @@ and corresponding effects.
;;;***
;;;### (autoloads (calendar-hebrew-list-yahrzeits) "cal-hebrew" "calendar/cal-hebrew.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from calendar/cal-hebrew.el
(autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2880,8 +2865,8 @@ from the cursor position.
;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle
;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc
-;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20593
-;;;;;; 22184 581574 0))
+;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20655
+;;;;;; 4702 996292 0))
;;; Generated autoloads from calc/calc.el
(define-key ctl-x-map "*" 'calc-dispatch)
@@ -2965,8 +2950,8 @@ See Info node `(calc)Defining Functions'.
;;;***
-;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from calc/calc-undo.el
(autoload 'calc-undo "calc-undo" "\
@@ -2976,8 +2961,8 @@ See Info node `(calc)Defining Functions'.
;;;***
-;;;### (autoloads (calculator) "calculator" "calculator.el" (20476
-;;;;;; 31768 298871 0))
+;;;### (autoloads (calculator) "calculator" "calculator.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from calculator.el
(autoload 'calculator "calculator" "\
@@ -2988,8 +2973,8 @@ See the documentation for `calculator-mode' for more information.
;;;***
-;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20594
-;;;;;; 43050 277913 0))
+;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20595
+;;;;;; 33984 147078 0))
;;; Generated autoloads from calendar/calendar.el
(autoload 'calendar "calendar" "\
@@ -3033,7 +3018,7 @@ This function is suitable for execution in an init file.
;;;***
;;;### (autoloads (canlock-verify canlock-insert-header) "canlock"
-;;;;;; "gnus/canlock.el" (20355 10021 546955 0))
+;;;;;; "gnus/canlock.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/canlock.el
(autoload 'canlock-insert-header "canlock" "\
@@ -3051,7 +3036,7 @@ it fails.
;;;***
;;;### (autoloads (capitalized-words-mode) "cap-words" "progmodes/cap-words.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/cap-words.el
(autoload 'capitalized-words-mode "cap-words" "\
@@ -3090,15 +3075,15 @@ Obsoletes `c-forward-into-nomenclature'.
;;;***
-;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from progmodes/cc-compat.el
(put 'c-indent-level 'safe-local-variable 'integerp)
;;;***
;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
-;;;;;; (20557 48712 315579 0))
+;;;;;; (20656 14460 296991 0))
;;; Generated autoloads from progmodes/cc-engine.el
(autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3110,8 +3095,8 @@ Return the syntactic context of the current line.
;;;### (autoloads (c-guess-install c-guess-region-no-install c-guess-region
;;;;;; c-guess-buffer-no-install c-guess-buffer c-guess-no-install
-;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20355 10021
-;;;;;; 546955 0))
+;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from progmodes/cc-guess.el
(defvar c-guess-guessed-offsets-alist nil "\
@@ -3211,7 +3196,7 @@ the absolute file name of the file if STYLE-NAME is nil.
;;;### (autoloads (awk-mode pike-mode idl-mode java-mode objc-mode
;;;;;; c++-mode c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
-;;;;;; (20614 54428 654267 0))
+;;;;;; (20665 35573 592719 966000))
;;; Generated autoloads from progmodes/cc-mode.el
(autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3388,7 +3373,7 @@ Key bindings:
;;;***
;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles"
-;;;;;; "progmodes/cc-styles.el" (20566 63671 243798 0))
+;;;;;; "progmodes/cc-styles.el" (20566 46620 114637 614000))
;;; Generated autoloads from progmodes/cc-styles.el
(autoload 'c-set-style "cc-styles" "\
@@ -3439,8 +3424,8 @@ and exists only for compatibility reasons.
;;;***
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20595 63909
-;;;;;; 923329 0))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20596 57817
+;;;;;; 368875 0))
;;; Generated autoloads from progmodes/cc-vars.el
(put 'c-basic-offset 'safe-local-variable 'integerp)
(put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3450,7 +3435,7 @@ and exists only for compatibility reasons.
;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program
;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from international/ccl.el
(autoload 'ccl-compile "ccl" "\
@@ -3711,7 +3696,7 @@ See the documentation of `define-ccl-program' for the detail of CCL program.
;;;***
;;;### (autoloads (cconv-closure-convert) "cconv" "emacs-lisp/cconv.el"
-;;;;;; (20453 5437 764254 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/cconv.el
(autoload 'cconv-closure-convert "cconv" "\
@@ -3726,7 +3711,7 @@ Returns a form where all lambdas don't have any free variables.
;;;***
;;;### (autoloads (cfengine-auto-mode cfengine2-mode cfengine3-mode)
-;;;;;; "cfengine" "progmodes/cfengine.el" (20355 10021 546955 0))
+;;;;;; "cfengine" "progmodes/cfengine.el" (20533 50312 678915 0))
;;; Generated autoloads from progmodes/cfengine.el
(autoload 'cfengine3-mode "cfengine" "\
@@ -3756,7 +3741,7 @@ on the buffer contents
;;;***
;;;### (autoloads (check-declare-directory check-declare-file) "check-declare"
-;;;;;; "emacs-lisp/check-declare.el" (20378 29222 722320 0))
+;;;;;; "emacs-lisp/check-declare.el" (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/check-declare.el
(autoload 'check-declare-file "check-declare" "\
@@ -3781,7 +3766,7 @@ Returns non-nil if any false statements are found.
;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer
;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive
;;;;;; checkdoc-interactive checkdoc checkdoc-list-of-strings-p)
-;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20614 54428 654267 0))
+;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20647 7982 429263 0))
;;; Generated autoloads from emacs-lisp/checkdoc.el
(put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp)
(put 'checkdoc-force-history-flag 'safe-local-variable 'booleanp)
@@ -3977,7 +3962,7 @@ checking of documentation strings.
;;;### (autoloads (pre-write-encode-hz post-read-decode-hz encode-hz-buffer
;;;;;; encode-hz-region decode-hz-buffer decode-hz-region) "china-util"
-;;;;;; "language/china-util.el" (20355 10021 546955 0))
+;;;;;; "language/china-util.el" (20533 50312 678915 0))
;;; Generated autoloads from language/china-util.el
(autoload 'decode-hz-region "china-util" "\
@@ -4015,7 +4000,7 @@ Encode the text in the current buffer to HZ.
;;;***
;;;### (autoloads (command-history list-command-history repeat-matching-complex-command)
-;;;;;; "chistory" "chistory.el" (20355 10021 546955 0))
+;;;;;; "chistory" "chistory.el" (20533 50312 678915 0))
;;; Generated autoloads from chistory.el
(autoload 'repeat-matching-complex-command "chistory" "\
@@ -4055,7 +4040,7 @@ and runs the normal hook `command-history-hook'.
;;;***
;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/cl-indent.el
(autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4133,8 +4118,8 @@ For example, the function `case' has an indent property
;;;***
-;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20599 27513
-;;;;;; 576550 0))
+;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20648 29678
+;;;;;; 511980 0))
;;; Generated autoloads from emacs-lisp/cl-lib.el
(define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.3")
@@ -4162,7 +4147,7 @@ a future Emacs interpreter will be able to use it.")
;;;***
;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 46193 922619 203000))
;;; Generated autoloads from progmodes/cmacexp.el
(autoload 'c-macro-expand "cmacexp" "\
@@ -4182,8 +4167,8 @@ For use inside Lisp programs, see also `c-macro-expansion'.
;;;***
-;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from cmuscheme.el
(autoload 'run-scheme "cmuscheme" "\
@@ -4203,8 +4188,8 @@ is run).
;;;***
-;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20592 1317
-;;;;;; 691761 0))
+;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20650 61396
+;;;;;; 673885 0))
;;; Generated autoloads from color.el
(autoload 'color-name-to-rgb "color" "\
@@ -4226,7 +4211,7 @@ If FRAME cannot display COLOR, return nil.
;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command
;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
-;;;;;; (20594 43050 277913 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from comint.el
(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4326,7 +4311,7 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
;;;***
;;;### (autoloads (compare-windows) "compare-w" "vc/compare-w.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from vc/compare-w.el
(autoload 'compare-windows "compare-w" "\
@@ -4363,8 +4348,8 @@ on third call it again advances points to the next difference and so on.
;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
;;;;;; compile compilation-disable-input compile-command compilation-search-path
;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook
-;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20615
-;;;;;; 49194 141673 0))
+;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20666
+;;;;;; 61709 220674 0))
;;; Generated autoloads from progmodes/compile.el
(defvar compilation-mode-hook nil "\
@@ -4546,7 +4531,7 @@ This is the value of `next-error-function' in Compilation buffers.
;;;***
;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el"
-;;;;;; (20495 51111 757560 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from completion.el
(defvar dynamic-completion-mode nil "\
@@ -4571,7 +4556,7 @@ if ARG is omitted or nil.
;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode
;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode
;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from textmodes/conf-mode.el
(autoload 'conf-mode "conf-mode" "\
@@ -4727,7 +4712,7 @@ For details see `conf-mode'. Example:
;;;***
;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie)
-;;;;;; "cookie1" "play/cookie1.el" (20545 57511 257469 0))
+;;;;;; "cookie1" "play/cookie1.el" (20545 60086 510404 0))
;;; Generated autoloads from play/cookie1.el
(autoload 'cookie "cookie1" "\
@@ -4759,8 +4744,8 @@ Randomly permute the elements of VECTOR (all permutations equally likely).
;;;***
;;;### (autoloads (copyright-update-directory copyright copyright-fix-years
-;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20518
-;;;;;; 12580 46478 0))
+;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from emacs-lisp/copyright.el
(put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
(put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4799,8 +4784,8 @@ If FIX is non-nil, run `copyright-fix-years' instead.
;;;***
;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode)
-;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20512 60198 306109
-;;;;;; 0))
+;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20665 37088 368703
+;;;;;; 981000))
;;; Generated autoloads from progmodes/cperl-mode.el
(put 'cperl-indent-level 'safe-local-variable 'integerp)
(put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -4999,7 +4984,7 @@ Run a `perldoc' on the word around point.
;;;***
;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/cpp.el
(autoload 'cpp-highlight-buffer "cpp" "\
@@ -5018,7 +5003,7 @@ Edit display information for cpp conditionals.
;;;***
;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from emulation/crisp.el
(defvar crisp-mode nil "\
@@ -5044,7 +5029,7 @@ if ARG is omitted or nil.
;;;***
;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/crm.el
(autoload 'completing-read-multiple "crm" "\
@@ -5079,8 +5064,8 @@ INHERIT-INPUT-METHOD.
;;;***
-;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20478
-;;;;;; 3673 653810 0))
+;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20665
+;;;;;; 38640 856688 172000))
;;; Generated autoloads from textmodes/css-mode.el
(autoload 'css-mode "css-mode" "\
@@ -5091,7 +5076,7 @@ Major mode to edit Cascading Style Sheets.
;;;***
;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el"
-;;;;;; (20434 17809 692608 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emulation/cua-base.el
(defvar cua-mode nil "\
@@ -5151,7 +5136,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
;;;;;; customize-mode customize customize-push-and-save customize-save-variable
;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically
;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically)
-;;;;;; "cus-edit" "cus-edit.el" (20577 33959 40183 0))
+;;;;;; "cus-edit" "cus-edit.el" (20657 37717 602128 837000))
;;; Generated autoloads from cus-edit.el
(defvar custom-browse-sort-alphabetically nil "\
@@ -5463,8 +5448,8 @@ The format is suitable for use with `easy-menu-define'.
;;;***
;;;### (autoloads (customize-themes describe-theme custom-theme-visit-theme
-;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from cus-theme.el
(autoload 'customize-create-theme "cus-theme" "\
@@ -5498,7 +5483,7 @@ omitted, a buffer named *Custom Themes* is used.
;;;***
;;;### (autoloads (cvs-status-mode) "cvs-status" "vc/cvs-status.el"
-;;;;;; (20476 31768 298871 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from vc/cvs-status.el
(autoload 'cvs-status-mode "cvs-status" "\
@@ -5509,7 +5494,7 @@ Mode used for cvs status output.
;;;***
;;;### (autoloads (global-cwarn-mode cwarn-mode) "cwarn" "progmodes/cwarn.el"
-;;;;;; (20577 33959 40183 0))
+;;;;;; (20576 15647 691916 958000))
;;; Generated autoloads from progmodes/cwarn.el
(autoload 'cwarn-mode "cwarn" "\
@@ -5554,7 +5539,7 @@ See `cwarn-mode' for more information on Cwarn mode.
;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char
;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from language/cyril-util.el
(autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5583,7 +5568,7 @@ If the argument is nil, we return the display table to its standard state.
;;;***
;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el"
-;;;;;; (20397 45851 446679 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from dabbrev.el
(put 'dabbrev-case-fold-search 'risky-local-variable t)
(put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5630,7 +5615,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
;;;***
;;;### (autoloads (data-debug-new-buffer) "data-debug" "cedet/data-debug.el"
-;;;;;; (20586 48936 135199 0))
+;;;;;; (20585 42247 727488 570000))
;;; Generated autoloads from cedet/data-debug.el
(autoload 'data-debug-new-buffer "data-debug" "\
@@ -5640,8 +5625,8 @@ Create a new data-debug buffer with NAME.
;;;***
-;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20614
-;;;;;; 54428 654267 0))
+;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20615
+;;;;;; 22847 537904 0))
;;; Generated autoloads from net/dbus.el
(autoload 'dbus-handle-event "dbus" "\
@@ -5654,8 +5639,8 @@ If the HANDLER returns a `dbus-error', it is propagated as return message.
;;;***
-;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from progmodes/dcl-mode.el
(autoload 'dcl-mode "dcl-mode" "\
@@ -5782,7 +5767,7 @@ There is some minimal font-lock support (see vars
;;;***
;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug"
-;;;;;; "emacs-lisp/debug.el" (20609 10405 476026 0))
+;;;;;; "emacs-lisp/debug.el" (20647 7982 429263 0))
;;; Generated autoloads from emacs-lisp/debug.el
(setq debugger 'debug)
@@ -5796,7 +5781,7 @@ You may call with no args, or you may pass nil as the first arg and
any other args you like. In that case, the list of args after the
first will be printed into the backtrace buffer.
-\(fn &rest DEBUGGER-ARGS)" t nil)
+\(fn &rest ARGS)" t nil)
(autoload 'debug-on-entry "debug" "\
Request FUNCTION to invoke debugger each time it is called.
@@ -5826,7 +5811,7 @@ To specify a nil argument interactively, exit with an empty minibuffer.
;;;***
;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 45330 762583 402000))
;;; Generated autoloads from play/decipher.el
(autoload 'decipher "decipher" "\
@@ -5855,8 +5840,8 @@ The most useful commands are:
;;;***
;;;### (autoloads (delimit-columns-rectangle delimit-columns-region
-;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from delim-col.el
(autoload 'delimit-columns-customize "delim-col" "\
@@ -5880,8 +5865,8 @@ START and END delimits the corners of text rectangle.
;;;***
-;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from progmodes/delphi.el
(autoload 'delphi-mode "delphi" "\
@@ -5933,7 +5918,7 @@ with no args, if that value is non-nil.
;;;***
;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20613
-;;;;;; 49078 764749 0))
+;;;;;; 39767 44650 0))
;;; Generated autoloads from delsel.el
(defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5963,7 +5948,7 @@ any selection.
;;;***
;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode)
-;;;;;; "derived" "emacs-lisp/derived.el" (20577 33959 40183 0))
+;;;;;; "derived" "emacs-lisp/derived.el" (20661 34503 396141 0))
;;; Generated autoloads from emacs-lisp/derived.el
(autoload 'define-derived-mode "derived" "\
@@ -6030,7 +6015,7 @@ the first time the mode is used.
;;;***
;;;### (autoloads (describe-char describe-text-properties) "descr-text"
-;;;;;; "descr-text.el" (20530 32114 546307 0))
+;;;;;; "descr-text.el" (20660 26176 137583 0))
;;; Generated autoloads from descr-text.el
(autoload 'describe-text-properties "descr-text" "\
@@ -6067,7 +6052,7 @@ relevant to POS.
;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir
;;;;;; desktop-load-default desktop-read desktop-remove desktop-save
;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop"
-;;;;;; "desktop.el" (20577 33959 40183 0))
+;;;;;; "desktop.el" (20664 5610 38100 0))
;;; Generated autoloads from desktop.el
(defvar desktop-save-mode nil "\
@@ -6256,7 +6241,7 @@ Revert to the last loaded desktop.
;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article
;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines)
-;;;;;; "deuglify" "gnus/deuglify.el" (20355 10021 546955 0))
+;;;;;; "deuglify" "gnus/deuglify.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/deuglify.el
(autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -6289,7 +6274,7 @@ Deuglify broken Outlook (Express) articles and redisplay.
;;;***
;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
-;;;;;; "calendar/diary-lib.el" (20576 42138 697312 0))
+;;;;;; "calendar/diary-lib.el" (20668 15033 902481 0))
;;; Generated autoloads from calendar/diary-lib.el
(autoload 'diary "diary-lib" "\
@@ -6333,7 +6318,7 @@ Major mode for editing the diary file.
;;;### (autoloads (diff-buffer-with-file diff-latest-backup-file
;;;;;; diff-backup diff diff-command diff-switches) "diff" "vc/diff.el"
-;;;;;; (20570 60708 993668 0))
+;;;;;; (20570 39802 408146 846000))
;;; Generated autoloads from vc/diff.el
(defvar diff-switches (purecopy "-c") "\
@@ -6382,7 +6367,7 @@ This requires the external program `diff' to be in your `exec-path'.
;;;***
;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el"
-;;;;;; (20623 43301 870757 0))
+;;;;;; (20650 61396 673885 0))
;;; Generated autoloads from vc/diff-mode.el
(autoload 'diff-mode "diff-mode" "\
@@ -6414,7 +6399,7 @@ the mode if ARG is omitted or nil.
;;;***
-;;;### (autoloads (dig) "dig" "net/dig.el" (20355 10021 546955 0))
+;;;### (autoloads (dig) "dig" "net/dig.el" (20533 50312 678915 0))
;;; Generated autoloads from net/dig.el
(autoload 'dig "dig" "\
@@ -6426,8 +6411,8 @@ Optional arguments are passed to `dig-invoke'.
;;;***
;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window
-;;;;;; dired dired-listing-switches) "dired" "dired.el" (20619 46245
-;;;;;; 806932 0))
+;;;;;; dired dired-listing-switches) "dired" "dired.el" (20656 14460
+;;;;;; 296991 0))
;;; Generated autoloads from dired.el
(defvar dired-listing-switches (purecopy "-al") "\
@@ -6548,7 +6533,7 @@ Keybindings:
;;;***
;;;### (autoloads (dirtrack dirtrack-mode) "dirtrack" "dirtrack.el"
-;;;;;; (20399 35365 4050 0))
+;;;;;; (20648 29678 511980 0))
;;; Generated autoloads from dirtrack.el
(autoload 'dirtrack-mode "dirtrack" "\
@@ -6578,8 +6563,8 @@ from `default-directory'.
;;;***
-;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20497
-;;;;;; 6436 957082 0))
+;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from emacs-lisp/disass.el
(autoload 'disassemble "disass" "\
@@ -6598,7 +6583,7 @@ redefine OBJECT if it is a symbol.
;;;;;; standard-display-g1 standard-display-ascii standard-display-default
;;;;;; standard-display-8bit describe-current-display-table describe-display-table
;;;;;; set-display-table-slot display-table-slot make-display-table)
-;;;;;; "disp-table" "disp-table.el" (20355 10021 546955 0))
+;;;;;; "disp-table" "disp-table.el" (20533 50312 678915 0))
;;; Generated autoloads from disp-table.el
(autoload 'make-display-table "disp-table" "\
@@ -6720,7 +6705,7 @@ in `.emacs'.
;;;***
;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
-;;;;;; (20545 57511 257469 0))
+;;;;;; (20545 60086 510404 0))
;;; Generated autoloads from play/dissociate.el
(autoload 'dissociated-press "dissociate" "\
@@ -6736,8 +6721,8 @@ Default is 2.
;;;***
-;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from dnd.el
(defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\
@@ -6758,7 +6743,7 @@ if some action was made, or nil if the URL is ignored.")
;;;***
;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode"
-;;;;;; "textmodes/dns-mode.el" (20355 10021 546955 0))
+;;;;;; "textmodes/dns-mode.el" (20533 50312 678915 0))
;;; Generated autoloads from textmodes/dns-mode.el
(autoload 'dns-mode "dns-mode" "\
@@ -6782,8 +6767,8 @@ Locate SOA record and increment the serial field.
;;;***
;;;### (autoloads (doc-view-bookmark-jump doc-view-minor-mode doc-view-mode-maybe
-;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20581
-;;;;;; 31014 234484 0))
+;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20584
+;;;;;; 355 183605 0))
;;; Generated autoloads from doc-view.el
(autoload 'doc-view-mode-p "doc-view" "\
@@ -6829,8 +6814,8 @@ See the command `doc-view-mode' for more information on this mode.
;;;***
-;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20545 57511
-;;;;;; 257469 0))
+;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20545 60086
+;;;;;; 510404 0))
;;; Generated autoloads from play/doctor.el
(autoload 'doctor "doctor" "\
@@ -6840,8 +6825,8 @@ Switch to *doctor* buffer and start giving psychotherapy.
;;;***
-;;;### (autoloads (double-mode) "double" "double.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (double-mode) "double" "double.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from double.el
(autoload 'double-mode "double" "\
@@ -6857,8 +6842,8 @@ strings when pressed twice. See `double-map' for details.
;;;***
-;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20545 57511
-;;;;;; 257469 0))
+;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20545 60086
+;;;;;; 510404 0))
;;; Generated autoloads from play/dunnet.el
(autoload 'dunnet "dunnet" "\
@@ -6870,7 +6855,7 @@ Switch to *dungeon* buffer and start game.
;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap
;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode"
-;;;;;; "emacs-lisp/easy-mmode.el" (20574 57775 217760 0))
+;;;;;; "emacs-lisp/easy-mmode.el" (20573 55237 806451 754000))
;;; Generated autoloads from emacs-lisp/easy-mmode.el
(defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -7006,7 +6991,7 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define
;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20615
-;;;;;; 49194 141673 0))
+;;;;;; 25856 794590 959000))
;;; Generated autoloads from emacs-lisp/easymenu.el
(autoload 'easy-menu-define "easymenu" "\
@@ -7151,7 +7136,7 @@ To implement dynamic menus, either call this from
;;;;;; ebnf-eps-file ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer
;;;;;; ebnf-spool-file ebnf-spool-directory ebnf-print-region ebnf-print-buffer
;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps"
-;;;;;; "progmodes/ebnf2ps.el" (20566 63671 243798 0))
+;;;;;; "progmodes/ebnf2ps.el" (20566 46586 454636 778000))
;;; Generated autoloads from progmodes/ebnf2ps.el
(autoload 'ebnf-customize "ebnf2ps" "\
@@ -7425,8 +7410,8 @@ See `ebnf-style-database' documentation.
;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition
;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration
;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree
-;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20561
-;;;;;; 18280 338092 0))
+;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20562
+;;;;;; 52650 563777 0))
;;; Generated autoloads from progmodes/ebrowse.el
(autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7575,7 +7560,7 @@ Display statistics for a class tree.
;;;***
;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el"
-;;;;;; (20523 62082 997685 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from ebuff-menu.el
(autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7608,7 +7593,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
;;;***
;;;### (autoloads (Electric-command-history-redo-expression) "echistory"
-;;;;;; "echistory.el" (20355 10021 546955 0))
+;;;;;; "echistory.el" (20533 50312 678915 0))
;;; Generated autoloads from echistory.el
(autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7620,7 +7605,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
;;;***
;;;### (autoloads (ecomplete-setup) "ecomplete" "gnus/ecomplete.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/ecomplete.el
(autoload 'ecomplete-setup "ecomplete" "\
@@ -7630,8 +7615,8 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
;;;***
-;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20590 45996
-;;;;;; 129575 0))
+;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20590 37036
+;;;;;; 437844 0))
;;; Generated autoloads from cedet/ede.el
(defvar global-ede-mode nil "\
@@ -7658,7 +7643,7 @@ an EDE controlled project.
;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
-;;;;;; "emacs-lisp/edebug.el" (20594 43050 277913 0))
+;;;;;; "emacs-lisp/edebug.el" (20652 52617 313760 0))
;;; Generated autoloads from emacs-lisp/edebug.el
(defvar edebug-all-defs nil "\
@@ -7731,8 +7716,8 @@ Toggle edebugging of all forms.
;;;;;; ediff-merge-directories-with-ancestor ediff-merge-directories
;;;;;; ediff-directories3 ediff-directory-revisions ediff-directories
;;;;;; ediff-buffers3 ediff-buffers ediff-backup ediff-current-file
-;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20495 51111
-;;;;;; 757560 0))
+;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from vc/ediff.el
(autoload 'ediff-files "ediff" "\
@@ -7964,7 +7949,7 @@ With optional NODE, goes to that node.
;;;***
;;;### (autoloads (ediff-customize) "ediff-help" "vc/ediff-help.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from vc/ediff-help.el
(autoload 'ediff-customize "ediff-help" "\
@@ -7975,7 +7960,7 @@ With optional NODE, goes to that node.
;;;***
;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el"
-;;;;;; (20614 54428 654267 0))
+;;;;;; (20615 22847 537904 0))
;;; Generated autoloads from vc/ediff-mult.el
(autoload 'ediff-show-registry "ediff-mult" "\
@@ -7988,7 +7973,7 @@ Display Ediff's registry.
;;;***
;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe)
-;;;;;; "ediff-util" "vc/ediff-util.el" (20584 7212 455152 0))
+;;;;;; "ediff-util" "vc/ediff-util.el" (20584 355 183605 0))
;;; Generated autoloads from vc/ediff-util.el
(autoload 'ediff-toggle-multiframe "ediff-util" "\
@@ -8009,7 +7994,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see.
;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro
;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el"
-;;;;;; (20476 31768 298871 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from edmacro.el
(autoload 'edit-kbd-macro "edmacro" "\
@@ -8058,7 +8043,7 @@ or nil, use a compact 80-column format.
;;;***
;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt"
-;;;;;; "emulation/edt.el" (20566 63671 243798 0))
+;;;;;; "emulation/edt.el" (20566 46383 798627 826000))
;;; Generated autoloads from emulation/edt.el
(autoload 'edt-set-scroll-margins "edt" "\
@@ -8076,7 +8061,7 @@ Turn on EDT Emulation.
;;;***
;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from ehelp.el
(autoload 'with-electric-help "ehelp" "\
@@ -8113,7 +8098,7 @@ BUFFER is put back into its original major mode.
;;;***
;;;### (autoloads (customize-object) "eieio-custom" "emacs-lisp/eieio-custom.el"
-;;;;;; (20586 48936 135199 0))
+;;;;;; (20585 42108 911494 670000))
;;; Generated autoloads from emacs-lisp/eieio-custom.el
(autoload 'customize-object "eieio-custom" "\
@@ -8126,7 +8111,7 @@ Optional argument GROUP is the sub-group of slots to display.
;;;### (autoloads (eieio-describe-generic eieio-describe-constructor
;;;;;; eieio-describe-class eieio-browse) "eieio-opt" "emacs-lisp/eieio-opt.el"
-;;;;;; (20617 41641 89638 0))
+;;;;;; (20619 27099 673959 0))
;;; Generated autoloads from emacs-lisp/eieio-opt.el
(autoload 'eieio-browse "eieio-opt" "\
@@ -8160,7 +8145,7 @@ Also extracts information about all methods specific to this generic.
;;;***
;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string)
-;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20355 10021 546955 0))
+;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/eldoc.el
(defvar eldoc-minor-mode-string (purecopy " ElDoc") "\
@@ -8207,7 +8192,7 @@ Emacs Lisp mode) that support ElDoc.")
;;;***
;;;### (autoloads (electric-layout-mode electric-pair-mode electric-indent-mode)
-;;;;;; "electric" "electric.el" (20613 49078 764749 0))
+;;;;;; "electric" "electric.el" (20613 39767 44650 0))
;;; Generated autoloads from electric.el
(defvar electric-indent-chars '(10) "\
@@ -8277,8 +8262,8 @@ The variable `electric-layout-rules' says when and how to insert newlines.
;;;***
-;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from elide-head.el
(autoload 'elide-head "elide-head" "\
@@ -8295,7 +8280,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks.
;;;### (autoloads (elint-initialize elint-defun elint-current-buffer
;;;;;; elint-directory elint-file) "elint" "emacs-lisp/elint.el"
-;;;;;; (20486 36135 22104 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/elint.el
(autoload 'elint-file "elint" "\
@@ -8331,8 +8316,8 @@ optional prefix argument REINIT is non-nil.
;;;***
;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list
-;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20497
-;;;;;; 6436 957082 0))
+;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20647
+;;;;;; 7982 429263 0))
;;; Generated autoloads from emacs-lisp/elp.el
(autoload 'elp-instrument-function "elp" "\
@@ -8367,7 +8352,7 @@ displayed.
;;;***
;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el"
-;;;;;; (20577 33959 40183 0))
+;;;;;; (20574 60091 377598 17000))
;;; Generated autoloads from emacs-lock.el
(autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8394,8 +8379,8 @@ Other values are interpreted as usual.
;;;***
-;;;### (autoloads (report-emacs-bug-query-existing-bugs report-emacs-bug)
-;;;;;; "emacsbug" "mail/emacsbug.el" (20576 13095 881042 0))
+;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el"
+;;;;;; (20647 7982 429263 0))
;;; Generated autoloads from mail/emacsbug.el
(autoload 'report-emacs-bug "emacsbug" "\
@@ -8404,19 +8389,13 @@ Prompts for bug subject. Leaves you in a mail buffer.
\(fn TOPIC &optional RECENT-KEYS)" t nil)
-(autoload 'report-emacs-bug-query-existing-bugs "emacsbug" "\
-Query for KEYWORDS at `report-emacs-bug-tracker-url', and return the result.
-The result is an alist with items of the form (URL SUBJECT NO).
-
-\(fn KEYWORDS)" t nil)
-
;;;***
;;;### (autoloads (emerge-merge-directories emerge-revisions-with-ancestor
;;;;;; emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote
;;;;;; emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor
;;;;;; emerge-buffers emerge-files-with-ancestor emerge-files) "emerge"
-;;;;;; "vc/emerge.el" (20576 42138 697312 0))
+;;;;;; "vc/emerge.el" (20576 20472 112114 850000))
;;; Generated autoloads from vc/emerge.el
(autoload 'emerge-files "emerge" "\
@@ -8477,7 +8456,7 @@ Emerge two RCS revisions of a file, with another revision as ancestor.
;;;***
;;;### (autoloads (enriched-decode enriched-encode enriched-mode)
-;;;;;; "enriched" "textmodes/enriched.el" (20461 32935 300400 0))
+;;;;;; "enriched" "textmodes/enriched.el" (20533 50312 678915 0))
;;; Generated autoloads from textmodes/enriched.el
(autoload 'enriched-mode "enriched" "\
@@ -8518,7 +8497,7 @@ Commands:
;;;;;; epa-decrypt-armor-in-region epa-decrypt-region epa-encrypt-file
;;;;;; epa-sign-file epa-verify-file epa-decrypt-file epa-select-keys
;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20577
-;;;;;; 33959 40183 0))
+;;;;;; 6050 709767 255000))
;;; Generated autoloads from epa.el
(autoload 'epa-list-keys "epa" "\
@@ -8696,8 +8675,8 @@ Insert selected KEYS after the point.
;;;***
;;;### (autoloads (epa-dired-do-encrypt epa-dired-do-sign epa-dired-do-verify
-;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20355 10021
-;;;;;; 546955 0))
+;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from epa-dired.el
(autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8723,7 +8702,7 @@ Encrypt marked files.
;;;***
;;;### (autoloads (epa-file-disable epa-file-enable epa-file-handler)
-;;;;;; "epa-file" "epa-file.el" (20355 10021 546955 0))
+;;;;;; "epa-file" "epa-file.el" (20533 50312 678915 0))
;;; Generated autoloads from epa-file.el
(autoload 'epa-file-handler "epa-file" "\
@@ -8745,7 +8724,7 @@ Encrypt marked files.
;;;### (autoloads (epa-global-mail-mode epa-mail-import-keys epa-mail-encrypt
;;;;;; epa-mail-sign epa-mail-verify epa-mail-decrypt epa-mail-mode)
-;;;;;; "epa-mail" "epa-mail.el" (20566 63671 243798 0))
+;;;;;; "epa-mail" "epa-mail.el" (20567 14136 702359 0))
;;; Generated autoloads from epa-mail.el
(autoload 'epa-mail-mode "epa-mail" "\
@@ -8815,8 +8794,8 @@ if ARG is omitted or nil.
;;;***
-;;;### (autoloads (epg-make-context) "epg" "epg.el" (20577 33959
-;;;;;; 40183 0))
+;;;### (autoloads (epg-make-context) "epg" "epg.el" (20577 6315 457768
+;;;;;; 40000))
;;; Generated autoloads from epg.el
(autoload 'epg-make-context "epg" "\
@@ -8827,7 +8806,7 @@ Return a context object.
;;;***
;;;### (autoloads (epg-expand-group epg-check-configuration epg-configuration)
-;;;;;; "epg-config" "epg-config.el" (20373 11301 906925 0))
+;;;;;; "epg-config" "epg-config.el" (20533 50312 678915 0))
;;; Generated autoloads from epg-config.el
(autoload 'epg-configuration "epg-config" "\
@@ -8848,7 +8827,7 @@ Look at CONFIG and try to expand GROUP.
;;;***
;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args)
-;;;;;; "erc" "erc/erc.el" (20604 29767 397763 0))
+;;;;;; "erc" "erc/erc.el" (20666 889 186471 0))
;;; Generated autoloads from erc/erc.el
(autoload 'erc-select-read-args "erc" "\
@@ -8896,36 +8875,36 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
;;;***
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20591
-;;;;;; 33616 626144 310000))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20592
+;;;;;; 4085 721682 0))
;;; Generated autoloads from erc/erc-autoaway.el
(autoload 'erc-autoaway-mode "erc-autoaway")
;;;***
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20593 22184
-;;;;;; 581574 0))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20594 14884
+;;;;;; 858174 0))
;;; Generated autoloads from erc/erc-button.el
(autoload 'erc-button-mode "erc-button" nil t)
;;;***
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20591 33616
-;;;;;; 706147 283000))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20650 61396
+;;;;;; 673885 0))
;;; Generated autoloads from erc/erc-capab.el
(autoload 'erc-capab-identify-mode "erc-capab" nil t)
;;;***
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20591 33616
-;;;;;; 736174 412000))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20592 4085
+;;;;;; 721682 0))
;;; Generated autoloads from erc/erc-compat.el
(autoload 'erc-define-minor-mode "erc-compat")
;;;***
;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC)
-;;;;;; "erc-dcc" "erc/erc-dcc.el" (20591 33616 756180 926000))
+;;;;;; "erc-dcc" "erc/erc-dcc.el" (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-dcc.el
(autoload 'erc-dcc-mode "erc-dcc")
@@ -8955,7 +8934,7 @@ that subcommand.
;;;***
;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from erc/erc-desktop-notifications.el
(autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
@@ -8965,7 +8944,7 @@ that subcommand.
;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list
;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action
;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el"
-;;;;;; (20591 33616 766161 665000))
+;;;;;; (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-ezbounce.el
(autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -9027,8 +9006,8 @@ Add EZBouncer convenience functions to ERC.
;;;***
-;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20591
-;;;;;; 33616 776163 920000))
+;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20592
+;;;;;; 4085 721682 0))
;;; Generated autoloads from erc/erc-fill.el
(autoload 'erc-fill-mode "erc-fill" nil t)
@@ -9041,7 +9020,7 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
;;;***
;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
-;;;;;; "erc/erc-identd.el" (20591 33616 794740 81000))
+;;;;;; "erc/erc-identd.el" (20592 4085 721682 0))
;;; Generated autoloads from erc/erc-identd.el
(autoload 'erc-identd-mode "erc-identd")
@@ -9063,7 +9042,7 @@ system.
;;;***
;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el"
-;;;;;; (20591 33616 794740 81000))
+;;;;;; (20592 4085 721682 0))
;;; Generated autoloads from erc/erc-imenu.el
(autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -9073,22 +9052,22 @@ system.
;;;***
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20591 33616 804732
-;;;;;; 878000))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20650 61396 673885
+;;;;;; 0))
;;; Generated autoloads from erc/erc-join.el
(autoload 'erc-autojoin-mode "erc-join" nil t)
;;;***
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20591 33616 824757
-;;;;;; 867000))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20592 4085 721682
+;;;;;; 0))
;;; Generated autoloads from erc/erc-list.el
(autoload 'erc-list-mode "erc-list")
;;;***
;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
-;;;;;; "erc/erc-log.el" (20593 22184 581574 0))
+;;;;;; "erc/erc-log.el" (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-log.el
(autoload 'erc-log-mode "erc-log" nil t)
@@ -9120,7 +9099,7 @@ You can save every individual message by putting this function on
;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
-;;;;;; (20591 33616 834740 676000))
+;;;;;; (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-match.el
(autoload 'erc-match-mode "erc-match")
@@ -9166,15 +9145,15 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
;;;***
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20591 33616 844710
-;;;;;; 904000))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20592 4085 721682
+;;;;;; 0))
;;; Generated autoloads from erc/erc-menu.el
(autoload 'erc-menu-mode "erc-menu" nil t)
;;;***
;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
-;;;;;; (20591 33616 854733 799000))
+;;;;;; (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-netsplit.el
(autoload 'erc-netsplit-mode "erc-netsplit")
@@ -9186,7 +9165,7 @@ Show who's gone.
;;;***
;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
-;;;;;; "erc/erc-networks.el" (20591 33616 854733 799000))
+;;;;;; "erc/erc-networks.el" (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-networks.el
(autoload 'erc-determine-network "erc-networks" "\
@@ -9204,7 +9183,7 @@ Interactively select a server to connect to using `erc-server-alist'.
;;;***
;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
-;;;;;; "erc/erc-notify.el" (20591 33616 864734 46000))
+;;;;;; "erc/erc-notify.el" (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-notify.el
(autoload 'erc-notify-mode "erc-notify" nil t)
@@ -9222,37 +9201,37 @@ with args, toggle notify status of people.
;;;***
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20591 33616 864734
-;;;;;; 46000))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20592 4085 721682
+;;;;;; 0))
;;; Generated autoloads from erc/erc-page.el
(autoload 'erc-page-mode "erc-page")
;;;***
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20591
-;;;;;; 33616 874723 983000))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20650
+;;;;;; 61396 673885 0))
;;; Generated autoloads from erc/erc-pcomplete.el
(autoload 'erc-completion-mode "erc-pcomplete" nil t)
;;;***
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20591 33616
-;;;;;; 874723 983000))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20592 4085
+;;;;;; 721682 0))
;;; Generated autoloads from erc/erc-replace.el
(autoload 'erc-replace-mode "erc-replace")
;;;***
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20591 33616 884730
-;;;;;; 605000))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20592 4085 721682
+;;;;;; 0))
;;; Generated autoloads from erc/erc-ring.el
(autoload 'erc-ring-mode "erc-ring" nil t)
;;;***
;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
-;;;;;; "erc-services" "erc/erc-services.el" (20591 33616 894723
-;;;;;; 303000))
+;;;;;; "erc-services" "erc/erc-services.el" (20650 61396 673885
+;;;;;; 0))
;;; Generated autoloads from erc/erc-services.el
(autoload 'erc-services-mode "erc-services" nil t)
@@ -9269,15 +9248,15 @@ When called interactively, read the password using `read-passwd'.
;;;***
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20591 33616
-;;;;;; 894723 303000))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20592 4085
+;;;;;; 721682 0))
;;; Generated autoloads from erc/erc-sound.el
(autoload 'erc-sound-mode "erc-sound")
;;;***
;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
-;;;;;; (20591 33616 894723 303000))
+;;;;;; (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-speedbar.el
(autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9288,22 +9267,22 @@ This will add a speedbar major display mode.
;;;***
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20591
-;;;;;; 33616 904733 437000))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20592
+;;;;;; 4085 721682 0))
;;; Generated autoloads from erc/erc-spelling.el
(autoload 'erc-spelling-mode "erc-spelling" nil t)
;;;***
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20593 22184
-;;;;;; 581574 0))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20594 14884
+;;;;;; 858174 0))
;;; Generated autoloads from erc/erc-stamp.el
(autoload 'erc-timestamp-mode "erc-stamp" nil t)
;;;***
;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
-;;;;;; (20591 33616 924730 373000))
+;;;;;; (20650 61396 673885 0))
;;; Generated autoloads from erc/erc-track.el
(defvar erc-track-minor-mode nil "\
@@ -9329,8 +9308,7 @@ keybindings will not do anything useful.
;;;***
;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size)
-;;;;;; "erc-truncate" "erc/erc-truncate.el" (20591 33616 934716
-;;;;;; 526000))
+;;;;;; "erc-truncate" "erc/erc-truncate.el" (20592 4085 721682 0))
;;; Generated autoloads from erc/erc-truncate.el
(autoload 'erc-truncate-mode "erc-truncate" nil t)
@@ -9350,7 +9328,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
;;;***
;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el"
-;;;;;; (20591 33616 934716 526000))
+;;;;;; (20592 4085 721682 0))
;;; Generated autoloads from erc/erc-xdcc.el
(autoload 'erc-xdcc-mode "erc-xdcc")
@@ -9363,7 +9341,7 @@ Add a file to `erc-xdcc-files'.
;;;### (autoloads (ert-describe-test ert-run-tests-interactively
;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch ert-deftest)
-;;;;;; "ert" "emacs-lisp/ert.el" (20576 42138 697312 0))
+;;;;;; "ert" "emacs-lisp/ert.el" (20655 4702 996292 0))
;;; Generated autoloads from emacs-lisp/ert.el
(autoload 'ert-deftest "ert" "\
@@ -9429,7 +9407,7 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test).
;;;***
;;;### (autoloads (ert-kill-all-test-buffers) "ert-x" "emacs-lisp/ert-x.el"
-;;;;;; (20576 42138 697312 0))
+;;;;;; (20655 4702 996292 0))
;;; Generated autoloads from emacs-lisp/ert-x.el
(put 'ert-with-test-buffer 'lisp-indent-function 1)
@@ -9441,8 +9419,8 @@ Kill all test buffers that are still live.
;;;***
-;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20593
-;;;;;; 22184 581574 0))
+;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20594
+;;;;;; 14884 858174 0))
;;; Generated autoloads from eshell/esh-mode.el
(autoload 'eshell-mode "esh-mode" "\
@@ -9455,7 +9433,7 @@ Emacs shell interactive mode.
;;;***
;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell"
-;;;;;; "eshell/eshell.el" (20577 33959 40183 0))
+;;;;;; "eshell/eshell.el" (20576 16566 11955 847000))
;;; Generated autoloads from eshell/eshell.el
(autoload 'eshell "eshell" "\
@@ -9496,7 +9474,7 @@ corresponding to a successful execution.
;;;;;; visit-tags-table tags-table-mode find-tag-default-function
;;;;;; find-tag-hook tags-add-tables tags-compression-info-list
;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20664 5610 38100 0))
;;; Generated autoloads from progmodes/etags.el
(defvar tags-file-name nil "\
@@ -9814,7 +9792,7 @@ for \\[find-tag] (which see).
;;;;;; ethio-fidel-to-sera-marker ethio-fidel-to-sera-region ethio-fidel-to-sera-buffer
;;;;;; ethio-sera-to-fidel-marker ethio-sera-to-fidel-region ethio-sera-to-fidel-buffer
;;;;;; setup-ethiopic-environment-internal) "ethio-util" "language/ethio-util.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from language/ethio-util.el
(autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9984,7 +9962,7 @@ With ARG, insert that many delimiters.
;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline
;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from net/eudc.el
(autoload 'eudc-set-server "eudc" "\
@@ -10040,7 +10018,7 @@ This does nothing except loading eudc by autoload side-effect.
;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline
;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary)
-;;;;;; "eudc-bob" "net/eudc-bob.el" (20355 10021 546955 0))
+;;;;;; "eudc-bob" "net/eudc-bob.el" (20533 50312 678915 0))
;;; Generated autoloads from net/eudc-bob.el
(autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -10076,7 +10054,7 @@ Display a button for the JPEG DATA.
;;;***
;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb)
-;;;;;; "eudc-export" "net/eudc-export.el" (20355 10021 546955 0))
+;;;;;; "eudc-export" "net/eudc-export.el" (20533 50312 678915 0))
;;; Generated autoloads from net/eudc-export.el
(autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -10093,7 +10071,7 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record.
;;;***
;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from net/eudc-hotlist.el
(autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -10103,8 +10081,8 @@ Edit the hotlist of directory servers in a specialized buffer.
;;;***
-;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20453
-;;;;;; 5437 764254 0))
+;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from emacs-lisp/ewoc.el
(autoload 'ewoc-create "ewoc" "\
@@ -10133,7 +10111,7 @@ fourth arg NOSEP non-nil inhibits this.
;;;### (autoloads (executable-make-buffer-file-executable-if-script-p
;;;;;; executable-self-display executable-set-magic executable-interpret
;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el"
-;;;;;; (20533 6181 437016 717000))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/executable.el
(autoload 'executable-command-find-posix-p "executable" "\
@@ -10176,7 +10154,7 @@ file modes.
;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from expand.el
(autoload 'expand-add-abbrevs "expand" "\
@@ -10225,8 +10203,8 @@ This is used only in conjunction with `expand-add-abbrevs'.
;;;***
-;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20566 63671
-;;;;;; 243798 0))
+;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20566 46184
+;;;;;; 706620 234000))
;;; Generated autoloads from progmodes/f90.el
(autoload 'f90-mode "f90" "\
@@ -10297,7 +10275,7 @@ with no args, if that value is non-nil.
;;;;;; buffer-face-mode text-scale-adjust text-scale-decrease text-scale-increase
;;;;;; text-scale-set face-remap-set-base face-remap-reset-base
;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20622
-;;;;;; 22438 32851 0))
+;;;;;; 21008 480608 570000))
;;; Generated autoloads from face-remap.el
(autoload 'face-remap-add-relative "face-remap" "\
@@ -10460,8 +10438,8 @@ Besides the choice of face, it is the same as `buffer-face-mode'.
;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue
;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts
-;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20566 63671
-;;;;;; 243798 0))
+;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20566 46719
+;;;;;; 378637 198000))
;;; Generated autoloads from mail/feedmail.el
(autoload 'feedmail-send-it "feedmail" "\
@@ -10516,7 +10494,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point
;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap"
-;;;;;; "ffap.el" (20595 63909 923329 0))
+;;;;;; "ffap.el" (20595 33984 147078 0))
;;; Generated autoloads from ffap.el
(autoload 'ffap-next "ffap" "\
@@ -10582,23 +10560,24 @@ Evaluate the forms in variable `ffap-bindings'.
;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively
;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find
;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory)
-;;;;;; "filecache" "filecache.el" (20355 10021 546955 0))
+;;;;;; "filecache" "filecache.el" (20648 29733 701119 761000))
;;; Generated autoloads from filecache.el
(autoload 'file-cache-add-directory "filecache" "\
-Add DIRECTORY to the file cache.
-If the optional REGEXP argument is non-nil, only files which match it will
-be added to the cache.
+Add all files in DIRECTORY to the file cache.
+If called from Lisp with a non-nil REGEXP argument is non-nil,
+only add files whose names match REGEXP.
\(fn DIRECTORY &optional REGEXP)" t nil)
(autoload 'file-cache-add-directory-list "filecache" "\
-Add DIRECTORY-LIST (a list of directory names) to the file cache.
+Add DIRECTORIES (a list of directory names) to the file cache.
+If called interactively, read the directory names one by one.
If the optional REGEXP argument is non-nil, only files which match it
will be added to the cache. Note that the REGEXP is applied to the
files in each directory, not to the directory list itself.
-\(fn DIRECTORY-LIST &optional REGEXP)" t nil)
+\(fn DIRECTORIES &optional REGEXP)" t nil)
(autoload 'file-cache-add-file "filecache" "\
Add FILE to the file cache.
@@ -10642,8 +10621,8 @@ the name is considered already unique; only the second substitution
;;;;;; copy-file-locals-to-dir-locals delete-dir-local-variable
;;;;;; add-dir-local-variable delete-file-local-variable-prop-line
;;;;;; add-file-local-variable-prop-line delete-file-local-variable
-;;;;;; add-file-local-variable) "files-x" "files-x.el" (20355 10021
-;;;;;; 546955 0))
+;;;;;; add-file-local-variable) "files-x" "files-x.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from files-x.el
(autoload 'add-file-local-variable "files-x" "\
@@ -10708,8 +10687,8 @@ Copy directory-local variables to the -*- line.
;;;***
-;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20614
-;;;;;; 54428 654267 0))
+;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20615
+;;;;;; 22847 537904 0))
;;; Generated autoloads from filesets.el
(autoload 'filesets-init "filesets" "\
@@ -10720,8 +10699,8 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
;;;***
-;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20655 12114
+;;;;;; 463008 671000))
;;; Generated autoloads from find-cmd.el
(autoload 'find-cmd "find-cmd" "\
@@ -10741,7 +10720,7 @@ result is a string that should be ready for the command line.
;;;***
;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired"
-;;;;;; "find-dired.el" (20355 10021 546955 0))
+;;;;;; "find-dired.el" (20533 50312 678915 0))
;;; Generated autoloads from find-dired.el
(autoload 'find-dired "find-dired" "\
@@ -10781,7 +10760,7 @@ use in place of \"-ls\" as the final argument.
;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file
;;;;;; ff-find-other-file ff-get-other-file ff-special-constructs)
-;;;;;; "find-file" "find-file.el" (20387 44199 24128 0))
+;;;;;; "find-file" "find-file.el" (20533 50312 678915 0))
;;; Generated autoloads from find-file.el
(defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\
@@ -10877,7 +10856,7 @@ Visit the file you click on in another window.
;;;;;; find-variable find-variable-noselect find-function-other-frame
;;;;;; find-function-other-window find-function find-function-noselect
;;;;;; find-function-search-for-symbol find-library) "find-func"
-;;;;;; "emacs-lisp/find-func.el" (20497 6436 957082 0))
+;;;;;; "emacs-lisp/find-func.el" (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/find-func.el
(autoload 'find-library "find-func" "\
@@ -11036,8 +11015,8 @@ Define some key bindings for the find-function family of functions.
;;;***
;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories
-;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20355 10021
-;;;;;; 546955 0))
+;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from find-lisp.el
(autoload 'find-lisp-find-dired "find-lisp" "\
@@ -11058,7 +11037,7 @@ Change the filter on a find-lisp-find-dired buffer to REGEXP.
;;;***
;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords)
-;;;;;; "finder" "finder.el" (20355 10021 546955 0))
+;;;;;; "finder" "finder.el" (20533 50312 678915 0))
;;; Generated autoloads from finder.el
(autoload 'finder-list-keywords "finder" "\
@@ -11080,7 +11059,7 @@ Find packages matching a given keyword.
;;;***
;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl"
-;;;;;; "flow-ctrl.el" (20566 63671 243798 0))
+;;;;;; "flow-ctrl.el" (20566 45950 38611 876000))
;;; Generated autoloads from flow-ctrl.el
(autoload 'enable-flow-control "flow-ctrl" "\
@@ -11102,7 +11081,7 @@ to get the effect of a C-q.
;;;***
;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/flow-fill.el
(autoload 'fill-flowed-encode "flow-fill" "\
@@ -11118,8 +11097,8 @@ to get the effect of a C-q.
;;;***
;;;### (autoloads (flymake-find-file-hook flymake-mode-off flymake-mode-on
-;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20611 52135
-;;;;;; 109136 0))
+;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20647 7982
+;;;;;; 429263 0))
;;; Generated autoloads from progmodes/flymake.el
(autoload 'flymake-mode "flymake" "\
@@ -11149,7 +11128,7 @@ Turn flymake mode off.
;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-;;;;;; "flyspell" "textmodes/flyspell.el" (20566 63671 243798 0))
+;;;;;; "flyspell" "textmodes/flyspell.el" (20566 46000 842611 651000))
;;; Generated autoloads from textmodes/flyspell.el
(autoload 'flyspell-prog-mode "flyspell" "\
@@ -11221,7 +11200,7 @@ Flyspell whole buffer.
;;;### (autoloads (follow-delete-other-windows-and-split follow-mode
;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el"
-;;;;;; (20501 3499 284800 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from follow.el
(autoload 'turn-on-follow-mode "follow" "\
@@ -11289,8 +11268,8 @@ selected if the original window is the first one in the frame.
;;;***
-;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20478
-;;;;;; 3673 653810 0))
+;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from mail/footnote.el
(autoload 'footnote-mode "footnote" "\
@@ -11309,7 +11288,7 @@ play around with the following keys:
;;;***
;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode)
-;;;;;; "forms" "forms.el" (20427 14766 970343 0))
+;;;;;; "forms" "forms.el" (20533 50312 678915 0))
;;; Generated autoloads from forms.el
(autoload 'forms-mode "forms" "\
@@ -11346,7 +11325,7 @@ Visit a file in Forms mode in other window.
;;;***
;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el"
-;;;;;; (20438 24024 724594 589000))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/fortran.el
(autoload 'fortran-mode "fortran" "\
@@ -11424,8 +11403,8 @@ with no args, if that value is non-nil.
;;;***
;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region
-;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20355 10021
-;;;;;; 546955 0))
+;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from play/fortune.el
(autoload 'fortune-add-fortune "fortune" "\
@@ -11474,7 +11453,7 @@ and choose the directory as the fortune-file.
;;;***
;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el"
-;;;;;; (20609 10405 476026 0))
+;;;;;; (20608 21217 487940 41000))
;;; Generated autoloads from progmodes/gdb-mi.el
(defvar gdb-enable-debug nil "\
@@ -11552,8 +11531,8 @@ detailed description of this mode.
;;;***
;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal
-;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20406
-;;;;;; 8611 875037 0))
+;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from emacs-lisp/generic.el
(defvar generic-mode-list nil "\
@@ -11632,7 +11611,7 @@ regular expression that can be used as an element of
;;;***
;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/glasses.el
(autoload 'glasses-mode "glasses" "\
@@ -11648,7 +11627,7 @@ add virtual separators (like underscores) at places they belong to.
;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
;;;;;; gmm-message gmm-regexp-concat) "gmm-utils" "gnus/gmm-utils.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gmm-utils.el
(autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -11703,8 +11682,8 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
;;;***
;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server
-;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20552 30761
-;;;;;; 207103 0))
+;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20552 25066
+;;;;;; 479417 0))
;;; Generated autoloads from gnus/gnus.el
(when (fboundp 'custom-autoload)
(custom-autoload 'gnus-select-method "gnus"))
@@ -11757,7 +11736,7 @@ prompt the user for the name of an NNTP server to use.
;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group
;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize
;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent"
-;;;;;; "gnus/gnus-agent.el" (20518 12580 46478 0))
+;;;;;; "gnus/gnus-agent.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-agent.el
(autoload 'gnus-unplugged "gnus-agent" "\
@@ -11848,7 +11827,7 @@ If CLEAN, obsolete (ignore).
;;;***
;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
-;;;;;; (20578 54821 719276 0))
+;;;;;; (20647 7982 429263 0))
;;; Generated autoloads from gnus/gnus-art.el
(autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -11859,7 +11838,7 @@ Make the current buffer look like a nice article.
;;;***
;;;### (autoloads (gnus-bookmark-bmenu-list gnus-bookmark-jump gnus-bookmark-set)
-;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20355 10021 546955
+;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from gnus/gnus-bookmark.el
@@ -11885,8 +11864,8 @@ deletion, or > if it is flagged for displaying.
;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group
;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active
-;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from gnus/gnus-cache.el
(autoload 'gnus-jog-cache "gnus-cache" "\
@@ -11928,7 +11907,7 @@ supported.
;;;***
;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article)
-;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20355 10021 546955 0))
+;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-delay.el
(autoload 'gnus-delay-article "gnus-delay" "\
@@ -11964,7 +11943,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
;;;***
;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d)
-;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20355 10021 546955 0))
+;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20647 7982 429263 0))
;;; Generated autoloads from gnus/gnus-diary.el
(autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -11980,7 +11959,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
;;;***
;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20628 55151 230164 0))
;;; Generated autoloads from gnus/gnus-dired.el
(autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -11991,7 +11970,7 @@ Convenience method to turn on gnus-dired-mode.
;;;***
;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-draft.el
(autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -12004,7 +11983,7 @@ Reminder user if there are unsent drafts.
;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png
;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header
;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20549
-;;;;;; 54573 979353 0))
+;;;;;; 34104 417881 0))
;;; Generated autoloads from gnus/gnus-fun.el
(autoload 'gnus-random-x-face "gnus-fun" "\
@@ -12049,7 +12028,7 @@ FILE should be a PNG file that's 48x48 and smaller than or equal to
;;;***
;;;### (autoloads (gnus-treat-mail-gravatar gnus-treat-from-gravatar)
-;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20355 10021 546955
+;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from gnus/gnus-gravatar.el
@@ -12068,7 +12047,7 @@ If gravatars are already displayed, remove them.
;;;***
;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group)
-;;;;;; "gnus-group" "gnus/gnus-group.el" (20553 51627 169867 0))
+;;;;;; "gnus-group" "gnus/gnus-group.el" (20553 28953 158351 908000))
;;; Generated autoloads from gnus/gnus-group.el
(autoload 'gnus-fetch-group "gnus-group" "\
@@ -12086,7 +12065,7 @@ Pop up a frame and enter GROUP.
;;;***
;;;### (autoloads (gnus-html-prefetch-images gnus-article-html) "gnus-html"
-;;;;;; "gnus/gnus-html.el" (20355 10021 546955 0))
+;;;;;; "gnus/gnus-html.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-html.el
(autoload 'gnus-article-html "gnus-html" "\
@@ -12102,7 +12081,7 @@ Pop up a frame and enter GROUP.
;;;***
;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el"
-;;;;;; (20495 51111 757560 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-kill.el
(defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -12117,7 +12096,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score
;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate
;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-ml.el
(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -12142,7 +12121,7 @@ Minor mode for providing mailing-list commands.
;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update
;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-mlspl.el
(autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -12243,7 +12222,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
;;;***
;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
-;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20593 22184 581574 0))
+;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20594 14884 858174 0))
;;; Generated autoloads from gnus/gnus-msg.el
(autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12270,7 +12249,7 @@ Like `message-reply'.
;;;***
;;;### (autoloads (gnus-notifications) "gnus-notifications" "gnus/gnus-notifications.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from gnus/gnus-notifications.el
(autoload 'gnus-notifications "gnus-notifications" "\
@@ -12288,7 +12267,7 @@ This is typically a function to add in
;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon
;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el"
-;;;;;; (20523 62082 997685 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-picon.el
(autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12315,7 +12294,7 @@ If picons are already displayed, remove them.
;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection
;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement
;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range"
-;;;;;; "gnus/gnus-range.el" (20544 36659 880486 0))
+;;;;;; "gnus/gnus-range.el" (20545 60086 510404 0))
;;; Generated autoloads from gnus/gnus-range.el
(autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12383,7 +12362,7 @@ Add NUM into sorted LIST by side effect.
;;;***
;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
-;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20544 36659 880486
+;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20545 60086 510404
;;;;;; 0))
;;; Generated autoloads from gnus/gnus-registry.el
@@ -12400,8 +12379,8 @@ Install the registry hooks.
;;;***
;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate
-;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from gnus/gnus-sieve.el
(autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -12429,7 +12408,7 @@ See the documentation for these variables and functions for details.
;;;***
;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el"
-;;;;;; (20458 56750 651721 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-spec.el
(autoload 'gnus-update-format "gnus-spec" "\
@@ -12440,7 +12419,7 @@ Update the format specification near point.
;;;***
;;;### (autoloads (gnus-declare-backend) "gnus-start" "gnus/gnus-start.el"
-;;;;;; (20614 54428 654267 0))
+;;;;;; (20615 22847 537904 0))
;;; Generated autoloads from gnus/gnus-start.el
(autoload 'gnus-declare-backend "gnus-start" "\
@@ -12451,7 +12430,7 @@ Declare back end NAME with ABILITIES as a Gnus back end.
;;;***
;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el"
-;;;;;; (20540 39589 424586 0))
+;;;;;; (20668 15033 902481 0))
;;; Generated autoloads from gnus/gnus-sum.el
(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12463,7 +12442,7 @@ BOOKMARK is a bookmark name or a bookmark record.
;;;***
;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize)
-;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20593 22184 581574 0))
+;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20669 24410 534430 0))
;;; Generated autoloads from gnus/gnus-sync.el
(autoload 'gnus-sync-initialize "gnus-sync" "\
@@ -12479,7 +12458,7 @@ Install the sync hooks.
;;;***
;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el"
-;;;;;; (20447 49522 409090 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/gnus-win.el
(autoload 'gnus-add-configuration "gnus-win" "\
@@ -12490,7 +12469,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
;;;***
;;;### (autoloads (gnutls-min-prime-bits) "gnutls" "net/gnutls.el"
-;;;;;; (20476 31768 298871 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from net/gnutls.el
(defvar gnutls-min-prime-bits 256 "\
@@ -12506,8 +12485,8 @@ A value of nil says to use the default GnuTLS value.")
;;;***
-;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20626 19492
-;;;;;; 855904 0))
+;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20625 56567
+;;;;;; 922104 625000))
;;; Generated autoloads from play/gomoku.el
(autoload 'gomoku "gomoku" "\
@@ -12535,7 +12514,7 @@ Use \\[describe-mode] for more info.
;;;### (autoloads (goto-address-prog-mode goto-address-mode goto-address
;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 46230 958621 550000))
;;; Generated autoloads from net/goto-addr.el
(define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1")
@@ -12577,7 +12556,7 @@ Like `goto-address-mode', but only for comments and strings.
;;;***
;;;### (autoloads (gravatar-retrieve-synchronously gravatar-retrieve)
-;;;;;; "gravatar" "gnus/gravatar.el" (20355 10021 546955 0))
+;;;;;; "gravatar" "gnus/gravatar.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/gravatar.el
(autoload 'gravatar-retrieve "gravatar" "\
@@ -12595,8 +12574,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
;;;### (autoloads (zrgrep rgrep lgrep grep-find grep grep-mode grep-compute-defaults
;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command
-;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20572 16038
-;;;;;; 402143 0))
+;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20664 24895
+;;;;;; 147100 745000))
;;; Generated autoloads from progmodes/grep.el
(defvar grep-window-height nil "\
@@ -12759,7 +12738,7 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'.
;;;***
-;;;### (autoloads (gs-load-image) "gs" "gs.el" (20355 10021 546955
+;;;### (autoloads (gs-load-image) "gs" "gs.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from gs.el
@@ -12774,8 +12753,8 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
;;;***
;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb
-;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20614 55343
-;;;;;; 384716 548000))
+;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20615 22847
+;;;;;; 537904 0))
;;; Generated autoloads from progmodes/gud.el
(autoload 'gud-gdb "gud" "\
@@ -12863,9 +12842,9 @@ it if ARG is omitted or nil.
;;;***
-;;;### (autoloads (setf gv-define-simple-setter gv-define-setter
+;;;### (autoloads (gv-ref setf gv-define-simple-setter gv-define-setter
;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get)
-;;;;;; "gv" "emacs-lisp/gv.el" (20608 20265 413008 0))
+;;;;;; "gv" "emacs-lisp/gv.el" (20647 7982 429263 0))
;;; Generated autoloads from emacs-lisp/gv.el
(autoload 'gv-get "gv" "\
@@ -12885,7 +12864,7 @@ Build the code manipulating the generalized variable PLACE.
GETTER will be bound to a copyable expression that returns the value
of PLACE.
SETTER will be bound to a function that takes an expression V and returns
-and new expression that sets PLACE to V.
+a new expression that sets PLACE to V.
BODY should return some Elisp expression E manipulating PLACE via GETTER
and SETTER.
The returned value will then be an Elisp expression that first evaluates
@@ -12921,7 +12900,7 @@ well for simple place forms.
Assignments of VAL to (NAME ARGS...) are expanded by binding the argument
forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must
return a Lisp form that does the assignment.
-The first arg in ARLIST (the one that receives VAL) receives an expression
+The first arg in ARGLIST (the one that receives VAL) receives an expression
which can do arbitrary things, whereas the other arguments are all guaranteed
to be pure and copyable. Example use:
(gv-define-setter aref (v a i) `(aset ,a ,i ,v))
@@ -12935,8 +12914,12 @@ Define a simple setter method for generalized variable NAME.
This macro is an easy-to-use substitute for `gv-define-expander' that works
well for simple place forms. Assignments of VAL to (NAME ARGS...) are
turned into calls of the form (SETTER ARGS... VAL).
+
If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and
-instead the assignment is turned into (prog1 VAL (SETTER ARGS... VAL))
+instead the assignment is turned into something equivalent to
+ (let ((temp VAL))
+ (SETTER ARGS... temp)
+ temp)
so as to preserve the semantics of `setf'.
\(fn NAME SETTER &optional FIX-RETURN)" nil t)
@@ -12952,10 +12935,16 @@ The return value is the last VAL in the list.
(put 'gv-place 'edebug-form-spec 'edebug-match-form)
+(autoload 'gv-ref "gv" "\
+Return a reference to PLACE.
+This is like the `&' operator of the C language.
+
+\(fn PLACE)" nil t)
+
;;;***
;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 46640 14637 679000))
;;; Generated autoloads from play/handwrite.el
(autoload 'handwrite "handwrite" "\
@@ -12973,7 +12962,7 @@ Variables: `handwrite-linespace' (default 12)
;;;***
;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from play/hanoi.el
(autoload 'hanoi "hanoi" "\
@@ -13002,7 +12991,7 @@ to be updated.
;;;### (autoloads (mail-check-payment mail-add-payment-async mail-add-payment
;;;;;; hashcash-verify-payment hashcash-insert-payment-async hashcash-insert-payment)
-;;;;;; "hashcash" "mail/hashcash.el" (20355 10021 546955 0))
+;;;;;; "hashcash" "mail/hashcash.el" (20533 50312 678915 0))
;;; Generated autoloads from mail/hashcash.el
(autoload 'hashcash-insert-payment "hashcash" "\
@@ -13047,8 +13036,8 @@ Prefix arg sets default accept amount temporarily.
;;;### (autoloads (scan-buf-previous-region scan-buf-next-region
;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer
;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string
-;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20355 10021
-;;;;;; 546955 0))
+;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from help-at-pt.el
(autoload 'help-at-pt-string "help-at-pt" "\
@@ -13178,7 +13167,7 @@ different regions. With numeric argument ARG, behaves like
;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories
;;;;;; describe-syntax describe-variable variable-at-point describe-function-1
;;;;;; find-lisp-object-file-name help-C-file-name describe-function)
-;;;;;; "help-fns" "help-fns.el" (20601 16294 451653 0))
+;;;;;; "help-fns" "help-fns.el" (20600 48649 527386 0))
;;; Generated autoloads from help-fns.el
(autoload 'describe-function "help-fns" "\
@@ -13258,7 +13247,7 @@ Produce a texinfo buffer with sorted doc-strings from the DOC file.
;;;***
;;;### (autoloads (three-step-help) "help-macro" "help-macro.el"
-;;;;;; (20589 25124 41923 0))
+;;;;;; (20588 61767 630752 0))
;;; Generated autoloads from help-macro.el
(defvar three-step-help nil "\
@@ -13275,7 +13264,7 @@ gives the window that lists the options.")
;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button
;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref
;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el"
-;;;;;; (20601 16294 451653 0))
+;;;;;; (20647 12936 770269 490000))
;;; Generated autoloads from help-mode.el
(autoload 'help-mode "help-mode" "\
@@ -13375,7 +13364,7 @@ BOOKMARK is a bookmark name or a bookmark record.
;;;***
;;;### (autoloads (Helper-help Helper-describe-bindings) "helper"
-;;;;;; "emacs-lisp/helper.el" (20355 10021 546955 0))
+;;;;;; "emacs-lisp/helper.el" (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/helper.el
(autoload 'Helper-describe-bindings "helper" "\
@@ -13391,7 +13380,7 @@ Provide help for current mode.
;;;***
;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl"
-;;;;;; "hexl.el" (20523 62082 997685 0))
+;;;;;; "hexl.el" (20666 60492 791740 0))
;;; Generated autoloads from hexl.el
(autoload 'hexl-mode "hexl" "\
@@ -13488,7 +13477,7 @@ This discards the buffer's undo information.
;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from hi-lock.el
(autoload 'hi-lock-mode "hi-lock" "\
@@ -13636,7 +13625,7 @@ be found in variable `hi-lock-interactive-patterns'.
;;;***
;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el"
-;;;;;; (20588 4262 531841 0))
+;;;;;; (20587 1560 278468 915000))
;;; Generated autoloads from progmodes/hideif.el
(autoload 'hide-ifdef-mode "hideif" "\
@@ -13680,7 +13669,7 @@ Several variables affect how the hiding is done:
;;;***
;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 46578 522635 374000))
;;; Generated autoloads from progmodes/hideshow.el
(defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\
@@ -13746,8 +13735,8 @@ Unconditionally turn off `hs-minor-mode'.
;;;;;; highlight-compare-buffers highlight-changes-rotate-faces
;;;;;; highlight-changes-previous-change highlight-changes-next-change
;;;;;; highlight-changes-remove-highlight highlight-changes-visible-mode
-;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from hilit-chg.el
(autoload 'highlight-changes-mode "hilit-chg" "\
@@ -13878,10 +13867,17 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode.
;;;***
-;;;### (autoloads (make-hippie-expand-function hippie-expand) "hippie-exp"
-;;;;;; "hippie-exp.el" (20584 7212 455152 0))
+;;;### (autoloads (make-hippie-expand-function hippie-expand hippie-expand-try-functions-list)
+;;;;;; "hippie-exp" "hippie-exp.el" (20660 26176 137583 0))
;;; Generated autoloads from hippie-exp.el
+(defvar hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol) "\
+The list of expansion functions tried in order by `hippie-expand'.
+To change the behavior of `hippie-expand', remove, change the order of,
+or insert functions in this list.")
+
+(custom-autoload 'hippie-expand-try-functions-list "hippie-exp" t)
+
(autoload 'hippie-expand "hippie-exp" "\
Try to expand text before point, using multiple methods.
The expansion functions in `hippie-expand-try-functions-list' are
@@ -13904,7 +13900,7 @@ argument VERBOSE non-nil makes the function verbose.
;;;***
;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from hl-line.el
(autoload 'hl-line-mode "hl-line" "\
@@ -13957,7 +13953,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays
;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays
;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays"
-;;;;;; "calendar/holidays.el" (20566 63671 243798 0))
+;;;;;; "calendar/holidays.el" (20566 46439 838629 747000))
;;; Generated autoloads from calendar/holidays.el
(define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1")
@@ -14105,8 +14101,8 @@ The optional LABEL is used to label the buffer created.
;;;***
-;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from gnus/html2text.el
(autoload 'html2text "html2text" "\
@@ -14117,7 +14113,7 @@ Convert HTML to plain text in the current buffer.
;;;***
;;;### (autoloads (htmlfontify-copy-and-link-dir htmlfontify-buffer)
-;;;;;; "htmlfontify" "htmlfontify.el" (20614 54428 654267 0))
+;;;;;; "htmlfontify" "htmlfontify.el" (20615 22847 537904 0))
;;; Generated autoloads from htmlfontify.el
(autoload 'htmlfontify-buffer "htmlfontify" "\
@@ -14150,8 +14146,8 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'.
;;;***
;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter
-;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20478
-;;;;;; 3673 653810 0))
+;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from ibuf-macs.el
(autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -14240,7 +14236,7 @@ bound to the current value of the filter.
;;;***
;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers)
-;;;;;; "ibuffer" "ibuffer.el" (20576 13312 649004 817000))
+;;;;;; "ibuffer" "ibuffer.el" (20647 14483 886336 46000))
;;; Generated autoloads from ibuffer.el
(autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14281,7 +14277,7 @@ FORMATS is the value to use for `ibuffer-formats'.
;;;### (autoloads (icalendar-import-buffer icalendar-import-file
;;;;;; icalendar-export-region icalendar-export-file) "icalendar"
-;;;;;; "calendar/icalendar.el" (20593 22184 581574 0))
+;;;;;; "calendar/icalendar.el" (20594 14884 858174 0))
;;; Generated autoloads from calendar/icalendar.el
(autoload 'icalendar-export-file "icalendar" "\
@@ -14333,8 +14329,8 @@ buffer `*icalendar-errors*'.
;;;***
-;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20453
-;;;;;; 5437 764254 0))
+;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20665
+;;;;;; 22617 826757 0))
;;; Generated autoloads from icomplete.el
(defvar icomplete-mode nil "\
@@ -14356,8 +14352,8 @@ the mode if ARG is omitted or nil.
;;;***
-;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from progmodes/icon.el
(autoload 'icon-mode "icon" "\
@@ -14398,7 +14394,7 @@ with no args, if that value is non-nil.
;;;***
;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
-;;;;;; (20572 16038 402143 0))
+;;;;;; (20571 55599 814625 0))
;;; Generated autoloads from progmodes/idlw-shell.el
(autoload 'idlwave-shell "idlw-shell" "\
@@ -14424,7 +14420,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
;;;***
;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
-;;;;;; (20576 42138 697312 0))
+;;;;;; (20576 17457 279993 463000))
;;; Generated autoloads from progmodes/idlwave.el
(autoload 'idlwave-mode "idlwave" "\
@@ -14558,8 +14554,8 @@ The main features of this mode are
;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file
;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
-;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20590
-;;;;;; 45996 129575 0))
+;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20665
+;;;;;; 25107 949632 0))
;;; Generated autoloads from ido.el
(defvar ido-mode nil "\
@@ -14818,7 +14814,7 @@ DEF, if non-nil, is the default value.
;;;***
-;;;### (autoloads (ielm) "ielm" "ielm.el" (20566 63671 243798 0))
+;;;### (autoloads (ielm) "ielm" "ielm.el" (20566 45191 990577 813000))
;;; Generated autoloads from ielm.el
(autoload 'ielm "ielm" "\
@@ -14829,8 +14825,8 @@ Switches to the buffer `*ielm*', or creates it if it does not exist.
;;;***
-;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from iimage.el
(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -14851,7 +14847,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
;;;;;; create-image image-type-auto-detected-p image-type-available-p
;;;;;; image-type image-type-from-file-name image-type-from-file-header
;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el"
-;;;;;; (20613 59417 195100 163000))
+;;;;;; (20648 29678 511980 0))
;;; Generated autoloads from image.el
(autoload 'image-type-from-data "image" "\
@@ -14950,7 +14946,7 @@ means display it in the right marginal area.
Insert IMAGE into current buffer at point.
IMAGE is displayed by inserting STRING into the current buffer
with a `display' property whose value is the image. STRING
-defaults to the empty string if you omit it.
+defaults to a single space if you omit it.
AREA is where to display the image. AREA nil or omitted means
display it in the text area, a value of `left-margin' means
display it in the left marginal area, a value of `right-margin'
@@ -14966,8 +14962,8 @@ height of the image; integer values are taken as pixel values.
(autoload 'insert-sliced-image "image" "\
Insert IMAGE into current buffer at point.
IMAGE is displayed by inserting STRING into the current buffer
-with a `display' property whose value is the image. STRING is
-defaulted if you omit it.
+with a `display' property whose value is the image. The default
+STRING is a single space.
AREA is where to display the image. AREA nil or omitted means
display it in the text area, a value of `left-margin' means
display it in the left marginal area, a value of `right-margin'
@@ -15051,7 +15047,7 @@ If Emacs is compiled without ImageMagick support, this does nothing.
;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag
;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
;;;;;; image-dired-dired-with-window-configuration image-dired-dired-toggle-marked-thumbs)
-;;;;;; "image-dired" "image-dired.el" (20478 3673 653810 0))
+;;;;;; "image-dired" "image-dired.el" (20648 29678 511980 0))
;;; Generated autoloads from image-dired.el
(autoload 'image-dired-dired-toggle-marked-thumbs "image-dired" "\
@@ -15189,7 +15185,7 @@ easy-to-use form.
;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp
;;;;;; image-file-name-regexps image-file-name-extensions) "image-file"
-;;;;;; "image-file.el" (20355 10021 546955 0))
+;;;;;; "image-file.el" (20533 50312 678915 0))
;;; Generated autoloads from image-file.el
(defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\
@@ -15252,7 +15248,7 @@ An image file is one whose name has an extension in
;;;***
;;;### (autoloads (image-bookmark-jump image-mode-as-text image-minor-mode
-;;;;;; image-mode) "image-mode" "image-mode.el" (20580 10161 446444
+;;;;;; image-mode) "image-mode" "image-mode.el" (20656 14460 296991
;;;;;; 0))
;;; Generated autoloads from image-mode.el
@@ -15298,7 +15294,7 @@ on these modes.
;;;***
;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar
-;;;;;; imenu-sort-function) "imenu" "imenu.el" (20622 22438 32851
+;;;;;; imenu-sort-function) "imenu" "imenu.el" (20647 7982 429263
;;;;;; 0))
;;; Generated autoloads from imenu.el
@@ -15439,7 +15435,7 @@ for more information.
;;;### (autoloads (indian-2-column-to-ucs-region in-is13194-pre-write-conversion
;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region)
-;;;;;; "ind-util" "language/ind-util.el" (20355 10021 546955 0))
+;;;;;; "ind-util" "language/ind-util.el" (20533 50312 678915 0))
;;; Generated autoloads from language/ind-util.el
(autoload 'indian-compose-region "ind-util" "\
@@ -15470,7 +15466,7 @@ Convert old Emacs Devanagari characters to UCS.
;;;***
;;;### (autoloads (inferior-lisp) "inf-lisp" "progmodes/inf-lisp.el"
-;;;;;; (20584 7212 455152 0))
+;;;;;; (20584 355 183605 0))
;;; Generated autoloads from progmodes/inf-lisp.el
(autoload 'inferior-lisp "inf-lisp" "\
@@ -15492,8 +15488,8 @@ of `inferior-lisp-program'). Runs the hooks from
;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node
;;;;;; Info-mode info-finder info-apropos Info-index Info-directory
;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual
-;;;;;; info info-other-window) "info" "info.el" (20623 43301 870757
-;;;;;; 0))
+;;;;;; info info-other-window) "info" "info.el" (20668 19667 245432
+;;;;;; 713000))
;;; Generated autoloads from info.el
(defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\
@@ -15695,7 +15691,9 @@ type returned by `Info-bookmark-make-record', which see.
\(fn BMK)" nil nil)
(autoload 'info-display-manual "info" "\
-Go to Info buffer that displays MANUAL, creating it if none already exists.
+Display an Info buffer displaying MANUAL.
+If there is an existing Info buffer for MANUAL, display it.
+Otherwise, visit the manual in a new Info buffer.
\(fn MANUAL)" t nil)
@@ -15703,7 +15701,7 @@ Go to Info buffer that displays MANUAL, creating it if none already exists.
;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file
;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el"
-;;;;;; (20474 44971 970015 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from info-look.el
(autoload 'info-lookup-reset "info-look" "\
@@ -15752,7 +15750,7 @@ Perform completion on file preceding point.
;;;### (autoloads (info-xref-docstrings info-xref-check-all-custom
;;;;;; info-xref-check-all info-xref-check) "info-xref" "info-xref.el"
-;;;;;; (20476 31768 298871 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from info-xref.el
(autoload 'info-xref-check "info-xref" "\
@@ -15835,7 +15833,7 @@ the sources handy.
;;;***
;;;### (autoloads (batch-info-validate Info-validate Info-split Info-split-threshold
-;;;;;; Info-tagify) "informat" "informat.el" (20355 10021 546955
+;;;;;; Info-tagify) "informat" "informat.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from informat.el
@@ -15882,7 +15880,7 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"
;;;***
;;;### (autoloads (inversion-require-emacs) "inversion" "cedet/inversion.el"
-;;;;;; (20590 45996 129575 0))
+;;;;;; (20590 37036 437844 0))
;;; Generated autoloads from cedet/inversion.el
(autoload 'inversion-require-emacs "inversion" "\
@@ -15895,7 +15893,7 @@ Only checks one based on which kind of Emacs is being run.
;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method
;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from international/isearch-x.el
(autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -15915,8 +15913,8 @@ Toggle input method in interactive search.
;;;***
-;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from isearchb.el
(autoload 'isearchb-activate "isearchb" "\
@@ -15932,7 +15930,7 @@ accessed via isearchb.
;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only
;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso
;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt"
-;;;;;; "international/iso-cvt.el" (20355 10021 546955 0))
+;;;;;; "international/iso-cvt.el" (20533 50312 678915 0))
;;; Generated autoloads from international/iso-cvt.el
(autoload 'iso-spanish "iso-cvt" "\
@@ -16023,7 +16021,7 @@ Add submenus to the File menu, to convert to and from various formats.
;;;***
;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;; (20486 36135 22104 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from international/iso-transl.el
(define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
(autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap)
@@ -16031,10 +16029,11 @@ Add submenus to the File menu, to convert to and from various formats.
;;;***
;;;### (autoloads (ispell-message ispell-minor-mode ispell ispell-complete-word-interior-frag
-;;;;;; ispell-complete-word ispell-continue ispell-buffer ispell-comments-and-strings
-;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell
-;;;;;; ispell-help ispell-pdict-save ispell-word ispell-personal-dictionary)
-;;;;;; "ispell" "textmodes/ispell.el" (20601 16294 451653 0))
+;;;;;; ispell-complete-word ispell-continue ispell-buffer-with-debug
+;;;;;; ispell-buffer ispell-comments-and-strings ispell-region ispell-change-dictionary
+;;;;;; ispell-kill-ispell ispell-help ispell-pdict-save ispell-word
+;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el"
+;;;;;; (20669 24410 534430 0))
;;; Generated autoloads from textmodes/ispell.el
(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
@@ -16187,6 +16186,12 @@ Check the current buffer for spelling errors interactively.
\(fn)" t nil)
+(autoload 'ispell-buffer-with-debug "ispell" "\
+`ispell-buffer' with some output sent to `ispell-debug-buffer' buffer.
+Use APPEND to append the info to previous buffer if exists.
+
+\(fn &optional APPEND)" t nil)
+
(autoload 'ispell-continue "ispell" "\
Continue a halted spelling session beginning with the current word.
@@ -16261,8 +16266,8 @@ You can bind this to the key C-c i in GNUS or mail by adding to
;;;***
-;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20577
-;;;;;; 33959 40183 0))
+;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20576
+;;;;;; 18956 372056 655000))
;;; Generated autoloads from iswitchb.el
(defvar iswitchb-mode nil "\
@@ -16290,7 +16295,7 @@ between buffers using substrings. See `iswitchb' for details.
;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region
;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku
;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal)
-;;;;;; "japan-util" "language/japan-util.el" (20355 10021 546955
+;;;;;; "japan-util" "language/japan-util.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from language/japan-util.el
@@ -16369,7 +16374,7 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
;;;***
;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr"
-;;;;;; "jka-compr.el" (20355 10021 546955 0))
+;;;;;; "jka-compr.el" (20533 50312 678915 0))
;;; Generated autoloads from jka-compr.el
(defvar jka-compr-inhibit nil "\
@@ -16392,8 +16397,8 @@ by `jka-compr-installed'.
;;;***
-;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20532 45476 981297
-;;;;;; 0))
+;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20665 32946 244749
+;;;;;; 462000))
;;; Generated autoloads from progmodes/js.el
(autoload 'js-mode "js" "\
@@ -16407,7 +16412,7 @@ Major mode for editing JavaScript.
;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup
;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emulation/keypad.el
(defvar keypad-setup nil "\
@@ -16463,7 +16468,7 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.'
;;;***
;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from international/kinsoku.el
(autoload 'kinsoku "kinsoku" "\
@@ -16484,8 +16489,8 @@ the context of text formatting.
;;;***
-;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from international/kkc.el
(defvar kkc-after-update-conversion-functions nil "\
@@ -16510,7 +16515,7 @@ and the return value is the length of the conversion.
;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro
;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter
;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro kmacro-exec-ring-item)
-;;;;;; "kmacro" "kmacro.el" (20471 22929 875294 592000))
+;;;;;; "kmacro" "kmacro.el" (20533 50312 678915 0))
;;; Generated autoloads from kmacro.el
(global-set-key "\C-x(" 'kmacro-start-macro)
(global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16621,7 +16626,7 @@ If kbd macro currently being defined end it before activating it.
;;;***
;;;### (autoloads (setup-korean-environment-internal) "korea-util"
-;;;;;; "language/korea-util.el" (20501 3499 284800 0))
+;;;;;; "language/korea-util.el" (20533 50312 678915 0))
;;; Generated autoloads from language/korea-util.el
(defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -16636,7 +16641,7 @@ The kind of Korean keyboard for Korean input method.
;;;***
;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el"
-;;;;;; (20545 57511 257469 0))
+;;;;;; (20545 60086 510404 0))
;;; Generated autoloads from play/landmark.el
(defalias 'landmark-repeat 'landmark-test-run)
@@ -16668,7 +16673,7 @@ Use \\[describe-mode] for more info.
;;;### (autoloads (lao-compose-region lao-composition-function lao-transcribe-roman-to-lao-string
;;;;;; lao-transcribe-single-roman-syllable-to-lao lao-compose-string)
-;;;;;; "lao-util" "language/lao-util.el" (20355 10021 546955 0))
+;;;;;; "lao-util" "language/lao-util.el" (20533 50312 678915 0))
;;; Generated autoloads from language/lao-util.el
(autoload 'lao-compose-string "lao-util" "\
@@ -16707,7 +16712,7 @@ Transcribe Romanized Lao string STR to Lao character string.
;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc
;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist)
-;;;;;; "latexenc" "international/latexenc.el" (20355 10021 546955
+;;;;;; "latexenc" "international/latexenc.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from international/latexenc.el
@@ -16740,8 +16745,8 @@ coding system names is determined from `latex-inputenc-coding-alist'.
;;;***
;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display)
-;;;;;; "latin1-disp" "international/latin1-disp.el" (20577 33959
-;;;;;; 40183 0))
+;;;;;; "latin1-disp" "international/latin1-disp.el" (20577 7722
+;;;;;; 729771 155000))
;;; Generated autoloads from international/latin1-disp.el
(defvar latin1-display nil "\
@@ -16783,7 +16788,7 @@ use either \\[customize] or the function `latin1-display'.")
;;;***
;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/ld-script.el
(autoload 'ld-script-mode "ld-script" "\
@@ -16793,7 +16798,7 @@ A major mode to edit GNU ld script files
;;;***
-;;;### (autoloads (life) "life" "play/life.el" (20545 57511 257469
+;;;### (autoloads (life) "life" "play/life.el" (20545 60086 510404
;;;;;; 0))
;;; Generated autoloads from play/life.el
@@ -16808,7 +16813,7 @@ generations (this defaults to 1).
;;;***
;;;### (autoloads (global-linum-mode linum-mode) "linum" "linum.el"
-;;;;;; (20580 10161 446444 0))
+;;;;;; (20581 13032 944808 0))
;;; Generated autoloads from linum.el
(autoload 'linum-mode "linum" "\
@@ -16844,8 +16849,8 @@ See `linum-mode' for more information on Linum mode.
;;;***
-;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20476
-;;;;;; 31768 298871 0))
+;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from loadhist.el
(autoload 'unload-feature "loadhist" "\
@@ -16877,7 +16882,7 @@ something strange, such as redefining an Emacs function.
;;;***
;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches)
-;;;;;; "locate" "locate.el" (20566 63671 243798 0))
+;;;;;; "locate" "locate.el" (20566 45835 254600 494000))
;;; Generated autoloads from locate.el
(defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -16929,8 +16934,8 @@ except that FILTER is not optional.
;;;***
-;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20586 48936
-;;;;;; 135199 0))
+;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20586 27094
+;;;;;; 290288 0))
;;; Generated autoloads from vc/log-edit.el
(autoload 'log-edit "log-edit" "\
@@ -16961,8 +16966,8 @@ done. Otherwise, it uses the current buffer.
;;;***
-;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20515
-;;;;;; 36389 544939 0))
+;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from vc/log-view.el
(autoload 'log-view-mode "log-view" "\
@@ -16972,35 +16977,9 @@ Major mode for browsing CVS log output.
;;;***
-;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (20355
-;;;;;; 10021 546955 0))
-;;; Generated autoloads from longlines.el
-
-(autoload 'longlines-mode "longlines" "\
-Toggle Long Lines mode in this buffer.
-With a prefix argument ARG, enable Long Lines mode if ARG is
-positive, and disable it otherwise. If called from Lisp, enable
-the mode if ARG is omitted or nil.
-
-When Long Lines mode is enabled, long lines are wrapped if they
-extend beyond `fill-column'. The soft newlines used for line
-wrapping will not show up when the text is yanked or saved to
-disk.
-
-If the variable `longlines-auto-wrap' is non-nil, lines are
-automatically wrapped whenever the buffer is changed. You can
-always call `fill-paragraph' to fill individual paragraphs.
-
-If the variable `longlines-show-hard-newlines' is non-nil, hard
-newlines are indicated with a symbol.
-
-\(fn &optional ARG)" t nil)
-
-;;;***
-
;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer
-;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20476
-;;;;;; 31768 298871 0))
+;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from lpr.el
(defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
@@ -17096,7 +17075,7 @@ for further customization of the printer command.
;;;***
;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from ls-lisp.el
(defvar ls-lisp-support-shell-wildcards t "\
@@ -17108,7 +17087,7 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).")
;;;***
;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 46417 662629 772000))
;;; Generated autoloads from calendar/lunar.el
(autoload 'lunar-phases "lunar" "\
@@ -17122,8 +17101,8 @@ This function is suitable for execution in an init file.
;;;***
-;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20665
+;;;;;; 36931 628705 467000))
;;; Generated autoloads from progmodes/m4-mode.el
(autoload 'm4-mode "m4-mode" "\
@@ -17134,7 +17113,7 @@ A major mode to edit m4 macro files.
;;;***
;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro
-;;;;;; name-last-kbd-macro) "macros" "macros.el" (20355 10021 546955
+;;;;;; name-last-kbd-macro) "macros" "macros.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from macros.el
@@ -17224,7 +17203,7 @@ and then select the region of un-tablified names and use
;;;***
;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr"
-;;;;;; "mail/mail-extr.el" (20355 10021 546955 0))
+;;;;;; "mail/mail-extr.el" (20533 50312 678915 0))
;;; Generated autoloads from mail/mail-extr.el
(autoload 'mail-extract-address-components "mail-extr" "\
@@ -17256,7 +17235,7 @@ Convert mail domain DOMAIN to the country it corresponds to.
;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history
;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 46269 462622 211000))
;;; Generated autoloads from mail/mail-hist.el
(autoload 'mail-hist-define-keys "mail-hist" "\
@@ -17288,7 +17267,7 @@ This function normally would be called when the message is sent.
;;;### (autoloads (mail-fetch-field mail-unquote-printable-region
;;;;;; mail-unquote-printable mail-quote-printable-region mail-quote-printable
;;;;;; mail-file-babyl-p mail-dont-reply-to-names mail-use-rfc822)
-;;;;;; "mail-utils" "mail/mail-utils.el" (20355 10021 546955 0))
+;;;;;; "mail-utils" "mail/mail-utils.el" (20533 50312 678915 0))
;;; Generated autoloads from mail/mail-utils.el
(defvar mail-use-rfc822 nil "\
@@ -17364,7 +17343,7 @@ matches may be returned from the message body.
;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup
;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 34890 729127 0))
;;; Generated autoloads from mail/mailabbrev.el
(defvar mail-abbrevs-mode nil "\
@@ -17415,7 +17394,7 @@ double-quotes.
;;;### (autoloads (mail-complete mail-completion-at-point-function
;;;;;; define-mail-alias expand-mail-aliases mail-complete-style)
-;;;;;; "mailalias" "mail/mailalias.el" (20577 33959 40183 0))
+;;;;;; "mailalias" "mail/mailalias.el" (20576 15960 587930 157000))
;;; Generated autoloads from mail/mailalias.el
(defvar mail-complete-style 'angles "\
@@ -17469,7 +17448,7 @@ current header, calls `mail-complete-function' and passes prefix ARG if any.
;;;***
;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from mail/mailclient.el
(autoload 'mailclient-send-it "mailclient" "\
@@ -17483,8 +17462,8 @@ The mail client is taken to be the handler of mailto URLs.
;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode
;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode)
-;;;;;; "make-mode" "progmodes/make-mode.el" (20392 30149 675975
-;;;;;; 59000))
+;;;;;; "make-mode" "progmodes/make-mode.el" (20665 39324 196680
+;;;;;; 404000))
;;; Generated autoloads from progmodes/make-mode.el
(autoload 'makefile-mode "make-mode" "\
@@ -17601,8 +17580,8 @@ An adapted `makefile-mode' that knows about imake.
;;;***
-;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from makesum.el
(autoload 'make-command-summary "makesum" "\
@@ -17614,7 +17593,7 @@ Previous contents of that buffer are killed first.
;;;***
;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el"
-;;;;;; (20523 62082 997685 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from man.el
(defalias 'manual-entry 'man)
@@ -17668,8 +17647,8 @@ Default bookmark handler for Man buffers.
;;;***
-;;;### (autoloads (master-mode) "master" "master.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (master-mode) "master" "master.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from master.el
(autoload 'master-mode "master" "\
@@ -17692,7 +17671,7 @@ yourself the value of `master-of' by calling `master-show-slave'.
;;;***
;;;### (autoloads (minibuffer-depth-indicate-mode) "mb-depth" "mb-depth.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from mb-depth.el
(defvar minibuffer-depth-indicate-mode nil "\
@@ -17725,7 +17704,7 @@ recursion depth in the minibuffer prompt. This is only useful if
;;;;;; message-forward-make-body message-forward message-recover
;;;;;; message-supersede message-cancel-news message-followup message-wide-reply
;;;;;; message-reply message-news message-mail message-mode) "message"
-;;;;;; "gnus/message.el" (20567 23165 75548 0))
+;;;;;; "gnus/message.el" (20650 61396 673885 0))
;;; Generated autoloads from gnus/message.el
(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -17891,7 +17870,7 @@ which specify the range to operate on.
;;;***
;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el"
-;;;;;; (20399 35365 4050 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/meta-mode.el
(autoload 'metafont-mode "meta-mode" "\
@@ -17908,7 +17887,7 @@ Major mode for editing MetaPost sources.
;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body
;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from mail/metamail.el
(autoload 'metamail-interpret-header "metamail" "\
@@ -17953,7 +17932,7 @@ redisplayed as output is inserted.
;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose
;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp"
-;;;;;; "mh-e/mh-comp.el" (20355 10021 546955 0))
+;;;;;; "mh-e/mh-comp.el" (20660 26176 137583 0))
;;; Generated autoloads from mh-e/mh-comp.el
(autoload 'mh-smail "mh-comp" "\
@@ -18043,8 +18022,8 @@ delete the draft message.
;;;***
-;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20614 54428
-;;;;;; 654267 0))
+;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20660 26176
+;;;;;; 137583 0))
;;; Generated autoloads from mh-e/mh-e.el
(put 'mh-progs 'risky-local-variable t)
@@ -18061,7 +18040,7 @@ Display version information about MH-E and the MH mail handling system.
;;;***
;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder"
-;;;;;; "mh-e/mh-folder.el" (20371 55972 331861 0))
+;;;;;; "mh-e/mh-folder.el" (20660 26176 137583 0))
;;; Generated autoloads from mh-e/mh-folder.el
(autoload 'mh-rmail "mh-folder" "\
@@ -18143,7 +18122,7 @@ perform the operation on all messages in that region.
;;;***
;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight"
-;;;;;; "midnight.el" (20478 3673 653810 0))
+;;;;;; "midnight.el" (20533 50312 678915 0))
;;; Generated autoloads from midnight.el
(autoload 'clean-buffer-list "midnight" "\
@@ -18170,7 +18149,7 @@ to its second argument TM.
;;;***
;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef"
-;;;;;; "minibuf-eldef.el" (20580 10161 446444 0))
+;;;;;; "minibuf-eldef.el" (20647 7982 429263 0))
;;; Generated autoloads from minibuf-eldef.el
(defvar minibuffer-electric-default-mode nil "\
@@ -18200,7 +18179,7 @@ is modified to remove the default indication.
;;;***
;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el"
-;;;;;; (20533 5993 500881 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from misc.el
(autoload 'butterfly "misc" "\
@@ -18230,7 +18209,7 @@ The return value is always nil.
;;;### (autoloads (multi-isearch-files-regexp multi-isearch-files
;;;;;; multi-isearch-buffers-regexp multi-isearch-buffers multi-isearch-setup)
-;;;;;; "misearch" "misearch.el" (20490 33188 850375 0))
+;;;;;; "misearch" "misearch.el" (20533 50312 678915 0))
;;; Generated autoloads from misearch.el
(add-hook 'isearch-mode-hook 'multi-isearch-setup)
@@ -18312,7 +18291,7 @@ whose file names match the specified wildcard.
;;;***
;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 46143 538618 330000))
;;; Generated autoloads from progmodes/mixal-mode.el
(autoload 'mixal-mode "mixal-mode" "\
@@ -18323,7 +18302,7 @@ Major mode for the mixal asm language.
;;;***
;;;### (autoloads (mm-default-file-encoding) "mm-encode" "gnus/mm-encode.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/mm-encode.el
(autoload 'mm-default-file-encoding "mm-encode" "\
@@ -18334,7 +18313,7 @@ Return a default encoding for FILE.
;;;***
;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents)
-;;;;;; "mm-extern" "gnus/mm-extern.el" (20355 10021 546955 0))
+;;;;;; "mm-extern" "gnus/mm-extern.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/mm-extern.el
(autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -18353,7 +18332,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
;;;***
;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/mm-partial.el
(autoload 'mm-inline-partial "mm-partial" "\
@@ -18367,7 +18346,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
;;;***
;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents)
-;;;;;; "mm-url" "gnus/mm-url.el" (20495 51111 757560 0))
+;;;;;; "mm-url" "gnus/mm-url.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/mm-url.el
(autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -18384,7 +18363,7 @@ Insert file contents of URL using `mm-url-program'.
;;;***
;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu"
-;;;;;; "gnus/mm-uu.el" (20355 10021 546955 0))
+;;;;;; "gnus/mm-uu.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/mm-uu.el
(autoload 'mm-uu-dissect "mm-uu" "\
@@ -18404,7 +18383,7 @@ Assume text has been decoded if DECODED is non-nil.
;;;***
;;;### (autoloads (mml-attach-file mml-to-mime) "mml" "gnus/mml.el"
-;;;;;; (20567 23165 75548 0))
+;;;;;; (20567 14136 702359 0))
;;; Generated autoloads from gnus/mml.el
(autoload 'mml-to-mime "mml" "\
@@ -18430,7 +18409,7 @@ body) or \"attachment\" (separate from the body).
;;;***
;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/mml1991.el
(autoload 'mml1991-encrypt "mml1991" "\
@@ -18447,7 +18426,7 @@ body) or \"attachment\" (separate from the body).
;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt
;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt)
-;;;;;; "mml2015" "gnus/mml2015.el" (20355 10021 546955 0))
+;;;;;; "mml2015" "gnus/mml2015.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/mml2015.el
(autoload 'mml2015-decrypt "mml2015" "\
@@ -18487,16 +18466,16 @@ body) or \"attachment\" (separate from the body).
;;;***
-;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20406 8611
-;;;;;; 875037 0))
+;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20585 42247
+;;;;;; 723488 573000))
;;; Generated autoloads from cedet/mode-local.el
(put 'define-overloadable-function 'doc-string-elt 3)
;;;***
-;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from progmodes/modula2.el
(defalias 'modula-2-mode 'm2-mode)
@@ -18530,7 +18509,7 @@ followed by the first character of the construct.
;;;***
;;;### (autoloads (denato-region nato-region unmorse-region morse-region)
-;;;;;; "morse" "play/morse.el" (20355 10021 546955 0))
+;;;;;; "morse" "play/morse.el" (20533 50312 678915 0))
;;; Generated autoloads from play/morse.el
(autoload 'morse-region "morse" "\
@@ -18556,7 +18535,7 @@ Convert NATO phonetic alphabet in region to ordinary ASCII text.
;;;***
;;;### (autoloads (mouse-drag-drag mouse-drag-throw) "mouse-drag"
-;;;;;; "mouse-drag.el" (20566 63671 243798 0))
+;;;;;; "mouse-drag.el" (20566 45828 866603 595000))
;;; Generated autoloads from mouse-drag.el
(autoload 'mouse-drag-throw "mouse-drag" "\
@@ -18603,7 +18582,7 @@ To test this function, evaluate:
;;;***
-;;;### (autoloads (mpc) "mpc" "mpc.el" (20523 62082 997685 0))
+;;;### (autoloads (mpc) "mpc" "mpc.el" (20533 50312 678915 0))
;;; Generated autoloads from mpc.el
(autoload 'mpc "mpc" "\
@@ -18613,7 +18592,7 @@ Main entry point for MPC.
;;;***
-;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20545 57511 257469
+;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20545 60086 510404
;;;;;; 0))
;;; Generated autoloads from play/mpuz.el
@@ -18624,7 +18603,7 @@ Multiplication puzzle with GNU Emacs.
;;;***
-;;;### (autoloads (msb-mode) "msb" "msb.el" (20476 31768 298871 0))
+;;;### (autoloads (msb-mode) "msb" "msb.el" (20533 50312 678915 0))
;;; Generated autoloads from msb.el
(defvar msb-mode nil "\
@@ -18654,7 +18633,7 @@ different buffer menu using the function `msb'.
;;;;;; describe-current-coding-system describe-current-coding-system-briefly
;;;;;; describe-coding-system describe-character-set list-charset-chars
;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el"
-;;;;;; (20577 33959 40183 0))
+;;;;;; (20576 16405 87949 626000))
;;; Generated autoloads from international/mule-diag.el
(autoload 'list-character-sets "mule-diag" "\
@@ -18791,7 +18770,7 @@ The default is 20. If LIMIT is negative, do not limit the listing.
;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion
;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist
;;;;;; truncate-string-to-width store-substring) "mule-util" "international/mule-util.el"
-;;;;;; (20577 33959 40183 0))
+;;;;;; (20577 7556 49770 693000))
;;; Generated autoloads from international/mule-util.el
(defsubst string-to-list (string) "\
@@ -18922,11 +18901,88 @@ per-character basis, this may not be accurate.
;;;***
+;;;### (autoloads (advice-member-p advice-remove advice-add advice--add-function
+;;;;;; add-function advice--buffer-local advice--remove-function)
+;;;;;; "nadvice" "emacs-lisp/nadvice.el" (20652 52617 313760 0))
+;;; Generated autoloads from emacs-lisp/nadvice.el
+
+(autoload 'advice--remove-function "nadvice" "\
+
+
+\(fn FLIST FUNCTION)" nil nil)
+
+(autoload 'advice--buffer-local "nadvice" "\
+Buffer-local value of VAR, presumed to contain a function.
+
+\(fn VAR)" nil nil)
+
+(autoload 'add-function "nadvice" "\
+Add a piece of advice on the function stored at PLACE.
+FUNCTION describes the code to add. WHERE describes where to add it.
+WHERE can be explained by showing the resulting new function, as the
+result of combining FUNCTION and the previous value of PLACE, which we
+call OLDFUN here:
+`:before' (lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r))
+`:after' (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r)))
+`:around' (lambda (&rest r) (apply FUNCTION OLDFUN r))
+`:before-while' (lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r)))
+`:before-until' (lambda (&rest r) (or (apply FUNCTION r) (apply OLDFUN r)))
+`:after-while' (lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r)))
+`:after-until' (lambda (&rest r) (or (apply OLDFUN r) (apply FUNCTION r)))
+If FUNCTION was already added, do nothing.
+PROPS is an alist of additional properties, among which the following have
+a special meaning:
+- `name': a string or symbol. It can be used to refer to this piece of advice.
+
+PLACE cannot be a simple variable. Instead it should either be
+\(default-value 'VAR) or (local 'VAR) depending on whether FUNCTION
+should be applied to VAR buffer-locally or globally.
+
+If one of FUNCTION or OLDFUN is interactive, then the resulting function
+is also interactive. There are 3 cases:
+- FUNCTION is not interactive: the interactive spec of OLDFUN is used.
+- The interactive spec of FUNCTION is itself a function: it should take one
+ argument (the interactive spec of OLDFUN, which it can pass to
+ `advice-eval-interactive-spec') and return the list of arguments to use.
+- Else, use the interactive spec of FUNCTION and ignore the one of OLDFUN.
+
+\(fn WHERE PLACE FUNCTION &optional PROPS)" nil t)
+
+(autoload 'advice--add-function "nadvice" "\
+
+
+\(fn WHERE REF FUNCTION PROPS)" nil nil)
+
+(autoload 'advice-add "nadvice" "\
+Like `add-function' but for the function named SYMBOL.
+Contrary to `add-function', this will properly handle the cases where SYMBOL
+is defined as a macro, alias, command, ...
+
+\(fn SYMBOL WHERE FUNCTION &optional PROPS)" nil nil)
+
+(autoload 'advice-remove "nadvice" "\
+Like `remove-function' but for the function named SYMBOL.
+Contrary to `remove-function', this will work also when SYMBOL is a macro
+and it will not signal an error if SYMBOL is not `fboundp'.
+Instead of the actual function to remove, FUNCTION can also be the `name'
+of the piece of advice.
+
+\(fn SYMBOL FUNCTION)" nil nil)
+
+(autoload 'advice-member-p "nadvice" "\
+Return non-nil if ADVICE has been added to FUNCTION-NAME.
+Instead of ADVICE being the actual function, it can also be the `name'
+of the piece of advice.
+
+\(fn ADVICE FUNCTION-NAME)" nil nil)
+
+;;;***
+
;;;### (autoloads (network-connection network-connection-to-service
;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host
;;;;;; nslookup nslookup-host ping traceroute route arp netstat
-;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from net/net-utils.el
(autoload 'ifconfig "net-utils" "\
@@ -19020,8 +19076,8 @@ Open a network connection to HOST on PORT.
;;;***
-;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20495
-;;;;;; 51111 757560 0))
+;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from net/netrc.el
(autoload 'netrc-credentials "netrc" "\
@@ -19034,7 +19090,7 @@ listed in the PORTS list.
;;;***
;;;### (autoloads (open-network-stream) "network-stream" "net/network-stream.el"
-;;;;;; (20369 14251 85829 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from net/network-stream.el
(autoload 'open-network-stream "network-stream" "\
@@ -19125,7 +19181,7 @@ STARTTLS upgrades even if Emacs doesn't have built-in TLS functionality.
;;;***
;;;### (autoloads (newsticker-start newsticker-running-p) "newst-backend"
-;;;;;; "net/newst-backend.el" (20577 33959 40183 0))
+;;;;;; "net/newst-backend.el" (20576 15743 119920 938000))
;;; Generated autoloads from net/newst-backend.el
(autoload 'newsticker-running-p "newst-backend" "\
@@ -19147,7 +19203,7 @@ Run `newsticker-start-hook' if newsticker was not running already.
;;;***
;;;### (autoloads (newsticker-plainview) "newst-plainview" "net/newst-plainview.el"
-;;;;;; (20434 17809 692608 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from net/newst-plainview.el
(autoload 'newsticker-plainview "newst-plainview" "\
@@ -19158,7 +19214,7 @@ Start newsticker plainview.
;;;***
;;;### (autoloads (newsticker-show-news) "newst-reader" "net/newst-reader.el"
-;;;;;; (20434 17809 692608 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from net/newst-reader.el
(autoload 'newsticker-show-news "newst-reader" "\
@@ -19169,7 +19225,7 @@ Start reading news. You may want to bind this to a key.
;;;***
;;;### (autoloads (newsticker-start-ticker newsticker-ticker-running-p)
-;;;;;; "newst-ticker" "net/newst-ticker.el" (20427 14766 970343
+;;;;;; "newst-ticker" "net/newst-ticker.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from net/newst-ticker.el
@@ -19191,7 +19247,7 @@ running already.
;;;***
;;;### (autoloads (newsticker-treeview) "newst-treeview" "net/newst-treeview.el"
-;;;;;; (20590 45996 129575 0))
+;;;;;; (20590 37036 437844 0))
;;; Generated autoloads from net/newst-treeview.el
(autoload 'newsticker-treeview "newst-treeview" "\
@@ -19202,7 +19258,7 @@ Start newsticker treeview.
;;;***
;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el"
-;;;;;; (20614 54428 654267 0))
+;;;;;; (20615 22847 537904 0))
;;; Generated autoloads from gnus/nndiary.el
(autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -19212,8 +19268,8 @@ Generate NOV databases in all nndiary directories.
;;;***
-;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from gnus/nndoc.el
(autoload 'nndoc-add-type "nndoc" "\
@@ -19228,7 +19284,7 @@ symbol in the alist.
;;;***
;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el"
-;;;;;; (20458 56750 651721 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/nnfolder.el
(autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -19240,7 +19296,7 @@ This command does not work if you use short group names.
;;;***
;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el"
-;;;;;; (20458 56750 651721 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/nnml.el
(autoload 'nnml-generate-nov-databases "nnml" "\
@@ -19251,7 +19307,7 @@ Generate NOV databases in all nnml directories.
;;;***
;;;### (autoloads (disable-command enable-command disabled-command-function)
-;;;;;; "novice" "novice.el" (20566 63671 243798 0))
+;;;;;; "novice" "novice.el" (20566 45824 34603 301000))
;;; Generated autoloads from novice.el
(define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1")
@@ -19284,7 +19340,7 @@ future sessions.
;;;***
;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from textmodes/nroff-mode.el
(autoload 'nroff-mode "nroff-mode" "\
@@ -19299,7 +19355,7 @@ closing requests for requests that are used in matched pairs.
;;;***
;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el"
-;;;;;; (20523 62082 997685 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from nxml/nxml-glyph.el
(autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -19311,8 +19367,8 @@ Return nil if the face cannot display a glyph for N.
;;;***
-;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20478
-;;;;;; 3673 653810 0))
+;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from nxml/nxml-mode.el
(autoload 'nxml-mode "nxml-mode" "\
@@ -19374,7 +19430,7 @@ Many aspects this mode can be customized using
;;;***
;;;### (autoloads (nxml-enable-unicode-char-name-sets) "nxml-uchnm"
-;;;;;; "nxml/nxml-uchnm.el" (20355 10021 546955 0))
+;;;;;; "nxml/nxml-uchnm.el" (20533 50312 678915 0))
;;; Generated autoloads from nxml/nxml-uchnm.el
(autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
@@ -19387,7 +19443,7 @@ the variable `nxml-enabled-unicode-blocks'.
;;;***
;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/octave-inf.el
(autoload 'inferior-octave "octave-inf" "\
@@ -19410,7 +19466,7 @@ startup file, `~/.emacs-octave'.
;;;***
;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 45245 150579 485000))
;;; Generated autoloads from progmodes/octave-mod.el
(autoload 'octave-mode "octave-mod" "\
@@ -19498,7 +19554,7 @@ including a reproducible test case and send the message.
;;;;;; org-run-like-in-org-mode turn-on-orgstruct++ turn-on-orgstruct
;;;;;; orgstruct-mode org-global-cycle org-cycle org-mode org-clock-persistence-insinuate
;;;;;; turn-on-orgtbl org-version org-babel-do-load-languages) "org"
-;;;;;; "org/org.el" (20618 55210 422086 0))
+;;;;;; "org/org.el" (20619 27099 673959 0))
;;; Generated autoloads from org/org.el
(autoload 'org-babel-do-load-languages "org" "\
@@ -19724,7 +19780,7 @@ Call the customize function with org as argument.
;;;;;; org-search-view org-agenda-list org-batch-store-agenda-views
;;;;;; org-store-agenda-views org-batch-agenda-csv org-batch-agenda
;;;;;; org-agenda org-toggle-sticky-agenda) "org-agenda" "org/org-agenda.el"
-;;;;;; (20618 55210 422086 0))
+;;;;;; (20619 27099 673959 0))
;;; Generated autoloads from org/org-agenda.el
(autoload 'org-toggle-sticky-agenda "org-agenda" "\
@@ -19981,7 +20037,7 @@ to override `appt-message-warning-time'.
;;;***
;;;### (autoloads (org-beamer-mode org-beamer-sectioning) "org-beamer"
-;;;;;; "org/org-beamer.el" (20618 55210 422086 0))
+;;;;;; "org/org-beamer.el" (20619 27099 673959 0))
;;; Generated autoloads from org/org-beamer.el
(autoload 'org-beamer-sectioning "org-beamer" "\
@@ -20003,8 +20059,8 @@ Special support for editing Org-mode files made to export to beamer.
;;;***
;;;### (autoloads (org-capture-import-remember-templates org-capture
-;;;;;; org-capture-string) "org-capture" "org/org-capture.el" (20618
-;;;;;; 55210 422086 0))
+;;;;;; org-capture-string) "org-capture" "org/org-capture.el" (20619
+;;;;;; 27099 673959 0))
;;; Generated autoloads from org/org-capture.el
(autoload 'org-capture-string "org-capture" "\
@@ -20045,8 +20101,8 @@ Set org-capture-templates to be similar to `org-remember-templates'.
;;;***
;;;### (autoloads (org-agenda-columns org-insert-columns-dblock org-dblock-write:columnview
-;;;;;; org-columns) "org-colview" "org/org-colview.el" (20618 55210
-;;;;;; 422086 0))
+;;;;;; org-columns) "org-colview" "org/org-colview.el" (20619 27099
+;;;;;; 673959 0))
;;; Generated autoloads from org/org-colview.el
(autoload 'org-columns "org-colview" "\
@@ -20090,7 +20146,7 @@ Turn on or update column view in the agenda.
;;;***
;;;### (autoloads (org-check-version) "org-compat" "org/org-compat.el"
-;;;;;; (20618 55210 422086 0))
+;;;;;; (20619 27099 673959 0))
;;; Generated autoloads from org/org-compat.el
(autoload 'org-check-version "org-compat" "\
@@ -20101,7 +20157,7 @@ Try very hard to provide sensible version strings.
;;;***
;;;### (autoloads (org-git-version org-release) "org-version" "org/org-version.el"
-;;;;;; (20618 55210 422086 0))
+;;;;;; (20619 27099 673959 0))
;;; Generated autoloads from org/org-version.el
(autoload 'org-release "org-version" "\
@@ -20122,7 +20178,7 @@ The location of ODT styles.")
;;;***
;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from outline.el
(put 'outline-regexp 'safe-local-variable 'stringp)
(put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
@@ -20186,7 +20242,7 @@ See the command `outline-mode' for more information on this mode.
;;;### (autoloads (list-packages describe-package package-initialize
;;;;;; package-refresh-contents package-install-file package-install-from-buffer
;;;;;; package-install package-enable-at-startup) "package" "emacs-lisp/package.el"
-;;;;;; (20622 22438 32851 0))
+;;;;;; (20622 16646 799433 0))
;;; Generated autoloads from emacs-lisp/package.el
(defvar package-enable-at-startup t "\
@@ -20256,8 +20312,8 @@ The list is displayed in a buffer named `*Packages*'.
;;;***
-;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20542 50478
-;;;;;; 439878 507000))
+;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20542 54621
+;;;;;; 56606 0))
;;; Generated autoloads from paren.el
(defvar show-paren-mode nil "\
@@ -20284,7 +20340,7 @@ matching parenthesis is highlighted in `show-paren-style' after
;;;***
;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from calendar/parse-time.el
(put 'parse-time-rules 'risky-local-variable t)
@@ -20297,8 +20353,8 @@ unknown are returned as nil.
;;;***
-;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20478
-;;;;;; 3673 653810 0))
+;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from progmodes/pascal.el
(autoload 'pascal-mode "pascal" "\
@@ -20351,7 +20407,8 @@ no args, if that value is non-nil.
;;;***
;;;### (autoloads (password-in-cache-p password-cache-expiry password-cache)
-;;;;;; "password-cache" "password-cache.el" (20577 33959 40183 0))
+;;;;;; "password-cache" "password-cache.el" (20576 15327 199903
+;;;;;; 603000))
;;; Generated autoloads from password-cache.el
(defvar password-cache t "\
@@ -20373,7 +20430,7 @@ Check if KEY is in the cache.
;;;***
;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el"
-;;;;;; (20582 12914 894781 0))
+;;;;;; (20584 355 183605 0))
;;; Generated autoloads from emacs-lisp/pcase.el
(autoload 'pcase "pcase" "\
@@ -20434,8 +20491,8 @@ of the form (UPAT EXP).
;;;***
-;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from pcmpl-cvs.el
(autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20446,7 +20503,7 @@ Completion rules for the `cvs' command.
;;;***
;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip)
-;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20572 16038 402143 0))
+;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20571 55599 814625 0))
;;; Generated autoloads from pcmpl-gnu.el
(autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20474,7 +20531,7 @@ Completion for the GNU tar utility.
;;;***
;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill)
-;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20355 10021 546955 0))
+;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20533 50312 678915 0))
;;; Generated autoloads from pcmpl-linux.el
(autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20494,8 +20551,8 @@ Completion for GNU/Linux `mount'.
;;;***
-;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20523
-;;;;;; 62082 997685 0))
+;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from pcmpl-rpm.el
(autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20507,7 +20564,7 @@ Completion for the `rpm' command.
;;;### (autoloads (pcomplete/scp pcomplete/ssh pcomplete/chgrp pcomplete/chown
;;;;;; pcomplete/which pcomplete/xargs pcomplete/rm pcomplete/rmdir
-;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20376 40834 914217
+;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from pcmpl-unix.el
@@ -20565,8 +20622,8 @@ Includes files as well as host names followed by a colon.
;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list
;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete
-;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20582
-;;;;;; 12914 894781 0))
+;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20652
+;;;;;; 52617 313760 0))
;;; Generated autoloads from pcomplete.el
(autoload 'pcomplete "pcomplete" "\
@@ -20625,7 +20682,7 @@ Setup `shell-mode' to use pcomplete.
;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status
;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs"
-;;;;;; "vc/pcvs.el" (20584 7212 455152 0))
+;;;;;; "vc/pcvs.el" (20584 355 183605 0))
;;; Generated autoloads from vc/pcvs.el
(autoload 'cvs-checkout "pcvs" "\
@@ -20700,8 +20757,8 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
;;;***
-;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20576 42138
-;;;;;; 697312 0))
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20576 19280
+;;;;;; 28070 497000))
;;; Generated autoloads from vc/pcvs-defs.el
(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\
@@ -20710,7 +20767,7 @@ Global menu used by PCL-CVS.")
;;;***
;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20665 36903 324706 553000))
;;; Generated autoloads from progmodes/perl-mode.el
(put 'perl-indent-level 'safe-local-variable 'integerp)
(put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -20772,7 +20829,7 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'.
;;;***
;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el"
-;;;;;; (20551 9899 283417 0))
+;;;;;; (20552 25066 479417 0))
;;; Generated autoloads from textmodes/picture.el
(autoload 'picture-mode "picture" "\
@@ -20853,7 +20910,7 @@ they are not by default assigned to keys.
;;;***
;;;### (autoloads (plstore-mode plstore-open) "plstore" "gnus/plstore.el"
-;;;;;; (20378 29222 722320 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/plstore.el
(autoload 'plstore-open "plstore" "\
@@ -20869,7 +20926,7 @@ Major mode for editing PLSTORE files.
;;;***
;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from textmodes/po.el
(autoload 'po-find-file-coding-system "po" "\
@@ -20880,7 +20937,7 @@ Called through `file-coding-system-alist', before the file is visited for real.
;;;***
-;;;### (autoloads (pong) "pong" "play/pong.el" (20478 3673 653810
+;;;### (autoloads (pong) "pong" "play/pong.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from play/pong.el
@@ -20897,8 +20954,8 @@ pong-mode keybindings:\\<pong-mode-map>
;;;***
-;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20458 56750
-;;;;;; 651721 0))
+;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20647 7982
+;;;;;; 429263 0))
;;; Generated autoloads from gnus/pop3.el
(autoload 'pop3-movemail "pop3" "\
@@ -20911,7 +20968,7 @@ Use streaming commands.
;;;### (autoloads (pp-macroexpand-last-sexp pp-eval-last-sexp pp-macroexpand-expression
;;;;;; pp-eval-expression pp pp-buffer pp-to-string) "pp" "emacs-lisp/pp.el"
-;;;;;; (20495 51111 757560 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/pp.el
(autoload 'pp-to-string "pp" "\
@@ -20979,7 +21036,7 @@ Ignores leading comment characters.
;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview
;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript
;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20648 29678 511980 0))
;;; Generated autoloads from printing.el
(autoload 'pr-interface "printing" "\
@@ -21566,7 +21623,7 @@ are both set to t.
;;;***
-;;;### (autoloads (proced) "proced" "proced.el" (20593 22184 581574
+;;;### (autoloads (proced) "proced" "proced.el" (20594 14884 858174
;;;;;; 0))
;;; Generated autoloads from proced.el
@@ -21587,7 +21644,7 @@ Proced buffers.
;;;### (autoloads (profiler-find-profile-other-frame profiler-find-profile-other-window
;;;;;; profiler-find-profile profiler-start) "profiler" "profiler.el"
-;;;;;; (20619 46245 806932 0))
+;;;;;; (20650 61396 673885 0))
;;; Generated autoloads from profiler.el
(autoload 'profiler-start "profiler" "\
@@ -21616,7 +21673,7 @@ Open profile FILENAME.
;;;***
;;;### (autoloads (run-prolog mercury-mode prolog-mode) "prolog"
-;;;;;; "progmodes/prolog.el" (20576 42138 697312 0))
+;;;;;; "progmodes/prolog.el" (20576 17486 923994 745000))
;;; Generated autoloads from progmodes/prolog.el
(autoload 'prolog-mode "prolog" "\
@@ -21651,8 +21708,8 @@ With prefix argument ARG, restart the Prolog process if running before.
;;;***
-;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20652
+;;;;;; 52617 313760 0))
;;; Generated autoloads from ps-bdf.el
(defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\
@@ -21664,7 +21721,7 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
;;;***
;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20576
-;;;;;; 42138 697312 0))
+;;;;;; 17495 155995 39000))
;;; Generated autoloads from progmodes/ps-mode.el
(autoload 'ps-mode "ps-mode" "\
@@ -21716,7 +21773,7 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number
;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces
;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type
;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 45755 958602 756000))
;;; Generated autoloads from ps-print.el
(defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) "LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger (* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) "Statement") (list 'executive (* 72 7.5) (* 72 10.0) "Executive") (list 'a4small (* 72 7.47) (* 72 10.85) "A4Small") (list 'b4 (* 72 10.125) (* 72 14.33) "B4") (list 'b5 (* 72 7.16) (* 72 10.125) "B5") '(addresslarge 236.0 99.0 "AddressLarge") '(addresssmall 236.0 68.0 "AddressSmall") '(cuthanging13 90.0 222.0 "CutHanging13") '(cuthanging15 90.0 114.0 "CutHanging15") '(diskette 181.0 136.0 "Diskette") '(eurofilefolder 139.0 112.0 "EuropeanFilefolder") '(eurofoldernarrow 526.0 107.0 "EuroFolderNarrow") '(eurofolderwide 526.0 136.0 "EuroFolderWide") '(euronamebadge 189.0 108.0 "EuroNameBadge") '(euronamebadgelarge 223.0 136.0 "EuroNameBadgeLarge") '(filefolder 230.0 37.0 "FileFolder") '(jewelry 76.0 136.0 "Jewelry") '(mediabadge 180.0 136.0 "MediaBadge") '(multipurpose 126.0 68.0 "MultiPurpose") '(retaillabel 90.0 104.0 "RetailLabel") '(shipping 271.0 136.0 "Shipping") '(slide35mm 26.0 104.0 "Slide35mm") '(spine8mm 187.0 26.0 "Spine8mm") '(topcoated 425.19685 136.0 "TopCoatedPaper") '(topcoatedpaper 396.0 136.0 "TopcoatedPaper150") '(vhsface 205.0 127.0 "VHSFace") '(vhsspine 400.0 50.0 "VHSSpine") '(zipdisk 156.0 136.0 "ZipDisk"))) "\
@@ -21913,7 +21970,7 @@ If EXTENSION is any other symbol, it is ignored.
;;;***
;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el"
-;;;;;; (20599 27513 576550 0))
+;;;;;; (20660 26176 137583 0))
;;; Generated autoloads from progmodes/python.el
(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode))
@@ -21949,7 +22006,7 @@ if that value is non-nil.
;;;***
;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
-;;;;;; (20557 48712 315579 0))
+;;;;;; (20557 23173 326608 0))
;;; Generated autoloads from gnus/qp.el
(autoload 'quoted-printable-decode-region "qp" "\
@@ -21972,7 +22029,7 @@ them into characters should be done separately.
;;;;;; quail-defrule quail-install-decode-map quail-install-map
;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout
;;;;;; quail-define-package quail-use-package quail-title) "quail"
-;;;;;; "international/quail.el" (20523 62082 997685 0))
+;;;;;; "international/quail.el" (20533 50312 678915 0))
;;; Generated autoloads from international/quail.el
(autoload 'quail-title "quail" "\
@@ -22204,7 +22261,7 @@ of each directory.
;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls
;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url
;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 46668 994639 176000))
;;; Generated autoloads from net/quickurl.el
(defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\
@@ -22276,7 +22333,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'.
;;;***
;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
-;;;;;; "net/rcirc.el" (20614 54428 654267 0))
+;;;;;; "net/rcirc.el" (20615 22847 537904 0))
;;; Generated autoloads from net/rcirc.el
(autoload 'rcirc "rcirc" "\
@@ -22314,8 +22371,8 @@ if ARG is omitted or nil.
;;;***
-;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from net/rcompile.el
(autoload 'remote-compile "rcompile" "\
@@ -22327,7 +22384,7 @@ See \\[compile].
;;;***
;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el"
-;;;;;; (20427 14766 970343 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/re-builder.el
(defalias 'regexp-builder 're-builder)
@@ -22345,8 +22402,8 @@ matching parts of the target buffer will be highlighted.
;;;***
-;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20356 2211
-;;;;;; 532900 0))
+;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from recentf.el
(defvar recentf-mode nil "\
@@ -22376,7 +22433,7 @@ were operated on recently.
;;;;;; string-rectangle delete-whitespace-rectangle open-rectangle
;;;;;; insert-rectangle yank-rectangle copy-rectangle-as-kill kill-rectangle
;;;;;; extract-rectangle delete-extract-rectangle delete-rectangle)
-;;;;;; "rect" "rect.el" (20501 3499 284800 0))
+;;;;;; "rect" "rect.el" (20533 50312 678915 0))
;;; Generated autoloads from rect.el
(autoload 'delete-rectangle "rect" "\
@@ -22510,8 +22567,8 @@ with a prefix argument, prompt for START-AT and FORMAT.
;;;***
-;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20478
-;;;;;; 3673 653810 0))
+;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from textmodes/refill.el
(autoload 'refill-mode "refill" "\
@@ -22532,8 +22589,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' instead.
;;;***
;;;### (autoloads (reftex-reset-scanning-information reftex-mode
-;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20590 45996
-;;;;;; 129575 0))
+;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20660 26176
+;;;;;; 137583 0))
;;; Generated autoloads from textmodes/reftex.el
(autoload 'turn-on-reftex "reftex" "\
@@ -22583,7 +22640,7 @@ This enforces rescanning the buffer on next use.
;;;***
;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
-;;;;;; (20585 28088 480237 0))
+;;;;;; (20585 2669 263465 0))
;;; Generated autoloads from textmodes/reftex-cite.el
(autoload 'reftex-citation "reftex-cite" "\
@@ -22613,7 +22670,7 @@ While entering the regexp, completion on knows citation keys is possible.
;;;***
;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
-;;;;;; (20585 28088 480237 0))
+;;;;;; (20585 2669 263465 0))
;;; Generated autoloads from textmodes/reftex-global.el
(autoload 'reftex-isearch-minor-mode "reftex-global" "\
@@ -22630,7 +22687,7 @@ With no argument, this command toggles
;;;***
;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
-;;;;;; (20585 28088 480237 0))
+;;;;;; (20585 2669 263465 0))
;;; Generated autoloads from textmodes/reftex-index.el
(autoload 'reftex-index-phrases-mode "reftex-index" "\
@@ -22663,7 +22720,7 @@ Here are all local bindings.
;;;***
;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
-;;;;;; (20585 28088 480237 0))
+;;;;;; (20660 26176 137583 0))
;;; Generated autoloads from textmodes/reftex-parse.el
(autoload 'reftex-all-document-files "reftex-parse" "\
@@ -22675,8 +22732,8 @@ of master file.
;;;***
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20593
-;;;;;; 22184 581574 0))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20594
+;;;;;; 14884 858174 0))
;;; Generated autoloads from textmodes/reftex-vars.el
(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22686,7 +22743,7 @@ of master file.
;;;***
;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el"
-;;;;;; (20522 38650 757441 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/regexp-opt.el
(autoload 'regexp-opt "regexp-opt" "\
@@ -22717,7 +22774,7 @@ This means the number of non-shy regexp grouping constructs
;;;### (autoloads (remember-diary-extract-entries remember-clipboard
;;;;;; remember-other-frame remember) "remember" "textmodes/remember.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from textmodes/remember.el
(autoload 'remember "remember" "\
@@ -22748,7 +22805,7 @@ Extract diary entries from the region.
;;;***
-;;;### (autoloads (repeat) "repeat" "repeat.el" (20614 54428 654267
+;;;### (autoloads (repeat) "repeat" "repeat.el" (20615 22847 537904
;;;;;; 0))
;;; Generated autoloads from repeat.el
@@ -22772,7 +22829,7 @@ recently executed command not bound to an input event\".
;;;***
;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from mail/reporter.el
(autoload 'reporter-submit-bug-report "reporter" "\
@@ -22804,7 +22861,7 @@ mail-sending package is used for editing and sending the message.
;;;***
;;;### (autoloads (reposition-window) "reposition" "reposition.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from reposition.el
(autoload 'reposition-window "reposition" "\
@@ -22831,7 +22888,7 @@ first comment line visible (if point is in a comment).
;;;***
;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from reveal.el
(autoload 'reveal-mode "reveal" "\
@@ -22867,7 +22924,7 @@ the mode if ARG is omitted or nil.
;;;***
;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/ring.el
(autoload 'ring-p "ring" "\
@@ -22882,8 +22939,8 @@ Make a ring that can contain SIZE elements.
;;;***
-;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20402 11562
-;;;;;; 85788 0))
+;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from net/rlogin.el
(autoload 'rlogin "rlogin" "\
@@ -22932,8 +22989,8 @@ variable.
;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers
;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers
;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory
-;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20599 61088 34742
-;;;;;; 635000))
+;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20599 38534 554587
+;;;;;; 163000))
;;; Generated autoloads from mail/rmail.el
(defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -23131,8 +23188,8 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
;;;***
;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen
-;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20530 3765 184907
-;;;;;; 0))
+;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from mail/rmailout.el
(put 'rmail-output-file-alist 'risky-local-variable t)
@@ -23197,7 +23254,7 @@ than appending to it. Deletes the message after writing if
;;;***
;;;### (autoloads (rng-c-load-schema) "rng-cmpct" "nxml/rng-cmpct.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from nxml/rng-cmpct.el
(autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23209,7 +23266,7 @@ Return a pattern.
;;;***
;;;### (autoloads (rng-nxml-mode-init) "rng-nxml" "nxml/rng-nxml.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from nxml/rng-nxml.el
(autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23222,7 +23279,7 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil.
;;;***
;;;### (autoloads (rng-validate-mode) "rng-valid" "nxml/rng-valid.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from nxml/rng-valid.el
(autoload 'rng-validate-mode "rng-valid" "\
@@ -23252,8 +23309,8 @@ to use for finding the schema.
;;;***
-;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from nxml/rng-xsd.el
(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile)
@@ -23281,7 +23338,7 @@ must be equal.
;;;***
;;;### (autoloads (robin-use-package robin-modify-package robin-define-package)
-;;;;;; "robin" "international/robin.el" (20523 62082 997685 0))
+;;;;;; "robin" "international/robin.el" (20533 50312 678915 0))
;;; Generated autoloads from international/robin.el
(autoload 'robin-define-package "robin" "\
@@ -23314,7 +23371,7 @@ Start using robin package NAME, which is a string.
;;;***
;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region
-;;;;;; rot13-string rot13) "rot13" "rot13.el" (20355 10021 546955
+;;;;;; rot13-string rot13) "rot13" "rot13.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from rot13.el
@@ -23353,7 +23410,7 @@ Toggle the use of ROT13 encoding for the current window.
;;;***
;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el"
-;;;;;; (20594 43050 277913 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from textmodes/rst.el
(add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
@@ -23384,7 +23441,7 @@ for modes derived from Text mode, like Mail mode.
;;;***
;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el"
-;;;;;; (20576 42138 697312 0))
+;;;;;; (20647 7982 429263 0))
;;; Generated autoloads from progmodes/ruby-mode.el
(autoload 'ruby-mode "ruby-mode" "\
@@ -23401,12 +23458,14 @@ The variable `ruby-indent-level' controls the amount of indentation.
(add-to-list 'auto-mode-alist (cons (purecopy "\\.rb\\'") 'ruby-mode))
+(add-to-list 'auto-mode-alist '("Rakefile\\'" . ruby-mode))
+
(dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
;;;***
-;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from ruler-mode.el
(defvar ruler-mode nil "\
@@ -23423,8 +23482,8 @@ if ARG is omitted or nil.
;;;***
-;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20518
-;;;;;; 12580 46478 0))
+;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from emacs-lisp/rx.el
(autoload 'rx-to-string "rx" "\
@@ -23735,8 +23794,8 @@ enclosed in `(and ...)'.
;;;***
-;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20577
-;;;;;; 33959 40183 0))
+;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20576
+;;;;;; 15358 683905 201000))
;;; Generated autoloads from savehist.el
(defvar savehist-mode nil "\
@@ -23768,7 +23827,7 @@ histories, which is probably undesirable.
;;;***
;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el"
-;;;;;; (20427 14766 970343 0))
+;;;;;; (20665 36153 780714 159000))
;;; Generated autoloads from progmodes/scheme.el
(autoload 'scheme-mode "scheme" "\
@@ -23810,7 +23869,7 @@ that variable's value is a string.
;;;***
;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/score-mode.el
(autoload 'gnus-score-mode "score-mode" "\
@@ -23824,7 +23883,7 @@ This mode is an extended emacs-lisp mode.
;;;***
;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el"
-;;;;;; (20363 61861 222722 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from scroll-all.el
(defvar scroll-all-mode nil "\
@@ -23850,7 +23909,7 @@ one window apply to all visible windows in the same frame.
;;;***
;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from scroll-lock.el
(autoload 'scroll-lock-mode "scroll-lock" "\
@@ -23866,7 +23925,7 @@ vertically fixed relative to window boundaries during scrolling.
;;;***
-;;;### (autoloads nil "secrets" "net/secrets.el" (20478 3673 653810
+;;;### (autoloads nil "secrets" "net/secrets.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from net/secrets.el
(when (featurep 'dbusbind)
@@ -23875,7 +23934,7 @@ vertically fixed relative to window boundaries during scrolling.
;;;***
;;;### (autoloads (semantic-mode semantic-default-submodes) "semantic"
-;;;;;; "cedet/semantic.el" (20617 41641 89638 0))
+;;;;;; "cedet/semantic.el" (20619 27099 673959 0))
;;; Generated autoloads from cedet/semantic.el
(defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\
@@ -23932,7 +23991,7 @@ Semantic mode.
;;;***
;;;### (autoloads (bovine-grammar-mode) "semantic/bovine/grammar"
-;;;;;; "cedet/semantic/bovine/grammar.el" (20593 22184 581574 0))
+;;;;;; "cedet/semantic/bovine/grammar.el" (20592 14750 589797 981000))
;;; Generated autoloads from cedet/semantic/bovine/grammar.el
(autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
@@ -23943,7 +24002,7 @@ Major mode for editing Bovine grammars.
;;;***
;;;### (autoloads (wisent-grammar-mode) "semantic/wisent/grammar"
-;;;;;; "cedet/semantic/wisent/grammar.el" (20593 22184 581574 0))
+;;;;;; "cedet/semantic/wisent/grammar.el" (20592 14837 837798 186000))
;;; Generated autoloads from cedet/semantic/wisent/grammar.el
(autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
@@ -23961,7 +24020,7 @@ Major mode for editing Wisent grammars.
;;;;;; mail-personal-alias-file mail-default-reply-to mail-archive-file-name
;;;;;; mail-header-separator send-mail-function mail-interactive
;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style)
-;;;;;; "sendmail" "mail/sendmail.el" (20614 54428 654267 0))
+;;;;;; "sendmail" "mail/sendmail.el" (20615 22847 537904 0))
;;; Generated autoloads from mail/sendmail.el
(defvar mail-from-style 'default "\
@@ -24243,8 +24302,8 @@ Like `mail' command, but display mail buffer in another frame.
;;;***
;;;### (autoloads (server-save-buffers-kill-terminal server-mode
-;;;;;; server-force-delete server-start) "server" "server.el" (20594
-;;;;;; 43050 277913 0))
+;;;;;; server-force-delete server-start) "server" "server.el" (20647
+;;;;;; 7982 429263 0))
;;; Generated autoloads from server.el
(put 'server-host 'risky-local-variable t)
@@ -24311,7 +24370,7 @@ only these files will be asked to be saved.
;;;***
-;;;### (autoloads (ses-mode) "ses" "ses.el" (20553 51627 169867 0))
+;;;### (autoloads (ses-mode) "ses" "ses.el" (20657 39151 929960 0))
;;; Generated autoloads from ses.el
(autoload 'ses-mode "ses" "\
@@ -24330,7 +24389,7 @@ These are active only in the minibuffer, when entering or editing a formula:
;;;***
;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el"
-;;;;;; (20580 10161 446444 0))
+;;;;;; (20665 37305 556705 260000))
;;; Generated autoloads from textmodes/sgml-mode.el
(autoload 'sgml-mode "sgml-mode" "\
@@ -24396,7 +24455,7 @@ To work around that, do:
;;;***
;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
-;;;;;; (20624 64165 102958 0))
+;;;;;; (20665 38785 745682 0))
;;; Generated autoloads from progmodes/sh-script.el
(put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24460,7 +24519,7 @@ with your script for an edit-interpret-debug cycle.
;;;***
;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el"
-;;;;;; (20572 16038 402143 0))
+;;;;;; (20571 55599 814625 0))
;;; Generated autoloads from emacs-lisp/shadow.el
(autoload 'list-load-path-shadows "shadow" "\
@@ -24510,8 +24569,8 @@ function, `load-path-shadows-find'.
;;;***
;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group
-;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from shadowfile.el
(autoload 'shadow-define-cluster "shadowfile" "\
@@ -24550,7 +24609,7 @@ Set up file shadowing.
;;;***
;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20664 27691 323071 891000))
;;; Generated autoloads from shell.el
(defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24598,8 +24657,8 @@ Otherwise, one argument `-i' is passed to the shell.
;;;***
-;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20595
-;;;;;; 63909 923329 0))
+;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20596
+;;;;;; 57817 368875 0))
;;; Generated autoloads from gnus/shr.el
(autoload 'shr-insert-document "shr" "\
@@ -24612,7 +24671,7 @@ DOM should be a parse tree as generated by
;;;***
;;;### (autoloads (sieve-upload-and-kill sieve-upload-and-bury sieve-upload
-;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20487 57003 603251
+;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from gnus/sieve.el
@@ -24639,7 +24698,7 @@ DOM should be a parse tree as generated by
;;;***
;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el"
-;;;;;; (20487 57003 603251 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/sieve-mode.el
(autoload 'sieve-mode "sieve-mode" "\
@@ -24654,8 +24713,8 @@ Turning on Sieve mode runs `sieve-mode-hook'.
;;;***
-;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from progmodes/simula.el
(autoload 'simula-mode "simula" "\
@@ -24704,7 +24763,7 @@ with no arguments, if that value is non-nil.
;;;***
;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new
-;;;;;; define-skeleton) "skeleton" "skeleton.el" (20541 6907 775259
+;;;;;; define-skeleton) "skeleton" "skeleton.el" (20541 32865 505578
;;;;;; 0))
;;; Generated autoloads from skeleton.el
@@ -24817,7 +24876,7 @@ symmetrical ones, and the same character twice for the others.
;;;***
;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff)
-;;;;;; "smerge-mode" "vc/smerge-mode.el" (20585 28088 480237 0))
+;;;;;; "smerge-mode" "vc/smerge-mode.el" (20585 2669 263465 0))
;;; Generated autoloads from vc/smerge-mode.el
(autoload 'smerge-ediff "smerge-mode" "\
@@ -24845,7 +24904,7 @@ If no conflict maker is found, turn off `smerge-mode'.
;;;***
;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from gnus/smiley.el
(autoload 'smiley-region "smiley" "\
@@ -24863,7 +24922,7 @@ interactively. If there's no argument, do it at the current buffer.
;;;***
;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
-;;;;;; "mail/smtpmail.el" (20551 9899 283417 0))
+;;;;;; "mail/smtpmail.el" (20552 25066 479417 0))
;;; Generated autoloads from mail/smtpmail.el
(autoload 'smtpmail-send-it "smtpmail" "\
@@ -24878,7 +24937,7 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'.
;;;***
-;;;### (autoloads (snake) "snake" "play/snake.el" (20478 3673 653810
+;;;### (autoloads (snake) "snake" "play/snake.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from play/snake.el
@@ -24903,7 +24962,7 @@ Snake mode keybindings:
;;;***
;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el"
-;;;;;; (20577 33959 40183 0))
+;;;;;; (20576 17407 119991 302000))
;;; Generated autoloads from net/snmp-mode.el
(autoload 'snmp-mode "snmp-mode" "\
@@ -24933,7 +24992,7 @@ then `snmpv2-mode-hook'.
;;;***
;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 46404 938628 506000))
;;; Generated autoloads from calendar/solar.el
(autoload 'sunrise-sunset "solar" "\
@@ -24948,8 +25007,8 @@ This function is suitable for execution in an init file.
;;;***
-;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20427
-;;;;;; 14766 970343 0))
+;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from play/solitaire.el
(autoload 'solitaire "solitaire" "\
@@ -25024,10 +25083,10 @@ Pick your favorite shortcuts:
;;;***
-;;;### (autoloads (reverse-region sort-columns sort-regexp-fields
-;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs
-;;;;;; sort-lines sort-subr) "sort" "sort.el" (20507 42276 222255
-;;;;;; 0))
+;;;### (autoloads (delete-duplicate-lines reverse-region sort-columns
+;;;;;; sort-regexp-fields sort-fields sort-numeric-fields sort-pages
+;;;;;; sort-paragraphs sort-lines sort-subr) "sort" "sort.el" (20669
+;;;;;; 24410 534430 0))
;;; Generated autoloads from sort.el
(put 'sort-fold-case 'safe-local-variable 'booleanp)
@@ -25174,10 +25233,30 @@ From a program takes two point or marker arguments, BEG and END.
\(fn BEG END)" t nil)
+(autoload 'delete-duplicate-lines "sort" "\
+Delete duplicate lines in the region between BEG and END.
+
+If REVERSE is nil, search and delete duplicates forward keeping the first
+occurrence of duplicate lines. If REVERSE is non-nil (when called
+interactively with C-u prefix), search and delete duplicates backward
+keeping the last occurrence of duplicate lines.
+
+If ADJACENT is non-nil (when called interactively with two C-u prefixes),
+delete repeated lines only if they are adjacent. It works like the utility
+`uniq' and is useful when lines are already sorted in a large file since
+this is more efficient in performance and memory usage than when ADJACENT
+is nil that uses additional memory to remember previous lines.
+
+When called from Lisp and INTERACTIVE is omitted or nil, return the number
+of deleted duplicate lines, do not print it; if INTERACTIVE is t, the
+function behaves in all respects as if it had been called interactively.
+
+\(fn BEG END &optional REVERSE ADJACENT INTERACTIVE)" t nil)
+
;;;***
-;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20458
-;;;;;; 56750 651721 0))
+;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from gnus/spam.el
(autoload 'spam-initialize "spam" "\
@@ -25193,7 +25272,7 @@ installed through `spam-necessary-extra-headers'.
;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file
;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report"
-;;;;;; "gnus/spam-report.el" (20355 10021 546955 0))
+;;;;;; "gnus/spam-report.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/spam-report.el
(autoload 'spam-report-process-queue "spam-report" "\
@@ -25236,7 +25315,7 @@ Spam reports will be queued with the method used when
;;;***
;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar"
-;;;;;; "speedbar.el" (20566 63671 243798 0))
+;;;;;; "speedbar.el" (20648 29678 511980 0))
;;; Generated autoloads from speedbar.el
(defalias 'speedbar 'speedbar-frame-mode)
@@ -25260,8 +25339,8 @@ selected. If the speedbar frame is active, then select the attached frame.
;;;***
-;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from play/spook.el
(autoload 'spook "spook" "\
@@ -25279,8 +25358,8 @@ Return a vector containing the lines from `spook-phrases-file'.
;;;### (autoloads (sql-linter sql-db2 sql-interbase sql-postgres
;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix
;;;;;; sql-sybase sql-oracle sql-product-interactive sql-connect
-;;;;;; sql-mode sql-help sql-add-product-keywords) "sql" "progmodes/sql.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; sql-mode sql-add-product-keywords) "sql" "progmodes/sql.el"
+;;;;;; (20655 4702 996292 0))
;;; Generated autoloads from progmodes/sql.el
(autoload 'sql-add-product-keywords "sql" "\
@@ -25304,40 +25383,7 @@ adds a fontification pattern to fontify identifiers ending in
\(fn PRODUCT KEYWORDS &optional APPEND)" nil nil)
-(autoload 'sql-help "sql" "\
-Show short help for the SQL modes.
-
-Use an entry function to open an interactive SQL buffer. This buffer is
-usually named `*SQL*'. The name of the major mode is SQLi.
-
-Use the following commands to start a specific SQL interpreter:
-
- \\\\FREE
-
-Other non-free SQL implementations are also supported:
-
- \\\\NONFREE
-
-But we urge you to choose a free implementation instead of these.
-
-You can also use \\[sql-product-interactive] to invoke the
-interpreter for the current `sql-product'.
-
-Once you have the SQLi buffer, you can enter SQL statements in the
-buffer. The output generated is appended to the buffer and a new prompt
-is generated. See the In/Out menu in the SQLi buffer for some functions
-that help you navigate through the buffer, the input history, etc.
-
-If you have a really complex SQL statement or if you are writing a
-procedure, you can do this in a separate buffer. Put the new buffer in
-`sql-mode' by calling \\[sql-mode]. The name of this buffer can be
-anything. The name of the major mode is SQL.
-
-In this SQL buffer (SQL mode), you can send the region or the entire
-buffer to the interactive SQL buffer (SQLi mode). The results are
-appended to the SQLi buffer without disturbing your SQL buffer.
-
-\(fn)" t nil)
+(eval '(defun sql-help nil #("Show short help for the SQL modes.\n\nUse an entry function to open an interactive SQL buffer. This buffer is\nusually named `*SQL*'. The name of the major mode is SQLi.\n\nUse the following commands to start a specific SQL interpreter:\n\n \\\\FREE\n\nOther non-free SQL implementations are also supported:\n\n \\\\NONFREE\n\nBut we urge you to choose a free implementation instead of these.\n\nYou can also use \\[sql-product-interactive] to invoke the\ninterpreter for the current `sql-product'.\n\nOnce you have the SQLi buffer, you can enter SQL statements in the\nbuffer. The output generated is appended to the buffer and a new prompt\nis generated. See the In/Out menu in the SQLi buffer for some functions\nthat help you navigate through the buffer, the input history, etc.\n\nIf you have a really complex SQL statement or if you are writing a\nprocedure, you can do this in a separate buffer. Put the new buffer in\n`sql-mode' by calling \\[sql-mode]. The name of this buffer can be\nanything. The name of the major mode is SQL.\n\nIn this SQL buffer (SQL mode), you can send the region or the entire\nbuffer to the interactive SQL buffer (SQLi mode). The results are\nappended to the SQLi buffer without disturbing your SQL buffer." 0 1 (dynamic-docstring-function sql--make-help-docstring)) (interactive) (describe-function 'sql-help)))
(autoload 'sql-mode "sql" "\
Major mode to edit SQL.
@@ -25776,7 +25822,7 @@ buffer.
;;;***
;;;### (autoloads (srecode-template-mode) "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;; (20586 48936 135199 0))
+;;;;;; (20647 7982 429263 0))
;;; Generated autoloads from cedet/srecode/srt-mode.el
(autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -25789,7 +25835,7 @@ Major-mode for writing SRecode macros.
;;;***
;;;### (autoloads (starttls-open-stream) "starttls" "gnus/starttls.el"
-;;;;;; (20606 34222 123795 0))
+;;;;;; (20608 13586 654200 0))
;;; Generated autoloads from gnus/starttls.el
(autoload 'starttls-open-stream "starttls" "\
@@ -25816,8 +25862,8 @@ GnuTLS requires a port number.
;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes
;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke
;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke
-;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20593
-;;;;;; 22184 581574 0))
+;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20594
+;;;;;; 14884 858174 0))
;;; Generated autoloads from strokes.el
(autoload 'strokes-global-set-stroke "strokes" "\
@@ -25931,7 +25977,7 @@ Read a complex stroke and insert its glyph into the current buffer.
;;;***
;;;### (autoloads (studlify-buffer studlify-word studlify-region)
-;;;;;; "studly" "play/studly.el" (20355 10021 546955 0))
+;;;;;; "studly" "play/studly.el" (20533 50312 678915 0))
;;; Generated autoloads from play/studly.el
(autoload 'studlify-region "studly" "\
@@ -25952,7 +25998,7 @@ Studlify-case the current buffer.
;;;***
;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el"
-;;;;;; (20524 51365 2559 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from progmodes/subword.el
(autoload 'subword-mode "subword" "\
@@ -26008,7 +26054,7 @@ See `subword-mode' for more information on Subword mode.
;;;***
;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el"
-;;;;;; (20576 42138 697312 0))
+;;;;;; (20576 15917 623928 140000))
;;; Generated autoloads from mail/supercite.el
(autoload 'sc-cite-original "supercite" "\
@@ -26040,8 +26086,8 @@ and `sc-post-hook' is run after the guts of this function.
;;;***
-;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from t-mouse.el
(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -26069,8 +26115,8 @@ It relies on the `gpm' daemon being activated.
;;;***
-;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from tabify.el
(autoload 'untabify "tabify" "\
@@ -26105,7 +26151,7 @@ The variable `tab-width' controls the spacing of tab stops.
;;;;;; table-recognize table-insert-row-column table-insert-column
;;;;;; table-insert-row table-insert table-point-left-cell-hook
;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook)
-;;;;;; "table" "textmodes/table.el" (20586 48936 135199 0))
+;;;;;; "table" "textmodes/table.el" (20660 26176 137583 0))
;;; Generated autoloads from textmodes/table.el
(defvar table-cell-map-hook nil "\
@@ -26697,8 +26743,8 @@ converts a table into plain text without frames. It is a companion to
;;;***
-;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from talk.el
(autoload 'talk-connect "talk" "\
@@ -26713,8 +26759,8 @@ Connect to the Emacs talk group from the current X display or tty frame.
;;;***
-;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20585 28088
-;;;;;; 480237 0))
+;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20585 2669
+;;;;;; 263465 0))
;;; Generated autoloads from tar-mode.el
(autoload 'tar-mode "tar-mode" "\
@@ -26738,7 +26784,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
;;;***
;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl"
-;;;;;; "progmodes/tcl.el" (20580 10161 446444 0))
+;;;;;; "progmodes/tcl.el" (20581 13032 944808 0))
;;; Generated autoloads from progmodes/tcl.el
(autoload 'tcl-mode "tcl" "\
@@ -26786,8 +26832,8 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'.
;;;***
-;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from net/telnet.el
(autoload 'telnet "telnet" "\
@@ -26813,7 +26859,7 @@ Normally input is edited in Emacs and sent a line at a time.
;;;***
;;;### (autoloads (serial-term ansi-term term make-term) "term" "term.el"
-;;;;;; (20580 10161 446444 0))
+;;;;;; (20648 29678 511980 0))
;;; Generated autoloads from term.el
(autoload 'make-term "term" "\
@@ -26855,45 +26901,8 @@ use in that buffer.
;;;***
-;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (20355
-;;;;;; 10021 546955 0))
-;;; Generated autoloads from terminal.el
-
-(autoload 'terminal-emulator "terminal" "\
-Under a display-terminal emulator in BUFFER, run PROGRAM on arguments ARGS.
-ARGS is a list of argument-strings. Remaining arguments are WIDTH and HEIGHT.
-BUFFER's contents are made an image of the display generated by that program,
-and any input typed when BUFFER is the current Emacs buffer is sent to that
-program as keyboard input.
-
-Interactively, BUFFER defaults to \"*terminal*\" and PROGRAM and ARGS
-are parsed from an input-string using your usual shell.
-WIDTH and HEIGHT are determined from the size of the current window
--- WIDTH will be one less than the window's width, HEIGHT will be its height.
-
-To switch buffers and leave the emulator, or to give commands
-to the emulator itself (as opposed to the program running under it),
-type Control-^. The following character is an emulator command.
-Type Control-^ twice to send it to the subprogram.
-This escape character may be changed using the variable `terminal-escape-char'.
-
-`Meta' characters may not currently be sent through the terminal emulator.
-
-Here is a list of some of the variables which control the behavior
-of the emulator -- see their documentation for more information:
-terminal-escape-char, terminal-scrolling, terminal-more-processing,
-terminal-redisplay-interval.
-
-This function calls the value of terminal-mode-hook if that exists
-and is non-nil after the terminal buffer has been set up and the
-subprocess started.
-
-\(fn BUFFER PROGRAM ARGS &optional WIDTH HEIGHT)" t nil)
-
-;;;***
-
;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
-;;;;;; (20580 10161 446444 0))
+;;;;;; (20579 47335 3827 0))
;;; Generated autoloads from emacs-lisp/testcover.el
(autoload 'testcover-this-defun "testcover" "\
@@ -26903,8 +26912,8 @@ Start coverage on function under point.
;;;***
-;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20545 57511
-;;;;;; 257469 0))
+;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20545 60086
+;;;;;; 510404 0))
;;; Generated autoloads from play/tetris.el
(autoload 'tetris "tetris" "\
@@ -26935,7 +26944,7 @@ tetris-mode keybindings:
;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command
;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
-;;;;;; (20594 43050 277913 0))
+;;;;;; (20665 36964 828705 971000))
;;; Generated autoloads from textmodes/tex-mode.el
(defvar tex-shell-file-name nil "\
@@ -27237,7 +27246,7 @@ Major mode to edit DocTeX files.
;;;***
;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer)
-;;;;;; "texinfmt" "textmodes/texinfmt.el" (20434 17809 692608 0))
+;;;;;; "texinfmt" "textmodes/texinfmt.el" (20533 50312 678915 0))
;;; Generated autoloads from textmodes/texinfmt.el
(autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27277,7 +27286,7 @@ if large. You can use `Info-split' to do this manually.
;;;***
;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote)
-;;;;;; "texinfo" "textmodes/texinfo.el" (20478 3673 653810 0))
+;;;;;; "texinfo" "textmodes/texinfo.el" (20665 37006 296704 255000))
;;; Generated autoloads from textmodes/texinfo.el
(defvar texinfo-open-quote (purecopy "``") "\
@@ -27363,7 +27372,7 @@ value of `texinfo-mode-hook'.
;;;### (autoloads (thai-composition-function thai-compose-buffer
;;;;;; thai-compose-string thai-compose-region) "thai-util" "language/thai-util.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from language/thai-util.el
(autoload 'thai-compose-region "thai-util" "\
@@ -27392,7 +27401,7 @@ Compose Thai characters in the current buffer.
;;;### (autoloads (list-at-point number-at-point symbol-at-point
;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing)
-;;;;;; "thingatpt" "thingatpt.el" (20623 43301 870757 0))
+;;;;;; "thingatpt" "thingatpt.el" (20623 2577 143277 474000))
;;; Generated autoloads from thingatpt.el
(autoload 'forward-thing "thingatpt" "\
@@ -27455,7 +27464,7 @@ Return the Lisp list at point, or nil if none is found.
;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked
;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from thumbs.el
(autoload 'thumbs-find-thumb "thumbs" "\
@@ -27493,8 +27502,8 @@ In dired, call the setroot program on the image at point.
;;;;;; tibetan-post-read-conversion tibetan-compose-buffer tibetan-decompose-buffer
;;;;;; tibetan-decompose-string tibetan-decompose-region tibetan-compose-region
;;;;;; tibetan-compose-string tibetan-transcription-to-tibetan tibetan-tibetan-to-transcription
-;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20355
-;;;;;; 10021 546955 0))
+;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from language/tibet-util.el
(autoload 'tibetan-char-p "tibet-util" "\
@@ -27568,7 +27577,7 @@ See also docstring of the function tibetan-compose-region.
;;;***
;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el"
-;;;;;; (20373 11301 906925 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from textmodes/tildify.el
(autoload 'tildify-region "tildify" "\
@@ -27593,7 +27602,7 @@ This function performs no refilling of the changed text.
;;;### (autoloads (emacs-init-time emacs-uptime display-time-world
;;;;;; display-time-mode display-time display-time-day-and-date)
-;;;;;; "time" "time.el" (20619 46245 806932 0))
+;;;;;; "time" "time.el" (20622 16646 799433 0))
;;; Generated autoloads from time.el
(defvar display-time-day-and-date nil "\
@@ -27659,7 +27668,7 @@ Return a string giving the duration of the Emacs initialization.
;;;;;; time-to-day-in-year date-leap-year-p days-between date-to-day
;;;;;; time-add time-subtract time-since days-to-time time-less-p
;;;;;; seconds-to-time date-to-time) "time-date" "calendar/time-date.el"
-;;;;;; (20453 5437 764254 0))
+;;;;;; (20652 52617 313760 0))
;;; Generated autoloads from calendar/time-date.el
(autoload 'date-to-time "time-date" "\
@@ -27670,9 +27679,7 @@ If DATE lacks timezone information, GMT is assumed.
(if (or (featurep 'emacs)
(and (fboundp 'float-time)
(subrp (symbol-function 'float-time))))
- (progn
- (defalias 'time-to-seconds 'float-time)
- (make-obsolete 'time-to-seconds 'float-time "21.1"))
+ (defalias 'time-to-seconds 'float-time)
(autoload 'time-to-seconds "time-date"))
(autoload 'seconds-to-time "time-date" "\
@@ -27773,7 +27780,7 @@ This function does not work for SECONDS greater than `most-positive-fixnum'.
;;;***
;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp"
-;;;;;; "time-stamp.el" (20566 63671 243798 0))
+;;;;;; "time-stamp.el" (20566 45666 534598 861000))
;;; Generated autoloads from time-stamp.el
(put 'time-stamp-format 'safe-local-variable 'stringp)
(put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p)
@@ -27817,7 +27824,7 @@ With ARG, turn time stamping on if and only if arg is positive.
;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out
;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in
;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from calendar/timeclock.el
(autoload 'timeclock-mode-line-display "timeclock" "\
@@ -27917,7 +27924,7 @@ relative only to the time worked today, and not to past time.
;;;***
;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv"
-;;;;;; "international/titdic-cnv.el" (20355 10021 546955 0))
+;;;;;; "international/titdic-cnv.el" (20533 50312 678915 0))
;;; Generated autoloads from international/titdic-cnv.el
(autoload 'titdic-convert "titdic-cnv" "\
@@ -27940,7 +27947,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
;;;***
;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
-;;;;;; "tmm.el" (20622 22438 32851 0))
+;;;;;; "tmm.el" (20622 16646 799433 0))
;;; Generated autoloads from tmm.el
(define-key global-map "\M-`" 'tmm-menubar)
(define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27980,7 +27987,7 @@ Its value should be an event that has a binding in MENU.
;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities
;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category)
-;;;;;; "todo-mode" "calendar/todo-mode.el" (20355 10021 546955 0))
+;;;;;; "todo-mode" "calendar/todo-mode.el" (20533 50312 678915 0))
;;; Generated autoloads from calendar/todo-mode.el
(autoload 'todo-add-category "todo-mode" "\
@@ -28040,7 +28047,7 @@ Show TODO list.
;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu
;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame)
-;;;;;; "tool-bar" "tool-bar.el" (20355 10021 546955 0))
+;;;;;; "tool-bar" "tool-bar.el" (20533 50312 678915 0))
;;; Generated autoloads from tool-bar.el
(autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -28111,7 +28118,7 @@ holds a keymap.
;;;***
;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 47027 18655 117000))
;;; Generated autoloads from emulation/tpu-edt.el
(defvar tpu-edt-mode nil "\
@@ -28141,7 +28148,7 @@ Turn on TPU/edt emulation.
;;;***
;;;### (autoloads (tpu-mapper) "tpu-mapper" "emulation/tpu-mapper.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 46324 490624 377000))
;;; Generated autoloads from emulation/tpu-mapper.el
(autoload 'tpu-mapper "tpu-mapper" "\
@@ -28175,8 +28182,8 @@ your local X guru can try to figure out why the key is being ignored.
;;;***
-;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from emacs-lisp/tq.el
(autoload 'tq-create "tq" "\
@@ -28189,16 +28196,17 @@ to a tcp server on another machine.
;;;***
-;;;### (autoloads (trace-function-background trace-function trace-buffer)
-;;;;;; "trace" "emacs-lisp/trace.el" (20485 15269 390836 0))
+;;;### (autoloads (trace-function-background trace-function-foreground
+;;;;;; trace-buffer) "trace" "emacs-lisp/trace.el" (20652 52617
+;;;;;; 313760 0))
;;; Generated autoloads from emacs-lisp/trace.el
-(defvar trace-buffer (purecopy "*trace-output*") "\
+(defvar trace-buffer "*trace-output*" "\
Trace output will by default go to that buffer.")
(custom-autoload 'trace-buffer "trace" t)
-(autoload 'trace-function "trace" "\
+(autoload 'trace-function-foreground "trace" "\
Traces FUNCTION with trace output going to BUFFER.
For every call of FUNCTION Lisp-style trace messages that display argument
and return values will be inserted into BUFFER. This function generates the
@@ -28207,7 +28215,7 @@ there might be!! The trace BUFFER will popup whenever FUNCTION is called.
Do not use this to trace functions that switch buffers or do any other
display oriented stuff, use `trace-function-background' instead.
-\(fn FUNCTION &optional BUFFER)" t nil)
+\(fn FUNCTION &optional BUFFER CONTEXT)" t nil)
(autoload 'trace-function-background "trace" "\
Traces FUNCTION with trace output going quietly to BUFFER.
@@ -28220,14 +28228,16 @@ the window or buffer configuration.
BUFFER defaults to `trace-buffer'.
-\(fn FUNCTION &optional BUFFER)" t nil)
+\(fn FUNCTION &optional BUFFER CONTEXT)" t nil)
+
+(defalias 'trace-function 'trace-function-foreground)
;;;***
;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp"
-;;;;;; "net/tramp.el" (20597 19239 817699 0))
+;;;;;; "net/tramp.el" (20652 52617 313760 0))
;;; Generated autoloads from net/tramp.el
(defvar tramp-mode t "\
@@ -28360,7 +28370,7 @@ Discard Tramp from loading remote files.
;;;***
;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el"
-;;;;;; (20438 24016 194668 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from net/tramp-ftp.el
(autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28371,7 +28381,7 @@ Discard Tramp from loading remote files.
;;;***
;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20584
-;;;;;; 7212 455152 0))
+;;;;;; 355 183605 0))
;;; Generated autoloads from tutorial.el
(autoload 'help-with-tutorial "tutorial" "\
@@ -28396,7 +28406,7 @@ resumed later.
;;;***
;;;### (autoloads (tai-viet-composition-function) "tv-util" "language/tv-util.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from language/tv-util.el
(autoload 'tai-viet-composition-function "tv-util" "\
@@ -28407,7 +28417,7 @@ resumed later.
;;;***
;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column"
-;;;;;; "textmodes/two-column.el" (20566 63671 243798 0))
+;;;;;; "textmodes/two-column.el" (20566 46502 658633 677000))
;;; Generated autoloads from textmodes/two-column.el
(autoload '2C-command "two-column" () t 'keymap)
(global-set-key "\C-x6" '2C-command)
@@ -28456,7 +28466,7 @@ First column's text sSs Second column's text
;;;### (autoloads (type-break-guesstimate-keystroke-threshold type-break-statistics
;;;;;; type-break type-break-mode) "type-break" "type-break.el"
-;;;;;; (20582 12914 894781 0))
+;;;;;; (20584 355 183605 0))
;;; Generated autoloads from type-break.el
(defvar type-break-mode nil "\
@@ -28588,8 +28598,8 @@ FRAC should be the inverse of the fractional value; for example, a value of
;;;***
-;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20566 63671
-;;;;;; 243798 0))
+;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20566 46709
+;;;;;; 606641 427000))
;;; Generated autoloads from mail/uce.el
(autoload 'uce-reply-to-uce "uce" "\
@@ -28607,7 +28617,7 @@ You might need to set `uce-mail-reader' before using this.
;;;;;; ucs-normalize-NFKC-string ucs-normalize-NFKC-region ucs-normalize-NFKD-string
;;;;;; ucs-normalize-NFKD-region ucs-normalize-NFC-string ucs-normalize-NFC-region
;;;;;; ucs-normalize-NFD-string ucs-normalize-NFD-region) "ucs-normalize"
-;;;;;; "international/ucs-normalize.el" (20476 31768 298871 0))
+;;;;;; "international/ucs-normalize.el" (20533 50312 678915 0))
;;; Generated autoloads from international/ucs-normalize.el
(autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -28673,7 +28683,7 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus.
;;;***
;;;### (autoloads (ununderline-region underline-region) "underline"
-;;;;;; "textmodes/underline.el" (20355 10021 546955 0))
+;;;;;; "textmodes/underline.el" (20533 50312 678915 0))
;;; Generated autoloads from textmodes/underline.el
(autoload 'underline-region "underline" "\
@@ -28694,7 +28704,7 @@ which specify the range to operate on.
;;;***
;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el"
-;;;;;; (20369 14251 85829 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from mail/unrmail.el
(autoload 'batch-unrmail "unrmail" "\
@@ -28713,8 +28723,8 @@ Convert old-style Rmail Babyl file FILE to system inbox format file TO-FILE.
;;;***
-;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from emacs-lisp/unsafep.el
(autoload 'unsafep "unsafep" "\
@@ -28727,7 +28737,7 @@ UNSAFEP-VARS is a list of symbols with local bindings.
;;;***
;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url"
-;;;;;; "url/url.el" (20601 16294 451653 0))
+;;;;;; "url/url.el" (20601 13717 868555 169000))
;;; Generated autoloads from url/url.el
(autoload 'url-retrieve "url" "\
@@ -28775,7 +28785,7 @@ no further processing). URL is either a string or a parsed URL.
;;;***
;;;### (autoloads (url-register-auth-scheme url-get-authentication)
-;;;;;; "url-auth" "url/url-auth.el" (20355 10021 546955 0))
+;;;;;; "url-auth" "url/url-auth.el" (20533 50312 678915 0))
;;; Generated autoloads from url/url-auth.el
(autoload 'url-get-authentication "url-auth" "\
@@ -28817,7 +28827,7 @@ RATING a rating between 1 and 10 of the strength of the authentication.
;;;***
;;;### (autoloads (url-cache-extract url-is-cached url-store-in-cache)
-;;;;;; "url-cache" "url/url-cache.el" (20355 10021 546955 0))
+;;;;;; "url-cache" "url/url-cache.el" (20533 50312 678915 0))
;;; Generated autoloads from url/url-cache.el
(autoload 'url-store-in-cache "url-cache" "\
@@ -28838,8 +28848,8 @@ Extract FNAM from the local disk cache.
;;;***
-;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from url/url-cid.el
(autoload 'url-cid "url-cid" "\
@@ -28850,7 +28860,7 @@ Extract FNAM from the local disk cache.
;;;***
;;;### (autoloads (url-dav-vc-registered url-dav-request url-dav-supported-p)
-;;;;;; "url-dav" "url/url-dav.el" (20501 3499 284800 0))
+;;;;;; "url-dav" "url/url-dav.el" (20533 50312 678915 0))
;;; Generated autoloads from url/url-dav.el
(autoload 'url-dav-supported-p "url-dav" "\
@@ -28884,8 +28894,8 @@ added to this list, so most requests can just pass in nil.
;;;***
-;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20602
-;;;;;; 37158 321420 0))
+;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20601
+;;;;;; 54760 265680 0))
;;; Generated autoloads from url/url-file.el
(autoload 'url-file "url-file" "\
@@ -28896,7 +28906,7 @@ Handle file: and ftp: URLs.
;;;***
;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw"
-;;;;;; "url/url-gw.el" (20478 3673 653810 0))
+;;;;;; "url/url-gw.el" (20533 50312 678915 0))
;;; Generated autoloads from url/url-gw.el
(autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -28916,7 +28926,7 @@ Might do a non-blocking connection; use `process-status' to check.
;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file
;;;;;; url-file-handler url-handler-mode) "url-handlers" "url/url-handlers.el"
-;;;;;; (20584 7212 455152 0))
+;;;;;; (20584 355 183605 0))
;;; Generated autoloads from url/url-handlers.el
(defvar url-handler-mode nil "\
@@ -28970,8 +28980,8 @@ accessible.
;;;***
-;;;### (autoloads nil "url-http" "url/url-http.el" (20601 16294 451653
-;;;;;; 0))
+;;;### (autoloads nil "url-http" "url/url-http.el" (20601 13773 988556
+;;;;;; 549000))
;;; Generated autoloads from url/url-http.el
(autoload 'url-default-expander "url-expand")
@@ -28983,8 +28993,8 @@ accessible.
;;;***
-;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from url/url-irc.el
(autoload 'url-irc "url-irc" "\
@@ -28994,8 +29004,8 @@ accessible.
;;;***
-;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20355
-;;;;;; 10021 546955 0))
+;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from url/url-ldap.el
(autoload 'url-ldap "url-ldap" "\
@@ -29009,7 +29019,7 @@ URL can be a URL string, or a URL vector of the type returned by
;;;***
;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from url/url-mailto.el
(autoload 'url-mail "url-mailto" "\
@@ -29025,8 +29035,8 @@ Handle the mailto: URL syntax.
;;;***
;;;### (autoloads (url-data url-generic-emulator-loader url-info
-;;;;;; url-man) "url-misc" "url/url-misc.el" (20478 3673 653810
-;;;;;; 0))
+;;;;;; url-man) "url-misc" "url/url-misc.el" (20668 17640 189346
+;;;;;; 887000))
;;; Generated autoloads from url/url-misc.el
(autoload 'url-man "url-misc" "\
@@ -29058,7 +29068,7 @@ Fetch a data URL (RFC 2397).
;;;***
;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from url/url-news.el
(autoload 'url-news "url-news" "\
@@ -29075,7 +29085,7 @@ Fetch a data URL (RFC 2397).
;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable
;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from url/url-ns.el
(autoload 'isPlainHostName "url-ns" "\
@@ -29116,7 +29126,7 @@ Fetch a data URL (RFC 2397).
;;;***
;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse"
-;;;;;; "url/url-parse.el" (20577 33959 40183 0))
+;;;;;; "url/url-parse.el" (20648 29678 511980 0))
;;; Generated autoloads from url/url-parse.el
(autoload 'url-recreate-url "url-parse" "\
@@ -29168,7 +29178,7 @@ parses to
;;;***
;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from url/url-privacy.el
(autoload 'url-setup-privacy-info "url-privacy" "\
@@ -29179,7 +29189,7 @@ Setup variables that expose info about you and your system.
;;;***
;;;### (autoloads (url-queue-retrieve) "url-queue" "url/url-queue.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from url/url-queue.el
(autoload 'url-queue-retrieve "url-queue" "\
@@ -29200,7 +29210,7 @@ The variable `url-queue-timeout' sets a timeout.
;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message
;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args
;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20584
-;;;;;; 7212 455152 0))
+;;;;;; 355 183605 0))
;;; Generated autoloads from url/url-util.el
(defvar url-debug nil "\
@@ -29374,7 +29384,7 @@ This uses `url-current-object', set locally to the buffer.
;;;***
;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock)
-;;;;;; "userlock" "userlock.el" (20555 6946 859539 0))
+;;;;;; "userlock" "userlock.el" (20553 51521 311307 389000))
;;; Generated autoloads from userlock.el
(autoload 'ask-user-about-lock "userlock" "\
@@ -29404,7 +29414,7 @@ The buffer in question is current when this function is called.
;;;### (autoloads (utf-7-imap-pre-write-conversion utf-7-pre-write-conversion
;;;;;; utf-7-imap-post-read-conversion utf-7-post-read-conversion)
-;;;;;; "utf-7" "international/utf-7.el" (20355 10021 546955 0))
+;;;;;; "utf-7" "international/utf-7.el" (20533 50312 678915 0))
;;; Generated autoloads from international/utf-7.el
(autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29429,8 +29439,8 @@ The buffer in question is current when this function is called.
;;;***
-;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20355 10021
-;;;;;; 546955 0))
+;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from gnus/utf7.el
(autoload 'utf7-encode "utf7" "\
@@ -29442,7 +29452,7 @@ Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil.
;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal
;;;;;; uudecode-decode-region-external) "uudecode" "mail/uudecode.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from mail/uudecode.el
(autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29472,8 +29482,8 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers
;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff
;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook
-;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20611
-;;;;;; 52135 109136 0))
+;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20668
+;;;;;; 15033 902481 0))
;;; Generated autoloads from vc/vc.el
(defvar vc-checkout-hook nil "\
@@ -29719,11 +29729,15 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
(autoload 'vc-delete-file "vc" "\
Delete file and mark it as such in the version control system.
+If called interactively, read FILE, defaulting to the current
+buffer's file name if it's under version control.
\(fn FILE)" t nil)
(autoload 'vc-rename-file "vc" "\
Rename file OLD to NEW in both work area and repository.
+If called interactively, read OLD and NEW, defaulting OLD to the
+current buffer's file name if it's under version control.
\(fn OLD NEW)" t nil)
@@ -29751,7 +29765,7 @@ Return the branch part of a revision number REV.
;;;***
;;;### (autoloads (vc-annotate) "vc-annotate" "vc/vc-annotate.el"
-;;;;;; (20478 3673 653810 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from vc/vc-annotate.el
(autoload 'vc-annotate "vc-annotate" "\
@@ -29788,7 +29802,7 @@ mode-specific menu. `vc-annotate-color-map' and
;;;***
-;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20478 3673 653810
+;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20533 50312 678915
;;;;;; 0))
;;; Generated autoloads from vc/vc-arch.el
(defun vc-arch-registered (file)
@@ -29799,8 +29813,7 @@ mode-specific menu. `vc-annotate-color-map' and
;;;***
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20584 7212 455152
-;;;;;; 0))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20584 355 183605 0))
;;; Generated autoloads from vc/vc-bzr.el
(defconst vc-bzr-admin-dirname ".bzr" "\
@@ -29816,7 +29829,7 @@ Name of the format file in a .bzr directory.")
;;;***
-;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20542 46798 773957
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20542 54621 56606
;;;;;; 0))
;;; Generated autoloads from vc/vc-cvs.el
(defun vc-cvs-registered (f)
@@ -29828,10 +29841,49 @@ Name of the format file in a .bzr directory.")
;;;***
-;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20522 9637 465791
-;;;;;; 0))
+;;;### (autoloads (vc-dir vc-dir-mode) "vc-dir" "vc/vc-dir.el" (20664
+;;;;;; 5610 38100 0))
;;; Generated autoloads from vc/vc-dir.el
+(autoload 'vc-dir-mode "vc-dir" "\
+Major mode for VC directory buffers.
+Marking/Unmarking key bindings and actions:
+m - mark a file/directory
+ - if the region is active, mark all the files in region.
+ Restrictions: - a file cannot be marked if any parent directory is marked
+ - a directory cannot be marked if any child file or
+ directory is marked
+u - unmark a file/directory
+ - if the region is active, unmark all the files in region.
+M - if the cursor is on a file: mark all the files with the same state as
+ the current file
+ - if the cursor is on a directory: mark all child files
+ - with a prefix argument: mark all files
+U - if the cursor is on a file: unmark all the files with the same state
+ as the current file
+ - if the cursor is on a directory: unmark all child files
+ - with a prefix argument: unmark all files
+mouse-2 - toggles the mark state
+
+VC commands
+VC commands in the `C-x v' prefix can be used.
+VC commands act on the marked entries. If nothing is marked, VC
+commands act on the current entry.
+
+Search & Replace
+S - searches the marked files
+Q - does a query replace on the marked files
+M-s a C-s - does an isearch on the marked files
+M-s a C-M-s - does a regexp isearch on the marked files
+If nothing is marked, these commands act on the current entry.
+When a directory is current or marked, the Search & Replace
+commands act on the child files of that directory that are displayed in
+the *vc-dir* buffer.
+
+\\{vc-dir-mode-map}
+
+\(fn)" t nil)
+
(autoload 'vc-dir "vc-dir" "\
Show the VC status for \"interesting\" files in and below DIR.
This allows you to mark files and perform VC operations on them.
@@ -29854,7 +29906,7 @@ These are the commands available for use in the file status buffer:
;;;***
;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el"
-;;;;;; (20489 12324 656827 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from vc/vc-dispatcher.el
(autoload 'vc-do-command "vc-dispatcher" "\
@@ -29877,8 +29929,8 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20586 48936 135199
-;;;;;; 0))
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20664 25386 555095
+;;;;;; 685000))
;;; Generated autoloads from vc/vc-git.el
(defun vc-git-registered (file)
"Return non-nil if FILE is registered with git."
@@ -29889,7 +29941,7 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20489 12324 656827 0))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20665 28029 52155 0))
;;; Generated autoloads from vc/vc-hg.el
(defun vc-hg-registered (file)
"Return non-nil if FILE is registered with hg."
@@ -29900,7 +29952,8 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20524 51365 2559 0))
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20533 50312 678915
+;;;;;; 0))
;;; Generated autoloads from vc/vc-mtn.el
(defconst vc-mtn-admin-dir "_MTN" "\
@@ -29917,7 +29970,7 @@ Name of the monotone directory's format file.")
;;;***
;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el"
-;;;;;; (20584 7212 455152 0))
+;;;;;; (20584 355 183605 0))
;;; Generated autoloads from vc/vc-rcs.el
(defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -29931,7 +29984,7 @@ For a description of possible values, see `vc-check-master-templates'.")
;;;***
;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el"
-;;;;;; (20584 7212 455152 0))
+;;;;;; (20584 355 183605 0))
;;; Generated autoloads from vc/vc-sccs.el
(defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\
@@ -29949,7 +30002,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
;;;***
-;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20355 10021 546955
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20648 29678 511980
;;;;;; 0))
;;; Generated autoloads from vc/vc-svn.el
(defun vc-svn-registered (f)
@@ -29964,7 +30017,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
;;;***
;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el"
-;;;;;; (20577 33959 40183 0))
+;;;;;; (20576 17562 243997 985000))
;;; Generated autoloads from progmodes/vera-mode.el
(add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode))
@@ -30022,7 +30075,7 @@ Key bindings:
;;;***
;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from progmodes/verilog-mode.el
(autoload 'verilog-mode "verilog-mode" "\
@@ -30161,7 +30214,7 @@ Key bindings specific to `verilog-mode-map' are:
;;;***
;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el"
-;;;;;; (20593 22184 581574 0))
+;;;;;; (20594 14884 858174 0))
;;; Generated autoloads from progmodes/vhdl-mode.el
(autoload 'vhdl-mode "vhdl-mode" "\
@@ -30715,8 +30768,8 @@ Key bindings:
;;;***
-;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20566 63671 243798
-;;;;;; 0))
+;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20566 46321 482625
+;;;;;; 150000))
;;; Generated autoloads from emulation/vi.el
(autoload 'vi-mode "vi" "\
@@ -30771,7 +30824,7 @@ Syntax table and abbrevs while in vi mode remain as they were in Emacs.
;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion
;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer
;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util"
-;;;;;; "language/viet-util.el" (20355 10021 546955 0))
+;;;;;; "language/viet-util.el" (20533 50312 678915 0))
;;; Generated autoloads from language/viet-util.el
(autoload 'viet-encode-viscii-char "viet-util" "\
@@ -30819,7 +30872,7 @@ Convert Vietnamese characters of the current buffer to `VIQR' mnemonics.
;;;;;; view-mode view-buffer-other-frame view-buffer-other-window
;;;;;; view-buffer view-file-other-frame view-file-other-window
;;;;;; view-file kill-buffer-if-not-modified view-remove-frame-by-deleting)
-;;;;;; "view" "view.el" (20577 33959 40183 0))
+;;;;;; "view" "view.el" (20574 60285 453605 907000))
;;; Generated autoloads from view.el
(defvar view-remove-frame-by-deleting t "\
@@ -31075,8 +31128,8 @@ Exit View mode and make the current buffer editable.
;;;***
-;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20513
-;;;;;; 18948 537867 0))
+;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from emulation/vip.el
(autoload 'vip-setup "vip" "\
@@ -31092,7 +31145,7 @@ Turn on VIP emulation of VI.
;;;***
;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
-;;;;;; (20566 63671 243798 0))
+;;;;;; (20566 46795 194646 255000))
;;; Generated autoloads from emulation/viper.el
(autoload 'toggle-viper-mode "viper" "\
@@ -31109,7 +31162,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
;;;***
;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emacs-lisp/warnings.el
(defvar warning-prefix-function nil "\
@@ -31199,7 +31252,7 @@ this is equivalent to `display-warning', using
;;;***
;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el"
-;;;;;; (20619 46245 806932 0))
+;;;;;; (20656 14460 296991 0))
;;; Generated autoloads from wdired.el
(autoload 'wdired-change-to-wdired-mode "wdired" "\
@@ -31216,8 +31269,8 @@ See `wdired-mode'.
;;;***
-;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20566 63671
-;;;;;; 243798 0))
+;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20566 45342
+;;;;;; 918583 804000))
;;; Generated autoloads from net/webjump.el
(autoload 'webjump "webjump" "\
@@ -31234,7 +31287,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
;;;***
;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el"
-;;;;;; (20613 49078 764749 0))
+;;;;;; (20613 39767 44650 0))
;;; Generated autoloads from progmodes/which-func.el
(put 'which-func-format 'risky-local-variable t)
(put 'which-func-current 'risky-local-variable t)
@@ -31267,8 +31320,8 @@ in certain major modes.
;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region
;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options
;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode
-;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20508 13724
-;;;;;; 260761 0))
+;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from whitespace.el
(autoload 'whitespace-mode "whitespace" "\
@@ -31667,8 +31720,8 @@ cleaning up these problems.
;;;***
;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse
-;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20478 3673
-;;;;;; 653810 0))
+;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from wid-browse.el
(autoload 'widget-browse-at "wid-browse" "\
@@ -31697,8 +31750,8 @@ if ARG is omitted or nil.
;;;***
;;;### (autoloads (widget-setup widget-insert widget-delete widget-create
-;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20373
-;;;;;; 11301 906925 0))
+;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from wid-edit.el
(autoload 'widgetp "wid-edit" "\
@@ -31742,7 +31795,7 @@ Setup current buffer so editing string widgets works.
;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right
;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20566
-;;;;;; 63671 243798 0))
+;;;;;; 44765 218559 34000))
;;; Generated autoloads from windmove.el
(autoload 'windmove-left "windmove" "\
@@ -31794,8 +31847,8 @@ Default MODIFIER is 'shift.
;;;***
-;;;### (autoloads (winner-mode) "winner" "winner.el" (20584 7212
-;;;;;; 455152 0))
+;;;### (autoloads (winner-mode) "winner" "winner.el" (20584 355 183605
+;;;;;; 0))
;;; Generated autoloads from winner.el
(defvar winner-mode nil "\
@@ -31819,8 +31872,8 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
;;;***
;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file
-;;;;;; woman woman-locale) "woman" "woman.el" (20623 43301 870757
-;;;;;; 0))
+;;;;;; woman woman-locale) "woman" "woman.el" (20656 64489 79784
+;;;;;; 260000))
;;; Generated autoloads from woman.el
(defvar woman-locale nil "\
@@ -31869,7 +31922,7 @@ Default bookmark handler for Woman buffers.
;;;***
;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el"
-;;;;;; (20355 10021 546955 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from emulation/ws-mode.el
(autoload 'wordstar-mode "ws-mode" "\
@@ -31981,8 +32034,8 @@ The key bindings are:
;;;***
-;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20478 3673
-;;;;;; 653810 0))
+;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20533 50312
+;;;;;; 678915 0))
;;; Generated autoloads from net/xesam.el
(autoload 'xesam-search "xesam" "\
@@ -32002,7 +32055,7 @@ Example:
;;;***
;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el"
-;;;;;; (20528 48420 241677 0))
+;;;;;; (20533 50312 678915 0))
;;; Generated autoloads from xml.el
(autoload 'xml-parse-file "xml" "\
@@ -32059,7 +32112,7 @@ Both features can be combined by providing a cons cell
;;;***
;;;### (autoloads (xmltok-get-declared-encoding-position) "xmltok"
-;;;;;; "nxml/xmltok.el" (20355 10021 546955 0))
+;;;;;; "nxml/xmltok.el" (20533 50312 678915 0))
;;; Generated autoloads from nxml/xmltok.el
(autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -32077,8 +32130,8 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT.
;;;***
-;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20485
-;;;;;; 15269 390836 0))
+;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20533
+;;;;;; 50312 678915 0))
;;; Generated autoloads from xt-mouse.el
(defvar xterm-mouse-mode nil "\
@@ -32108,7 +32161,7 @@ down the SHIFT key while pressing the mouse button.
;;;***
;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc"
-;;;;;; "gnus/yenc.el" (20355 10021 546955 0))
+;;;;;; "gnus/yenc.el" (20533 50312 678915 0))
;;; Generated autoloads from gnus/yenc.el
(autoload 'yenc-decode-region "yenc" "\
@@ -32124,7 +32177,7 @@ Extract file name from an yenc header.
;;;***
;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism
-;;;;;; yow) "yow" "play/yow.el" (20364 42504 244840 586000))
+;;;;;; yow) "yow" "play/yow.el" (20533 50312 678915 0))
;;; Generated autoloads from play/yow.el
(autoload 'yow "yow" "\
@@ -32150,7 +32203,7 @@ Zippy goes to the analyst.
;;;***
-;;;### (autoloads (zone) "zone" "play/zone.el" (20545 57511 257469
+;;;### (autoloads (zone) "zone" "play/zone.el" (20545 60086 510404
;;;;;; 0))
;;; Generated autoloads from play/zone.el
@@ -32167,46 +32220,46 @@ Zone out, completely.
;;;;;; "calc/calc-fin.el" "calc/calc-forms.el" "calc/calc-frac.el"
;;;;;; "calc/calc-funcs.el" "calc/calc-graph.el" "calc/calc-help.el"
;;;;;; "calc/calc-incom.el" "calc/calc-keypd.el" "calc/calc-lang.el"
-;;;;;; "calc/calc-loaddefs.el" "calc/calc-macs.el" "calc/calc-map.el"
-;;;;;; "calc/calc-math.el" "calc/calc-menu.el" "calc/calc-misc.el"
-;;;;;; "calc/calc-mode.el" "calc/calc-mtx.el" "calc/calc-nlfit.el"
-;;;;;; "calc/calc-poly.el" "calc/calc-prog.el" "calc/calc-rewr.el"
-;;;;;; "calc/calc-rules.el" "calc/calc-sel.el" "calc/calc-stat.el"
-;;;;;; "calc/calc-store.el" "calc/calc-stuff.el" "calc/calc-trail.el"
-;;;;;; "calc/calc-units.el" "calc/calc-vec.el" "calc/calc-yank.el"
-;;;;;; "calc/calcalg2.el" "calc/calcalg3.el" "calc/calccomp.el"
-;;;;;; "calc/calcsel2.el" "calendar/cal-bahai.el" "calendar/cal-coptic.el"
-;;;;;; "calendar/cal-french.el" "calendar/cal-html.el" "calendar/cal-islam.el"
-;;;;;; "calendar/cal-iso.el" "calendar/cal-julian.el" "calendar/cal-loaddefs.el"
-;;;;;; "calendar/cal-mayan.el" "calendar/cal-menu.el" "calendar/cal-move.el"
-;;;;;; "calendar/cal-persia.el" "calendar/cal-tex.el" "calendar/cal-x.el"
-;;;;;; "calendar/diary-loaddefs.el" "calendar/hol-loaddefs.el" "cdl.el"
-;;;;;; "cedet/cedet-cscope.el" "cedet/cedet-files.el" "cedet/cedet-global.el"
-;;;;;; "cedet/cedet-idutils.el" "cedet/cedet.el" "cedet/ede/auto.el"
-;;;;;; "cedet/ede/autoconf-edit.el" "cedet/ede/base.el" "cedet/ede/cpp-root.el"
-;;;;;; "cedet/ede/custom.el" "cedet/ede/dired.el" "cedet/ede/emacs.el"
-;;;;;; "cedet/ede/files.el" "cedet/ede/generic.el" "cedet/ede/linux.el"
-;;;;;; "cedet/ede/loaddefs.el" "cedet/ede/locate.el" "cedet/ede/make.el"
-;;;;;; "cedet/ede/makefile-edit.el" "cedet/ede/pconf.el" "cedet/ede/pmake.el"
-;;;;;; "cedet/ede/proj-archive.el" "cedet/ede/proj-aux.el" "cedet/ede/proj-comp.el"
-;;;;;; "cedet/ede/proj-elisp.el" "cedet/ede/proj-info.el" "cedet/ede/proj-misc.el"
-;;;;;; "cedet/ede/proj-obj.el" "cedet/ede/proj-prog.el" "cedet/ede/proj-scheme.el"
-;;;;;; "cedet/ede/proj-shared.el" "cedet/ede/proj.el" "cedet/ede/project-am.el"
-;;;;;; "cedet/ede/shell.el" "cedet/ede/simple.el" "cedet/ede/source.el"
-;;;;;; "cedet/ede/speedbar.el" "cedet/ede/srecode.el" "cedet/ede/system.el"
-;;;;;; "cedet/ede/util.el" "cedet/pulse.el" "cedet/semantic/analyze.el"
-;;;;;; "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el"
-;;;;;; "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el"
-;;;;;; "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el"
-;;;;;; "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el"
-;;;;;; "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el"
-;;;;;; "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el"
-;;;;;; "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el"
-;;;;;; "cedet/semantic/chart.el" "cedet/semantic/complete.el" "cedet/semantic/ctxt.el"
-;;;;;; "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el"
-;;;;;; "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" "cedet/semantic/db-find.el"
-;;;;;; "cedet/semantic/db-global.el" "cedet/semantic/db-javascript.el"
-;;;;;; "cedet/semantic/db-mode.el" "cedet/semantic/db-ref.el" "cedet/semantic/db-typecache.el"
+;;;;;; "calc/calc-macs.el" "calc/calc-map.el" "calc/calc-math.el"
+;;;;;; "calc/calc-menu.el" "calc/calc-misc.el" "calc/calc-mode.el"
+;;;;;; "calc/calc-mtx.el" "calc/calc-nlfit.el" "calc/calc-poly.el"
+;;;;;; "calc/calc-prog.el" "calc/calc-rewr.el" "calc/calc-rules.el"
+;;;;;; "calc/calc-sel.el" "calc/calc-stat.el" "calc/calc-store.el"
+;;;;;; "calc/calc-stuff.el" "calc/calc-trail.el" "calc/calc-units.el"
+;;;;;; "calc/calc-vec.el" "calc/calc-yank.el" "calc/calcalg2.el"
+;;;;;; "calc/calcalg3.el" "calc/calccomp.el" "calc/calcsel2.el"
+;;;;;; "calendar/cal-bahai.el" "calendar/cal-coptic.el" "calendar/cal-french.el"
+;;;;;; "calendar/cal-html.el" "calendar/cal-islam.el" "calendar/cal-iso.el"
+;;;;;; "calendar/cal-julian.el" "calendar/cal-loaddefs.el" "calendar/cal-mayan.el"
+;;;;;; "calendar/cal-menu.el" "calendar/cal-move.el" "calendar/cal-persia.el"
+;;;;;; "calendar/cal-tex.el" "calendar/cal-x.el" "calendar/diary-loaddefs.el"
+;;;;;; "calendar/hol-loaddefs.el" "cdl.el" "cedet/cedet-cscope.el"
+;;;;;; "cedet/cedet-files.el" "cedet/cedet-global.el" "cedet/cedet-idutils.el"
+;;;;;; "cedet/cedet.el" "cedet/ede/auto.el" "cedet/ede/autoconf-edit.el"
+;;;;;; "cedet/ede/base.el" "cedet/ede/cpp-root.el" "cedet/ede/custom.el"
+;;;;;; "cedet/ede/dired.el" "cedet/ede/emacs.el" "cedet/ede/files.el"
+;;;;;; "cedet/ede/generic.el" "cedet/ede/linux.el" "cedet/ede/locate.el"
+;;;;;; "cedet/ede/make.el" "cedet/ede/makefile-edit.el" "cedet/ede/pconf.el"
+;;;;;; "cedet/ede/pmake.el" "cedet/ede/proj-archive.el" "cedet/ede/proj-aux.el"
+;;;;;; "cedet/ede/proj-comp.el" "cedet/ede/proj-elisp.el" "cedet/ede/proj-info.el"
+;;;;;; "cedet/ede/proj-misc.el" "cedet/ede/proj-obj.el" "cedet/ede/proj-prog.el"
+;;;;;; "cedet/ede/proj-scheme.el" "cedet/ede/proj-shared.el" "cedet/ede/proj.el"
+;;;;;; "cedet/ede/project-am.el" "cedet/ede/shell.el" "cedet/ede/simple.el"
+;;;;;; "cedet/ede/source.el" "cedet/ede/speedbar.el" "cedet/ede/srecode.el"
+;;;;;; "cedet/ede/system.el" "cedet/ede/util.el" "cedet/pulse.el"
+;;;;;; "cedet/semantic/analyze.el" "cedet/semantic/analyze/complete.el"
+;;;;;; "cedet/semantic/analyze/debug.el" "cedet/semantic/analyze/fcn.el"
+;;;;;; "cedet/semantic/analyze/refs.el" "cedet/semantic/bovine.el"
+;;;;;; "cedet/semantic/bovine/c-by.el" "cedet/semantic/bovine/c.el"
+;;;;;; "cedet/semantic/bovine/debug.el" "cedet/semantic/bovine/el.el"
+;;;;;; "cedet/semantic/bovine/gcc.el" "cedet/semantic/bovine/make-by.el"
+;;;;;; "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm-by.el"
+;;;;;; "cedet/semantic/bovine/scm.el" "cedet/semantic/chart.el"
+;;;;;; "cedet/semantic/complete.el" "cedet/semantic/ctxt.el" "cedet/semantic/db-debug.el"
+;;;;;; "cedet/semantic/db-ebrowse.el" "cedet/semantic/db-el.el"
+;;;;;; "cedet/semantic/db-file.el" "cedet/semantic/db-find.el" "cedet/semantic/db-global.el"
+;;;;;; "cedet/semantic/db-javascript.el" "cedet/semantic/db-mode.el"
+;;;;;; "cedet/semantic/db-ref.el" "cedet/semantic/db-typecache.el"
;;;;;; "cedet/semantic/db.el" "cedet/semantic/debug.el" "cedet/semantic/decorate.el"
;;;;;; "cedet/semantic/decorate/include.el" "cedet/semantic/decorate/mode.el"
;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/ede-grammar.el"
@@ -32214,13 +32267,13 @@ Zone out, completely.
;;;;;; "cedet/semantic/fw.el" "cedet/semantic/grammar-wy.el" "cedet/semantic/grammar.el"
;;;;;; "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el"
;;;;;; "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/java.el"
-;;;;;; "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/loaddefs.el"
-;;;;;; "cedet/semantic/mru-bookmark.el" "cedet/semantic/sb.el" "cedet/semantic/scope.el"
-;;;;;; "cedet/semantic/senator.el" "cedet/semantic/sort.el" "cedet/semantic/symref.el"
-;;;;;; "cedet/semantic/symref/cscope.el" "cedet/semantic/symref/filter.el"
-;;;;;; "cedet/semantic/symref/global.el" "cedet/semantic/symref/grep.el"
-;;;;;; "cedet/semantic/symref/idutils.el" "cedet/semantic/symref/list.el"
-;;;;;; "cedet/semantic/tag-file.el" "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
+;;;;;; "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/mru-bookmark.el"
+;;;;;; "cedet/semantic/sb.el" "cedet/semantic/scope.el" "cedet/semantic/senator.el"
+;;;;;; "cedet/semantic/sort.el" "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el"
+;;;;;; "cedet/semantic/symref/filter.el" "cedet/semantic/symref/global.el"
+;;;;;; "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el"
+;;;;;; "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el"
+;;;;;; "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el"
;;;;;; "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el"
;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el"
@@ -32232,11 +32285,11 @@ Zone out, completely.
;;;;;; "cedet/srecode/el.el" "cedet/srecode/expandproto.el" "cedet/srecode/extract.el"
;;;;;; "cedet/srecode/fields.el" "cedet/srecode/filters.el" "cedet/srecode/find.el"
;;;;;; "cedet/srecode/getset.el" "cedet/srecode/insert.el" "cedet/srecode/java.el"
-;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el"
-;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el"
-;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el"
-;;;;;; "cus-dep.el" "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el"
-;;;;;; "dos-vars.el" "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el"
+;;;;;; "cedet/srecode/map.el" "cedet/srecode/mode.el" "cedet/srecode/semantic.el"
+;;;;;; "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" "cedet/srecode/table.el"
+;;;;;; "cedet/srecode/template.el" "cedet/srecode/texi.el" "cus-dep.el"
+;;;;;; "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" "dos-vars.el"
+;;;;;; "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el"
;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el"
;;;;;; "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el"
;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el"
@@ -32256,33 +32309,32 @@ Zone out, completely.
;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el"
;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el"
;;;;;; "eshell/em-unix.el" "eshell/em-xtra.el" "eshell/esh-arg.el"
-;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-groups.el"
-;;;;;; "eshell/esh-io.el" "eshell/esh-module.el" "eshell/esh-opt.el"
-;;;;;; "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el"
-;;;;;; "ezimage.el" "foldout.el" "format-spec.el" "fringe.el" "generic-x.el"
-;;;;;; "gnus/compface.el" "gnus/gnus-async.el" "gnus/gnus-bcklg.el"
-;;;;;; "gnus/gnus-cite.el" "gnus/gnus-cus.el" "gnus/gnus-demon.el"
-;;;;;; "gnus/gnus-dup.el" "gnus/gnus-eform.el" "gnus/gnus-ems.el"
-;;;;;; "gnus/gnus-int.el" "gnus/gnus-logic.el" "gnus/gnus-mh.el"
-;;;;;; "gnus/gnus-salt.el" "gnus/gnus-score.el" "gnus/gnus-setup.el"
-;;;;;; "gnus/gnus-srvr.el" "gnus/gnus-topic.el" "gnus/gnus-undo.el"
-;;;;;; "gnus/gnus-util.el" "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el"
-;;;;;; "gnus/ietf-drums.el" "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el"
-;;;;;; "gnus/mail-prsvr.el" "gnus/mail-source.el" "gnus/mailcap.el"
-;;;;;; "gnus/messcompat.el" "gnus/mm-archive.el" "gnus/mm-bodies.el"
-;;;;;; "gnus/mm-decode.el" "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el"
-;;;;;; "gnus/mml-smime.el" "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el"
-;;;;;; "gnus/nndraft.el" "gnus/nneething.el" "gnus/nngateway.el"
-;;;;;; "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el"
-;;;;;; "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el"
-;;;;;; "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el"
-;;;;;; "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el"
-;;;;;; "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el"
-;;;;;; "gnus/rfc2104.el" "gnus/rfc2231.el" "gnus/rtree.el" "gnus/shr-color.el"
-;;;;;; "gnus/sieve-manage.el" "gnus/smime.el" "gnus/spam-stat.el"
-;;;;;; "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" "ibuf-ext.el"
-;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/fontset.el"
-;;;;;; "international/iso-ascii.el" "international/ja-dic-cnv.el"
+;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-io.el"
+;;;;;; "eshell/esh-module.el" "eshell/esh-opt.el" "eshell/esh-proc.el"
+;;;;;; "eshell/esh-util.el" "eshell/esh-var.el" "ezimage.el" "foldout.el"
+;;;;;; "format-spec.el" "fringe.el" "generic-x.el" "gnus/compface.el"
+;;;;;; "gnus/gnus-async.el" "gnus/gnus-bcklg.el" "gnus/gnus-cite.el"
+;;;;;; "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el"
+;;;;;; "gnus/gnus-eform.el" "gnus/gnus-ems.el" "gnus/gnus-int.el"
+;;;;;; "gnus/gnus-logic.el" "gnus/gnus-mh.el" "gnus/gnus-salt.el"
+;;;;;; "gnus/gnus-score.el" "gnus/gnus-setup.el" "gnus/gnus-srvr.el"
+;;;;;; "gnus/gnus-topic.el" "gnus/gnus-undo.el" "gnus/gnus-util.el"
+;;;;;; "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el"
+;;;;;; "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" "gnus/mail-prsvr.el"
+;;;;;; "gnus/mail-source.el" "gnus/mailcap.el" "gnus/messcompat.el"
+;;;;;; "gnus/mm-archive.el" "gnus/mm-bodies.el" "gnus/mm-decode.el"
+;;;;;; "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el"
+;;;;;; "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el"
+;;;;;; "gnus/nneething.el" "gnus/nngateway.el" "gnus/nnheader.el"
+;;;;;; "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el" "gnus/nnmaildir.el"
+;;;;;; "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el" "gnus/nnnil.el"
+;;;;;; "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el" "gnus/nnspool.el"
+;;;;;; "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el" "gnus/registry.el"
+;;;;;; "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" "gnus/rfc2104.el"
+;;;;;; "gnus/rfc2231.el" "gnus/rtree.el" "gnus/shr-color.el" "gnus/sieve-manage.el"
+;;;;;; "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
+;;;;;; "hfy-cmap.el" "ibuf-ext.el" "international/cp51932.el" "international/eucjp-ms.el"
+;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el"
;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el"
;;;;;; "international/uni-category.el" "international/uni-combining.el"
;;;;;; "international/uni-comment.el" "international/uni-decimal.el"
@@ -32370,8 +32422,8 @@ Zone out, completely.
;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-common-fns.el"
-;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20626 19627 425848
-;;;;;; 6000))
+;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20669 25890 774402
+;;;;;; 97000))
;;;***
diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el
index 2e4ffec1383..aa507897243 100644
--- a/lisp/mail/mailabbrev.el
+++ b/lisp/mail/mailabbrev.el
@@ -472,10 +472,12 @@ of a mail alias. The value is set up, buffer-local, when first needed.")
(defun mail-abbrev-expand-wrapper (expand)
(if (and mail-abbrevs (not (eq mail-abbrevs t)))
- (if (mail-abbrev-in-expansion-header-p)
+ (if (or (mail-abbrev-in-expansion-header-p)
+ ;; Necessary for `message-read-from-minibuffer' to work.
+ (window-minibuffer-p))
- ;; We are in a To: (or CC:, or whatever) header, and
- ;; should use word-abbrevs to expand mail aliases.
+ ;; We are in a To: (or CC:, or whatever) header or a minibuffer,
+ ;; and should use word-abbrevs to expand mail aliases.
(let ((local-abbrev-table mail-abbrevs))
;; Before anything else, resolve aliases if they need it.
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index a2cb7cb9ee8..eec96f4c0b6 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -100,6 +100,10 @@ its character representation and its display representation.")
"The current header display style choice, one of
'normal (selected headers) or 'full (all headers).")
+(defvar rmail-mime-decoded nil
+ "Non-nil if message has been processed by `rmail-show-mime-function'.")
+(put 'rmail-mime-decoded 'permanent-local t) ; for rmail-edit
+
(defgroup rmail nil
"Mail reader for Emacs."
:group 'mail)
@@ -2699,6 +2703,27 @@ N defaults to the current message."
:group 'rmail
:version "23.1")
+;; FIXME?
+;; rmail-show-mime-function does not unquote >From lines. Should it?
+(defcustom rmail-mbox-format 'mboxrd
+ "The mbox format that your system uses.
+There is no way to determine this, so you should set the appropriate value.
+The formats quote lines containing \"From \" differently.
+The choices are:
+ `mboxo' : lines that start with \"From \" quoted as \">From \"
+ `mboxrd': lines that start with \">*From \" quoted with another \">\"
+The `mboxo' format is ambiguous, in that one cannot know whether
+a line starting with \">From \" originally had a \">\" or not.
+
+It is not critical to set this to the correct value; it only affects
+how Rmail displays lines starting with \">*From \" in non-MIME messages.
+
+See also `unrmail-mbox-format'."
+ :type '(choice (const mboxrd)
+ (const mboxro))
+ :version "24.4"
+ :group 'rmail-files)
+
(defun rmail-show-message-1 (&optional msg)
"Show message MSG (default: current message) using `rmail-view-buffer'.
Return text to display in the minibuffer if MSG is out of
@@ -2747,6 +2772,7 @@ The current mail message becomes the message displayed."
(re-search-forward "mime-version: 1.0" nil t))
(let ((rmail-buffer mbox-buf)
(rmail-view-buffer view-buf))
+ (set (make-local-variable 'rmail-mime-decoded) t)
(funcall rmail-show-mime-function))
(setq body-start (search-forward "\n\n" nil t))
(narrow-to-region beg (point))
@@ -2791,11 +2817,15 @@ The current mail message becomes the message displayed."
;; Prepare the separator (blank line) before the body.
(goto-char (point-min))
(insert "\n")
- ;; Unquote quoted From lines
- (while (re-search-forward "^>+From " nil t)
- (beginning-of-line)
- (delete-char 1)
- (forward-line))
+ ;; Unquote quoted From lines.
+ (let ((fromline (if (eq 'mboxrd rmail-mbox-format)
+ "^>+From "
+ "^>From "))
+ case-fold-search)
+ (while (re-search-forward fromline nil t)
+ (beginning-of-line)
+ (delete-char 1)
+ (forward-line)))
(goto-char (point-min)))
;; Copy the headers to the front of the message view buffer.
(rmail-copy-headers beg end)
@@ -3869,6 +3899,7 @@ see the documentation of `rmail-resend'."
(msgnum rmail-current-message)
(subject (concat "["
(let ((from (or (mail-fetch-field "From")
+ ;; FIXME - huh?
(mail-fetch-field ">From"))))
(if from
(concat (mail-strip-quoted-names from) ": ")
@@ -4550,7 +4581,7 @@ encoded string (and the same mask) will decode the string."
;;; Start of automatically extracted autoloads.
;;;### (autoloads (rmail-edit-current-message) "rmailedit" "rmailedit.el"
-;;;;;; "78b8b7d5c679935c118d595d473d7c5e")
+;;;;;; "791ea184628feb6335fe3e29f7234934")
;;; Generated autoloads from rmailedit.el
(autoload 'rmail-edit-current-message "rmailedit" "\
@@ -4707,7 +4738,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order.
;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic
;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels
-;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "6cafe6b03e187b5836e3c359322b5cbf")
+;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "856fc6e337d5398b302c448ee7a2315e")
;;; Generated autoloads from rmailsum.el
(autoload 'rmail-summary "rmailsum" "\
diff --git a/lisp/mail/rmailedit.el b/lisp/mail/rmailedit.el
index e4e066bd642..004eb2e3247 100644
--- a/lisp/mail/rmailedit.el
+++ b/lisp/mail/rmailedit.el
@@ -167,10 +167,25 @@ This function runs the hooks `text-mode-hook' and `rmail-edit-mode-hook'.
(if (or rmail-old-mime-state
(not rmail-old-pruned))
(forward-line 1))
- (while (re-search-forward "^>*From " nil t)
- (beginning-of-line)
- (insert ">")
- (forward-line))
+ ;; When editing a non-MIME message, rmail-show-message-1 has unescaped
+ ;; ^>*From lines according to rmail-mbox-format. We are editing
+ ;; the message as it was displayed, and need to put the escapes when done.
+ ;; When editing a MIME message, we are editing the "raw" message.
+ ;; ^>*From lines have not been escaped, but we still need to ensure
+ ;; a "^From " line is escaped so as not to break later parsing (?).
+ ;; With ^>+From lines, we have no way of knowing whether the person
+ ;; doing the editing escaped them or not, so it seems best to leave
+ ;; them alone. (This all assumes you are using rmailmm rather than
+ ;; something else that behaves differently.)
+ (let ((fromline (if (or (eq 'mboxo rmail-mbox-format)
+ rmail-mime-decoded)
+ "^From "
+ "^>*From "))
+ case-fold-search)
+ (while (re-search-forward fromline nil t)
+ (beginning-of-line)
+ (insert ">")
+ (forward-line)))
;; Make sure buffer ends with a blank line so as not to run this
;; message together with the following one.
(goto-char (point-max))
@@ -201,6 +216,7 @@ This function runs the hooks `text-mode-hook' and `rmail-edit-mode-hook'.
(setq buffer-undo-list t)
(rmail-variables))
;; If text has really changed, mark message as edited.
+ ;; FIXME we should do the comparison before escaping From lines.
(unless (and (= (length old) (- (point-max) (point-min)))
(string= old (buffer-substring (point-min) (point-max))))
(setq old nil)
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 612ccbdfd9e..cacc6e19416 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -428,7 +428,7 @@ nil for FUNCTION means all messages."
;; This is how rmail makes the summary buffer reappear.
;; We do this here to make the window the proper size.
(rmail-select-summary nil)
- (set-buffer rmail-summary-buffer))
+ (set-buffer sumbuf))
(rmail-summary-goto-msg mesg t t)
(rmail-summary-construct-io-menu)
(message "Computing summary lines...done")))
diff --git a/lisp/mail/unrmail.el b/lisp/mail/unrmail.el
index bf7b9abe2c1..fd7e49a65d5 100644
--- a/lisp/mail/unrmail.el
+++ b/lisp/mail/unrmail.el
@@ -1,6 +1,6 @@
-;;; unrmail.el --- convert Rmail Babyl files to mailbox files
+;;; unrmail.el --- convert Rmail Babyl files to mbox files
-;; Copyright (C) 1992, 2001-2012 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 2001-2012 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
@@ -26,7 +26,7 @@
;;;###autoload
(defun batch-unrmail ()
- "Convert old-style Rmail Babyl files to system inbox format.
+ "Convert old-style Rmail Babyl files to mbox format.
Specify the input Rmail Babyl file names as command line arguments.
For each Rmail file, the corresponding output file name
is made by adding `.mail' at the end.
@@ -45,9 +45,26 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
(declare-function mail-mbox-from "mail-utils" ())
(defvar rmime-magic-string) ; in rmime.el, if you have it
+(defcustom unrmail-mbox-format 'mboxrd
+ "The mbox format that `unrmail' should produce.
+These formats separate messages using lines that start with \"From \".
+Therefore any lines in the message bodies that start with \"From \"
+must be quoted. The `mboxo' format just prepends a \">\" to such lines.
+This is not reversible, because given a line starting with \">From \" in
+an mboxo file, it is not possible to know whether the original had a \">\"
+or not. The `mxbord' format avoids this by also quoting \">From \" as
+\">>From \", and so on. For this reason, mboxrd is recommended.
+
+See also `rmail-mbox-format'."
+ :type '(choice (const mboxrd)
+ (const mboxro))
+ :version "24.4"
+ :group 'rmail-files)
+
;;;###autoload
(defun unrmail (file to-file)
- "Convert old-style Rmail Babyl file FILE to system inbox format file TO-FILE."
+ "Convert old-style Rmail Babyl file FILE to mbox format file TO-FILE.
+The variable `unrmail-mbox-format' controls which mbox format to use."
(interactive "fUnrmail (babyl file): \nFUnrmail into (new mailbox file): ")
(with-temp-buffer
;; Read in the old Rmail file with no decoding.
@@ -224,13 +241,15 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
(when keywords
(insert "X-RMAIL-KEYWORDS: " keywords "\n"))
(goto-char (point-min))
- ;; ``Quote'' "\nFrom " as "\n>From "
- ;; (note that this isn't really quoting, as there is no requirement
- ;; that "\n[>]+From " be quoted in the same transparent way.)
- (let ((case-fold-search nil))
- (while (search-forward "\nFrom " nil t)
- (forward-char -5)
- (insert ?>)))
+ ;; Convert From to >From, etc.
+ (let ((case-fold-search nil)
+ (fromline (if (eq 'mboxrd unrmail-mbox-format)
+ "^>*From "
+ "^From ")))
+ (while (re-search-forward fromline nil t)
+ (beginning-of-line)
+ (insert ?>)
+ (forward-line 1)))
(goto-char (point-max))
;; Add terminator blank line to message.
(insert "\n")
diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in
index 756d2b949fa..9f1b57e85b1 100644
--- a/lisp/makefile.w32-in
+++ b/lisp/makefile.w32-in
@@ -447,23 +447,24 @@ $(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC) $(lisp)/subdirs.el
$(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) $(MAKE) ./mh-e
# Update TRAMP internal autoloads. Maybe we could move tramp*.el into
-# its own subdirectory. OTOH, it does not hurt to keep them in
+# an own subdirectory. OTOH, it does not hurt to keep them in
# lisp/net.
-TRAMP_SRC = $(lisp)/net/tramp.el $(lisp)/net/tramp-cache.el \
- $(lisp)/net/tramp-cmds.el $(lisp)/net/tramp-compat.el \
- $(lisp)/net/tramp-ftp.el $(lisp)/net/tramp-gvfs.el \
- $(lisp)/net/tramp-gw.el $(lisp)/net/tramp-sh.el \
- $(lisp)/net/tramp-smb.el $(lisp)/net/tramp-uu.el \
- $(lisp)/net/trampver.el
-
-$(lisp)/net/tramp-loaddefs.el: $(TRAMP_SRC) $(lisp)/subdirs.el
+TRAMP_DIR = $(lisp)/net
+TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-adb.el \
+ $(TRAMP_DIR)/tramp-cache.el $(TRAMP_DIR)/tramp-cmds.el \
+ $(TRAMP_DIR)/tramp-compat.el $(TRAMP_DIR)/tramp-ftp.el \
+ $(TRAMP_DIR)/tramp-gvfs.el $(TRAMP_DIR)/tramp-gw.el \
+ $(TRAMP_DIR)/tramp-sh.el $(TRAMP_DIR)/tramp-smb.el \
+ $(TRAMP_DIR)/tramp-uu.el $(TRAMP_DIR)/trampver.el
+
+$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC) $(lisp)/subdirs.el
"$(EMACS)" $(EMACSOPT) \
-l autoload \
--eval $(ARGQUOTE)(setq generate-autoload-cookie $(DQUOTE);;;###tramp-autoload$(DQUOTE))$(ARGQUOTE) \
--eval $(ARGQUOTE)(setq find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
--eval $(ARGQUOTE)(setq make-backup-files nil)$(ARGQUOTE) \
-f w32-batch-update-autoloads \
- $(ARGQUOTE)$(lisp)/net/tramp-loaddefs.el$(ARGQUOTE) $(MAKE) ./net
+ $(ARGQUOTE)$(TRAMP_DIR)/tramp-loaddefs.el$(ARGQUOTE) $(MAKE) ./net
# Prepare a bootstrap in the lisp subdirectory.
#
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 3871d727b3a..25784d0ebcd 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -2663,7 +2663,7 @@ of citations entirely, choose \"None\"."
"X-Mail-from:" ; fastmail.fm
"X-MAIL-INFO:" ; NetZero
"X-Mailer_"
- "X-MailFlowPolicy:" ; Cicso ironport (http://www.ironport.com)
+ "X-MailFlowPolicy:" ; Cisco Email Security (formerly IronPort; http://www.ironport.com)
"X-Mailing-List:" ; Unknown mailing list managers
"X-MailingID:"
"X-Mailman-Approved-At:" ; Mailman mailing list manager
@@ -2743,7 +2743,7 @@ of citations entirely, choose \"None\"."
"X-Scanned-By:"
"X-Sender-ID:" ; Google+
"X-Sender:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
- "X-Sendergroup:" ; Cicso ironport (http://www.ironport.com)
+ "X-Sendergroup:" ; Cisco Email Security (formerly IronPort; http://www.ironport.com)
"X-Server-Date:"
"X-Server-Uuid:"
"X-Service-Code:"
diff --git a/lisp/minibuf-eldef.el b/lisp/minibuf-eldef.el
index 950c28b227f..c9e663eedba 100644
--- a/lisp/minibuf-eldef.el
+++ b/lisp/minibuf-eldef.el
@@ -152,15 +152,11 @@ been set up by `minibuf-eldef-setup-minibuffer'."
(and (= (point-max) minibuf-eldef-initial-buffer-length)
(string-equal (minibuffer-contents-no-properties)
minibuf-eldef-initial-input)))
- ;; swap state
+ ;; Swap state.
(setq minibuf-eldef-showing-default-in-prompt
(not minibuf-eldef-showing-default-in-prompt))
- (cond (minibuf-eldef-showing-default-in-prompt
- (overlay-put minibuf-eldef-overlay 'invisible nil)
- (overlay-put minibuf-eldef-overlay 'intangible nil))
- (t
- (overlay-put minibuf-eldef-overlay 'invisible t)
- (overlay-put minibuf-eldef-overlay 'intangible t)))))
+ (overlay-put minibuf-eldef-overlay 'invisible
+ (not minibuf-eldef-showing-default-in-prompt))))
;;;###autoload
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 6e704fad807..7fe50e930ce 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1106,6 +1106,13 @@ scroll the window of possible completions."
(sort-fun (completion-metadata-get all-md 'cycle-sort-function)))
(when last
(setcdr last nil)
+
+ ;; Delete duplicates: do it after setting last's cdr to nil (so
+ ;; it's a proper list), and be careful to reset `last' since it
+ ;; may be a different cons-cell.
+ (setq all (delete-dups all))
+ (setq last (last all))
+
(setq all (if sort-fun (funcall sort-fun all)
;; Prefer shorter completions, by default.
(sort all (lambda (c1 c2) (< (length c1) (length c2))))))
@@ -1120,6 +1127,15 @@ scroll the window of possible completions."
;; all possibilities.
(completion--cache-all-sorted-completions (nconc all base-size))))))
+(defun minibuffer-force-complete-and-exit ()
+ "Complete the minibuffer with first of the matches and exit."
+ (interactive)
+ (minibuffer-force-complete)
+ (minibuffer--complete-and-exit
+ ;; If the previous completion completed to an element which fails
+ ;; test-completion, then we shouldn't exit, but that should be rare.
+ (lambda () (minibuffer-message "Incomplete"))))
+
(defun minibuffer-force-complete ()
"Complete the minibuffer to an exact match.
Repeated uses step through the possible completions."
@@ -1192,6 +1208,22 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
`minibuffer-confirm-exit-commands', and accept the input
otherwise."
(interactive)
+ (minibuffer--complete-and-exit
+ (lambda ()
+ (pcase (condition-case nil
+ (completion--do-completion nil 'expect-exact)
+ (error 1))
+ ((or #b001 #b011) (exit-minibuffer))
+ (#b111 (if (not minibuffer-completion-confirm)
+ (exit-minibuffer)
+ (minibuffer-message "Confirm")
+ nil))
+ (_ nil)))))
+
+(defun minibuffer--complete-and-exit (completion-function)
+ "Exit from `require-match' minibuffer.
+COMPLETION-FUNCTION is called if the current buffer's content does not
+appear to be a match."
(let ((beg (field-beginning))
(end (field-end)))
(cond
@@ -1239,15 +1271,7 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
(t
;; Call do-completion, but ignore errors.
- (pcase (condition-case nil
- (completion--do-completion nil 'expect-exact)
- (error 1))
- ((or #b001 #b011) (exit-minibuffer))
- (#b111 (if (not minibuffer-completion-confirm)
- (exit-minibuffer)
- (minibuffer-message "Confirm")
- nil))
- (_ nil))))))
+ (funcall completion-function)))))
(defun completion--try-word-completion (string table predicate point md)
(let ((comp (completion-try-completion string table predicate point md)))
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 61d70404bd6..60a3d390889 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -425,7 +425,7 @@ must be one of the symbols `header', `mode', or `vertical'."
(frame-parameters frame)))
'right)))
(draggable t)
- event position growth dragged)
+ finished event position growth dragged)
(cond
((eq line 'header)
;; Check whether header-line can be dragged at all.
@@ -457,7 +457,7 @@ must be one of the symbols `header', `mode', or `vertical'."
;; Start tracking.
(track-mouse
;; Loop reading events and sampling the position of the mouse.
- (while draggable
+ (while (not finished)
(setq event (read-event))
(setq position (mouse-position))
;; Do nothing if
@@ -472,7 +472,7 @@ must be one of the symbols `header', `mode', or `vertical'."
;; - there is a keyboard event or some other unknown event.
(cond
((not (consp event))
- (setq draggable nil))
+ (setq finished t))
((memq (car event) '(switch-frame select-window))
nil)
((not (memq (car event) '(mouse-movement scroll-bar-movement)))
@@ -480,15 +480,15 @@ must be one of the symbols `header', `mode', or `vertical'."
;; Do not unread a drag-mouse-1 event to avoid selecting
;; some other window. For vertical line dragging do not
;; unread mouse-1 events either (but only if we dragged at
- ;; least once to allow mouse-1 clicks get through.
+ ;; least once to allow mouse-1 clicks get through).
(unless (and dragged
(if (eq line 'vertical)
(memq (car event) '(drag-mouse-1 mouse-1))
(eq (car event) 'drag-mouse-1)))
(push event unread-command-events)))
- (setq draggable nil))
- ((or (not (eq (car position) frame))
- (null (car (cdr position))))
+ (setq finished t))
+ ((not (and (eq (car position) frame)
+ (cadr position)))
nil)
((eq line 'vertical)
;; Drag vertical divider.
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index e9828c5f813..fa5bc4a9822 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -406,7 +406,8 @@ will be killed."
"The channel or user associated with this buffer.")
(defvar rcirc-urls nil
- "List of urls seen in the current buffer.")
+ "List of URLs seen in the current buffer and the position in
+the buffer where the URL starts.")
(put 'rcirc-urls 'permanent-local t)
(defvar rcirc-timeout-seconds 600
@@ -2392,12 +2393,23 @@ keywords when no KEYWORD is given."
"\\)")
"Regexp matching URLs. Set to nil to disable URL features in rcirc.")
+(defun rcirc-condition-filter (condp lst)
+ "Given a condition and a list, returns the list with elements
+that do not satisfy the condition removed."
+ (delq nil (mapcar (lambda (x) (and (funcall condp x) x)) lst)))
+
(defun rcirc-browse-url (&optional arg)
- "Prompt for URL to browse based on URLs in buffer."
+ "Prompt for URL to browse based on URLs in buffer before point.
+
+If ARG is given, opens the URL in a new browser window."
(interactive "P")
- (let ((completions (mapcar (lambda (x) (cons x nil)) rcirc-urls))
- (initial-input (car rcirc-urls))
- (history (cdr rcirc-urls)))
+ (let* ((point (point))
+ (filtered (rcirc-condition-filter
+ (lambda (x) (>= point (cdr x)))
+ rcirc-urls))
+ (completions (mapcar (lambda (x) (car x)) filtered))
+ (initial-input (caar filtered))
+ (history (mapcar (lambda (x) (car x)) (cdr filtered))))
(browse-url (completing-read "rcirc browse-url: "
completions nil nil initial-input 'history)
arg)))
@@ -2441,17 +2453,19 @@ keywords when no KEYWORD is given."
(defun rcirc-markup-urls (sender response)
(while (and rcirc-url-regexp ;; nil means disable URL catching
(re-search-forward rcirc-url-regexp nil t))
- (let ((start (match-beginning 0))
- (end (match-end 0))
- (url (match-string-no-properties 0)))
+ (let* ((start (match-beginning 0))
+ (end (match-end 0))
+ (url (match-string-no-properties 0))
+ (link-text (buffer-substring-no-properties start end)))
(make-button start end
'face 'rcirc-url
'follow-link t
'rcirc-url url
'action (lambda (button)
(browse-url (button-get button 'rcirc-url))))
- ;; record the url
- (push url rcirc-urls))))
+ ;; record the url if it is not already the latest stored url
+ (when (not (string= link-text (caar rcirc-urls)))
+ (push (cons link-text start) rcirc-urls)))))
(defun rcirc-markup-keywords (sender response)
(when (and (string= response "PRIVMSG")
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
new file mode 100644
index 00000000000..fea4cb35ea3
--- /dev/null
+++ b/lisp/net/tramp-adb.el
@@ -0,0 +1,981 @@
+;;; tramp-adb.el --- Functions for calling Android Debug Bridge from Tramp
+
+;; Copyright (C) 2011-2012 Free Software Foundation, Inc.
+
+;; Author: Juergen Hoetzel <juergen@archlinux.org>
+;; Keywords: comm, processes
+;; Package: tramp
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; The Android Debug Bridge must be installed on your local machine.
+;; Add the following form into your .emacs:
+;;
+;; (setq tramp-adb-sdk-dir "/path/to/android/sdk")
+;;
+;; Due to security it is not possible to access non-root devices.
+
+;;; Code:
+
+(require 'tramp)
+
+(defvar dired-move-to-filename-regexp)
+
+(defcustom tramp-adb-sdk-dir "~/Android/sdk"
+ "Set to the directory containing the Android SDK."
+ :type 'string
+ :version "24.4"
+ :group 'tramp)
+
+;;;###tramp-autoload
+(defconst tramp-adb-method "adb"
+ "*When this method name is used, forward all calls to Android Debug Bridge.")
+
+(defcustom tramp-adb-prompt "^\\(?:[[:alnum:]]*@[[:alnum:]]*[^#\\$]*\\)?[#\\$][[:space:]]"
+ "Regexp used as prompt in almquist shell."
+ :type 'string
+ :version "24.4"
+ :group 'tramp)
+
+(defconst tramp-adb-ls-date-regexp "[[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]][0-9][0-9]:[0-9][0-9][[:space:]]")
+
+;;;###tramp-autoload
+(add-to-list 'tramp-methods `(,tramp-adb-method))
+
+;;;###tramp-autoload
+(eval-after-load 'tramp
+ '(tramp-set-completion-function
+ tramp-adb-method '((tramp-adb-parse-device-names ""))))
+
+;;;###tramp-autoload
+(add-to-list 'tramp-foreign-file-name-handler-alist
+ (cons 'tramp-adb-file-name-p 'tramp-adb-file-name-handler))
+
+(defconst tramp-adb-file-name-handler-alist
+ '((directory-file-name . tramp-handle-directory-file-name)
+ (dired-uncache . tramp-handle-dired-uncache)
+ (file-name-as-directory . tramp-handle-file-name-as-directory)
+ (file-name-completion . tramp-handle-file-name-completion)
+ (file-name-all-completions . tramp-adb-handle-file-name-all-completions)
+ (file-attributes . tramp-adb-handle-file-attributes)
+ (file-name-directory . tramp-handle-file-name-directory)
+ (file-name-nondirectory . tramp-handle-file-name-nondirectory)
+ (file-truename . tramp-adb-handle-file-truename)
+ (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
+ (file-name-as-directory . tramp-handle-file-name-as-directory)
+ (file-regular-p . tramp-handle-file-regular-p)
+ (file-remote-p . tramp-handle-file-remote-p)
+ (file-directory-p . tramp-adb-handle-file-directory-p)
+ (file-symlink-p . tramp-handle-file-symlink-p)
+ ;; FIXME: This is too sloppy.
+ (file-executable-p . file-exists-p)
+ (file-exists-p . tramp-adb-handle-file-exists-p)
+ (file-readable-p . tramp-handle-file-exists-p)
+ (file-writable-p . tramp-adb-handle-file-writable-p)
+ (file-local-copy . tramp-adb-handle-file-local-copy)
+ (file-modes . tramp-handle-file-modes)
+ (expand-file-name . tramp-adb-handle-expand-file-name)
+ (find-backup-file-name . tramp-handle-find-backup-file-name)
+ (directory-files . tramp-handle-directory-files)
+ (make-directory . tramp-adb-handle-make-directory)
+ (delete-directory . tramp-adb-handle-delete-directory)
+ (delete-file . tramp-adb-handle-delete-file)
+ (load . tramp-handle-load)
+ (insert-directory . tramp-adb-handle-insert-directory)
+ (insert-file-contents . tramp-handle-insert-file-contents)
+ (substitute-in-file-name . tramp-handle-substitute-in-file-name)
+ (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
+ (vc-registered . ignore) ;no vc control files on Android devices
+ (write-region . tramp-adb-handle-write-region)
+ (set-file-modes . tramp-adb-handle-set-file-modes)
+ (set-file-times . ignore)
+ (copy-file . tramp-adb-handle-copy-file)
+ (rename-file . tramp-adb-handle-rename-file)
+ (process-file . tramp-adb-handle-process-file)
+ (shell-command . tramp-adb-handle-shell-command)
+ (start-file-process . tramp-adb-handle-start-file-process))
+ "Alist of handler functions for Tramp ADB method.")
+
+;;;###tramp-autoload
+(defun tramp-adb-file-name-p (filename)
+ "Check if it's a filename for ADB."
+ (let ((v (tramp-dissect-file-name filename)))
+ (string= (tramp-file-name-method v) tramp-adb-method)))
+
+;;;###tramp-autoload
+(defun tramp-adb-file-name-handler (operation &rest args)
+ "Invoke the ADB handler for OPERATION.
+First arg specifies the OPERATION, second arg is a list of arguments to
+pass to the OPERATION."
+ (let ((fn (assoc operation tramp-adb-file-name-handler-alist))
+ ;; `tramp-default-host's default value is (system-name). Not
+ ;; useful for us.
+ (tramp-default-host
+ (unless (equal (eval (car (get 'tramp-default-host 'standard-value)))
+ tramp-default-host)
+ tramp-default-host)))
+ (if fn
+ (save-match-data (apply (cdr fn) args))
+ (tramp-run-real-handler operation args))))
+
+;; This cannot be a constant, because `tramp-adb-sdk-dir' is customizable.
+(defun tramp-adb-program ()
+ "The Android Debug Bridge."
+ (expand-file-name "platform-tools/adb" tramp-adb-sdk-dir))
+
+;;;###tramp-autoload
+(defun tramp-adb-parse-device-names (ignore)
+ "Return a list of (nil host) tuples allowed to access."
+ (with-temp-buffer
+ (when (zerop (call-process (tramp-adb-program) nil t nil "devices"))
+ (let (result)
+ (goto-char (point-min))
+ (while (search-forward-regexp "^\\(\\S-+\\)[[:space:]]+device$" nil t)
+ (add-to-list 'result (list nil (match-string 1))))
+ result))))
+
+(defun tramp-adb-handle-expand-file-name (name &optional dir)
+ "Like `expand-file-name' for Tramp files."
+ ;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
+ (setq dir (or dir default-directory "/"))
+ ;; Unless NAME is absolute, concat DIR and NAME.
+ (unless (file-name-absolute-p name)
+ (setq name (concat (file-name-as-directory dir) name)))
+ ;; If NAME is not a Tramp file, run the real handler.
+ (if (not (tramp-tramp-file-p name))
+ (tramp-run-real-handler 'expand-file-name (list name nil))
+ ;; Dissect NAME.
+ (with-parsed-tramp-file-name name nil
+ (unless (tramp-run-real-handler 'file-name-absolute-p (list localname))
+ (setq localname (concat "/" localname)))
+ ;; Do normal `expand-file-name' (this does "/./" and "/../").
+ ;; We bind `directory-sep-char' here for XEmacs on Windows,
+ ;; which would otherwise use backslash. `default-directory' is
+ ;; bound, because on Windows there would be problems with UNC
+ ;; shares or Cygwin mounts.
+ (let ((directory-sep-char ?/)
+ (default-directory (tramp-compat-temporary-file-directory)))
+ (tramp-make-tramp-file-name
+ method user host
+ (tramp-drop-volume-letter
+ (tramp-run-real-handler
+ 'expand-file-name (list localname))))))))
+
+(defun tramp-adb-handle-file-directory-p (filename)
+ "Like `file-directory-p' for Tramp files."
+ (car (file-attributes (file-truename filename))))
+
+;; This is derived from `tramp-sh-handle-file-truename'. Maybe the
+;; code could be shared?
+(defun tramp-adb-handle-file-truename (filename &optional counter prev-dirs)
+ "Like `file-truename' for Tramp files."
+ (with-parsed-tramp-file-name (expand-file-name filename) nil
+ (with-tramp-file-property v localname "file-truename"
+ (let ((result nil)) ; result steps in reverse order
+ (tramp-message v 4 "Finding true name for `%s'" filename)
+ (let* ((directory-sep-char ?/)
+ (steps (tramp-compat-split-string localname "/"))
+ (localnamedir (tramp-run-real-handler
+ 'file-name-as-directory (list localname)))
+ (is-dir (string= localname localnamedir))
+ (thisstep nil)
+ (numchase 0)
+ ;; Don't make the following value larger than
+ ;; necessary. People expect an error message in a
+ ;; timely fashion when something is wrong; otherwise
+ ;; they might think that Emacs is hung. Of course,
+ ;; correctness has to come first.
+ (numchase-limit 20)
+ symlink-target)
+ (while (and steps (< numchase numchase-limit))
+ (setq thisstep (pop steps))
+ (tramp-message
+ v 5 "Check %s"
+ (mapconcat 'identity
+ (append '("") (reverse result) (list thisstep))
+ "/"))
+ (setq symlink-target
+ (nth 0 (file-attributes
+ (tramp-make-tramp-file-name
+ method user host
+ (mapconcat 'identity
+ (append '("")
+ (reverse result)
+ (list thisstep))
+ "/")))))
+ (cond ((string= "." thisstep)
+ (tramp-message v 5 "Ignoring step `.'"))
+ ((string= ".." thisstep)
+ (tramp-message v 5 "Processing step `..'")
+ (pop result))
+ ((stringp symlink-target)
+ ;; It's a symlink, follow it.
+ (tramp-message v 5 "Follow symlink to %s" symlink-target)
+ (setq numchase (1+ numchase))
+ (when (file-name-absolute-p symlink-target)
+ (setq result nil))
+ ;; If the symlink was absolute, we'll get a string
+ ;; like "/user@host:/some/target"; extract the
+ ;; "/some/target" part from it.
+ (when (tramp-tramp-file-p symlink-target)
+ (unless (tramp-equal-remote filename symlink-target)
+ (tramp-error
+ v 'file-error
+ "Symlink target `%s' on wrong host" symlink-target))
+ (setq symlink-target localname))
+ (setq steps
+ (append (tramp-compat-split-string
+ symlink-target "/")
+ steps)))
+ (t
+ ;; It's a file.
+ (setq result (cons thisstep result)))))
+ (when (>= numchase numchase-limit)
+ (tramp-error
+ v 'file-error
+ "Maximum number (%d) of symlinks exceeded" numchase-limit))
+ (setq result (reverse result))
+ ;; Combine list to form string.
+ (setq result
+ (if result
+ (mapconcat 'identity (cons "" result) "/")
+ "/"))
+ (when (and is-dir (or (string= "" result)
+ (not (string= (substring result -1) "/"))))
+ (setq result (concat result "/"))))
+
+ (tramp-message v 4 "True name of `%s' is `%s'" filename result)
+ (tramp-make-tramp-file-name method user host result)))))
+
+(defun tramp-adb-handle-file-attributes (filename &optional id-format)
+ "Like `file-attributes' for Tramp files."
+ (unless id-format (setq id-format 'integer))
+ (ignore-errors
+ (with-parsed-tramp-file-name filename nil
+ (with-tramp-file-property v localname (format "file-attributes-%s" id-format)
+ (tramp-adb-barf-unless-okay
+ v (format "ls -d -l %s" (tramp-shell-quote-argument localname)) "")
+ (with-current-buffer (tramp-get-buffer v)
+ (tramp-adb-sh-fix-ls-output)
+ (let* ((columns (split-string (buffer-string)))
+ (mod-string (nth 0 columns))
+ (is-dir (eq ?d (aref mod-string 0)))
+ (is-symlink (eq ?l (aref mod-string 0)))
+ (symlink-target (and is-symlink (cadr (split-string (buffer-string) "\\( -> \\|\n\\)"))))
+ (uid (nth 1 columns))
+ (gid (nth 2 columns))
+ (date (format "%s %s" (nth 4 columns) (nth 5 columns)))
+ (size (string-to-number (nth 3 columns))))
+ (list
+ (or is-dir symlink-target)
+ 1 ;link-count
+ ;; no way to handle numeric ids in Androids ash
+ (if (eq id-format 'integer) 0 uid)
+ (if (eq id-format 'integer) 0 gid)
+ '(0 0) ; atime
+ (date-to-time date) ; mtime
+ '(0 0) ; ctime
+ size
+ mod-string
+ ;; fake
+ t 1 1)))))))
+
+(defun tramp-adb--gnu-switches-to-ash
+ (switches)
+ "Almquist shell can't handle multiple arguments.
+Convert (\"-al\") to (\"-a\" \"-l\"). Remove arguments like \"--dired\"."
+ (split-string
+ (apply 'concat
+ (mapcar (lambda (s)
+ (replace-regexp-in-string
+ "\\(.\\)" " -\\1"
+ (replace-regexp-in-string "^-" "" s)))
+ ;; FIXME: Warning about removed switches (long and non-dash).
+ (delq nil
+ (mapcar
+ (lambda (s) (and (not (string-match "\\(^--\\|^[^-]\\)" s)) s))
+ switches))))))
+
+(defun tramp-adb-handle-insert-directory
+ (filename switches &optional wildcard full-directory-p)
+ "Like `insert-directory' for Tramp files."
+ (when (stringp switches)
+ (setq switches (tramp-adb--gnu-switches-to-ash (split-string switches))))
+ (with-parsed-tramp-file-name (file-truename filename) nil
+ (with-current-buffer (tramp-get-buffer v)
+ (let ((name (tramp-shell-quote-argument (directory-file-name localname)))
+ (switch-d (member "-d" switches))
+ (switch-t (member "-t" switches))
+ (switches (mapconcat 'identity (remove "-t" switches) " ")))
+ (tramp-adb-barf-unless-okay
+ v (format "ls %s %s" switches name)
+ "Cannot insert directory listing: %s" filename)
+ (unless switch-d
+ ;; We insert also filename/. and filename/.., because "ls" doesn't.
+ (narrow-to-region (point) (point))
+ (ignore-errors
+ (tramp-adb-barf-unless-okay
+ v (format "ls -d %s %s %s"
+ switches
+ (concat (file-name-as-directory name) ".")
+ (concat (file-name-as-directory name) ".."))
+ "Cannot insert directory listing: %s" filename))
+ (widen))
+ (tramp-adb-sh-fix-ls-output switch-t)))
+ (insert-buffer-substring (tramp-get-buffer v))))
+
+(defun tramp-adb-sh-fix-ls-output (&optional sort-by-time)
+ "Androids ls command doesn't insert size column for directories: Emacs dired can't find files. Insert dummy 0 in empty size columns."
+ (save-excursion
+ ;; Insert missing size.
+ (goto-char (point-min))
+ (while (search-forward-regexp "[[:space:]]\\([[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]]\\)" nil t)
+ (replace-match "0\\1" "\\1" nil)
+ ;; Insert missing "/".
+ (when (looking-at "[0-9][0-9]:[0-9][0-9][[:space:]]+$")
+ (end-of-line)
+ (insert "/")))
+ ;; Sort entries.
+ (let* ((lines (split-string (buffer-string) "\n" t))
+ (sorted-lines
+ (sort
+ lines
+ (if sort-by-time
+ 'tramp-adb-ls-output-time-less-p
+ 'tramp-adb-ls-output-name-less-p))))
+ (delete-region (point-min) (point-max))
+ (insert " " (mapconcat 'identity sorted-lines "\n ")))
+ ;; Add final newline.
+ (goto-char (point-max))
+ (unless (= (point) (line-beginning-position))
+ (insert "\n"))))
+
+
+(defun tramp-adb-ls-output-time-less-p (a b)
+ "Sort \"ls\" output by time, descending."
+ (let (time-a time-b)
+ (string-match tramp-adb-ls-date-regexp a)
+ (setq time-a (apply 'encode-time (parse-time-string (match-string 0 a))))
+ (string-match tramp-adb-ls-date-regexp b)
+ (setq time-b (apply 'encode-time (parse-time-string (match-string 0 b))))
+ (time-less-p time-b time-a)))
+
+(defun tramp-adb-ls-output-name-less-p (a b)
+ "Sort \"ls\" output by name, ascending."
+ (let (posa posb)
+ (string-match dired-move-to-filename-regexp a)
+ (setq posa (match-end 0))
+ (string-match dired-move-to-filename-regexp b)
+ (setq posb (match-end 0))
+ (string-lessp (substring a posa) (substring b posb))))
+
+(defun tramp-adb-handle-make-directory (dir &optional parents)
+ "Like `make-directory' for Tramp files."
+ (setq dir (expand-file-name dir))
+ (with-parsed-tramp-file-name dir nil
+ (when parents
+ (let ((par (expand-file-name ".." dir)))
+ (unless (file-directory-p par)
+ (make-directory par parents))))
+ (tramp-adb-barf-unless-okay
+ v (format "mkdir %s" (tramp-shell-quote-argument localname))
+ "Couldn't make directory %s" dir)
+ (tramp-flush-directory-property v (file-name-directory localname))))
+
+(defun tramp-adb-handle-delete-directory (directory &optional recursive)
+ "Like `delete-directory' for Tramp files."
+ (setq directory (expand-file-name directory))
+ (with-parsed-tramp-file-name directory nil
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-directory-property v localname)
+ (tramp-adb-barf-unless-okay
+ v (format "%s %s"
+ (if recursive "rm -r" "rmdir")
+ (tramp-shell-quote-argument localname))
+ "Couldn't delete %s" directory)))
+
+(defun tramp-adb-handle-delete-file (filename &optional trash)
+ "Like `delete-file' for Tramp files."
+ (setq filename (expand-file-name filename))
+ (with-parsed-tramp-file-name filename nil
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-file-property v localname)
+ (tramp-adb-barf-unless-okay
+ v (format "rm %s" (tramp-shell-quote-argument localname))
+ "Couldn't delete %s" filename)))
+
+(defun tramp-adb-handle-file-name-all-completions (filename directory)
+ "Like `file-name-all-completions' for Tramp files."
+ (all-completions
+ filename
+ (with-parsed-tramp-file-name directory nil
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (save-match-data
+ (tramp-adb-send-command
+ v (format "ls %s" (tramp-shell-quote-argument localname)))
+ (mapcar
+ (lambda (f)
+ (if (file-directory-p f)
+ (file-name-as-directory f)
+ f))
+ (with-current-buffer (tramp-get-buffer v)
+ (delq
+ nil
+ (mapcar
+ (lambda (l) (and (not (string-match "^[[:space:]]*$" l)) l))
+ (split-string (buffer-string) "\n"))))))))))
+
+(defun tramp-adb-handle-file-local-copy (filename)
+ "Like `file-local-copy' for Tramp files."
+ (with-parsed-tramp-file-name filename nil
+ (unless (file-exists-p (file-truename filename))
+ (tramp-error
+ v 'file-error
+ "Cannot make local copy of non-existing file `%s'" filename))
+ (let ((tmpfile (tramp-compat-make-temp-file filename)))
+ (with-tramp-progress-reporter
+ v 3 (format "Fetching %s to tmp file %s" filename tmpfile)
+ (when (tramp-adb-execute-adb-command v "pull" localname tmpfile)
+ (delete-file tmpfile)
+ (tramp-error
+ v 'file-error "Cannot make local copy of file `%s'" filename))
+ (set-file-modes tmpfile (file-modes filename)))
+ tmpfile)))
+
+(defun tramp-adb-handle-file-writable-p (filename)
+ "Like `tramp-sh-handle-file-writable-p'.
+But handle the case, if the \"test\" command is not available."
+ (with-parsed-tramp-file-name filename nil
+ (with-tramp-file-property v localname "file-writable-p"
+ (if (tramp-adb-find-test-command v)
+ (if (file-exists-p filename)
+ (zerop
+ (tramp-adb-command-exit-status
+ v (format "test -w %s" (tramp-shell-quote-argument localname))))
+ (and
+ (file-directory-p (file-name-directory filename))
+ (file-writable-p (file-name-directory filename))))
+
+ ;; Missing "test" command on Android < 4.
+ (let ((rw-path "/data/data"))
+ (tramp-message
+ v 5
+ "Not implemented yet (assuming \"/data/data\" is writable): %s"
+ localname)
+ (and (>= (length localname) (length rw-path))
+ (string= (substring localname 0 (length rw-path))
+ rw-path)))))))
+
+(defun tramp-adb-handle-write-region
+ (start end filename &optional append visit lockname confirm)
+ "Like `write-region' for Tramp files."
+ (setq filename (expand-file-name filename))
+ (with-parsed-tramp-file-name filename nil
+ (when append
+ (tramp-error
+ v 'file-error "Cannot append to file using Tramp (`%s')" filename))
+ (when (and confirm (file-exists-p filename))
+ (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
+ filename))
+ (tramp-error v 'file-error "File not overwritten")))
+ ;; We must also flush the cache of the directory, because
+ ;; `file-attributes' reads the values from there.
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-file-property v localname)
+ (let* ((curbuf (current-buffer))
+ (tmpfile (tramp-compat-make-temp-file filename)))
+ (tramp-run-real-handler
+ 'write-region
+ (list start end tmpfile append 'no-message lockname confirm))
+ (with-tramp-progress-reporter
+ v 3 (format "Moving tmp file %s to %s" tmpfile filename)
+ (unwind-protect
+ (when (tramp-adb-execute-adb-command v "push" tmpfile localname)
+ (tramp-error v 'file-error "Cannot write: `%s' filename"))
+ (delete-file tmpfile)))
+
+ (unless (equal curbuf (current-buffer))
+ (tramp-error
+ v 'file-error
+ "Buffer has changed from `%s' to `%s'" curbuf (current-buffer))))))
+
+(defun tramp-adb-handle-set-file-modes (filename mode)
+ "Like `set-file-modes' for Tramp files."
+ (with-parsed-tramp-file-name filename nil
+ (tramp-flush-file-property v localname)
+ (tramp-adb-barf-unless-okay
+ v (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) localname)
+ "Error while changing file's mode %s" filename)))
+
+(defun tramp-adb-handle-copy-file
+ (filename newname &optional ok-if-already-exists keep-date
+ preserve-uid-gid preserve-selinux-context)
+ "Like `copy-file' for Tramp files.
+PRESERVE-UID-GID and PRESERVE-SELINUX-CONTEXT are completely ignored."
+ (setq filename (expand-file-name filename)
+ newname (expand-file-name newname))
+
+ (if (file-directory-p filename)
+ (copy-directory filename newname keep-date t)
+ (with-tramp-progress-reporter
+ (tramp-dissect-file-name (if (file-remote-p filename) filename newname))
+ 0 (format "Copying %s to %s" filename newname)
+
+ (let ((tmpfile (file-local-copy filename)))
+
+ (if tmpfile
+ ;; Remote filename.
+ (condition-case err
+ (rename-file tmpfile newname ok-if-already-exists)
+ ((error quit)
+ (delete-file tmpfile)
+ (signal (car err) (cdr err))))
+
+ ;; Remote newname.
+ (when (file-directory-p newname)
+ (setq newname
+ (expand-file-name (file-name-nondirectory filename) newname)))
+
+ (with-parsed-tramp-file-name newname nil
+ (when (and (not ok-if-already-exists)
+ (file-exists-p newname))
+ (tramp-error v 'file-already-exists newname))
+
+ ;; We must also flush the cache of the directory, because
+ ;; `file-attributes' reads the values from there.
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-file-property v localname)
+ (when (tramp-adb-execute-adb-command v "push" filename localname)
+ (tramp-error
+ v 'file-error "Cannot copy `%s' `%s'" filename newname))))))
+
+ ;; KEEP-DATE handling.
+ (when keep-date
+ (set-file-times newname (nth 5 (file-attributes filename))))))
+
+(defun tramp-adb-handle-rename-file
+ (filename newname &optional ok-if-already-exists)
+ "Like `rename-file' for Tramp files."
+ (setq filename (expand-file-name filename)
+ newname (expand-file-name newname))
+
+ (with-parsed-tramp-file-name
+ (if (file-remote-p filename) filename newname) nil
+ (with-tramp-progress-reporter
+ v 0 (format "Renaming %s to %s" newname filename)
+
+ (if (and (tramp-equal-remote filename newname)
+ (not (file-directory-p filename)))
+ (progn
+ (when (and (not ok-if-already-exists)
+ (file-exists-p newname))
+ (tramp-error v 'file-already-exists newname))
+ ;; We must also flush the cache of the directory, because
+ ;; `file-attributes' reads the values from there.
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-file-property v localname)
+ ;; Short track.
+ (tramp-adb-barf-unless-okay
+ v (format "mv %s %s" (file-remote-p filename 'localname) localname)
+ "Error renaming %s to %s" filename newname))
+
+ ;; Rename by copy.
+ (copy-file filename newname ok-if-already-exists t t)
+ (delete-file filename)))))
+
+(defun tramp-adb-handle-process-file
+ (program &optional infile destination display &rest args)
+ "Like `process-file' for Tramp files."
+ ;; The implementation is not complete yet.
+ (when (and (numberp destination) (zerop destination))
+ (error "Implementation does not handle immediate return"))
+
+ (with-parsed-tramp-file-name default-directory nil
+ (let (command input tmpinput stderr tmpstderr outbuf ret)
+ ;; Compute command.
+ (setq command (mapconcat 'tramp-shell-quote-argument
+ (cons program args) " "))
+ ;; Determine input.
+ (if (null infile)
+ (setq input "/dev/null")
+ (setq infile (expand-file-name infile))
+ (if (tramp-equal-remote default-directory infile)
+ ;; INFILE is on the same remote host.
+ (setq input (with-parsed-tramp-file-name infile nil localname))
+ ;; INFILE must be copied to remote host.
+ (setq input (tramp-make-tramp-temp-file v)
+ tmpinput (tramp-make-tramp-file-name method user host input))
+ (copy-file infile tmpinput t)))
+ (when input (setq command (format "%s <%s" command input)))
+
+ ;; Determine output.
+ (cond
+ ;; Just a buffer.
+ ((bufferp destination)
+ (setq outbuf destination))
+ ;; A buffer name.
+ ((stringp destination)
+ (setq outbuf (get-buffer-create destination)))
+ ;; (REAL-DESTINATION ERROR-DESTINATION)
+ ((consp destination)
+ ;; output.
+ (cond
+ ((bufferp (car destination))
+ (setq outbuf (car destination)))
+ ((stringp (car destination))
+ (setq outbuf (get-buffer-create (car destination))))
+ ((car destination)
+ (setq outbuf (current-buffer))))
+ ;; stderr.
+ (cond
+ ((stringp (cadr destination))
+ (setcar (cdr destination) (expand-file-name (cadr destination)))
+ (if (tramp-equal-remote default-directory (cadr destination))
+ ;; stderr is on the same remote host.
+ (setq stderr (with-parsed-tramp-file-name
+ (cadr destination) nil localname))
+ ;; stderr must be copied to remote host. The temporary
+ ;; file must be deleted after execution.
+ (setq stderr (tramp-make-tramp-temp-file v)
+ tmpstderr (tramp-make-tramp-file-name
+ method user host stderr))))
+ ;; stderr to be discarded.
+ ((null (cadr destination))
+ (setq stderr "/dev/null"))))
+ ;; 't
+ (destination
+ (setq outbuf (current-buffer))))
+ (when stderr (setq command (format "%s 2>%s" command stderr)))
+
+ ;; Send the command. It might not return in time, so we protect
+ ;; it. Call it in a subshell, in order to preserve working
+ ;; directory.
+ (condition-case nil
+ (progn
+ (setq ret 0
+ ret
+ (tramp-adb-barf-unless-okay
+ v (format "(cd %s; %s)"
+ (tramp-shell-quote-argument localname)
+ command)
+ ""))
+ ;; We should show the output anyway.
+ (when outbuf
+ (with-current-buffer outbuf
+ (insert-buffer-substring (tramp-get-connection-buffer v)))
+ (when display (display-buffer outbuf))))
+ ;; When the user did interrupt, we should do it also. We use
+ ;; return code -1 as marker.
+ (quit
+ (kill-buffer (tramp-get-connection-buffer v))
+ (setq ret -1))
+ ;; Handle errors.
+ (error
+ (kill-buffer (tramp-get-connection-buffer v))
+ (setq ret 1)))
+
+ ;; Provide error file.
+ (when tmpstderr (rename-file tmpstderr (cadr destination) t))
+
+ ;; Cleanup. We remove all file cache values for the connection,
+ ;; because the remote process could have changed them.
+ (when tmpinput (delete-file tmpinput))
+
+ ;; `process-file-side-effects' has been introduced with GNU
+ ;; Emacs 23.2. If set to `nil', no remote file will be changed
+ ;; by `program'. If it doesn't exist, we assume its default
+ ;; value 't'.
+ (unless (and (boundp 'process-file-side-effects)
+ (not (symbol-value 'process-file-side-effects)))
+ (tramp-flush-directory-property v ""))
+
+ ;; Return exit status.
+ (if (equal ret -1)
+ (keyboard-quit)
+ ret))))
+
+(defun tramp-adb-handle-shell-command
+ (command &optional output-buffer error-buffer)
+ "Like `shell-command' for Tramp files."
+ (let* ((asynchronous (string-match "[ \t]*&[ \t]*\\'" command))
+ ;; We cannot use `shell-file-name' and `shell-command-switch',
+ ;; they are variables of the local host.
+ (args (list "sh" "-c" (substring command 0 asynchronous)))
+ current-buffer-p
+ (output-buffer
+ (cond
+ ((bufferp output-buffer) output-buffer)
+ ((stringp output-buffer) (get-buffer-create output-buffer))
+ (output-buffer
+ (setq current-buffer-p t)
+ (current-buffer))
+ (t (get-buffer-create
+ (if asynchronous
+ "*Async Shell Command*"
+ "*Shell Command Output*")))))
+ (error-buffer
+ (cond
+ ((bufferp error-buffer) error-buffer)
+ ((stringp error-buffer) (get-buffer-create error-buffer))))
+ (buffer
+ (if (and (not asynchronous) error-buffer)
+ (with-parsed-tramp-file-name default-directory nil
+ (list output-buffer (tramp-make-tramp-temp-file v)))
+ output-buffer))
+ (p (get-buffer-process output-buffer)))
+
+ ;; Check whether there is another process running. Tramp does not
+ ;; support 2 (asynchronous) processes in parallel.
+ (when p
+ (if (yes-or-no-p "A command is running. Kill it? ")
+ (ignore-errors (kill-process p))
+ (error "Shell command in progress")))
+
+ (if current-buffer-p
+ (progn
+ (barf-if-buffer-read-only)
+ (push-mark nil t))
+ (with-current-buffer output-buffer
+ (setq buffer-read-only nil)
+ (erase-buffer)))
+
+ (if (and (not current-buffer-p) (integerp asynchronous))
+ (prog1
+ ;; Run the process.
+ (apply 'start-file-process "*Async Shell*" buffer args)
+ ;; Display output.
+ (pop-to-buffer output-buffer)
+ (setq mode-line-process '(":%s"))
+ (shell-mode))
+
+ (prog1
+ ;; Run the process.
+ (apply 'process-file (car args) nil buffer nil (cdr args))
+ ;; Insert error messages if they were separated.
+ (when (listp buffer)
+ (with-current-buffer error-buffer
+ (insert-file-contents (cadr buffer)))
+ (delete-file (cadr buffer)))
+ (if current-buffer-p
+ ;; This is like exchange-point-and-mark, but doesn't
+ ;; activate the mark. It is cleaner to avoid activation,
+ ;; even though the command loop would deactivate the mark
+ ;; because we inserted text.
+ (goto-char (prog1 (mark t)
+ (set-marker (mark-marker) (point)
+ (current-buffer))))
+ ;; There's some output, display it.
+ (when (with-current-buffer output-buffer (> (point-max) (point-min)))
+ (if (functionp 'display-message-or-buffer)
+ (tramp-compat-funcall 'display-message-or-buffer output-buffer)
+ (pop-to-buffer output-buffer))))))))
+
+;; We use BUFFER also as connection buffer during setup. Because of
+;; this, its original contents must be saved, and restored once
+;; connection has been setup.
+(defun tramp-adb-handle-start-file-process (name buffer program &rest args)
+ "Like `start-file-process' for Tramp files."
+ (with-parsed-tramp-file-name default-directory nil
+ ;; When PROGRAM is nil, we just provide a tty.
+ (let ((command
+ (when (stringp program)
+ (format "cd %s; %s"
+ (tramp-shell-quote-argument localname)
+ (mapconcat 'tramp-shell-quote-argument
+ (cons program args) " "))))
+ (tramp-process-connection-type
+ (or (null program) tramp-process-connection-type))
+ (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer)))
+ (name1 name)
+ (i 0))
+ (unwind-protect
+ (save-excursion
+ (save-restriction
+ (unless buffer
+ ;; BUFFER can be nil. We use a temporary buffer.
+ (setq buffer (generate-new-buffer tramp-temp-buffer-name)))
+ (while (get-process name1)
+ ;; NAME must be unique as process name.
+ (setq i (1+ i)
+ name1 (format "%s<%d>" name i)))
+ (setq name name1)
+ ;; Set the new process properties.
+ (tramp-set-connection-property v "process-name" name)
+ (tramp-set-connection-property v "process-buffer" buffer)
+ ;; Activate narrowing in order to save BUFFER contents.
+ ;; Clear also the modification time; otherwise we might
+ ;; be interrupted by `verify-visited-file-modtime'.
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (let ((buffer-undo-list t))
+ (clear-visited-file-modtime)
+ (narrow-to-region (point-max) (point-max))
+ (if command
+ ;; Send the command.
+ (tramp-adb-send-command v command)
+ ;; Open the connection.
+ (tramp-adb-maybe-open-connection v))))
+ (let ((p (tramp-get-connection-process v)))
+ ;; Set sentinel and query flag for this process.
+ (tramp-set-connection-property p "vector" v)
+ (set-process-sentinel p 'tramp-process-sentinel)
+ (tramp-compat-set-process-query-on-exit-flag p t)
+ ;; Return process.
+ p)))
+ ;; Save exit.
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (if (string-match tramp-temp-buffer-name (buffer-name))
+ (progn
+ (set-process-buffer (tramp-get-connection-process v) nil)
+ (kill-buffer (current-buffer)))
+ (set-buffer-modified-p bmp)))
+ (tramp-set-connection-property v "process-name" nil)
+ (tramp-set-connection-property v "process-buffer" nil)))))
+
+;; Android < 4 doesn't provide test command.
+
+(defun tramp-adb-handle-file-exists-p (filename)
+ "Like `file-exists-p' for Tramp files."
+ (with-parsed-tramp-file-name filename nil
+ (with-tramp-file-property v localname "file-exists-p"
+ (file-attributes filename))))
+
+;; Helper functions.
+
+(defun tramp-adb-execute-adb-command (vec &rest args)
+ "Returns nil on success error-output on failure."
+ (when (tramp-file-name-host vec)
+ (setq args (append (list "-s" (tramp-file-name-host vec)) args)))
+ (with-temp-buffer
+ (prog1
+ (unless (zerop (apply 'call-process (tramp-adb-program) nil t nil args))
+ (buffer-string))
+ (tramp-message
+ vec 6 "%s %s\n%s"
+ (tramp-adb-program) (mapconcat 'identity args " ") (buffer-string)))))
+
+(defun tramp-adb-find-test-command (vec)
+ "Checks, whether the ash has a builtin \"test\" command.
+This happens for Android >= 4.0."
+ (with-tramp-connection-property vec "test"
+ (zerop (tramp-adb-command-exit-status vec "type test"))))
+
+;; Connection functions
+
+(defun tramp-adb-send-command (vec command)
+ "Send the COMMAND to connection VEC."
+ (tramp-adb-maybe-open-connection vec)
+ (tramp-message vec 6 "%s" command)
+ (tramp-send-string vec command)
+ ;; fixme: Race condition
+ (tramp-adb-wait-for-output (tramp-get-connection-process vec))
+ (with-current-buffer (tramp-get-connection-buffer vec)
+ (save-excursion
+ (goto-char (point-min))
+ ;; We can't use stty to disable echo of command.
+ (delete-matching-lines (regexp-quote command))
+ ;; When the local machine is W32, there are still trailing ^M.
+ ;; There must be a better solution by setting the correct coding
+ ;; system, but this requires changes in core Tramp.
+ (goto-char (point-min))
+ (while (re-search-forward "\r+$" nil t)
+ (replace-match "" nil nil)))))
+
+(defun tramp-adb-barf-unless-okay (vec command fmt &rest args)
+ "Run COMMAND, check exit status, throw error if exit status not okay.
+FMT and ARGS are passed to `error'."
+ (tramp-adb-send-command vec (format "%s; echo tramp_exit_status $?" command))
+ (with-current-buffer (tramp-get-connection-buffer vec)
+ (goto-char (point-max))
+ (unless (re-search-backward "tramp_exit_status [0-9]+" nil t)
+ (tramp-error
+ vec 'file-error "Couldn't find exit status of `%s'" command))
+ (skip-chars-forward "^ ")
+ (unless (zerop (read (current-buffer)))
+ (apply 'tramp-error vec 'file-error fmt args))
+ (let (buffer-read-only)
+ (delete-region (match-beginning 0) (point-max)))))
+
+(defun tramp-adb-command-exit-status
+ (vec command)
+ "Run COMMAND and return its exit status.
+Sends `echo $?' along with the COMMAND for checking the exit status. If
+COMMAND is nil, just sends `echo $?'. Returns the exit status found."
+ (tramp-adb-send-command vec (format "%s; echo tramp_exit_status $?" command))
+ (with-current-buffer (tramp-get-connection-buffer vec)
+ (goto-char (point-max))
+ (unless (re-search-backward "tramp_exit_status [0-9]+" nil t)
+ (tramp-error
+ vec 'file-error "Couldn't find exit status of `%s'" command))
+ (skip-chars-forward "^ ")
+ (read (current-buffer))))
+
+(defun tramp-adb-wait-for-output (proc &optional timeout)
+ "Wait for output from remote command."
+ (unless (buffer-live-p (process-buffer proc))
+ (delete-process proc)
+ (tramp-error proc 'file-error "Process `%s' not available, try again" proc))
+ (with-current-buffer (process-buffer proc)
+ (if (tramp-wait-for-regexp proc timeout tramp-adb-prompt)
+ (let (buffer-read-only)
+ (goto-char (point-min))
+ (when (re-search-forward tramp-adb-prompt (point-at-eol) t)
+ (forward-line 1)
+ (delete-region (point-min) (point)))
+ ;; Delete the prompt.
+ (goto-char (point-max))
+ (re-search-backward tramp-adb-prompt nil t)
+ (delete-region (point) (point-max)))
+ (if timeout
+ (tramp-error
+ proc 'file-error
+ "[[Remote adb prompt `%s' not found in %d secs]]"
+ tramp-adb-prompt timeout)
+ (tramp-error
+ proc 'file-error
+ "[[Remote prompt `%s' not found]]" tramp-adb-prompt)))))
+
+(defun tramp-adb-maybe-open-connection (vec)
+ "Maybe open a connection VEC.
+Does not do anything if a connection is already open, but re-opens the
+connection if a previous connection has died for some reason."
+ (let* ((buf (tramp-get-connection-buffer vec))
+ (p (get-buffer-process buf)))
+ (unless
+ (and p (processp p) (memq (process-status p) '(run open)))
+ (save-match-data
+ (when (and p (processp p)) (delete-process p))
+ (with-tramp-progress-reporter vec 3 "Opening adb shell connection"
+ (let* ((coding-system-for-read 'utf-8-dos) ;is this correct?
+ (process-connection-type tramp-process-connection-type)
+ (args (if (tramp-file-name-host vec)
+ (list "-s" (tramp-file-name-host vec) "shell")
+ (list "shell")))
+ (p (let ((default-directory
+ (tramp-compat-temporary-file-directory)))
+ (apply 'start-process (tramp-get-connection-name vec) buf
+ (tramp-adb-program) args))))
+ (tramp-message
+ vec 6 "%s" (mapconcat 'identity (process-command p) " "))
+ ;; Wait for initial prompt.
+ (tramp-adb-wait-for-output p)
+ (unless (eq 'run (process-status p))
+ (tramp-error vec 'file-error "Terminated!"))
+ (set-process-query-on-exit-flag p nil)))))))
+
+(provide 'tramp-adb)
+;;; tramp-adb.el ends here
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index c3552ae023b..3d37a0cfc39 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -71,22 +71,6 @@
(require 'timer-funcs)
(require 'timer))
- ;; We check whether `start-file-process' is bound.
- ;; Note: we deactivate this. There are problems, at least in SXEmacs.
- (unless t;(fboundp 'start-file-process)
-
- ;; tramp-util offers integration into other (X)Emacs packages like
- ;; compile.el, gud.el etc. Not necessary in Emacs 23.
- (eval-after-load "tramp"
- '(require 'tramp-util))
-
- ;; Make sure that we get integration with the VC package. When it
- ;; is loaded, we need to pull in the integration module. Not
- ;; necessary in Emacs 23.
- (eval-after-load "vc"
- (eval-after-load "tramp"
- '(require 'tramp-vc))))
-
;; Avoid byte-compiler warnings if the byte-compiler supports this.
;; Currently, XEmacs supports this.
(when (featurep 'xemacs)
@@ -132,9 +116,7 @@
;; mechanism.
;; `file-remote-p' has been introduced with Emacs 22. The version
- ;; of XEmacs is not a magic file name function (yet); this is
- ;; corrected in tramp-util.el. Here it is sufficient if the
- ;; function exists.
+ ;; of XEmacs is not a magic file name function (yet).
(unless (fboundp 'file-remote-p)
(defalias 'file-remote-p
(lambda (file &optional identification connected)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 0aa1b8957ac..a4b2e0fccff 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -526,7 +526,11 @@ is no information where to trace the message.")
(tramp-message tramp-gvfs-dbus-event-vector 10 "%S" event)
(tramp-error tramp-gvfs-dbus-event-vector 'file-error "%s" (cadr err))))
-(add-hook 'dbus-event-error-functions 'tramp-gvfs-dbus-event-error)
+;; `dbus-event-error-hooks' has been renamed to `dbus-event-error-functions'.
+(add-hook
+ (if (boundp 'dbus-event-error-functions)
+ 'dbus-event-error-functions 'dbus-event-error-hooks)
+ 'tramp-gvfs-dbus-event-error)
;; File name primitives.
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 07da0b3dc16..55af0f0d96b 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -813,14 +813,11 @@ my %%trans = do {
map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
};
-
-binmode(\\*STDIN);
+my $data;
# We read in chunks of 54 bytes, to generate output lines
# of 72 chars (plus end of line)
-$/ = \\54;
-
-while (my $data = <STDIN>) {
+while (read STDIN, $data, 54) {
my $pad = q();
# Only for the last chunk, and only if did not fill the last three-byte packet
@@ -2382,17 +2379,38 @@ The method used must be an out-of-band method."
;; last longer than 60 secs.
(let ((p (let ((default-directory
(tramp-compat-temporary-file-directory)))
- (apply 'start-process
+ (apply 'start-process-shell-command
(tramp-get-connection-name v)
(tramp-get-connection-buffer v)
copy-program
- (append copy-args (list source target))))))
+ (append
+ copy-args
+ (list
+ (shell-quote-argument source)
+ (shell-quote-argument target)
+ "&&" "echo" "tramp_exit_status" "0"
+ "||" "echo" "tramp_exit_status" "1"))))))
(tramp-message
orig-vec 6 "%s"
(mapconcat 'identity (process-command p) " "))
(tramp-compat-set-process-query-on-exit-flag p nil)
(tramp-process-actions
- p v nil tramp-actions-copy-out-of-band)))
+ p v nil tramp-actions-copy-out-of-band)
+
+ ;; Check the return code.
+ (goto-char (point-max))
+ (unless
+ (re-search-backward "tramp_exit_status [0-9]+" nil t)
+ (tramp-error
+ orig-vec 'file-error
+ "Couldn't find exit status of `%s'" (process-command p)))
+ (skip-chars-forward "^ ")
+ (unless (zerop (read (current-buffer)))
+ (forward-line -1)
+ (tramp-error
+ orig-vec 'file-error
+ "Error copying: `%s'"
+ (buffer-substring (point-min) (point-at-eol))))))
;; Reset the transfer process properties.
(tramp-message orig-vec 6 "\n%s" (buffer-string))
@@ -2914,16 +2932,6 @@ the result will be a local, non-Tramp, filename."
(keyboard-quit)
ret))))
-(defun tramp-sh-handle-call-process-region
- (start end program &optional delete buffer display &rest args)
- "Like `call-process-region' for Tramp files."
- (let ((tmpfile (tramp-compat-make-temp-file "")))
- (write-region start end tmpfile)
- (when delete (delete-region start end))
- (unwind-protect
- (apply 'call-process program tmpfile buffer display args)
- (delete-file tmpfile))))
-
(defun tramp-sh-handle-file-local-copy (filename)
"Like `file-local-copy' for Tramp files."
(with-parsed-tramp-file-name filename nil
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index d6f2177b03b..a4d36cbe72c 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1750,10 +1750,12 @@ value of `default-file-modes', without execute permissions."
(defalias 'tramp-replace-environment-variables
(if (ignore-errors
- (equal "${ tramp?}" (substitute-env-vars "${ tramp?}" 'only-defined)))
+ (equal "${ tramp?}"
+ (tramp-compat-funcall
+ 'substitute-env-vars "${ tramp?}" 'only-defined)))
(lambda (filename)
"Like `substitute-env-vars' with `only-defined' non-nil."
- (substitute-env-vars filename 'only-defined))
+ (tramp-compat-funcall 'substitute-env-vars filename 'only-defined))
(lambda (filename)
"Replace environment variables in FILENAME.
Return the string with the replaced variables."
@@ -1928,10 +1930,7 @@ ARGS are the arguments OPERATION has been called with."
;; Emacs 23+ only.
'start-file-process
;; XEmacs only.
- 'dired-print-file 'dired-shell-call-process
- ;; nowhere yet.
- 'executable-find 'start-process
- 'call-process 'call-process-region))
+ 'dired-print-file 'dired-shell-call-process))
default-directory)
;; Unknown file primitive.
(t (error "unknown file I/O primitive: %s" operation))))
diff --git a/lisp/novice.el b/lisp/novice.el
index c621ac4b692..b8e4a268b23 100644
--- a/lisp/novice.el
+++ b/lisp/novice.el
@@ -49,7 +49,6 @@ If nil, the feature is disabled, i.e., all commands work normally.")
(unless keys (setq keys (this-command-keys)))
(let (char)
(save-window-excursion
- (help-setup-xref (list 'disabled-command-function cmd keys) nil)
(with-output-to-temp-buffer "*Disabled Command*" ;; (help-buffer)
(if (or (eq (aref keys 0)
(if (stringp keys)
diff --git a/lisp/longlines.el b/lisp/obsolete/longlines.el
index 68722a8f920..1ae6d1a357e 100644
--- a/lisp/longlines.el
+++ b/lisp/obsolete/longlines.el
@@ -6,6 +6,7 @@
;; Alex Schroeder <alex@gnu.org>
;; Chong Yidong <cyd@stupidchicken.com>
;; Maintainer: Chong Yidong <cyd@stupidchicken.com>
+;; Obsolete-since: 24.4
;; Keywords: convenience, wp
;; This file is part of GNU Emacs.
@@ -278,7 +279,7 @@ end of the buffer."
If wrapping is performed, point remains on the line. If the line does
not need to be wrapped, move point to the next line and return t."
(if (longlines-set-breakpoint)
- (progn (insert-before-markers ?\n)
+ (progn (insert-before-markers-and-inherit ?\n)
(backward-char 1)
(delete-char -1)
(forward-char 1)
@@ -384,8 +385,12 @@ compatibility with `format-alist', and is ignored."
(mod (buffer-modified-p)))
(goto-char (min beg end))
(while (search-forward "\n" reg-max t)
- (unless (get-text-property (match-beginning 0) 'hard)
- (replace-match " ")))
+ (let ((pos (match-beginning 0)))
+ (unless (get-text-property pos 'hard)
+ (goto-char (1+ pos))
+ (insert-and-inherit " ")
+ (delete-region pos (1+ pos))
+ (remove-text-properties pos (1+ pos) 'hard))))
(set-buffer-modified-p mod)
end)))
diff --git a/lisp/terminal.el b/lisp/obsolete/terminal.el
index 7aaac26f1b0..5497a74b32f 100644
--- a/lisp/terminal.el
+++ b/lisp/obsolete/terminal.el
@@ -5,6 +5,7 @@
;; Author: Richard Mlynarik <mly@eddie.mit.edu>
;; Maintainer: FSF
+;; Obsolete-since: 24.4
;; Keywords: comm, terminals
;; This file is part of GNU Emacs.
@@ -24,14 +25,14 @@
;;; Commentary:
-;;; This file has been censored by the Communications Decency Act.
-;;; That law was passed under the guise of a ban on pornography, but
-;;; it bans far more than that. This file did not contain pornography,
-;;; but it was censored nonetheless.
+;; This file has been censored by the Communications Decency Act.
+;; That law was passed under the guise of a ban on pornography, but
+;; it bans far more than that. This file did not contain pornography,
+;; but it was censored nonetheless.
-;;; For information on US government censorship of the Internet, and
-;;; what you can do to bring back freedom of the press, see the web
-;;; site http://www.vtw.org/
+;; For information on US government censorship of the Internet, and
+;; what you can do to bring back freedom of the press, see the web
+;; site http://www.vtw.org/
;;; Code:
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 9bf731fb6b2..98383e56532 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-04 Chong Yidong <cyd@gnu.org>
+
+ * org-bibtex.el (org-bibtex-ask): Use visual-line-mode instead of
+ longlines-mode.
+
2012-10-26 Achim Gratz <stromeko@stromeko.de>
* ob-ditaa.el: Needs to (require 'org-compat) for
diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el
index f8e07adcd8a..aaae8d52de8 100644
--- a/lisp/org/org-bibtex.el
+++ b/lisp/org/org-bibtex.el
@@ -120,7 +120,6 @@
(declare-function bibtex-generate-autokey "bibtex" ())
(declare-function bibtex-parse-entry "bibtex" (&optional content))
(declare-function bibtex-url "bibtex" (&optional pos no-browse))
-(declare-function longlines-mode "longlines" (&optional arg))
(declare-function org-babel-trim "ob" (string &optional regexp))
@@ -381,7 +380,7 @@ This variable is relevant only if `org-bibtex-export-tags-as-keywords' is t."
(buf-name (format "*Bibtex Help %s*" name)))
(with-output-to-temp-buffer buf-name
(princ (cdr (assoc field org-bibtex-fields))))
- (with-current-buffer buf-name (longlines-mode t))
+ (with-current-buffer buf-name (visual-line-mode 1))
(org-fit-window-to-buffer (get-buffer-window buf-name))
((lambda (result) (when (> (length result) 0) result))
(read-from-minibuffer (format "%s: " name))))))
diff --git a/lisp/progmodes/autoconf.el b/lisp/progmodes/autoconf.el
index ac3a7282952..5deb60f9e41 100644
--- a/lisp/progmodes/autoconf.el
+++ b/lisp/progmodes/autoconf.el
@@ -78,22 +78,19 @@ searching backwards at another AC_... command."
;;;###autoload
(define-derived-mode autoconf-mode prog-mode "Autoconf"
"Major mode for editing Autoconf configure.ac files."
- (set (make-local-variable 'parens-require-spaces) nil) ; for M4 arg lists
- (set (make-local-variable 'defun-prompt-regexp)
- "^[ \t]*A[CM]_\\(\\sw\\|\\s_\\)+")
- (set (make-local-variable 'comment-start) "dnl ")
- (set (make-local-variable 'comment-start-skip)
- "\\(?:\\(\\W\\|\\`\\)dnl\\|#\\) +")
- (set (make-local-variable 'syntax-propertize-function)
- (syntax-propertize-rules ("\\<dnl\\>" (0 "<"))))
- (set (make-local-variable 'font-lock-defaults)
- `(autoconf-font-lock-keywords nil nil (("_" . "w"))))
- (set (make-local-variable 'imenu-generic-expression)
- autoconf-imenu-generic-expression)
- (set (make-local-variable 'imenu-syntax-alist) '(("_" . "w")))
- (set (make-local-variable 'indent-line-function) #'indent-relative)
- (set (make-local-variable 'add-log-current-defun-function)
- #'autoconf-current-defun-function))
+ (setq-local parens-require-spaces nil) ; for M4 arg lists
+ (setq-local defun-prompt-regexp "^[ \t]*A[CM]_\\(\\sw\\|\\s_\\)+")
+ (setq-local comment-start "dnl ")
+ (setq-local comment-start-skip "\\(?:\\(\\W\\|\\`\\)dnl\\|#\\) +")
+ (setq-local syntax-propertize-function
+ (syntax-propertize-rules ("\\<dnl\\>" (0 "<"))))
+ (setq-local font-lock-defaults
+ `(autoconf-font-lock-keywords nil nil (("_" . "w"))))
+ (setq-local imenu-generic-expression autoconf-imenu-generic-expression)
+ (setq-local imenu-syntax-alist '(("_" . "w")))
+ (setq-local indent-line-function #'indent-relative)
+ (setq-local add-log-current-defun-function
+ #'autoconf-current-defun-function))
(provide 'autoconf-mode)
(provide 'autoconf)
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 91866278e28..a904ffdb811 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -647,7 +647,9 @@ compatible with old code; callers should always specify it."
(set (make-local-variable 'outline-regexp) "[^#\n\^M]")
(set (make-local-variable 'outline-level) 'c-outline-level)
-
+ (set (make-local-variable 'add-log-current-defun-function)
+ (lambda ()
+ (or (c-cpp-define-name) (c-defun-name))))
(let ((rfn (assq mode c-require-final-newline)))
(when rfn
(and (cdr rfn)
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index e1430b67e99..0a952cf3870 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1742,6 +1742,13 @@ or as help on variables `cperl-tips', `cperl-problems',
(setq outline-regexp cperl-outline-regexp)
(make-local-variable 'outline-level)
(setq outline-level 'cperl-outline-level)
+ (make-local-variable 'add-log-current-defun-function)
+ (setq add-log-current-defun-function
+ (lambda ()
+ (save-excursion
+ (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
+ (match-string-no-properties 1)))))
+
(make-local-variable 'paragraph-start)
(setq paragraph-start (concat "^$\\|" page-delimiter))
(make-local-variable 'paragraph-separate)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 071a0fb6037..067d89781d2 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -702,7 +702,9 @@ Returns t if it visits a tags table, or nil if there are no more in the list."
(kill-local-variable 'tags-file-name)
(if (eq local-tags-file-name tags-file-name)
(setq tags-file-name nil))
- (user-error "File %s is not a valid tags table"
+ (user-error (if (file-exists-p local-tags-file-name)
+ "File %s is not a valid tags table"
+ "File %s does not exist")
local-tags-file-name)))))
(defun tags-reset-tags-tables ()
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index c056b0f4e26..b448b7b3032 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -586,7 +586,7 @@ This function is called from `compilation-filter-hook'."
'exec-plus)
((and
(grep-probe find-program `(nil nil nil ,null-device "-print0"))
- (grep-probe xargs-program `(nil nil nil "-0" "-e" "echo")))
+ (grep-probe xargs-program `(nil nil nil "-0" "echo")))
'gnu)
(t
'exec))))
@@ -596,7 +596,7 @@ This function is called from `compilation-filter-hook'."
;; Windows shells need the program file name
;; after the pipe symbol be quoted if they use
;; forward slashes as directory separators.
- (format "%s . -type f -print0 | \"%s\" -0 -e %s"
+ (format "%s . -type f -print0 | \"%s\" -0 %s"
find-program xargs-program grep-command))
((memq grep-find-use-xargs '(exec exec-plus))
(let ((cmd0 (format "%s . -type f -exec %s"
@@ -621,7 +621,7 @@ This function is called from `compilation-filter-hook'."
(format "%s " null-device)
"")))
(cond ((eq grep-find-use-xargs 'gnu)
- (format "%s . <X> -type f <F> -print0 | \"%s\" -0 -e %s"
+ (format "%s . <X> -type f <F> -print0 | \"%s\" -0 %s"
find-program xargs-program gcmd))
((eq grep-find-use-xargs 'exec)
(format "%s . <X> -type f <F> -exec %s {} %s%s"
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 33ef7607671..e6bba6a6609 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3306,29 +3306,21 @@ If one hasn't been set, or if it's stale, prompt for a new one."
(define-derived-mode js-mode prog-mode "Javascript"
"Major mode for editing JavaScript."
:group 'js
+ (setq-local indent-line-function 'js-indent-line)
+ (setq-local beginning-of-defun-function 'js-beginning-of-defun)
+ (setq-local end-of-defun-function 'js-end-of-defun)
+ (setq-local open-paren-in-column-0-is-defun-start nil)
+ (setq-local font-lock-defaults (list js--font-lock-keywords))
+ (setq-local syntax-propertize-function #'js-syntax-propertize)
- (set (make-local-variable 'indent-line-function) 'js-indent-line)
- (set (make-local-variable 'beginning-of-defun-function)
- 'js-beginning-of-defun)
- (set (make-local-variable 'end-of-defun-function)
- 'js-end-of-defun)
-
- (set (make-local-variable 'open-paren-in-column-0-is-defun-start) nil)
- (set (make-local-variable 'font-lock-defaults)
- (list js--font-lock-keywords))
- (set (make-local-variable 'syntax-propertize-function)
- #'js-syntax-propertize)
-
- (set (make-local-variable 'parse-sexp-ignore-comments) t)
- (set (make-local-variable 'parse-sexp-lookup-properties) t)
- (set (make-local-variable 'which-func-imenu-joiner-function)
- #'js--which-func-joiner)
+ (setq-local parse-sexp-ignore-comments t)
+ (setq-local parse-sexp-lookup-properties t)
+ (setq-local which-func-imenu-joiner-function #'js--which-func-joiner)
;; Comments
- (set (make-local-variable 'comment-start) "// ")
- (set (make-local-variable 'comment-end) "")
- (set (make-local-variable 'fill-paragraph-function)
- 'js-c-fill-paragraph)
+ (setq-local comment-start "// ")
+ (setq-local comment-end "")
+ (setq-local fill-paragraph-function 'js-c-fill-paragraph)
;; Parse cache
(add-hook 'before-change-functions #'js--flush-caches t t)
@@ -3338,8 +3330,7 @@ If one hasn't been set, or if it's stale, prompt for a new one."
;; Imenu
(setq imenu-case-fold-search nil)
- (set (make-local-variable 'imenu-create-index-function)
- #'js--imenu-create-index)
+ (setq imenu-create-index-function #'js--imenu-create-index)
;; for filling, pretend we're cc-mode
(setq c-comment-prefix-regexp "//+\\|\\**"
@@ -3350,10 +3341,10 @@ If one hasn't been set, or if it's stale, prompt for a new one."
c-comment-start-regexp "/[*/]\\|\\s!"
comment-start-skip "\\(//+\\|/\\*+\\)\\s *")
- (set (make-local-variable 'electric-indent-chars)
- (append "{}():;," electric-indent-chars)) ;FIXME: js2-mode adds "[]*".
- (set (make-local-variable 'electric-layout-rules)
- '((?\; . after) (?\{ . after) (?\} . before)))
+ (setq-local electric-indent-chars
+ (append "{}():;," electric-indent-chars)) ;FIXME: js2-mode adds "[]*".
+ (setq-local electric-layout-rules
+ '((?\; . after) (?\{ . after) (?\} . before)))
(let ((c-buffer-is-cc-mode t))
;; FIXME: These are normally set by `c-basic-common-init'. Should
@@ -3365,8 +3356,7 @@ If one hasn't been set, or if it's stale, prompt for a new one."
(make-local-variable 'adaptive-fill-regexp)
(c-setup-paragraph-variables))
- (set (make-local-variable 'syntax-begin-function)
- #'js--syntax-begin-function)
+ (setq-local syntax-begin-function #'js--syntax-begin-function)
;; Important to fontify the whole buffer syntactically! If we don't,
;; then we might have regular expression literals that aren't marked
diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el
index 20f91ce2d9e..7904033e68e 100644
--- a/lisp/progmodes/m4-mode.el
+++ b/lisp/progmodes/m4-mode.el
@@ -141,13 +141,21 @@
"*m4-output*" nil)
(switch-to-buffer-other-window "*m4-output*"))
+(defun m4-current-defun-name ()
+ "Return the name of the M4 function at point, or nil."
+ (save-excursion
+ (if (re-search-backward
+ "^\\(\\(m4_\\)?define\\|A._DEFUN\\)(\\[?\\([A-Za-z0-9_]+\\)" nil t)
+ (match-string-no-properties 3))))
+
;;;###autoload
(define-derived-mode m4-mode prog-mode "m4"
"A major mode to edit m4 macro files."
:abbrev-table m4-mode-abbrev-table
- (set (make-local-variable 'comment-start) "#")
- (set (make-local-variable 'parse-sexp-ignore-comments) t)
- (set (make-local-variable 'font-lock-defaults) '(m4-font-lock-keywords nil)))
+ (setq-local comment-start "#")
+ (setq-local parse-sexp-ignore-comments t)
+ (setq-local add-log-current-defun-function #'m4-current-defun-name)
+ (setq font-lock-defaults '(m4-font-lock-keywords nil)))
(provide 'm4-mode)
;;stuff to play with for debugging
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index 2f4419ba2ea..8e8cd74c7be 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -879,41 +879,42 @@ Makefile mode can be configured by modifying the following variables:
(make-local-variable 'makefile-need-macro-pickup)
;; Font lock.
- (set (make-local-variable 'font-lock-defaults)
- ;; SYNTAX-BEGIN set to backward-paragraph to avoid slow-down
- ;; near the end of a large buffer, due to parse-partial-sexp's
- ;; trying to parse all the way till the beginning of buffer.
- '(makefile-font-lock-keywords
- nil nil
- ((?$ . "."))
- backward-paragraph))
- (set (make-local-variable 'syntax-propertize-function)
- makefile-syntax-propertize-function)
+ (setq-local font-lock-defaults
+ ;; Set SYNTAX-BEGIN to backward-paragraph to avoid
+ ;; slow-down near the end of a large buffer, due to
+ ;; `parse-partial-sexp' trying to parse all the way till
+ ;; the beginning of buffer.
+ '(makefile-font-lock-keywords
+ nil nil
+ ((?$ . "."))
+ backward-paragraph))
+ (setq-local syntax-propertize-function
+ makefile-syntax-propertize-function)
;; Add-log.
- (set (make-local-variable 'add-log-current-defun-function)
- 'makefile-add-log-defun)
+ (setq-local add-log-current-defun-function
+ 'makefile-add-log-defun)
;; Imenu.
- (set (make-local-variable 'imenu-generic-expression)
- makefile-imenu-generic-expression)
+ (setq-local imenu-generic-expression
+ makefile-imenu-generic-expression)
;; Dabbrev.
- (set (make-local-variable 'dabbrev-abbrev-skip-leading-regexp) "\\$")
+ (setq-local dabbrev-abbrev-skip-leading-regexp "\\$")
;; Other abbrevs.
(setq local-abbrev-table makefile-mode-abbrev-table)
;; Filling.
- (set (make-local-variable 'fill-paragraph-function) 'makefile-fill-paragraph)
+ (setq-local fill-paragraph-function 'makefile-fill-paragraph)
;; Comment stuff.
- (set (make-local-variable 'comment-start) "#")
- (set (make-local-variable 'comment-end) "")
- (set (make-local-variable 'comment-start-skip) "#+[ \t]*")
+ (setq-local comment-start "#")
+ (setq-local comment-end "")
+ (setq-local comment-start-skip "#+[ \t]*")
;; Make sure TAB really inserts \t.
- (set (make-local-variable 'indent-line-function) 'indent-to-left-margin)
+ (setq-local indent-line-function 'indent-to-left-margin)
;; Real TABs are important in makefiles
(setq indent-tabs-mode t))
@@ -934,8 +935,7 @@ Makefile mode can be configured by modifying the following variables:
;;;###autoload
(define-derived-mode makefile-makepp-mode makefile-mode "Makeppfile"
"An adapted `makefile-mode' that knows about makepp."
- (set (make-local-variable 'makefile-rule-action-regex)
- makefile-makepp-rule-action-regex)
+ (setq-local makefile-rule-action-regex makefile-makepp-rule-action-regex)
(setq font-lock-defaults
`(makefile-makepp-font-lock-keywords ,@(cdr font-lock-defaults))
imenu-generic-expression
@@ -945,11 +945,9 @@ Makefile mode can be configured by modifying the following variables:
;;;###autoload
(define-derived-mode makefile-bsdmake-mode makefile-mode "BSDmakefile"
"An adapted `makefile-mode' that knows about BSD make."
- (set (make-local-variable 'makefile-dependency-regex)
- makefile-bsdmake-dependency-regex)
- (set (make-local-variable 'makefile-dependency-skip) "^:!")
- (set (make-local-variable 'makefile-rule-action-regex)
- makefile-bsdmake-rule-action-regex)
+ (setq-local makefile-dependency-regex makefile-bsdmake-dependency-regex)
+ (setq-local makefile-dependency-skip "^:!")
+ (setq-local makefile-rule-action-regex makefile-bsdmake-rule-action-regex)
(setq font-lock-defaults
`(makefile-bsdmake-font-lock-keywords ,@(cdr font-lock-defaults))))
@@ -957,7 +955,7 @@ Makefile mode can be configured by modifying the following variables:
(define-derived-mode makefile-imake-mode makefile-mode "Imakefile"
"An adapted `makefile-mode' that knows about imake."
:syntax-table makefile-imake-mode-syntax-table
- (set (make-local-variable 'syntax-propertize-function) nil)
+ (setq-local syntax-propertize-function nil)
(setq font-lock-defaults
`(makefile-imake-font-lock-keywords ,@(cdr font-lock-defaults))))
@@ -1501,8 +1499,8 @@ Insertion takes place at point."
(pop-to-buffer browser-buffer)
(makefile-browser-fill targets macros)
(shrink-window-if-larger-than-buffer)
- (set (make-local-variable 'makefile-browser-selection-vector)
- (make-vector (+ (length targets) (length macros)) nil))
+ (setq-local makefile-browser-selection-vector
+ (make-vector (+ (length targets) (length macros)) nil))
(makefile-browser-start-interaction))))
(defun makefile-switch-to-browser ()
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index ab5a19f8a2f..da40cf51be9 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -794,11 +794,14 @@ does not end in `...' or `\\' or is inside an open parenthesis list."
"Put point at the beginning of this Octave block, mark at the end.
The block marked is the one that contains point or follows point."
(interactive)
+ (if (and (looking-at "\\sw\\|\\s_")
+ (looking-back "\\sw\\|\\s_" (1- (point))))
+ (skip-syntax-forward "w_"))
(unless (or (looking-at "\\s(")
(save-excursion
(let* ((token (funcall smie-forward-token-function))
(level (assoc token smie-grammar)))
- (and level (null (cadr level))))))
+ (and level (not (numberp (cadr level)))))))
(backward-up-list 1))
(mark-sexp))
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index d2f7fc7a059..46940457d36 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -578,6 +578,13 @@ create a new comment."
((looking-at "=head[0-9]") (- (char-before (match-end 0)) ?0))
((looking-at "=cut") 1)
(t 3)))
+
+(defun perl-current-defun-name ()
+ "The `add-log-current-defun' function in Perl mode."
+ (save-excursion
+ (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
+ (match-string-no-properties 1))))
+
(defvar perl-mode-hook nil
"Normal hook to run when entering Perl mode.")
@@ -631,15 +638,15 @@ Various indentation styles: K&R BSD BLK GNU LW
Turning on Perl mode runs the normal hook `perl-mode-hook'."
:abbrev-table perl-mode-abbrev-table
- (set (make-local-variable 'paragraph-start) (concat "$\\|" page-delimiter))
- (set (make-local-variable 'paragraph-separate) paragraph-start)
- (set (make-local-variable 'paragraph-ignore-fill-prefix) t)
- (set (make-local-variable 'indent-line-function) #'perl-indent-line)
- (set (make-local-variable 'comment-start) "# ")
- (set (make-local-variable 'comment-end) "")
- (set (make-local-variable 'comment-start-skip) "\\(^\\|\\s-\\);?#+ *")
- (set (make-local-variable 'comment-indent-function) #'perl-comment-indent)
- (set (make-local-variable 'parse-sexp-ignore-comments) t)
+ (setq-local paragraph-start (concat "$\\|" page-delimiter))
+ (setq-local paragraph-separate paragraph-start)
+ (setq-local paragraph-ignore-fill-prefix t)
+ (setq-local indent-line-function #'perl-indent-line)
+ (setq-local comment-start "# ")
+ (setq-local comment-end "")
+ (setq-local comment-start-skip "\\(^\\|\\s-\\);?#+ *")
+ (setq-local comment-indent-function #'perl-comment-indent)
+ (setq-local parse-sexp-ignore-comments t)
;; Tell font-lock.el how to handle Perl.
(setq font-lock-defaults '((perl-font-lock-keywords
perl-font-lock-keywords-1
@@ -647,22 +654,21 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'."
nil nil ((?\_ . "w")) nil
(font-lock-syntactic-face-function
. perl-font-lock-syntactic-face-function)))
- (set (make-local-variable 'syntax-propertize-function)
- #'perl-syntax-propertize-function)
+ (setq-local syntax-propertize-function #'perl-syntax-propertize-function)
(add-hook 'syntax-propertize-extend-region-functions
#'syntax-propertize-multiline 'append 'local)
;; Electricity.
;; FIXME: setup electric-layout-rules.
- (set (make-local-variable 'electric-indent-chars)
- (append '(?\{ ?\} ?\; ?\:) electric-indent-chars))
+ (setq-local electric-indent-chars
+ (append '(?\{ ?\} ?\; ?\:) electric-indent-chars))
(add-hook 'electric-indent-functions #'perl-electric-noindent-p nil t)
;; Tell imenu how to handle Perl.
- (set (make-local-variable 'imenu-generic-expression)
- perl-imenu-generic-expression)
+ (setq-local imenu-generic-expression perl-imenu-generic-expression)
(setq imenu-case-fold-search nil)
;; Setup outline-minor-mode.
- (set (make-local-variable 'outline-regexp) perl-outline-regexp)
- (set (make-local-variable 'outline-level) 'perl-outline-level))
+ (setq-local outline-regexp perl-outline-regexp)
+ (setq-local outline-level 'perl-outline-level)
+ (setq-local add-log-current-defun-function #'perl-current-defun-name))
;; This is used by indent-for-comment
;; to decide how much to indent a comment in Perl code
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 550c5f5a129..a2c8453a011 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -33,7 +33,7 @@
;; Implements Syntax highlighting, Indentation, Movement, Shell
;; interaction, Shell completion, Shell virtualenv support, Pdb
;; tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc,
-;; imenu.
+;; Imenu.
;; Syntax highlighting: Fontification of code is provided and supports
;; python's triple quoted strings properly.
@@ -169,10 +169,12 @@
;; might guessed you should run `python-shell-send-buffer' from time
;; to time to get better results too.
-;; imenu: This mode supports imenu in its most basic form, letting it
+;; Imenu: This mode supports Imenu in its most basic form, letting it
;; build the necessary alist via `imenu-default-create-index-function'
;; by having set `imenu-extract-index-name-function' to
-;; `python-info-current-defun'.
+;; `python-info-current-defun' and
+;; `imenu-prev-index-position-function' to
+;; `python-imenu-prev-index-position'.
;; If you used python-mode.el you probably will miss auto-indentation
;; when inserting newlines. To achieve the same behavior you have
@@ -656,7 +658,7 @@ These make `python-indent-calculate-indentation' subtract the value of
(python-util-forward-comment)
(current-indentation))))
(if indentation
- (setq python-indent-offset indentation)
+ (set (make-local-variable 'python-indent-offset) indentation)
(message "Can't guess python-indent-offset, using defaults: %s"
python-indent-offset)))))))
@@ -1098,12 +1100,12 @@ With positive ARG search backwards, else search forwards."
(beg-indentation
(and (> arg 0)
(save-excursion
- (and (python-info-current-line-empty-p)
- (python-util-forward-comment -1))
- (python-nav-beginning-of-statement)
- (if (python-info-looking-at-beginning-of-defun)
- (+ (current-indentation) python-indent-offset)
- (current-indentation)))))
+ (while (and
+ (not (python-info-looking-at-beginning-of-defun))
+ (python-nav-backward-block)))
+ (or (and (python-info-looking-at-beginning-of-defun)
+ (+ (current-indentation) python-indent-offset))
+ 0))))
(found
(progn
(when (and (< arg 0)
@@ -2881,6 +2883,19 @@ Interactively, prompt for symbol."
"^Eldoc needs an inferior Python process running.")
+;;; Imenu
+
+(defun python-imenu-prev-index-position ()
+ "Python mode's `imenu-prev-index-position-function'."
+ (let ((found))
+ (while (and (setq found
+ (re-search-backward python-nav-beginning-of-defun-regexp nil t))
+ (not (python-info-looking-at-beginning-of-defun))))
+ (and found
+ (python-info-looking-at-beginning-of-defun)
+ (python-info-current-defun))))
+
+
;;; Misc helpers
(defun python-info-current-defun (&optional include-type)
@@ -3225,6 +3240,9 @@ if that value is non-nil."
(set (make-local-variable 'imenu-extract-index-name-function)
#'python-info-current-defun)
+ (set (make-local-variable 'imenu-prev-index-position-function)
+ #'python-imenu-prev-index-position)
+
(set (make-local-variable 'add-log-current-defun-function)
#'python-info-current-defun)
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index 7cab07fe387..1a15f9eda3c 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -126,44 +126,44 @@
(defun scheme-mode-variables ()
(set-syntax-table scheme-mode-syntax-table)
(setq local-abbrev-table scheme-mode-abbrev-table)
- (set (make-local-variable 'paragraph-start) (concat "$\\|" page-delimiter))
- (set (make-local-variable 'paragraph-separate) paragraph-start)
- (set (make-local-variable 'paragraph-ignore-fill-prefix) t)
- (set (make-local-variable 'fill-paragraph-function) 'lisp-fill-paragraph)
+ (setq-local paragraph-start (concat "$\\|" page-delimiter))
+ (setq-local paragraph-separate paragraph-start)
+ (setq-local paragraph-ignore-fill-prefix t)
+ (setq-local fill-paragraph-function 'lisp-fill-paragraph)
;; Adaptive fill mode gets in the way of auto-fill,
;; and should make no difference for explicit fill
;; because lisp-fill-paragraph should do the job.
- (set (make-local-variable 'adaptive-fill-mode) nil)
- (set (make-local-variable 'indent-line-function) 'lisp-indent-line)
- (set (make-local-variable 'parse-sexp-ignore-comments) t)
- (set (make-local-variable 'outline-regexp) ";;; \\|(....")
- (set (make-local-variable 'comment-start) ";")
- (set (make-local-variable 'comment-add) 1)
+ (setq-local adaptive-fill-mode nil)
+ (setq-local indent-line-function 'lisp-indent-line)
+ (setq-local parse-sexp-ignore-comments t)
+ (setq-local outline-regexp ";;; \\|(....")
+ (setq-local add-log-current-defun-function #'lisp-current-defun-name)
+ (setq-local comment-start ";")
+ (setq-local comment-add 1)
;; Look within the line for a ; following an even number of backslashes
;; after either a non-backslash or the line beginning.
- (set (make-local-variable 'comment-start-skip)
- "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+[ \t]*")
- (set (make-local-variable 'font-lock-comment-start-skip) ";+ *")
- (set (make-local-variable 'comment-column) 40)
- (set (make-local-variable 'parse-sexp-ignore-comments) t)
- (set (make-local-variable 'lisp-indent-function) 'scheme-indent-function)
+ (setq-local comment-start-skip
+ "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+[ \t]*")
+ (setq-local font-lock-comment-start-skip ";+ *")
+ (setq-local comment-column 40)
+ (setq-local parse-sexp-ignore-comments t)
+ (setq-local lisp-indent-function 'scheme-indent-function)
(setq mode-line-process '("" scheme-mode-line-process))
- (set (make-local-variable 'imenu-case-fold-search) t)
+ (setq-local imenu-case-fold-search t)
(setq imenu-generic-expression scheme-imenu-generic-expression)
- (set (make-local-variable 'imenu-syntax-alist)
+ (setq-local imenu-syntax-alist
'(("+-*/.<>=?!$%_&~^:" . "w")))
- (set (make-local-variable 'font-lock-defaults)
- '((scheme-font-lock-keywords
- scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
- nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
- beginning-of-defun
- (font-lock-mark-block-function . mark-defun)
- (font-lock-syntactic-face-function
- . scheme-font-lock-syntactic-face-function)
- (parse-sexp-lookup-properties . t)
- (font-lock-extra-managed-props syntax-table)))
- (set (make-local-variable 'lisp-doc-string-elt-property)
- 'scheme-doc-string-elt))
+ (setq font-lock-defaults
+ '((scheme-font-lock-keywords
+ scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
+ nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
+ beginning-of-defun
+ (font-lock-mark-block-function . mark-defun)
+ (font-lock-syntactic-face-function
+ . scheme-font-lock-syntactic-face-function)
+ (parse-sexp-lookup-properties . t)
+ (font-lock-extra-managed-props syntax-table)))
+ (setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))
(defvar scheme-mode-line-process "")
@@ -386,7 +386,7 @@ Blank lines separate paragraphs. Semicolons start comments.
Entering this mode runs the hooks `scheme-mode-hook' and then
`dsssl-mode-hook' and inserts the value of `dsssl-sgml-declaration' if
that variable's value is a string."
- (set (make-local-variable 'page-delimiter) "^;;;") ; ^L not valid SGML char
+ (setq-local page-delimiter "^;;;") ; ^L not valid SGML char
;; Insert a suitable SGML declaration into an empty buffer.
;; FIXME: This should use `auto-insert-alist' instead.
(and (zerop (buffer-size))
@@ -397,10 +397,10 @@ that variable's value is a string."
nil t (("+-*/.<>=?$%_&~^:" . "w"))
beginning-of-defun
(font-lock-mark-block-function . mark-defun)))
- (set (make-local-variable 'imenu-case-fold-search) nil)
+ (setq-local add-log-current-defun-function #'lisp-current-defun-name)
+ (setq-local imenu-case-fold-search nil)
(setq imenu-generic-expression dsssl-imenu-generic-expression)
- (set (make-local-variable 'imenu-syntax-alist)
- '(("+-*/.<>=?$%_&~^:" . "w"))))
+ (setq-local imenu-syntax-alist '(("+-*/.<>=?$%_&~^:" . "w"))))
;; Extra syntax for DSSSL. This isn't separated from Scheme, but
;; shouldn't cause much trouble in scheme-mode.
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 5af14e51f49..243b712febb 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1497,42 +1497,41 @@ with your script for an edit-interpret-debug cycle."
(make-local-variable 'sh-shell-file)
(make-local-variable 'sh-shell)
- (set (make-local-variable 'skeleton-pair-default-alist)
- sh-skeleton-pair-default-alist)
- (set (make-local-variable 'skeleton-end-hook)
- (lambda () (or (eolp) (newline) (indent-relative))))
-
- (set (make-local-variable 'paragraph-start) (concat page-delimiter "\\|$"))
- (set (make-local-variable 'paragraph-separate) paragraph-start)
- (set (make-local-variable 'comment-start) "# ")
- (set (make-local-variable 'comment-start-skip) "#+[\t ]*")
- (set (make-local-variable 'local-abbrev-table) sh-mode-abbrev-table)
- (set (make-local-variable 'comint-dynamic-complete-functions)
- sh-dynamic-complete-functions)
+ (setq-local skeleton-pair-default-alist
+ sh-skeleton-pair-default-alist)
+ (setq-local skeleton-end-hook
+ (lambda () (or (eolp) (newline) (indent-relative))))
+
+ (setq-local paragraph-start (concat page-delimiter "\\|$"))
+ (setq-local paragraph-separate paragraph-start)
+ (setq-local comment-start "# ")
+ (setq-local comment-start-skip "#+[\t ]*")
+ (setq-local local-abbrev-table sh-mode-abbrev-table)
+ (setq-local comint-dynamic-complete-functions
+ sh-dynamic-complete-functions)
(add-hook 'completion-at-point-functions 'comint-completion-at-point nil t)
;; we can't look if previous line ended with `\'
- (set (make-local-variable 'comint-prompt-regexp) "^[ \t]*")
- (set (make-local-variable 'imenu-case-fold-search) nil)
- (set (make-local-variable 'font-lock-defaults)
- `((sh-font-lock-keywords
- sh-font-lock-keywords-1 sh-font-lock-keywords-2)
- nil nil
- ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil
- (font-lock-syntactic-face-function
- . sh-font-lock-syntactic-face-function)))
- (set (make-local-variable 'syntax-propertize-function)
- #'sh-syntax-propertize-function)
+ (setq-local comint-prompt-regexp "^[ \t]*")
+ (setq-local imenu-case-fold-search nil)
+ (setq font-lock-defaults
+ `((sh-font-lock-keywords
+ sh-font-lock-keywords-1 sh-font-lock-keywords-2)
+ nil nil
+ ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil
+ (font-lock-syntactic-face-function
+ . sh-font-lock-syntactic-face-function)))
+ (setq-local syntax-propertize-function #'sh-syntax-propertize-function)
(add-hook 'syntax-propertize-extend-region-functions
#'syntax-propertize-multiline 'append 'local)
(sh-electric-here-document-mode 1)
- (set (make-local-variable 'skeleton-pair-alist) '((?` _ ?`)))
- (set (make-local-variable 'skeleton-pair-filter-function) 'sh-quoted-p)
- (set (make-local-variable 'skeleton-further-elements)
- '((< '(- (min sh-indentation (current-column))))))
- (set (make-local-variable 'skeleton-filter-function) 'sh-feature)
- (set (make-local-variable 'skeleton-newline-indent-rigidly) t)
- (set (make-local-variable 'defun-prompt-regexp)
- (concat "^\\(function[ \t]\\|[[:alnum:]]+[ \t]+()[ \t]+\\)"))
+ (setq-local skeleton-pair-alist '((?` _ ?`)))
+ (setq-local skeleton-pair-filter-function 'sh-quoted-p)
+ (setq-local skeleton-further-elements
+ '((< '(- (min sh-indentation (current-column))))))
+ (setq-local skeleton-filter-function 'sh-feature)
+ (setq-local skeleton-newline-indent-rigidly t)
+ (setq-local defun-prompt-regexp
+ (concat "^\\(function[ \t]\\|[[:alnum:]]+[ \t]+()[ \t]+\\)"))
;; Parse or insert magic number for exec, and set all variables depending
;; on the shell thus determined.
(sh-set-shell
@@ -2104,19 +2103,19 @@ Calls the value of `sh-set-shell-hook' if set."
(executable-set-magic shell (sh-feature sh-shell-arg)
no-query-flag insert-flag)))
(setq mode-line-process (format "[%s]" sh-shell))
- (set (make-local-variable 'sh-shell-variables) nil)
- (set (make-local-variable 'sh-shell-variables-initialized) nil)
- (set (make-local-variable 'imenu-generic-expression)
- (sh-feature sh-imenu-generic-expression))
+ (setq-local sh-shell-variables nil)
+ (setq-local sh-shell-variables-initialized nil)
+ (setq-local imenu-generic-expression
+ (sh-feature sh-imenu-generic-expression))
(let ((tem (sh-feature sh-mode-syntax-table-input)))
(when tem
- (set (make-local-variable 'sh-mode-syntax-table)
- (apply 'sh-mode-syntax-table tem))
+ (setq-local sh-mode-syntax-table
+ (apply 'sh-mode-syntax-table tem))
(set-syntax-table sh-mode-syntax-table)))
(dolist (var (sh-feature sh-variables))
(sh-remember-variable var))
- (if (set (make-local-variable 'sh-indent-supported-here)
- (sh-feature sh-indent-supported))
+ (if (setq-local sh-indent-supported-here
+ (sh-feature sh-indent-supported))
(progn
(message "Setting up indent for shell type %s" sh-shell)
(if sh-use-smie
@@ -2127,16 +2126,16 @@ Calls the value of `sh-set-shell-hook' if set."
(funcall mksym "rules")
:forward-token (funcall mksym "forward-token")
:backward-token (funcall mksym "backward-token")))
- (set (make-local-variable 'parse-sexp-lookup-properties) t)
- (set (make-local-variable 'sh-kw-alist) (sh-feature sh-kw))
+ (setq-local parse-sexp-lookup-properties t)
+ (setq-local sh-kw-alist (sh-feature sh-kw))
(let ((regexp (sh-feature sh-kws-for-done)))
(if regexp
- (set (make-local-variable 'sh-regexp-for-done)
- (sh-mkword-regexpr (regexp-opt regexp t)))))
+ (setq-local sh-regexp-for-done
+ (sh-mkword-regexpr (regexp-opt regexp t)))))
(message "setting up indent stuff")
;; sh-mode has already made indent-line-function local
;; but do it in case this is called before that.
- (set (make-local-variable 'indent-line-function) 'sh-indent-line))
+ (setq-local indent-line-function 'sh-indent-line))
(if sh-make-vars-local
(sh-make-vars-local))
(message "Indentation setup for shell type %s" sh-shell))
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index d84d57cad22..22ba55d9a08 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -1,4 +1,4 @@
-;;; sql.el --- specialized comint.el for SQL interpreters
+;;; sql.el --- specialized comint.el for SQL interpreters -*- lexical-binding: t -*-
;; Copyright (C) 1998-2012 Free Software Foundation, Inc.
@@ -80,14 +80,6 @@
;; Hint for newbies: take a look at `dabbrev-expand', `abbrev-mode', and
;; `imenu-add-menubar-index'.
-;;; Requirements for Emacs 19.34:
-
-;; If you are using Emacs 19.34, you will have to get and install
-;; the file regexp-opt.el
-;; <URL:ftp://ftp.ifi.uio.no/pub/emacs/emacs-20.3/lisp/emacs-lisp/regexp-opt.el>
-;; and the custom package
-;; <URL:http://www.dina.kvl.dk/~abraham/custom/>.
-
;;; Bugs:
;; sql-ms now uses osql instead of isql. Osql flushes its error
@@ -169,15 +161,17 @@
;;
;; ;; Do something with `sql-user', `sql-password',
;; ;; `sql-database', and `sql-server'.
-;; (let ((params options))
-;; (if (not (string= "" sql-server))
-;; (setq params (append (list "-S" sql-server) params)))
-;; (if (not (string= "" sql-database))
-;; (setq params (append (list "-D" sql-database) params)))
-;; (if (not (string= "" sql-password))
-;; (setq params (append (list "-P" sql-password) params)))
+;; (let ((params
+;; (append
;; (if (not (string= "" sql-user))
-;; (setq params (append (list "-U" sql-user) params)))
+;; (list "-U" sql-user))
+;; (if (not (string= "" sql-password))
+;; (list "-P" sql-password))
+;; (if (not (string= "" sql-database))
+;; (list "-D" sql-database))
+;; (if (not (string= "" sql-server))
+;; (list "-S" sql-server))
+;; options)))
;; (sql-comint product params)))
;;
;; (sql-set-product-feature 'xyz
@@ -229,22 +223,13 @@
;;; Code:
+(require 'cl-lib)
(require 'comint)
;; Need the following to allow GNU Emacs 19 to compile the file.
(eval-when-compile
(require 'regexp-opt))
(require 'custom)
(require 'thingatpt)
-(eval-when-compile ;; needed in Emacs 19, 20
- (setq max-specpdl-size (max max-specpdl-size 2000)))
-
-(defun sql-signum (n)
- "Return 1, 0, or -1 to identify the sign of N."
- (cond
- ((not (numberp n)) nil)
- ((< n 0) -1)
- ((> n 0) 1)
- (t 0)))
(defvar font-lock-keyword-face)
(defvar font-lock-set-defaults)
@@ -636,12 +621,14 @@ making new SQLi sessions."
(set
(group (const :tag "Product" sql-product)
(choice
- ,@(mapcar (lambda (prod-info)
- `(const :tag
- ,(or (plist-get (cdr prod-info) :name)
- (capitalize (symbol-name (car prod-info))))
- (quote ,(car prod-info))))
- sql-product-alist)))
+ ,@(mapcar
+ (lambda (prod-info)
+ `(const :tag
+ ,(or (plist-get (cdr prod-info) :name)
+ (capitalize
+ (symbol-name (car prod-info))))
+ (quote ,(car prod-info))))
+ sql-product-alist)))
(group (const :tag "Username" sql-user) string)
(group (const :tag "Password" sql-password) string)
(group (const :tag "Server" sql-server) string)
@@ -655,8 +642,8 @@ making new SQLi sessions."
:group 'SQL)
(defcustom sql-product 'ansi
- "Select the SQL database product used so that buffers can be
-highlighted properly when you open them."
+ "Select the SQL database product used.
+This allows highlighting buffers properly when you open them."
:type `(choice
,@(mapcar (lambda (prod-info)
`(const :tag
@@ -818,12 +805,11 @@ for the first time."
;; Customization for ANSI
-(defcustom sql-ansi-statement-starters (regexp-opt '(
- "create" "alter" "drop"
- "select" "insert" "update" "delete" "merge"
- "grant" "revoke"
-))
- "Regexp of keywords that start SQL commands
+(defcustom sql-ansi-statement-starters
+ (regexp-opt '("create" "alter" "drop"
+ "select" "insert" "update" "delete" "merge"
+ "grant" "revoke"))
+ "Regexp of keywords that start SQL commands.
All products share this list; products should define a regexp to
identify additional keywords in a variable defined by
@@ -1167,10 +1153,10 @@ You can change `sql-prompt-length' on `sql-interactive-mode-hook'.")
Used by `sql-rename-buffer'.")
(defun sql-buffer-live-p (buffer &optional product connection)
- "Returns non-nil if the process associated with buffer is live.
+ "Return non-nil if the process associated with buffer is live.
BUFFER can be a buffer object or a buffer name. The buffer must
-be a live buffer, have an running process attached to it, be in
+be a live buffer, have a running process attached to it, be in
`sql-interactive-mode', and, if PRODUCT or CONNECTION are
specified, it's `sql-product' or `sql-connection' must match."
@@ -1178,7 +1164,6 @@ specified, it's `sql-product' or `sql-connection' must match."
(setq buffer (get-buffer buffer))
(and buffer
(buffer-live-p buffer)
- (get-buffer-process buffer)
(comint-check-proc buffer)
(with-current-buffer buffer
(and (derived-mode-p 'sql-interactive-mode)
@@ -1287,27 +1272,15 @@ Based on `comint-mode-map'.")
;; Abbreviations -- if you want more of them, define them in your init
;; file. Abbrevs have to be enabled in your init file, too.
-(defvar sql-mode-abbrev-table nil
+(define-abbrev-table 'sql-mode-abbrev-table
+ '(("ins" "insert" nil nil t)
+ ("upd" "update" nil nil t)
+ ("del" "delete" nil nil t)
+ ("sel" "select" nil nil t)
+ ("proc" "procedure" nil nil t)
+ ("func" "function" nil nil t)
+ ("cr" "create" nil nil t))
"Abbrev table used in `sql-mode' and `sql-interactive-mode'.")
-(unless sql-mode-abbrev-table
- (define-abbrev-table 'sql-mode-abbrev-table nil))
-
-(mapc
- ;; In Emacs 22+, provide SYSTEM-FLAG to define-abbrev.
- (lambda (abbrev)
- (let ((name (car abbrev))
- (expansion (cdr abbrev)))
- (condition-case nil
- (define-abbrev sql-mode-abbrev-table name expansion nil 0 t)
- (error
- (define-abbrev sql-mode-abbrev-table name expansion)))))
- '(("ins" . "insert")
- ("upd" . "update")
- ("del" . "delete")
- ("sel" . "select")
- ("proc" . "procedure")
- ("func" . "function")
- ("cr" . "create")))
;; Syntax Table
@@ -1530,9 +1503,8 @@ function `regexp-opt'. Therefore, take a look at the source before
you define your own `sql-mode-ansi-font-lock-keywords'. You may want
to add functions and PL/SQL keywords.")
-(defun sql-oracle-show-reserved-words ()
+(defun sql--oracle-show-reserved-words ()
;; This function is for use by the maintainer of SQL.EL only.
- (interactive)
(if (or (and (not (derived-mode-p 'sql-mode))
(not (derived-mode-p 'sql-interactive-mode)))
(not sql-buffer)
@@ -2611,14 +2583,12 @@ adds a fontification pattern to fontify identifiers ending in
(append keywords old-val))))))
(defun sql-for-each-login (login-params body)
- "Iterates through login parameters and returns a list of results."
-
+ "Iterate through login parameters and return a list of results."
(delq nil
(mapcar
(lambda (param)
- (let ((token (or (and (listp param) (car param)) param))
- (plist (or (and (listp param) (cdr param)) nil)))
-
+ (let ((token (or (car-safe param) param))
+ (plist (cdr-safe param)))
(funcall body token plist)))
login-params)))
@@ -2682,6 +2652,34 @@ matching the regular expression `comint-prompt-regexp', a buffer
local variable."
(save-excursion (comint-bol nil) (point))))
+;;; SMIE support
+
+;; Needs a lot more love than I can provide. --Stef
+
+;; (require 'smie)
+
+;; (defconst sql-smie-grammar
+;; (smie-prec2->grammar
+;; (smie-bnf->prec2
+;; ;; Partly based on http://www.h2database.com/html/grammar.html
+;; '((cmd ("SELECT" select-exp "FROM" select-table-exp)
+;; )
+;; (select-exp ("*") (exp) (exp "AS" column-alias))
+;; (column-alias)
+;; (select-table-exp (table-exp "WHERE" exp) (table-exp))
+;; (table-exp)
+;; (exp ("CASE" exp "WHEN" exp "THEN" exp "ELSE" exp "END")
+;; ("CASE" exp "WHEN" exp "THEN" exp "END"))
+;; ;; Random ad-hoc additions.
+;; (foo (foo "," foo))
+;; )
+;; '((assoc ",")))))
+
+;; (defun sql-smie-rules (kind token)
+;; (pcase (cons kind token)
+;; (`(:list-intro . ,_) t)
+;; (`(:before . "(") (smie-rule-parent))))
+
;;; Motion Functions
(defun sql-statement-regexp (prod)
@@ -2694,7 +2692,7 @@ local variable."
"\\>")))
(defun sql-beginning-of-statement (arg)
- "Moves the cursor to the beginning of the current SQL statement."
+ "Move to the beginning of the current SQL statement."
(interactive "p")
(let ((here (point))
@@ -2721,10 +2719,10 @@ local variable."
(beginning-of-line)
;; If we didn't move, try again
(when (= here (point))
- (sql-beginning-of-statement (* 2 (sql-signum arg))))))
+ (sql-beginning-of-statement (* 2 (cl-signum arg))))))
(defun sql-end-of-statement (arg)
- "Moves the cursor to the end of the current SQL statement."
+ "Move to the end of the current SQL statement."
(interactive "p")
(let ((term (sql-get-product-feature sql-product :terminator))
(re-search (if (> 0 arg) 're-search-backward 're-search-forward))
@@ -2733,7 +2731,7 @@ local variable."
(when (consp term)
(setq term (car term)))
;; Iterate until we've moved the desired number of stmt ends
- (while (not (= (sql-signum arg) 0))
+ (while (not (= (cl-signum arg) 0))
;; if we're looking at the terminator, jump by 2
(if (or (and (> 0 arg) (looking-back term))
(and (< 0 arg) (looking-at term)))
@@ -2744,7 +2742,7 @@ local variable."
(setq arg 0)
;; count it if we're not in a comment
(unless (nth 7 (syntax-ppss))
- (setq arg (- arg (sql-signum arg))))))
+ (setq arg (- arg (cl-signum arg))))))
(goto-char (if (match-data)
(match-end 0)
here))))
@@ -2857,10 +2855,6 @@ appended to the SQLi buffer without disturbing your SQL buffer."
t t doc 0)))
doc)
-(defun sql-read-passwd (prompt &optional default)
- "Read a password using PROMPT. Optional DEFAULT is password to start with."
- (read-passwd prompt nil default))
-
(defun sql-get-login-ext (symbol prompt history-var plist)
"Prompt user with extended login parameters.
@@ -2912,8 +2906,7 @@ value. (The property value is used as the PREDICATE argument to
(read-number prompt (or default last-value 0)))
(t
- (let ((r (read-from-minibuffer prompt-def last-value nil nil history-var nil)))
- (if (string= "" r) (or default "") r)))))))
+ (read-string prompt-def last-value history-var default))))))
(defun sql-get-login (&rest what)
"Get username, password and database from the user.
@@ -2943,32 +2936,29 @@ supported:
In order to ask the user for username, password and database, call the
function like this: (sql-get-login 'user 'password 'database)."
- (interactive)
- (mapcar
- (lambda (w)
- (let ((token (or (and (consp w) (car w)) w))
- (plist (or (and (consp w) (cdr w)) nil)))
-
- (cond
- ((eq token 'user) ; user
- (sql-get-login-ext 'sql-user "User: " 'sql-user-history plist))
+ (dolist (w what)
+ (let ((plist (cdr-safe w)))
+ (pcase (or (car-safe w) w)
+ (`user
+ (sql-get-login-ext 'sql-user "User: " 'sql-user-history plist))
- ((eq token 'password) ; password
- (setq-default sql-password
- (sql-read-passwd "Password: " sql-password)))
+ (`password
+ (setq-default sql-password
+ (read-passwd "Password: " nil sql-password)))
- ((eq token 'server) ; server
- (sql-get-login-ext 'sql-server "Server: " 'sql-server-history plist))
+ (`server
+ (sql-get-login-ext 'sql-server "Server: " 'sql-server-history plist))
- ((eq token 'database) ; database
- (sql-get-login-ext 'sql-database "Database: " 'sql-database-history plist))
+ (`database
+ (sql-get-login-ext 'sql-database "Database: "
+ 'sql-database-history plist))
- ((eq token 'port) ; port
- (sql-get-login-ext 'sql-port "Port: " nil (append '(:number t) plist))))))
- what))
+ (`port
+ (sql-get-login-ext 'sql-port "Port: "
+ nil (append '(:number t) plist)))))))
(defun sql-find-sqli-buffer (&optional product connection)
- "Returns the name of the current default SQLi buffer or nil.
+ "Return the name of the current default SQLi buffer or nil.
In order to qualify, the SQLi buffer must be alive, be in
`sql-interactive-mode' and have a process."
(let ((buf sql-buffer)
@@ -3072,29 +3062,29 @@ server/database name."
(sql-for-each-login
(sql-get-product-feature sql-product :sqli-login)
(lambda (token plist)
- (cond
- ((eq token 'user)
+ (pcase token
+ (`user
(unless (string= "" sql-user)
(list "/" sql-user)))
- ((eq token 'port)
+ (`port
(unless (or (not (numberp sql-port))
(= 0 sql-port))
(list ":" (number-to-string sql-port))))
- ((eq token 'server)
+ (`server
(unless (string= "" sql-server)
(list "."
(if (plist-member plist :file)
(file-name-nondirectory sql-server)
sql-server))))
- ((eq token 'database)
+ (`database
(unless (string= "" sql-database)
(list "@"
(if (plist-member plist :file)
(file-name-nondirectory sql-database)
sql-database))))
- ((eq token 'password) nil)
- (t nil))))))))
+ ;; (`password nil)
+ (_ nil))))))))
;; If there's a connection, use it and the name thus far
(if sql-connection
@@ -3527,7 +3517,7 @@ for each match."
(nreverse results)))
(defun sql-execute (sqlbuf outbuf command enhanced arg)
- "Executes a command in a SQL interactive buffer and captures the output.
+ "Execute a command in a SQL interactive buffer and capture the output.
The commands are run in SQLBUF and the output saved in OUTBUF.
COMMAND must be a string, a function or a list of such elements.
@@ -3535,7 +3525,7 @@ Functions are called with SQLBUF, OUTBUF and ARG as parameters;
strings are formatted with ARG and executed.
If the results are empty the OUTBUF is deleted, otherwise the
-buffer is popped into a view window. "
+buffer is popped into a view window."
(mapc
(lambda (c)
(cond
@@ -3600,43 +3590,35 @@ The list is maintained in SQL interactive buffers.")
(defvar sql-completion-sqlbuf nil)
-(defun sql-try-completion (string collection &optional predicate)
+(defun sql--completion-table (string pred action)
(when sql-completion-sqlbuf
- (with-current-buffer sql-completion-sqlbuf
- (let ((schema (and (string-match "\\`\\(\\sw\\(:?\\sw\\|\\s_\\)*\\)[.]" string)
- (downcase (match-string 1 string)))))
-
- ;; If we haven't loaded any object name yet, load local schema
- (unless sql-completion-object
- (sql-build-completions nil))
-
- ;; If they want another schema, load it if we haven't yet
- (when schema
- (let ((schema-dot (concat schema "."))
- (schema-len (1+ (length schema)))
- (names sql-completion-object)
- has-schema)
-
- (while (and (not has-schema) names)
- (setq has-schema (and
- (>= (length (car names)) schema-len)
- (string= schema-dot
- (downcase (substring (car names)
- 0 schema-len))))
- names (cdr names)))
- (unless has-schema
- (sql-build-completions schema)))))
-
- ;; Try to find the completion
- (cond
- ((not predicate)
- (try-completion string sql-completion-object))
- ((eq predicate t)
- (all-completions string sql-completion-object))
- ((eq predicate 'lambda)
- (test-completion string sql-completion-object))
- ((eq (car predicate) 'boundaries)
- (completion-boundaries string sql-completion-object nil (cdr predicate)))))))
+ (with-current-buffer sql-completion-sqlbuf
+ (let ((schema (and (string-match "\\`\\(\\sw\\(:?\\sw\\|\\s_\\)*\\)[.]" string)
+ (downcase (match-string 1 string)))))
+
+ ;; If we haven't loaded any object name yet, load local schema
+ (unless sql-completion-object
+ (sql-build-completions nil))
+
+ ;; If they want another schema, load it if we haven't yet
+ (when schema
+ (let ((schema-dot (concat schema "."))
+ (schema-len (1+ (length schema)))
+ (names sql-completion-object)
+ has-schema)
+
+ (while (and (not has-schema) names)
+ (setq has-schema (and
+ (>= (length (car names)) schema-len)
+ (string= schema-dot
+ (downcase (substring (car names)
+ 0 schema-len))))
+ names (cdr names)))
+ (unless has-schema
+ (sql-build-completions schema)))))
+
+ ;; Try to find the completion
+ (complete-with-action action sql-completion-object string pred))))
(defun sql-read-table-name (prompt)
"Read the name of a database table."
@@ -3652,7 +3634,7 @@ The list is maintained in SQL interactive buffers.")
(completion-ignore-case t))
(if (sql-get-product-feature product :completion-object)
- (completing-read prompt (function sql-try-completion)
+ (completing-read prompt #'sql--completion-table
nil nil tname)
(read-from-minibuffer prompt tname))))
@@ -3720,6 +3702,7 @@ must tell Emacs. Here's how to do that in your init file:
(if sql-mode-menu
(easy-menu-add sql-mode-menu)); XEmacs
+ ;; (smie-setup sql-smie-grammar #'sql-smie-rules)
(set (make-local-variable 'comment-start) "--")
;; Make each buffer in sql-mode remember the "current" SQLi buffer.
(make-local-variable 'sql-buffer)
@@ -3733,7 +3716,7 @@ must tell Emacs. Here's how to do that in your init file:
(set (make-local-variable 'paragraph-separate) "[\f]*$")
(set (make-local-variable 'paragraph-start) "[\n\f]")
;; Abbrevs
- (setq abbrev-all-caps 1)
+ (setq-local abbrev-all-caps 1)
;; Contains the name of database objects
(set (make-local-variable 'sql-contains-names) t)
;; Catch changes to sql-product and highlight accordingly
@@ -3959,13 +3942,13 @@ is specified in the connection settings."
(setq set-params
(mapcar
(lambda (v)
- (cond
- ((eq (car v) 'sql-user) 'user)
- ((eq (car v) 'sql-password) 'password)
- ((eq (car v) 'sql-server) 'server)
- ((eq (car v) 'sql-database) 'database)
- ((eq (car v) 'sql-port) 'port)
- (t (car v))))
+ (pcase (car v)
+ (`sql-user 'user)
+ (`sql-password 'password)
+ (`sql-server 'server)
+ (`sql-database 'database)
+ (`sql-port 'port)
+ (s s)))
(cdr connect-set)))
;; the remaining params (w/o the connection params)
@@ -3984,7 +3967,7 @@ is specified in the connection settings."
;; Start the SQLi session with revised list of login parameters
(eval `(let ((,param-var ',rem-params))
- (sql-product-interactive sql-product new-name))))
+ (sql-product-interactive ',sql-product ',new-name))))
(message "SQL Connection <%s> does not exist" connection)
nil)))
@@ -4028,16 +4011,16 @@ optionally is saved to the user's init file."
(if (assoc name alist)
(message "Connection <%s> already exists" name)
(setq connect
- (append (list name)
- (sql-for-each-login
- `(product ,@login)
- (lambda (token _plist)
- (cond
- ((eq token 'product) `(sql-product ',product))
- ((eq token 'user) `(sql-user ,user))
- ((eq token 'database) `(sql-database ,database))
- ((eq token 'server) `(sql-server ,server))
- ((eq token 'port) `(sql-port ,port)))))))
+ (cons name
+ (sql-for-each-login
+ `(product ,@login)
+ (lambda (token _plist)
+ (pcase token
+ (`product `(sql-product ',product))
+ (`user `(sql-user ,user))
+ (`database `(sql-database ,database))
+ (`server `(sql-server ,server))
+ (`port `(sql-port ,port)))))))
(setq alist (append alist (list connect)))
@@ -4047,7 +4030,7 @@ optionally is saved to the user's init file."
(customize-set-variable 'sql-connection-alist alist)))))))
(defun sql-connection-menu-filter (tail)
- "Generates menu entries for using each connection."
+ "Generate menu entries for using each connection."
(append
(mapcar
(lambda (conn)
@@ -4114,7 +4097,8 @@ the call to \\[sql-product-interactive] with
new-sqli-buffer)
;; Get credentials.
- (apply 'sql-get-login (sql-get-product-feature product :sqli-login))
+ (apply #'sql-get-login
+ (sql-get-product-feature product :sqli-login))
;; Connect to database.
(message "Login...")
@@ -4225,7 +4209,7 @@ The default comes from `process-coding-system-alist' and
(sql-comint product parameter)))
(defun sql-oracle-save-settings (sqlbuf)
- "Saves most SQL*Plus settings so they may be reset by \\[sql-redirect]."
+ "Save most SQL*Plus settings so they may be reset by \\[sql-redirect]."
;; Note: does not capture the following settings:
;;
;; APPINFO
@@ -4297,7 +4281,7 @@ The default comes from `process-coding-system-alist' and
;; Restore the changed settings
(sql-redirect sqlbuf saved-settings))
-(defun sql-oracle-list-all (sqlbuf outbuf enhanced table-name)
+(defun sql-oracle-list-all (sqlbuf outbuf enhanced _table-name)
;; Query from USER_OBJECTS or ALL_OBJECTS
(let ((settings (sql-oracle-save-settings sqlbuf))
(simple-sql
@@ -4336,7 +4320,7 @@ The default comes from `process-coding-system-alist' and
(sql-oracle-restore-settings sqlbuf settings)))
-(defun sql-oracle-list-table (sqlbuf outbuf enhanced table-name)
+(defun sql-oracle-list-table (sqlbuf outbuf _enhanced table-name)
"Implements :list-table under Oracle."
(let ((settings (sql-oracle-save-settings sqlbuf)))
@@ -4413,15 +4397,17 @@ The default comes from `process-coding-system-alist' and
"Create comint buffer and connect to Sybase."
;; Put all parameters to the program (if defined) in a list and call
;; make-comint.
- (let ((params options))
- (if (not (string= "" sql-server))
- (setq params (append (list "-S" sql-server) params)))
- (if (not (string= "" sql-database))
- (setq params (append (list "-D" sql-database) params)))
- (if (not (string= "" sql-password))
- (setq params (append (list "-P" sql-password) params)))
- (if (not (string= "" sql-user))
- (setq params (append (list "-U" sql-user) params)))
+ (let ((params
+ (append
+ (if (not (string= "" sql-user))
+ (list "-U" sql-user))
+ (if (not (string= "" sql-password))
+ (list "-P" sql-password))
+ (if (not (string= "" sql-database))
+ (list "-D" sql-database))
+ (if (not (string= "" sql-server))
+ (list "-S" sql-server))
+ options)))
(sql-comint product params)))
@@ -4506,14 +4492,13 @@ The default comes from `process-coding-system-alist' and
"Create comint buffer and connect to SQLite."
;; Put all parameters to the program (if defined) in a list and call
;; make-comint.
- (let ((params))
- (if (not (string= "" sql-database))
- (setq params (append (list (expand-file-name sql-database))
- params)))
- (setq params (append options params))
+ (let ((params
+ (append options
+ (if (not (string= "" sql-database))
+ `(,(expand-file-name sql-database))))))
(sql-comint product params)))
-(defun sql-sqlite-completion-object (sqlbuf schema)
+(defun sql-sqlite-completion-object (sqlbuf _schema)
(sql-redirect-value sqlbuf ".tables" "\\sw\\(?:\\sw\\|\\s_\\)*" 0))
@@ -4556,18 +4541,19 @@ The default comes from `process-coding-system-alist' and
"Create comint buffer and connect to MySQL."
;; Put all parameters to the program (if defined) in a list and call
;; make-comint.
- (let ((params))
- (if (not (string= "" sql-database))
- (setq params (append (list sql-database) params)))
- (if (not (string= "" sql-server))
- (setq params (append (list (concat "--host=" sql-server)) params)))
- (if (not (= 0 sql-port))
- (setq params (append (list (concat "--port=" (number-to-string sql-port))) params)))
- (if (not (string= "" sql-password))
- (setq params (append (list (concat "--password=" sql-password)) params)))
- (if (not (string= "" sql-user))
- (setq params (append (list (concat "--user=" sql-user)) params)))
- (setq params (append options params))
+ (let ((params
+ (append
+ options
+ (if (not (string= "" sql-user))
+ (list (concat "--user=" sql-user)))
+ (if (not (string= "" sql-password))
+ (list (concat "--password=" sql-password)))
+ (if (not (= 0 sql-port))
+ (list (concat "--port=" (number-to-string sql-port))))
+ (if (not (string= "" sql-server))
+ (list (concat "--host=" sql-server)))
+ (if (not (string= "" sql-database))
+ (list sql-database)))))
(sql-comint product params)))
@@ -4607,13 +4593,15 @@ The default comes from `process-coding-system-alist' and
"Create comint buffer and connect to Solid."
;; Put all parameters to the program (if defined) in a list and call
;; make-comint.
- (let ((params options))
- ;; It only makes sense if both username and password are there.
- (if (not (or (string= "" sql-user)
- (string= "" sql-password)))
- (setq params (append (list sql-user sql-password) params)))
- (if (not (string= "" sql-server))
- (setq params (append (list sql-server) params)))
+ (let ((params
+ (append
+ (if (not (string= "" sql-server))
+ (list sql-server))
+ ;; It only makes sense if both username and password are there.
+ (if (not (or (string= "" sql-user)
+ (string= "" sql-password)))
+ (list sql-user sql-password))
+ options)))
(sql-comint product params)))
@@ -4695,22 +4683,25 @@ The default comes from `process-coding-system-alist' and
"Create comint buffer and connect to Microsoft SQL Server."
;; Put all parameters to the program (if defined) in a list and call
;; make-comint.
- (let ((params options))
- (if (not (string= "" sql-server))
- (setq params (append (list "-S" sql-server) params)))
- (if (not (string= "" sql-database))
- (setq params (append (list "-d" sql-database) params)))
- (if (not (string= "" sql-user))
- (setq params (append (list "-U" sql-user) params)))
- (if (not (string= "" sql-password))
- (setq params (append (list "-P" sql-password) params))
- (if (string= "" sql-user)
- ;; if neither user nor password is provided, use system
- ;; credentials.
- (setq params (append (list "-E") params))
- ;; If -P is passed to ISQL as the last argument without a
- ;; password, it's considered null.
- (setq params (append params (list "-P")))))
+ (let ((params
+ (append
+ (if (not (string= "" sql-user))
+ (list "-U" sql-user))
+ (if (not (string= "" sql-database))
+ (list "-d" sql-database))
+ (if (not (string= "" sql-server))
+ (list "-S" sql-server))
+ options)))
+ (setq params
+ (if (not (string= "" sql-password))
+ `("-P" ,sql-password ,@params)
+ (if (string= "" sql-user)
+ ;; If neither user nor password is provided, use system
+ ;; credentials.
+ `("-E" ,@params)
+ ;; If -P is passed to ISQL as the last argument without a
+ ;; password, it's considered null.
+ `(,@params "-P"))))
(sql-comint product params)))
@@ -4754,48 +4745,58 @@ Try to set `comint-output-filter-functions' like this:
(defun sql-comint-postgres (product options)
"Create comint buffer and connect to Postgres."
- ;; username and password are ignored. Mark Stosberg suggest to add
- ;; the database at the end. Jason Beegan suggest using --pset and
+ ;; username and password are ignored. Mark Stosberg suggests to add
+ ;; the database at the end. Jason Beegan suggests using --pset and
;; pager=off instead of \\o|cat. The later was the solution by
;; Gregor Zych. Jason's suggestion is the default value for
;; sql-postgres-options.
- (let ((params options))
- (if (not (string= "" sql-database))
- (setq params (append params (list sql-database))))
- (if (not (string= "" sql-server))
- (setq params (append (list "-h" sql-server) params)))
- (if (not (string= "" sql-user))
- (setq params (append (list "-U" sql-user) params)))
- (if (not (= 0 sql-port))
- (setq params (append (list "-p" (number-to-string sql-port)) params)))
+ (let ((params
+ (append
+ (if (not (= 0 sql-port))
+ (list "-p" (number-to-string sql-port)))
+ (if (not (string= "" sql-user))
+ (list "-U" sql-user))
+ (if (not (string= "" sql-server))
+ (list "-h" sql-server))
+ options
+ (if (not (string= "" sql-database))
+ (list sql-database)))))
(sql-comint product params)))
(defun sql-postgres-completion-object (sqlbuf schema)
- (let (cl re fs a r)
- (sql-redirect sqlbuf "\\t on")
- (setq a (car (sql-redirect-value sqlbuf "\\a" "Output format is \\(.*\\)[.]$" 1)))
- (when (string= a "aligned")
- (sql-redirect sqlbuf "\\a"))
- (setq fs (or (car (sql-redirect-value sqlbuf "\\f" "Field separator is \"\\(.\\)[.]$" 1)) "|"))
-
- (setq re (concat "^\\([^" fs "]*\\)" fs "\\([^" fs "]*\\)" fs "[^" fs "]*" fs "[^" fs "]*$"))
- (setq cl (if (not schema)
- (sql-redirect-value sqlbuf "\\d" re '(1 2))
- (append (sql-redirect-value sqlbuf (format "\\dt %s.*" schema) re '(1 2))
- (sql-redirect-value sqlbuf (format "\\dv %s.*" schema) re '(1 2))
- (sql-redirect-value sqlbuf (format "\\ds %s.*" schema) re '(1 2)))))
-
- ;; Restore tuples and alignment to what they were
- (sql-redirect sqlbuf "\\t off")
- (when (not (string= a "aligned"))
+ (sql-redirect sqlbuf "\\t on")
+ (let ((aligned
+ (string= "aligned"
+ (car (sql-redirect-value
+ sqlbuf "\\a"
+ "Output format is \\(.*\\)[.]$" 1)))))
+ (when aligned
(sql-redirect sqlbuf "\\a"))
-
- ;; Return the list of table names (public schema name can be omitted)
- (mapcar (lambda (tbl)
- (if (string= (car tbl) "public")
- (cadr tbl)
- (format "%s.%s" (car tbl) (cadr tbl))))
- cl)))
+ (let* ((fs (or (car (sql-redirect-value
+ sqlbuf "\\f" "Field separator is \"\\(.\\)[.]$" 1))
+ "|"))
+ (re (concat "^\\([^" fs "]*\\)" fs "\\([^" fs "]*\\)"
+ fs "[^" fs "]*" fs "[^" fs "]*$"))
+ (cl (if (not schema)
+ (sql-redirect-value sqlbuf "\\d" re '(1 2))
+ (append (sql-redirect-value
+ sqlbuf (format "\\dt %s.*" schema) re '(1 2))
+ (sql-redirect-value
+ sqlbuf (format "\\dv %s.*" schema) re '(1 2))
+ (sql-redirect-value
+ sqlbuf (format "\\ds %s.*" schema) re '(1 2))))))
+
+ ;; Restore tuples and alignment to what they were.
+ (sql-redirect sqlbuf "\\t off")
+ (when (not aligned)
+ (sql-redirect sqlbuf "\\a"))
+
+ ;; Return the list of table names (public schema name can be omitted)
+ (mapcar (lambda (tbl)
+ (if (string= (car tbl) "public")
+ (cadr tbl)
+ (format "%s.%s" (car tbl) (cadr tbl))))
+ cl))))
@@ -4834,13 +4835,15 @@ The default comes from `process-coding-system-alist' and
"Create comint buffer and connect to Interbase."
;; Put all parameters to the program (if defined) in a list and call
;; make-comint.
- (let ((params options))
- (if (not (string= "" sql-user))
- (setq params (append (list "-u" sql-user) params)))
- (if (not (string= "" sql-password))
- (setq params (append (list "-p" sql-password) params)))
- (if (not (string= "" sql-database))
- (setq params (cons sql-database params))) ; add to the front!
+ (let ((params
+ (append
+ (if (not (string= "" sql-database))
+ (list sql-database)) ; Add to the front!
+ (if (not (string= "" sql-password))
+ (list "-p" sql-password))
+ (if (not (string= "" sql-user))
+ (list "-u" sql-user))
+ options)))
(sql-comint product params)))
@@ -4922,19 +4925,18 @@ buffer.
"Create comint buffer and connect to Linter."
;; Put all parameters to the program (if defined) in a list and call
;; make-comint.
- (let ((params options)
- (login nil)
- (old-mbx (getenv "LINTER_MBX")))
- (if (not (string= "" sql-user))
- (setq login (concat sql-user "/" sql-password)))
- (setq params (append (list "-u" login) params))
- (if (not (string= "" sql-server))
- (setq params (append (list "-n" sql-server) params)))
- (if (string= "" sql-database)
- (setenv "LINTER_MBX" nil)
- (setenv "LINTER_MBX" sql-database))
- (sql-comint product params)
- (setenv "LINTER_MBX" old-mbx)))
+ (let* ((login
+ (if (not (string= "" sql-user))
+ (concat sql-user "/" sql-password)))
+ (params
+ (append
+ (if (not (string= "" sql-server))
+ (list "-n" sql-server))
+ (list "-u" login)
+ options)))
+ (cl-letf (((getenv "LINTER_MBX")
+ (unless (string= "" sql-database) sql-database)))
+ (sql-comint product params))))
diff --git a/lisp/ses.el b/lisp/ses.el
index a0b69232e19..80260185942 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -2718,8 +2718,9 @@ inserts a new row if at bottom of print area. Repeat COUNT times."
;; Cut and paste, import and export
;;----------------------------------------------------------------------------
-(defadvice copy-region-as-kill (around ses-copy-region-as-kill
- activate preactivate)
+(defun ses--advice-copy-region-as-kill (crak-fun beg end &rest args)
+ ;; FIXME: Why doesn't it make sense to copy read-only or
+ ;; intangible attributes? They're removed upon yank!
"It doesn't make sense to copy read-only or intangible attributes into the
kill ring. It probably doesn't make sense to copy keymap properties.
We'll assume copying front-sticky properties doesn't make sense, either.
@@ -2730,14 +2731,15 @@ hard to override how mouse-1 works."
(let ((temp beg))
(setq beg end
end temp)))
- (if (not (and (eq major-mode 'ses-mode)
+ (if (not (and (derived-mode-p 'ses-mode)
(eq (get-text-property beg 'read-only) 'ses)
(eq (get-text-property (1- end) 'read-only) 'ses)))
- ad-do-it ; Normal copy-region-as-kill.
+ (apply crak-fun beg end args) ; Normal copy-region-as-kill.
(kill-new (ses-copy-region beg end))
(if transient-mark-mode
(setq deactivate-mark t))
nil))
+(advice-add 'copy-region-as-kill :around #'ses--advice-copy-region-as-kill)
(defun ses-copy-region (beg end)
"Treat the region as rectangular. Convert the intangible attributes to
@@ -2801,7 +2803,7 @@ We clear the killed cells instead of deleting them."
(ses-clear-cell row col))
(ses-jump (car ses--curcell)))
-(defadvice yank (around ses-yank activate preactivate)
+(defun ses--advice-yank (yank-fun &optional arg &rest args)
"In SES mode, the yanked text is inserted as cells.
If the text contains 'ses attributes (meaning it went to the kill-ring from a
@@ -2819,9 +2821,9 @@ When inserting formulas, the text is treated as a string constant if it doesn't
make sense as a sexp or would otherwise be considered a symbol. Use 'sym to
explicitly insert a symbol, or use the C-u prefix to treat all unmarked words
as symbols."
- (if (not (and (eq major-mode 'ses-mode)
+ (if (not (and (derived-mode-p 'ses-mode)
(eq (get-text-property (point) 'keymap) 'ses-mode-print-map)))
- ad-do-it ; Normal non-SES yank.
+ (apply yank-fun arg args) ; Normal non-SES yank.
(ses-check-curcell 'end)
(push-mark (point))
(let ((text (current-kill (cond
@@ -2839,6 +2841,7 @@ as symbols."
arg)))
(if (consp arg)
(exchange-point-and-mark))))
+(advice-add 'yank :around #'ses--advice-yank)
(defun ses-yank-pop (arg)
"Replace just-yanked stretch of killed text with a different stretch.
@@ -3586,10 +3589,9 @@ current column and continues until the next nonblank column."
(defun ses-unload-function ()
"Unload the Simple Emacs Spreadsheet."
- (dolist (fun '(copy-region-as-kill yank))
- (ad-remove-advice fun 'around (intern (concat "ses-" (symbol-name fun))))
- (ad-update fun))
- ;; continue standard unloading
+ (advice-remove 'yank #'ses--advice-yank)
+ (advice-remove 'copy-region-as-kill #'ses--advice-copy-region-as-kill)
+ ;; Continue standard unloading.
nil)
(provide 'ses)
diff --git a/lisp/shell.el b/lisp/shell.el
index 77a42389785..fc8f3dfb940 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -561,10 +561,8 @@ buffer."
;; very inefficient in Shell buffers (e.g. Bug#10835). We use a
;; custom `ansi-color-apply-face-function' to convert color escape
;; sequences into `font-lock-face' properties.
- (set (make-local-variable 'ansi-color-apply-face-function)
- (lambda (beg end face)
- (when face
- (put-text-property beg end 'font-lock-face face))))
+ (setq-local ansi-color-apply-face-function #'shell-apply-ansi-color)
+ (shell-reapply-ansi-color)
;; This is not really correct, since the shell buffer does not really
;; edit this directory. But it is useful in the buffer list and menus.
@@ -603,6 +601,27 @@ buffer."
'shell-filter-ctrl-a-ctrl-b nil t)))
(comint-read-input-ring t)))
+(defun shell-apply-ansi-color (beg end face)
+ "Apply FACE as the ansi-color face for the text between BEG and END."
+ (when face
+ (put-text-property beg end 'ansi-color-face face)
+ (put-text-property beg end 'font-lock-face face)))
+
+(defun shell-reapply-ansi-color ()
+ "Reapply ansi-color faces to the existing contents of the buffer."
+ (save-restriction
+ (widen)
+ (let* ((pos (point-min))
+ (end (or (next-single-property-change pos 'ansi-color-face)
+ (point-max)))
+ face)
+ (while end
+ (if (setq face (get-text-property pos 'ansi-color-face))
+ (put-text-property pos (or end (point-max))
+ 'font-lock-face face))
+ (setq pos end
+ end (next-single-property-change pos 'ansi-color-face))))))
+
(defun shell-filter-ctrl-a-ctrl-b (string)
"Remove `^A' and `^B' characters from comint output.
@@ -671,7 +690,12 @@ Otherwise, one argument `-i' is passed to the shell.
(and current-prefix-arg
(prog1
(read-buffer "Shell buffer: "
- (generate-new-buffer-name "*shell*"))
+ ;; If the current buffer is an inactive
+ ;; shell buffer, use it as the default.
+ (if (and (eq major-mode 'shell-mode)
+ (null (get-buffer-process (current-buffer))))
+ (buffer-name)
+ (generate-new-buffer-name "*shell*")))
(if (file-remote-p default-directory)
;; It must be possible to declare a local default-directory.
;; FIXME: This can't be right: it changes the default-directory
diff --git a/lisp/simple.el b/lisp/simple.el
index 5867561da26..c86f367c8a8 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4012,7 +4012,8 @@ run `deactivate-mark-hook'."
(when (mark t)
(setq mark-active t)
(unless transient-mark-mode
- (setq transient-mark-mode 'lambda))))
+ (setq transient-mark-mode 'lambda))
+ (run-hooks 'activate-mark-hook)))
(defun set-mark (pos)
"Set this buffer's mark to POS. Don't use this function!
@@ -4332,14 +4333,14 @@ else--for example, incremental search, \\[beginning-of-buffer], and \\[end-of-bu
You can also deactivate the mark by typing \\[keyboard-quit] or
\\[keyboard-escape-quit].
-Many commands change their behavior when Transient Mark mode is in effect
-and the mark is active, by acting on the region instead of their usual
-default part of the buffer's text. Examples of such commands include
-\\[comment-dwim], \\[flush-lines], \\[keep-lines], \
+Many commands change their behavior when Transient Mark mode is
+in effect and the mark is active, by acting on the region instead
+of their usual default part of the buffer's text. Examples of
+such commands include \\[comment-dwim], \\[flush-lines], \\[keep-lines],
\\[query-replace], \\[query-replace-regexp], \\[ispell], and \\[undo].
-Invoke \\[apropos-documentation] and type \"transient\" or
-\"mark.*active\" at the prompt, to see the documentation of
-commands which are sensitive to the Transient Mark mode."
+To see the documentation of commands which are sensitive to the
+Transient Mark mode, invoke \\[apropos-documentation] and type \"transient\"
+or \"mark.*active\" at the prompt."
:global t
;; It's defined in C/cus-start, this stops the d-m-m macro defining it again.
:variable transient-mark-mode)
diff --git a/lisp/sort.el b/lisp/sort.el
index 44f90fff379..cd0b4433ab3 100644
--- a/lisp/sort.el
+++ b/lisp/sort.el
@@ -562,6 +562,62 @@ From a program takes two point or marker arguments, BEG and END."
(setq ll (cdr ll)))
(insert (car ll)))))
+;;;###autoload
+(defun delete-duplicate-lines (beg end &optional reverse adjacent interactive)
+ "Delete duplicate lines in the region between BEG and END.
+
+If REVERSE is nil, search and delete duplicates forward keeping the first
+occurrence of duplicate lines. If REVERSE is non-nil (when called
+interactively with C-u prefix), search and delete duplicates backward
+keeping the last occurrence of duplicate lines.
+
+If ADJACENT is non-nil (when called interactively with two C-u prefixes),
+delete repeated lines only if they are adjacent. It works like the utility
+`uniq' and is useful when lines are already sorted in a large file since
+this is more efficient in performance and memory usage than when ADJACENT
+is nil that uses additional memory to remember previous lines.
+
+When called from Lisp and INTERACTIVE is omitted or nil, return the number
+of deleted duplicate lines, do not print it; if INTERACTIVE is t, the
+function behaves in all respects as if it had been called interactively."
+ (interactive
+ (progn
+ (barf-if-buffer-read-only)
+ (list (region-beginning) (region-end)
+ (equal current-prefix-arg '(4))
+ (equal current-prefix-arg '(16))
+ t)))
+ (let ((lines (unless adjacent (make-hash-table :weakness 'key :test 'equal)))
+ line prev-line
+ (count 0)
+ (beg (copy-marker beg))
+ (end (copy-marker end)))
+ (save-excursion
+ (goto-char (if reverse end beg))
+ (if (and reverse (bolp)) (forward-char -1))
+ (while (if reverse
+ (and (> (point) beg) (not (bobp)))
+ (and (< (point) end) (not (eobp))))
+ (setq line (buffer-substring-no-properties
+ (line-beginning-position) (line-end-position)))
+ (if (if adjacent (equal line prev-line) (gethash line lines))
+ (progn
+ (delete-region (progn (forward-line 0) (point))
+ (progn (forward-line 1) (point)))
+ (if reverse (forward-line -1))
+ (setq count (1+ count)))
+ (if adjacent (setq prev-line line) (puthash line t lines))
+ (forward-line (if reverse -1 1)))))
+ (set-marker beg nil)
+ (set-marker end nil)
+ (when interactive
+ (message "Deleted %d %sduplicate line%s%s"
+ count
+ (if adjacent "adjacent " "")
+ (if (= count 1) "" "s")
+ (if reverse " backward" "")))
+ count))
+
(provide 'sort)
;;; sort.el ends here
diff --git a/lisp/startup.el b/lisp/startup.el
index 2e8b6b7f8c4..ec6d45a294d 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1569,27 +1569,24 @@ a face or button specification."
:face '(variable-pitch (:height 0.8))
emacs-copyright
"\n")
- (and auto-save-list-file-prefix
- ;; Don't signal an error if the
- ;; directory for auto-save-list files
- ;; does not yet exist.
- (file-directory-p (file-name-directory
- auto-save-list-file-prefix))
- (directory-files
- (file-name-directory auto-save-list-file-prefix)
- nil
- (concat "\\`"
- (regexp-quote (file-name-nondirectory
- auto-save-list-file-prefix)))
- t)
- (fancy-splash-insert :face '(variable-pitch font-lock-comment-face)
- "\nIf an Emacs session crashed recently, "
- "type "
- :face '(fixed-pitch font-lock-comment-face)
- "Meta-x recover-session RET"
- :face '(variable-pitch font-lock-comment-face)
- "\nto recover"
- " the files you were editing."))
+ (when auto-save-list-file-prefix
+ (let ((dir (file-name-directory auto-save-list-file-prefix))
+ (name (file-name-nondirectory auto-save-list-file-prefix))
+ files)
+ ;; Don't warn if the directory for auto-save-list files does not
+ ;; yet exist.
+ (and (file-directory-p dir)
+ (setq files (directory-files dir nil (concat "\\`" name) t))
+ (fancy-splash-insert :face '(variable-pitch font-lock-comment-face)
+ (if (= (length files) 1)
+ "\nAn auto-save file list was found. "
+ "\nAuto-save file lists were found. ")
+ "If an Emacs session crashed recently,\ntype "
+ :link `("M-x recover-session RET"
+ ,(lambda (_button)
+ (call-interactively
+ 'recover-session)))
+ " to recover the files you were editing."))))
(when concise
(fancy-splash-insert
diff --git a/lisp/subr.el b/lisp/subr.el
index c0479d35987..e08277370a9 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2622,13 +2622,14 @@ When the hook runs, the temporary buffer is current.
This hook is normally set up with a function to put the buffer in Help
mode.")
-;; Avoid compiler warnings about this variable,
-;; which has a special meaning on certain system types.
-(defvar buffer-file-type nil
+(defvar-local buffer-file-type nil
"Non-nil if the visited file is a binary file.
-This variable is meaningful on MS-DOG and Windows NT.
+This variable is meaningful on MS-DOG and MS-Windows.
On those systems, it is automatically local in every buffer.
-On other systems, this variable is normally always nil.")
+On other systems, this variable is normally always nil.
+
+WARNING: This variable is obsolete and will disappear Real Soon Now.
+Don't use it!")
;; The `assert' macro from the cl package signals
;; `cl-assertion-failed' at runtime so always define it.
@@ -3846,7 +3847,7 @@ This is used on the `modification-hooks' property of text clones."
(if (not (re-search-forward
(overlay-get ol1 'text-clone-syntax) cend t))
;; Mark the overlay for deletion.
- (overlay-put ol1 'text-clones nil)
+ (setq end cbeg)
(when (< (match-end 0) cend)
;; Shrink the clone at its end.
(setq end (min end (match-end 0)))
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index d50aadef25b..7130e1c9cee 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -266,22 +266,22 @@
;;;###autoload
(define-derived-mode css-mode fundamental-mode "CSS"
"Major mode to edit Cascading Style Sheets."
- (set (make-local-variable 'font-lock-defaults) css-font-lock-defaults)
- (set (make-local-variable 'comment-start) "/*")
- (set (make-local-variable 'comment-start-skip) "/\\*+[ \t]*")
- (set (make-local-variable 'comment-end) "*/")
- (set (make-local-variable 'comment-end-skip) "[ \t]*\\*+/")
- (set (make-local-variable 'forward-sexp-function) 'css-forward-sexp)
- (set (make-local-variable 'parse-sexp-ignore-comments) t)
- (set (make-local-variable 'indent-line-function) 'css-indent-line)
- (set (make-local-variable 'fill-paragraph-function)
- 'css-fill-paragraph)
+ (setq-local font-lock-defaults css-font-lock-defaults)
+ (setq-local comment-start "/*")
+ (setq-local comment-start-skip "/\\*+[ \t]*")
+ (setq-local comment-end "*/")
+ (setq-local comment-end-skip "[ \t]*\\*+/")
+ (setq-local forward-sexp-function 'css-forward-sexp)
+ (setq-local parse-sexp-ignore-comments t)
+ (setq-local indent-line-function 'css-indent-line)
+ (setq-local fill-paragraph-function 'css-fill-paragraph)
+ (setq-local add-log-current-defun-function #'css-current-defun-name)
(when css-electric-keys
(let ((fc (make-char-table 'auto-fill-chars)))
(set-char-table-parent fc auto-fill-chars)
(dolist (c css-electric-keys)
(aset fc c 'indent-according-to-mode))
- (set (make-local-variable 'auto-fill-chars) fc))))
+ (setq-local auto-fill-chars fc))))
(defvar comment-continue)
@@ -481,5 +481,15 @@
(save-excursion (indent-line-to indent))
(indent-line-to indent)))))
+(defun css-current-defun-name ()
+ "Return the name of the CSS section at point, or nil."
+ (save-excursion
+ (let ((max (max (point-min) (- (point) 1600)))) ; approx 20 lines back
+ (when (search-backward "{" max t)
+ (skip-chars-backward " \t\r\n")
+ (beginning-of-line)
+ (if (looking-at "^[ \t]*\\([^{\r\n]*[^ {\t\r\n]\\)")
+ (match-string-no-properties 1))))))
+
(provide 'css-mode)
;;; css-mode.el ends here
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index d0e90c99516..86a1736783d 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -721,7 +721,11 @@ space does not end a sentence, so don't break a line there."
(move-to-column (current-fill-column))
(if (when (< (point) to)
;; Find the position where we'll break the line.
- (forward-char 1) ;Use an immediately following space, if any.
+ ;; Use an immediately following space, if any.
+ ;; However, note that `move-to-column' may overshoot
+ ;; if there are wide characters (Bug#3234).
+ (unless (> (current-column) (current-fill-column))
+ (forward-char 1))
(fill-move-to-break-point linebeg)
;; Check again to see if we got to the end of
;; the paragraph.
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index f667525397c..961fb1bad83 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -2649,11 +2649,8 @@ When asynchronous processes are not supported, `run' is always returned."
(defun ispell-start-process ()
"Start the Ispell process, with support for no asynchronous processes.
Keeps argument list for future Ispell invocations for no async support."
- ;; Local dictionary becomes the global dictionary in use.
- (setq ispell-current-dictionary
- (or ispell-local-dictionary ispell-dictionary))
- (setq ispell-current-personal-dictionary
- (or ispell-local-pdict ispell-personal-dictionary))
+ ;; `ispell-current-dictionary' and `ispell-current-personal-dictionary'
+ ;; are properly set in `ispell-internal-change-dictionary'.
(let* ((default-directory
(if (and (file-directory-p default-directory)
(file-readable-p default-directory))
@@ -2668,8 +2665,7 @@ Keeps argument list for future Ispell invocations for no async support."
(list "-d" ispell-current-dictionary))
orig-args
(if ispell-current-personal-dictionary ; Use specified pers dict.
- (list "-p"
- (expand-file-name ispell-current-personal-dictionary)))
+ (list "-p" ispell-current-personal-dictionary))
;; If we are using recent aspell or hunspell, make sure we use the
;; right encoding for communication. ispell or older aspell/hunspell
;; does not support this.
@@ -2706,6 +2702,9 @@ Keeps argument list for future Ispell invocations for no async support."
(let* (;; Basename of dictionary used by the spell-checker
(dict-bname (or (car (cdr (member "-d" (ispell-get-ispell-args))))
ispell-current-dictionary))
+ ;; The directory where process was started.
+ (current-ispell-directory default-directory)
+ ;; The default directory for the process.
;; Use "~/" as default-directory unless using Ispell with per-dir
;; personal dictionaries and not in a minibuffer under XEmacs
(default-directory
@@ -2896,13 +2895,15 @@ By just answering RET you can find out what the current dictionary is."
"Update the dictionary and the personal dictionary used by Ispell.
This may kill the Ispell process; if so, a new one will be started
when needed."
- (let ((dict (or ispell-local-dictionary ispell-dictionary))
- (pdict (or ispell-local-pdict ispell-personal-dictionary)))
+ (let* ((dict (or ispell-local-dictionary ispell-dictionary))
+ (pdict (or ispell-local-pdict ispell-personal-dictionary))
+ (expanded-pdict (if pdict (expand-file-name pdict))))
(unless (and (equal ispell-current-dictionary dict)
- (equal ispell-current-personal-dictionary pdict))
+ (equal ispell-current-personal-dictionary
+ expanded-pdict))
(ispell-kill-ispell t)
(setq ispell-current-dictionary dict
- ispell-current-personal-dictionary pdict))))
+ ispell-current-personal-dictionary expanded-pdict))))
;; Avoid error messages when compiling for these dynamic variables.
(defvar ispell-start)
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index ed031664246..97faa3afb36 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -463,47 +463,39 @@ Do \\[describe-key] on the following bindings to discover what they do.
;; A start or end tag by itself on a line separates a paragraph.
;; This is desirable because SGML discards a newline that appears
;; immediately after a start tag or immediately before an end tag.
- (set (make-local-variable 'paragraph-start) (concat "[ \t]*$\\|\
+ (setq-local paragraph-start (concat "[ \t]*$\\|\
\[ \t]*</?\\(" sgml-name-re sgml-attrs-re "\\)?>"))
- (set (make-local-variable 'paragraph-separate)
- (concat paragraph-start "$"))
- (set (make-local-variable 'adaptive-fill-regexp) "[ \t]*")
+ (setq-local paragraph-separate (concat paragraph-start "$"))
+ (setq-local adaptive-fill-regexp "[ \t]*")
(add-hook 'fill-nobreak-predicate 'sgml-fill-nobreak nil t)
- (set (make-local-variable 'indent-line-function) 'sgml-indent-line)
- (set (make-local-variable 'comment-start) "<!-- ")
- (set (make-local-variable 'comment-end) " -->")
- (set (make-local-variable 'comment-indent-function) 'sgml-comment-indent)
- (set (make-local-variable 'comment-line-break-function)
- 'sgml-comment-indent-new-line)
- (set (make-local-variable 'skeleton-further-elements)
- '((completion-ignore-case t)))
- (set (make-local-variable 'skeleton-end-hook)
- (lambda ()
- (or (eolp)
- (not (or (eq v2 '\n) (eq (car-safe v2) '\n)))
- (newline-and-indent))))
- (set (make-local-variable 'font-lock-defaults)
- '((sgml-font-lock-keywords
- sgml-font-lock-keywords-1
- sgml-font-lock-keywords-2)
- nil t))
- (set (make-local-variable 'syntax-propertize-function)
- sgml-syntax-propertize-function)
- (set (make-local-variable 'facemenu-add-face-function)
- 'sgml-mode-facemenu-add-face-function)
- (set (make-local-variable 'sgml-xml-mode) (sgml-xml-guess))
- (if sgml-xml-mode
- ()
- (set (make-local-variable 'skeleton-transformation-function)
- sgml-transformation-function))
+ (setq-local indent-line-function 'sgml-indent-line)
+ (setq-local comment-start "<!-- ")
+ (setq-local comment-end " -->")
+ (setq-local comment-indent-function 'sgml-comment-indent)
+ (setq-local comment-line-break-function 'sgml-comment-indent-new-line)
+ (setq-local skeleton-further-elements '((completion-ignore-case t)))
+ (setq-local skeleton-end-hook
+ (lambda ()
+ (or (eolp)
+ (not (or (eq v2 '\n) (eq (car-safe v2) '\n)))
+ (newline-and-indent))))
+ (setq font-lock-defaults '((sgml-font-lock-keywords
+ sgml-font-lock-keywords-1
+ sgml-font-lock-keywords-2)
+ nil t))
+ (setq-local syntax-propertize-function sgml-syntax-propertize-function)
+ (setq-local facemenu-add-face-function 'sgml-mode-facemenu-add-face-function)
+ (setq-local sgml-xml-mode (sgml-xml-guess))
+ (unless sgml-xml-mode
+ (setq-local skeleton-transformation-function sgml-transformation-function))
;; This will allow existing comments within declarations to be
;; recognized.
;; I can't find a clear description of SGML/XML comments, but it seems that
;; the only reliable ones are <!-- ... --> although it's not clear what
;; "..." can contain. It used to accept -- ... -- as well, but that was
;; apparently a mistake.
- (set (make-local-variable 'comment-start-skip) "<!--[ \t]*")
- (set (make-local-variable 'comment-end-skip) "[ \t]*--[ \t\n]*>")
+ (setq-local comment-start-skip "<!--[ \t]*")
+ (setq-local comment-end-skip "[ \t]*--[ \t\n]*>")
;; This definition has an HTML leaning but probably fits well for other modes.
(setq imenu-generic-expression
`((nil
@@ -982,10 +974,10 @@ With prefix argument ARG, repeat this ARG times."
(unwind-protect
(save-excursion
(goto-char (point-min))
- (if (set (make-local-variable 'sgml-tags-invisible)
- (if arg
- (>= (prefix-numeric-value arg) 0)
- (not sgml-tags-invisible)))
+ (if (setq-local sgml-tags-invisible
+ (if arg
+ (>= (prefix-numeric-value arg) 0)
+ (not sgml-tags-invisible)))
(while (re-search-forward sgml-tag-name-re nil t)
(setq string
(cdr (assq (intern-soft (downcase (match-string 1)))
@@ -1564,8 +1556,7 @@ Add this to `sgml-mode-hook' for convenience."
(goto-char (point-min))
(if (re-search-forward "^\\([ \t]+\\)<" 500 'noerror)
(progn
- (set (make-local-variable 'sgml-basic-offset)
- (1- (current-column)))
+ (setq-local sgml-basic-offset (1- (current-column)))
(message "Guessed sgml-basic-offset = %d"
sgml-basic-offset)
))))
@@ -1941,6 +1932,19 @@ This takes effect when first loading the library.")
(defvar outline-heading-end-regexp)
(defvar outline-level)
+(defun html-current-defun-name ()
+ "Return the name of the last HTML title or heading, or nil."
+ (save-excursion
+ (if (re-search-backward
+ (concat
+ "<[ \t\r\n]*"
+ "\\(?:[hH][0-6]\\|title\\|TITLE\\|Title\\)"
+ "[^>]*>"
+ "[ \t\r\n]*"
+ "\\([^<\r\n]*[^ <\t\r\n]+\\)")
+ nil t)
+ (match-string-no-properties 1))))
+
;;;###autoload
(define-derived-mode html-mode sgml-mode '(sgml-xml-mode "XHTML" "HTML")
@@ -1979,33 +1983,29 @@ To work around that, do:
(eval-after-load \"sgml-mode\" '(aset sgml-char-names ?' nil))
\\{html-mode-map}"
- (set (make-local-variable 'sgml-display-text) html-display-text)
- (set (make-local-variable 'sgml-tag-face-alist) html-tag-face-alist)
- (make-local-variable 'sgml-tag-alist)
- (make-local-variable 'sgml-face-tag-alist)
- (make-local-variable 'sgml-tag-help)
- (make-local-variable 'outline-regexp)
- (make-local-variable 'outline-heading-end-regexp)
- (make-local-variable 'outline-level)
- (make-local-variable 'sentence-end-base)
- (setq sentence-end-base "[.?!][]\"'â€)}]*\\(<[^>]*>\\)*"
- sgml-tag-alist html-tag-alist
- sgml-face-tag-alist html-face-tag-alist
- sgml-tag-help html-tag-help
- outline-regexp "^.*<[Hh][1-6]\\>"
- outline-heading-end-regexp "</[Hh][1-6]>"
- outline-level (lambda ()
- (char-before (match-end 0))))
+ (setq-local sgml-display-text html-display-text)
+ (setq-local sgml-tag-face-alist html-tag-face-alist)
+ (setq-local sgml-tag-alist html-tag-alist)
+ (setq-local sgml-face-tag-alist html-face-tag-alist)
+ (setq-local sgml-tag-help html-tag-help)
+ (setq-local outline-regexp "^.*<[Hh][1-6]\\>")
+ (setq-local outline-heading-end-regexp "</[Hh][1-6]>")
+ (setq-local outline-level
+ (lambda () (char-before (match-end 0))))
+ (setq-local add-log-current-defun-function #'html-current-defun-name)
+ (setq-local sentence-end-base "[.?!][]\"'â€)}]*\\(<[^>]*>\\)*")
+
(setq imenu-create-index-function 'html-imenu-index)
- (set (make-local-variable 'sgml-empty-tags)
- ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd',
- ;; plus manual addition of "wbr".
- '("area" "base" "basefont" "br" "col" "frame" "hr" "img" "input"
- "isindex" "link" "meta" "param" "wbr"))
- (set (make-local-variable 'sgml-unclosed-tags)
- ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd'.
- '("body" "colgroup" "dd" "dt" "head" "html" "li" "option"
- "p" "tbody" "td" "tfoot" "th" "thead" "tr"))
+
+ (setq-local sgml-empty-tags
+ ;; From HTML-4.01's loose.dtd, parsed with
+ ;; `sgml-parse-dtd', plus manual addition of "wbr".
+ '("area" "base" "basefont" "br" "col" "frame" "hr" "img" "input"
+ "isindex" "link" "meta" "param" "wbr"))
+ (setq-local sgml-unclosed-tags
+ ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd'.
+ '("body" "colgroup" "dd" "dt" "head" "html" "li" "option"
+ "p" "tbody" "td" "tfoot" "th" "thead" "tr"))
;; It's for the user to decide if it defeats it or not -stef
;; (make-local-variable 'imenu-sort-function)
;; (setq imenu-sort-function nil) ; sorting the menu defeats the purpose
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 6db15b7ec2a..cbfc746dc56 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -1570,8 +1570,7 @@ results.
Inside a table cell has a special keymap.
-\\{table-cell-map}
-"
+\\{table-cell-map}"
(interactive
(progn
(barf-if-buffer-read-only)
@@ -1583,41 +1582,47 @@ Inside a table cell has a special keymap.
("Cell width(s)" . table-cell-width-history)
("Cell height(s)" . table-cell-height-history)))))
(table--make-cell-map)
- ;; reform the arguments.
+ ;; Reform the arguments.
(if (null cell-width) (setq cell-width (car table-cell-width-history)))
(if (null cell-height) (setq cell-height (car table-cell-height-history)))
(if (stringp columns) (setq columns (string-to-number columns)))
(if (stringp rows) (setq rows (string-to-number rows)))
- (if (stringp cell-width) (setq cell-width (table--string-to-number-list cell-width)))
- (if (stringp cell-height) (setq cell-height (table--string-to-number-list cell-height)))
+ (if (stringp cell-width)
+ (setq cell-width (table--string-to-number-list cell-width)))
+ (if (stringp cell-height)
+ (setq cell-height (table--string-to-number-list cell-height)))
(if (numberp cell-width) (setq cell-width (cons cell-width nil)))
(if (numberp cell-height) (setq cell-height (cons cell-height nil)))
- ;; test validity of the arguments.
- (mapc (lambda (arg)
- (let* ((value (symbol-value arg))
- (error-handler
- (function (lambda ()
- (error "%s must be a positive integer%s" arg
- (if (listp value) " or a list of positive integers" ""))))))
- (if (null value) (funcall error-handler))
- (mapcar (function (lambda (arg1)
- (if (or (not (integerp arg1))
- (< arg1 1))
- (funcall error-handler))))
- (if (listp value) value
- (cons value nil)))))
- '(columns rows cell-width cell-height))
+ ;; Test validity of the arguments.
+ (dolist (arg `((columns . ,columns)
+ (rows . ,rows)
+ (cell-width . ,cell-width)
+ (cell-height . ,cell-height)))
+ (let* ((value (cdr arg))
+ (error-handler
+ (lambda ()
+ (error "%s must be a positive integer%s" (car arg)
+ (if (listp value)
+ " or a list of positive integers" "")))))
+ (if (null value) (funcall error-handler))
+ (dolist (arg1 (if (listp value) value
+ (cons value nil)))
+ (if (or (not (integerp arg1))
+ (< arg1 1))
+ (funcall error-handler)))))
(let ((orig-coord (table--get-coordinate))
(coord (table--get-coordinate))
r i cw ch cell-str border-str)
- ;; prefabricate the building blocks border-str and cell-str.
+ ;; Prefabricate the building blocks border-str and cell-str.
(with-temp-buffer
- ;; construct border-str
+ ;; Construct border-str.
(insert table-cell-intersection-char)
(setq cw cell-width)
(setq i 0)
(while (< i columns)
- (insert (make-string (car cw) (string-to-char table-cell-horizontal-chars)) table-cell-intersection-char)
+ (insert (make-string (car cw)
+ (string-to-char table-cell-horizontal-chars))
+ table-cell-intersection-char)
(if (cdr cw) (setq cw (cdr cw)))
(setq i (1+ i)))
(setq border-str (buffer-substring (point-min) (point-max)))
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 062f43be57b..16689b1ad02 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -421,6 +421,17 @@ An alternative value is \" . \", if you use a font with a narrow period."
(if (looking-at latex-outline-regexp)
(1+ (or (cdr (assoc (match-string 1) latex-section-alist)) -1))
1000))
+
+(defun tex-current-defun-name ()
+ "Return the name of the TeX section/paragraph/chapter at point, or nil."
+ (save-excursion
+ (when (re-search-backward
+ "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
+ nil t)
+ (goto-char (match-beginning 0))
+ (buffer-substring-no-properties
+ (1+ (point)) ; without initial backslash
+ (line-end-position)))))
;;;;
;;;; Font-Lock support
@@ -1062,10 +1073,10 @@ tex-show-queue-command
Entering Plain-tex mode runs the hook `text-mode-hook', then the hook
`tex-mode-hook', and finally the hook `plain-tex-mode-hook'. When the
special subshell is initiated, the hook `tex-shell-hook' is run."
- (set (make-local-variable 'tex-command) tex-run-command)
- (set (make-local-variable 'tex-start-of-header) "%\\*\\*start of header")
- (set (make-local-variable 'tex-end-of-header) "%\\*\\*end of header")
- (set (make-local-variable 'tex-trailer) "\\bye\n"))
+ (setq-local tex-command tex-run-command)
+ (setq-local tex-start-of-header "%\\*\\*start of header")
+ (setq-local tex-end-of-header "%\\*\\*end of header")
+ (setq-local tex-trailer "\\bye\n"))
;;;###autoload
(define-derived-mode latex-mode tex-mode "LaTeX"
@@ -1108,11 +1119,10 @@ tex-show-queue-command
Entering Latex mode runs the hook `text-mode-hook', then
`tex-mode-hook', and finally `latex-mode-hook'. When the special
subshell is initiated, `tex-shell-hook' is run."
- (set (make-local-variable 'tex-command) latex-run-command)
- (set (make-local-variable 'tex-start-of-header)
- "\\\\document\\(style\\|class\\)")
- (set (make-local-variable 'tex-end-of-header) "\\\\begin\\s-*{document}")
- (set (make-local-variable 'tex-trailer) "\\end{document}\n")
+ (setq-local tex-command latex-run-command)
+ (setq-local tex-start-of-header "\\\\document\\(style\\|class\\)")
+ (setq-local tex-end-of-header "\\\\begin\\s-*{document}")
+ (setq-local tex-trailer "\\end{document}\n")
;; A line containing just $$ is treated as a paragraph separator.
;; A line starting with $$ starts a paragraph,
;; but does not separate paragraphs if it has more stuff on it.
@@ -1138,18 +1148,17 @@ subshell is initiated, `tex-shell-hook' is run."
"marginpar" "parbox" "caption"))
"\\|\\$\\$\\|[a-z]*\\(space\\|skip\\|page[a-z]*\\)"
"\\>\\)[ \t]*\\($\\|%\\)\\)"))
- (set (make-local-variable 'imenu-create-index-function)
- 'latex-imenu-create-index)
- (set (make-local-variable 'tex-face-alist) tex-latex-face-alist)
+ (setq-local imenu-create-index-function 'latex-imenu-create-index)
+ (setq-local tex-face-alist tex-latex-face-alist)
(add-hook 'fill-nobreak-predicate 'latex-fill-nobreak-predicate nil t)
- (set (make-local-variable 'indent-line-function) 'latex-indent)
- (set (make-local-variable 'fill-indent-according-to-mode) t)
+ (setq-local indent-line-function 'latex-indent)
+ (setq-local fill-indent-according-to-mode t)
(add-hook 'completion-at-point-functions
'latex-complete-data nil 'local)
- (set (make-local-variable 'outline-regexp) latex-outline-regexp)
- (set (make-local-variable 'outline-level) 'latex-outline-level)
- (set (make-local-variable 'forward-sexp-function) 'latex-forward-sexp)
- (set (make-local-variable 'skeleton-end-hook) nil))
+ (setq-local outline-regexp latex-outline-regexp)
+ (setq-local outline-level 'latex-outline-level)
+ (setq-local forward-sexp-function 'latex-forward-sexp)
+ (setq-local skeleton-end-hook nil))
;;;###autoload
(define-derived-mode slitex-mode latex-mode "SliTeX"
@@ -1198,39 +1207,36 @@ Entering SliTeX mode runs the hook `text-mode-hook', then the hook
(defun tex-common-initialization ()
;; Regexp isearch should accept newline and formfeed as whitespace.
- (set (make-local-variable 'search-whitespace-regexp) "[ \t\r\n\f]+")
+ (setq-local search-whitespace-regexp "[ \t\r\n\f]+")
;; A line containing just $$ is treated as a paragraph separator.
- (set (make-local-variable 'paragraph-start)
- "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$")
+ (setq-local paragraph-start "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$")
;; A line starting with $$ starts a paragraph,
;; but does not separate paragraphs if it has more stuff on it.
- (set (make-local-variable 'paragraph-separate)
- "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$[ \t]*$")
- (set (make-local-variable 'comment-start) "%")
- (set (make-local-variable 'comment-add) 1)
- (set (make-local-variable 'comment-start-skip)
- "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)")
- (set (make-local-variable 'parse-sexp-ignore-comments) t)
- (set (make-local-variable 'compare-windows-whitespace)
- 'tex-categorize-whitespace)
- (set (make-local-variable 'facemenu-add-face-function)
- 'tex-facemenu-add-face-function)
- (set (make-local-variable 'facemenu-end-add-face) "}")
- (set (make-local-variable 'facemenu-remove-face-function) t)
- (set (make-local-variable 'font-lock-defaults)
- '((tex-font-lock-keywords tex-font-lock-keywords-1
- tex-font-lock-keywords-2 tex-font-lock-keywords-3)
- nil nil nil nil
- ;; Who ever uses that anyway ???
- (font-lock-mark-block-function . mark-paragraph)
- (font-lock-syntactic-face-function
- . tex-font-lock-syntactic-face-function)
- (font-lock-unfontify-region-function
- . tex-font-lock-unfontify-region)))
- (set (make-local-variable 'syntax-propertize-function)
- (syntax-propertize-rules latex-syntax-propertize-rules))
+ (setq-local paragraph-separate "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$[ \t]*$")
+ (setq-local add-log-current-defun-function #'tex-current-defun-name)
+ (setq-local comment-start "%")
+ (setq-local comment-add 1)
+ (setq-local comment-start-skip
+ "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)")
+ (setq-local parse-sexp-ignore-comments t)
+ (setq-local compare-windows-whitespace 'tex-categorize-whitespace)
+ (setq-local facemenu-add-face-function 'tex-facemenu-add-face-function)
+ (setq-local facemenu-end-add-face "}")
+ (setq-local facemenu-remove-face-function t)
+ (setq-local font-lock-defaults
+ '((tex-font-lock-keywords tex-font-lock-keywords-1
+ tex-font-lock-keywords-2 tex-font-lock-keywords-3)
+ nil nil nil nil
+ ;; Who ever uses that anyway ???
+ (font-lock-mark-block-function . mark-paragraph)
+ (font-lock-syntactic-face-function
+ . tex-font-lock-syntactic-face-function)
+ (font-lock-unfontify-region-function
+ . tex-font-lock-unfontify-region)))
+ (setq-local syntax-propertize-function
+ (syntax-propertize-rules latex-syntax-propertize-rules))
;; TABs in verbatim environments don't do what you think.
- (set (make-local-variable 'indent-tabs-mode) nil)
+ (setq-local indent-tabs-mode nil)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -1523,8 +1529,7 @@ Puts point on a blank line between them."
(looking-at bibtex-reference-key))
(push (match-string-no-properties 0) keys)))))
;; Fill the cache.
- (set (make-local-variable 'latex-complete-bibtex-cache)
- (list files key keys)))
+ (setq-local latex-complete-bibtex-cache (list files key keys)))
(complete-with-action action keys key pred)))))
(defun latex-complete-envnames ()
@@ -1885,8 +1890,7 @@ Mark is left at original location."
;; The utility functions:
(define-derived-mode tex-shell shell-mode "TeX-Shell"
- (set (make-local-variable 'compilation-error-regexp-alist)
- tex-error-regexp-alist)
+ (setq-local compilation-error-regexp-alist tex-error-regexp-alist)
(compilation-shell-minor-mode t))
;;;###autoload
@@ -2099,8 +2103,7 @@ of the current buffer."
(with-no-warnings
(when (boundp 'TeX-master)
(cond ((stringp TeX-master)
- (make-local-variable 'tex-main-file)
- (setq tex-main-file TeX-master))
+ (setq-local tex-main-file TeX-master))
((and (eq TeX-master t) buffer-file-name)
(file-relative-name buffer-file-name)))))
;; Try to guess the main file.
@@ -2870,8 +2873,8 @@ There might be text before point."
(cons (car x) 'doctex-font-lock-syntactic-face-function))
(_ x)))
(cdr font-lock-defaults))))
- (set (make-local-variable 'syntax-propertize-function)
- (syntax-propertize-rules doctex-syntax-propertize-rules)))
+ (setq-local syntax-propertize-function
+ (syntax-propertize-rules doctex-syntax-propertize-rules)))
(run-hooks 'tex-mode-load-hook)
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index 4e7715dcea9..253b56f09b1 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -33,6 +33,15 @@
;;; Code:
(eval-when-compile (require 'tex-mode))
+(declare-function tex-buffer "tex-mode" ())
+(declare-function tex-region "tex-mode" (beg end))
+(declare-function tex-send-command "tex-mode")
+(declare-function tex-recenter-output-buffer "tex-mode" (linenum))
+(declare-function tex-print "tex-mode" (&optional alt))
+(declare-function tex-view "tex-mode" ())
+(declare-function tex-shell-running "tex-mode" ())
+(declare-function tex-kill-job "tex-mode" ())
+
(defvar outline-heading-alist)
(defgroup texinfo nil
@@ -502,6 +511,12 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
(regexp-opt (texinfo-filter 2 texinfo-section-list))
"Regular expression matching just the Texinfo chapter level headings.")
+(defun texinfo-current-defun-name ()
+ "Return the name of the Texinfo node at point, or nil."
+ (save-excursion
+ (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
+ (match-string-no-properties 1))))
+
;;; Texinfo mode
;;;###autoload
@@ -571,66 +586,53 @@ be the first node in the file.
Entering Texinfo mode calls the value of `text-mode-hook', and then the
value of `texinfo-mode-hook'."
- (set (make-local-variable 'page-delimiter)
- (concat
- "^@node [ \t]*[Tt]op\\|^@\\("
- texinfo-chapter-level-regexp
- "\\)\\>"))
- (make-local-variable 'require-final-newline)
- (setq require-final-newline mode-require-final-newline)
- (make-local-variable 'indent-tabs-mode)
- (setq indent-tabs-mode nil)
- (make-local-variable 'paragraph-separate)
- (setq paragraph-separate
- (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-separate))
- (make-local-variable 'paragraph-start)
- (setq paragraph-start (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-start))
- (set (make-local-variable 'sentence-end-base)
- "\\(@\\(end\\)?dots{}\\|[.?!]\\)[]\"'â€)}]*")
- (make-local-variable 'fill-column)
- (setq fill-column 70)
- (make-local-variable 'comment-start)
- (setq comment-start "@c ")
- (make-local-variable 'comment-start-skip)
- (setq comment-start-skip "@c +\\|@comment +")
- (make-local-variable 'words-include-escapes)
- (setq words-include-escapes t)
- (make-local-variable 'imenu-generic-expression)
- (setq imenu-generic-expression texinfo-imenu-generic-expression)
+ (setq-local page-delimiter
+ (concat "^@node [ \t]*[Tt]op\\|^@\\("
+ texinfo-chapter-level-regexp
+ "\\)\\>"))
+ (setq-local require-final-newline mode-require-final-newline)
+ (setq-local indent-tabs-mode nil)
+ (setq-local paragraph-separate
+ (concat "\b\\|@[a-zA-Z]*[ \n]\\|"
+ paragraph-separate))
+ (setq-local paragraph-start (concat "\b\\|@[a-zA-Z]*[ \n]\\|"
+ paragraph-start))
+ (setq-local sentence-end-base "\\(@\\(end\\)?dots{}\\|[.?!]\\)[]\"'â€)}]*")
+ (setq-local fill-column 70)
+ (setq-local comment-start "@c ")
+ (setq-local comment-start-skip "@c +\\|@comment +")
+ (setq-local words-include-escapes t)
+ (setq-local imenu-generic-expression texinfo-imenu-generic-expression)
(setq imenu-case-fold-search nil)
- (make-local-variable 'font-lock-defaults)
(setq font-lock-defaults
'(texinfo-font-lock-keywords nil nil nil backward-paragraph))
- (set (make-local-variable 'syntax-propertize-function)
- texinfo-syntax-propertize-function)
- (set (make-local-variable 'parse-sexp-lookup-properties) t)
+ (setq-local syntax-propertize-function texinfo-syntax-propertize-function)
+ (setq-local parse-sexp-lookup-properties t)
+ (setq-local add-log-current-defun-function #'texinfo-current-defun-name)
;; Outline settings.
- (set (make-local-variable 'outline-heading-alist)
- ;; We should merge outline-heading-alist and texinfo-section-list
- ;; but in the mean time, let's just generate one from the other.
- (mapcar (lambda (x) (cons (concat "@" (car x)) (cadr x)))
- texinfo-section-list))
- (set (make-local-variable 'outline-regexp)
- (concat (regexp-opt (mapcar 'car outline-heading-alist) t)
- "\\>"))
-
- (make-local-variable 'tex-start-of-header)
- (setq tex-start-of-header "%\\*\\*start")
- (make-local-variable 'tex-end-of-header)
- (setq tex-end-of-header "%\\*\\*end")
- (make-local-variable 'tex-first-line-header-regexp)
- (setq tex-first-line-header-regexp "^\\\\input")
- (make-local-variable 'tex-trailer)
- (setq tex-trailer "@bye\n")
-
- ;; Prevent filling certain lines, in addition to ones specified
- ;; by the user.
- (let ((prevent-filling "^@\\(def\\|multitable\\)"))
- (set (make-local-variable 'auto-fill-inhibit-regexp)
- (if (null auto-fill-inhibit-regexp)
- prevent-filling
- (concat auto-fill-inhibit-regexp "\\|" prevent-filling)))))
+ (setq-local outline-heading-alist
+ ;; We should merge `outline-heading-alist' and
+ ;; `texinfo-section-list'. But in the mean time, let's
+ ;; just generate one from the other.
+ (mapcar (lambda (x) (cons (concat "@" (car x)) (cadr x)))
+ texinfo-section-list))
+ (setq-local outline-regexp
+ (concat (regexp-opt (mapcar 'car outline-heading-alist) t)
+ "\\>"))
+
+ (setq-local tex-start-of-header "%\\*\\*start")
+ (setq-local tex-end-of-header "%\\*\\*end")
+ (setq-local tex-first-line-header-regexp "^\\\\input")
+ (setq-local tex-trailer "@bye\n")
+
+ ;; Prevent filling certain lines, in addition to ones specified by
+ ;; the user.
+ (setq-local auto-fill-inhibit-regexp
+ (let ((prevent-filling "^@\\(def\\|multitable\\)"))
+ (if (null auto-fill-inhibit-regexp)
+ prevent-filling
+ (concat auto-fill-inhibit-regexp "\\|" prevent-filling)))))
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 59222bcc957..fb4839358b9 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-03 Chong Yidong <cyd@gnu.org>
+
+ * url-misc.el (url-do-terminal-emulator): Use make-term instead of
+ terminal-emulator.
+
2012-10-13 Liam Stitt <stittl@cuug.ab.ca> (tiny change)
* url-vars.el (url-uncompressor-alist):
diff --git a/lisp/url/url-misc.el b/lisp/url/url-misc.el
index dd521ccd690..8cf9cffdf6b 100644
--- a/lisp/url/url-misc.el
+++ b/lisp/url/url-misc.el
@@ -44,27 +44,21 @@
nil))
(defun url-do-terminal-emulator (type server port user)
- (terminal-emulator
- (generate-new-buffer (format "%s%s" (if user (concat user "@") "") server))
- (pcase type
- (`rlogin "rlogin")
- (`telnet "telnet")
- (`tn3270 "tn3270")
- (_
- (error "Unknown terminal emulator required: %s" type)))
- (pcase type
- (`rlogin
- (if user
- (list server "-l" user)
- (list server)))
- (`telnet
- (if user (message "Please log in as user: %s" user))
- (if port
- (list server port)
- (list server)))
- (`tn3270
- (if user (message "Please log in as user: %s" user))
- (list server)))))
+ (switch-to-buffer
+ (apply
+ 'make-term
+ (format "%s%s" (if user (concat user "@") "") server)
+ (cond ((eq type 'rlogin) "rlogin")
+ ((eq type 'telnet) "telnet")
+ ((eq type 'tn3270) "tn3270")
+ (t (error "Unknown terminal emulator required: %s" type)))
+ nil
+ (cond ((eq type 'rlogin)
+ (if user (list server "-l" user) (list server)))
+ ((eq type 'telnet)
+ (if port (list server port) (list server)))
+ ((eq type 'tn3270)
+ (list server))))))
;;;###autoload
(defun url-generic-emulator-loader (url)
diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el
index 5a378df6513..0d2b82cb9a7 100644
--- a/lisp/vc/add-log.el
+++ b/lisp/vc/add-log.el
@@ -61,8 +61,9 @@
;;;###autoload
(defcustom add-log-current-defun-function nil
"If non-nil, function to guess name of surrounding function.
-It is used by `add-log-current-defun' in preference to built-in rules.
-Returns function's name as a string, or nil if outside a function."
+It is called by `add-log-current-defun' with no argument, and
+should return the function's name as a string, or nil if point is
+outside a function."
:type '(choice (const nil) function)
:group 'change-log)
@@ -1118,21 +1119,6 @@ parentheses."
:type 'regexp
:group 'change-log)
-;;;###autoload
-(defvar add-log-lisp-like-modes
- '(emacs-lisp-mode lisp-mode scheme-mode dsssl-mode lisp-interaction-mode)
- "Modes that look like Lisp to `add-log-current-defun'.")
-
-;;;###autoload
-(defvar add-log-c-like-modes
- '(c-mode c++-mode c++-c-mode objc-mode)
- "Modes that look like C to `add-log-current-defun'.")
-
-;;;###autoload
-(defvar add-log-tex-like-modes
- '(TeX-mode plain-TeX-mode LaTeX-mode tex-mode)
- "Modes that look like TeX to `add-log-current-defun'.")
-
(declare-function c-cpp-define-name "cc-cmds" ())
(declare-function c-defun-name "cc-cmds" ())
@@ -1152,75 +1138,21 @@ identifiers followed by `:' or `='. See variables
Has a preference of looking backwards."
(condition-case nil
(save-excursion
- (let ((location (point)))
- (cond (add-log-current-defun-function
- (funcall add-log-current-defun-function))
- ((apply 'derived-mode-p add-log-lisp-like-modes)
- ;; If we are now precisely at the beginning of a defun,
- ;; make sure beginning-of-defun finds that one
- ;; rather than the previous one.
- (or (eobp) (forward-char 1))
- (beginning-of-defun)
- ;; Make sure we are really inside the defun found,
- ;; not after it.
- (when (and (looking-at "\\s(")
- (progn (end-of-defun)
- (< location (point)))
- (progn (forward-sexp -1)
- (>= location (point))))
- (if (looking-at "\\s(")
- (forward-char 1))
- ;; Skip the defining construct name, typically "defun"
- ;; or "defvar".
- (forward-sexp 1)
- ;; The second element is usually a symbol being defined.
- ;; If it is not, use the first symbol in it.
- (skip-chars-forward " \t\n'(")
- (buffer-substring-no-properties (point)
- (progn (forward-sexp 1)
- (point)))))
- ((apply 'derived-mode-p add-log-c-like-modes)
- (or (c-cpp-define-name)
- (c-defun-name)))
- ((apply #'derived-mode-p add-log-tex-like-modes)
- (if (re-search-backward
- "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
- nil t)
- (progn
- (goto-char (match-beginning 0))
- (buffer-substring-no-properties
- (1+ (point)) ; without initial backslash
- (line-end-position)))))
- ((derived-mode-p 'texinfo-mode)
- (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
- (match-string-no-properties 1)))
- ((derived-mode-p 'perl-mode 'cperl-mode)
- (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
- (match-string-no-properties 1)))
- ;; Emacs's autoconf-mode installs its own
- ;; `add-log-current-defun-function'. This applies to
- ;; a different mode apparently for editing .m4
- ;; autoconf source.
- ((derived-mode-p 'autoconf-mode)
- (if (re-search-backward
- "^\\(\\(m4_\\)?define\\|A._DEFUN\\)(\\[?\\([A-Za-z0-9_]+\\)" nil t)
- (match-string-no-properties 3)))
- (t
- ;; If all else fails, try heuristics
- (let (case-fold-search
- result)
- (end-of-line)
- (when (re-search-backward
- add-log-current-defun-header-regexp
- (- (point) 10000)
- t)
- (setq result (or (match-string-no-properties 1)
- (match-string-no-properties 0)))
- ;; Strip whitespace away
- (when (string-match "\\([^ \t\n\r\f].*[^ \t\n\r\f]\\)"
- result)
- (setq result (match-string-no-properties 1 result)))
- result))))))
+ (if add-log-current-defun-function
+ (funcall add-log-current-defun-function)
+ ;; If all else fails, try heuristics
+ (let (case-fold-search
+ result)
+ (end-of-line)
+ (when (re-search-backward add-log-current-defun-header-regexp
+ (- (point) 10000) t)
+ (setq result (or (match-string-no-properties 1)
+ (match-string-no-properties 0)))
+ ;; Strip whitespace away
+ (when (string-match "\\([^ \t\n\r\f].*[^ \t\n\r\f]\\)"
+ result)
+ (setq result (match-string-no-properties 1 result)))
+ result))))
(error nil)))
(defvar change-log-get-method-definition-md)
diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el
index 5b31e625a00..aa7c9007200 100644
--- a/lisp/vc/ediff-diff.el
+++ b/lisp/vc/ediff-diff.el
@@ -453,52 +453,30 @@ one optional arguments, diff-number to refine.")
c-prev c-end)
;; else convert lines to points
(ediff-with-current-buffer A-buffer
- (let ((longlines-mode-val
- (if (and (boundp 'longlines-mode) longlines-mode) 1 0)))
- ;; we must disable and then restore longlines-mode
- (if (eq longlines-mode-val 1)
- (longlines-mode 0))
- (goto-char (or a-prev-pt shift-A (point-min)))
- (forward-line (- a-begin a-prev))
- (setq a-begin-pt (point))
- (forward-line (- a-end a-begin))
- (setq a-end-pt (point)
- a-prev a-end
- a-prev-pt a-end-pt)
- (if (eq longlines-mode-val 1)
- (longlines-mode longlines-mode-val))
- ))
+ (goto-char (or a-prev-pt shift-A (point-min)))
+ (forward-line (- a-begin a-prev))
+ (setq a-begin-pt (point))
+ (forward-line (- a-end a-begin))
+ (setq a-end-pt (point)
+ a-prev a-end
+ a-prev-pt a-end-pt))
(ediff-with-current-buffer B-buffer
- (let ((longlines-mode-val
- (if (and (boundp 'longlines-mode) longlines-mode) 1 0)))
- (if (eq longlines-mode-val 1)
- (longlines-mode 0))
- (goto-char (or b-prev-pt shift-B (point-min)))
- (forward-line (- b-begin b-prev))
- (setq b-begin-pt (point))
- (forward-line (- b-end b-begin))
- (setq b-end-pt (point)
- b-prev b-end
- b-prev-pt b-end-pt)
- (if (eq longlines-mode-val 1)
- (longlines-mode longlines-mode-val))
- ))
+ (goto-char (or b-prev-pt shift-B (point-min)))
+ (forward-line (- b-begin b-prev))
+ (setq b-begin-pt (point))
+ (forward-line (- b-end b-begin))
+ (setq b-end-pt (point)
+ b-prev b-end
+ b-prev-pt b-end-pt))
(if (ediff-buffer-live-p C-buffer)
(ediff-with-current-buffer C-buffer
- (let ((longlines-mode-val
- (if (and (boundp 'longlines-mode) longlines-mode) 1 0)))
- (if (eq longlines-mode-val 1)
- (longlines-mode 0))
- (goto-char (or c-prev-pt (point-min)))
- (forward-line (- c-begin c-prev))
- (setq c-begin-pt (point))
- (forward-line (- c-end c-begin))
- (setq c-end-pt (point)
- c-prev c-end
- c-prev-pt c-end-pt)
- (if (eq longlines-mode-val 1)
- (longlines-mode longlines-mode-val))
- )))
+ (goto-char (or c-prev-pt (point-min)))
+ (forward-line (- c-begin c-prev))
+ (setq c-begin-pt (point))
+ (forward-line (- c-end c-begin))
+ (setq c-end-pt (point)
+ c-prev c-end
+ c-prev-pt c-end-pt)))
(setq diff-list
(nconc
diff-list
@@ -1085,65 +1063,36 @@ delimiter regions"))
c-prev c-end)
;; else convert lines to points
(ediff-with-current-buffer A-buffer
- (let ((longlines-mode-val
- (if (and (boundp 'longlines-mode) longlines-mode) 1 0)))
- ;; we must disable and then restore longlines-mode
- (if (eq longlines-mode-val 1)
- (longlines-mode 0))
- (goto-char (or a-prev-pt shift-A (point-min)))
- (forward-line (- a-begin a-prev))
- (setq a-begin-pt (point))
- (forward-line (- a-end a-begin))
- (setq a-end-pt (point)
- a-prev a-end
- a-prev-pt a-end-pt)
- (if (eq longlines-mode-val 1)
- (longlines-mode longlines-mode-val))
- ))
+ (goto-char (or a-prev-pt shift-A (point-min)))
+ (forward-line (- a-begin a-prev))
+ (setq a-begin-pt (point))
+ (forward-line (- a-end a-begin))
+ (setq a-end-pt (point)
+ a-prev a-end
+ a-prev-pt a-end-pt))
(ediff-with-current-buffer B-buffer
- (let ((longlines-mode-val
- (if (and (boundp 'longlines-mode) longlines-mode) 1 0)))
- (if (eq longlines-mode-val 1)
- (longlines-mode 0))
- (goto-char (or b-prev-pt shift-B (point-min)))
- (forward-line (- b-begin b-prev))
- (setq b-begin-pt (point))
- (forward-line (- b-end b-begin))
- (setq b-end-pt (point)
- b-prev b-end
- b-prev-pt b-end-pt)
- (if (eq longlines-mode-val 1)
- (longlines-mode longlines-mode-val))
- ))
+ (goto-char (or b-prev-pt shift-B (point-min)))
+ (forward-line (- b-begin b-prev))
+ (setq b-begin-pt (point))
+ (forward-line (- b-end b-begin))
+ (setq b-end-pt (point)
+ b-prev b-end
+ b-prev-pt b-end-pt))
(ediff-with-current-buffer C-buffer
- (let ((longlines-mode-val
- (if (and (boundp 'longlines-mode) longlines-mode) 1 0)))
- (if (eq longlines-mode-val 1)
- (longlines-mode 0))
- (goto-char (or c-prev-pt shift-C (point-min)))
- (forward-line (- c-begin c-prev))
- (setq c-begin-pt (point))
- (forward-line (- c-end c-begin))
- (setq c-end-pt (point)
- c-prev c-end
- c-prev-pt c-end-pt)
- (if (eq longlines-mode-val 1)
- (longlines-mode longlines-mode-val))
- ))
+ (goto-char (or c-prev-pt shift-C (point-min)))
+ (forward-line (- c-begin c-prev))
+ (setq c-begin-pt (point))
+ (forward-line (- c-end c-begin))
+ (setq c-end-pt (point)
+ c-prev c-end
+ c-prev-pt c-end-pt))
(if (ediff-buffer-live-p anc-buffer)
(ediff-with-current-buffer anc-buffer
- (let ((longlines-mode-val
- (if (and (boundp 'longlines-mode) longlines-mode) 1 0)))
- (if (eq longlines-mode-val 1)
- (longlines-mode 0))
- (forward-line (- c-or-anc-begin anc-prev))
- (setq anc-begin-pt (point))
- (forward-line (- c-or-anc-end c-or-anc-begin))
- (setq anc-end-pt (point)
- anc-prev c-or-anc-end)
- (if (eq longlines-mode-val 1)
- (longlines-mode longlines-mode-val))
- )))
+ (forward-line (- c-or-anc-begin anc-prev))
+ (setq anc-begin-pt (point))
+ (forward-line (- c-or-anc-end c-or-anc-begin))
+ (setq anc-end-pt (point)
+ anc-prev c-or-anc-end)))
(setq diff-list
(nconc
diff-list
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 455f48c50d3..a9df6fdee8d 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -930,6 +930,8 @@ If it is a file, return the corresponding cons for the file itself."
(defvar use-vc-backend) ;; dynamically bound
+;; Autoload cookie needed by desktop.el.
+;;;###autoload
(define-derived-mode vc-dir-mode special-mode "VC dir"
"Major mode for VC directory buffers.
Marking/Unmarking key bindings and actions:
@@ -967,6 +969,8 @@ the *vc-dir* buffer.
\\{vc-dir-mode-map}"
(set (make-local-variable 'vc-dir-backend) use-vc-backend)
+ (set (make-local-variable 'desktop-save-buffer)
+ 'vc-dir-desktop-buffer-misc-data)
(setq buffer-read-only t)
(when (boundp 'tool-bar-map)
(set (make-local-variable 'tool-bar-map) vc-dir-tool-bar-map))
@@ -1288,6 +1292,31 @@ These are the commands available for use in the file status buffer:
"Default absence of extra information returned for a file."
nil)
+
+;;; Support for desktop.el (adapted from what dired.el does).
+
+(declare-function desktop-file-name "desktop" (filename dirname))
+
+(defun vc-dir-desktop-buffer-misc-data (dirname)
+ "Auxiliary information to be saved in desktop file."
+ (cons (desktop-file-name default-directory dirname) vc-dir-backend))
+
+(defun vc-dir-restore-desktop-buffer (_filename _buffername misc-data)
+ "Restore a `vc-dir' buffer specified in a desktop file."
+ (let ((dir (car misc-data))
+ (backend (cdr misc-data)))
+ (if (file-directory-p dir)
+ (progn
+ (vc-dir dir backend)
+ (current-buffer))
+ (message "Desktop: Directory %s no longer exists." dir)
+ (when desktop-missing-file-warning (sit-for 1))
+ nil)))
+
+(add-to-list 'desktop-buffer-mode-handlers
+ '(vc-dir-mode . vc-dir-restore-desktop-buffer))
+
+
(provide 'vc-dir)
;;; vc-dir.el ends here
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 5d7cb366e82..08b48fa7b40 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1148,7 +1148,7 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
The difference to vc-do-command is that this function always invokes
`vc-git-program'."
(apply 'vc-do-command (or buffer "*vc*") okstatus vc-git-program
- file-or-list flags))
+ file-or-list (cons "--no-pager" flags)))
(defun vc-git--empty-db-p ()
"Check if the git db is empty (no commit done yet)."
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 727fb08e388..a240fdeb658 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -93,7 +93,7 @@
;; - clear-headers () ??
;; - delete-file (file) TEST IT
;; - rename-file (old new) OK
-;; - find-file-hook () PROBABLY NOT NEEDED
+;; - find-file-hook () added for bug#10709
;; 2) Implement Stefan Monnier's advice:
;; vc-hg-registered and vc-hg-state
@@ -384,7 +384,7 @@ Optional arg REVISION is a revision to annotate from."
(let ((newrev (1+ (string-to-number rev)))
(tip-revision
(with-temp-buffer
- (vc-hg-command t 0 nil "tip")
+ (vc-hg-command t 0 nil "tip" "--style=default")
(goto-char (point-min))
(re-search-forward "^changeset:[ \t]*\\([0-9]+\\):")
(string-to-number (match-string-no-properties 1)))))
@@ -464,6 +464,35 @@ REV is the revision to check out into WORKFILE."
(vc-hg-command t 0 file "cat" "-r" rev)
(vc-hg-command t 0 file "cat")))))
+(defun vc-hg-resolve-when-done ()
+ "Call \"hg resolve -m\" if the conflict markers have been removed."
+ (save-excursion
+ (goto-char (point-min))
+ (unless (re-search-forward "^<<<<<<< " nil t)
+ (vc-hg-command nil 0 buffer-file-name "resolve" "-m")
+ ;; Remove the hook so that it is not called multiple times.
+ (remove-hook 'after-save-hook 'vc-hg-resolve-when-done t))))
+
+(defun vc-hg-find-file-hook ()
+ (when (and buffer-file-name
+ (file-exists-p (concat buffer-file-name ".orig"))
+ ;; Hg does not seem to have a "conflict" status, eg
+ ;; hg http://bz.selenic.com/show_bug.cgi?id=2724
+ (memq (vc-file-getprop buffer-file-name 'vc-state)
+ '(edited conflict))
+ ;; Maybe go on to check that "hg resolve -l" says "U"?
+ ;; If "hg resolve -l" says there's a conflict but there are no
+ ;; conflict markers, it's not clear what we should do.
+ (save-excursion
+ (goto-char (point-min))
+ (re-search-forward "^<<<<<<< " nil t)))
+ ;; Hg may not recognize "conflict" as a state, but we can do better.
+ (vc-file-setprop buffer-file-name 'vc-state 'conflict)
+ (smerge-start-session)
+ (add-hook 'after-save-hook 'vc-hg-resolve-when-done nil t)
+ (message "There are unresolved conflicts in this file")))
+
+
;; Modeled after the similar function in vc-bzr.el
(defun vc-hg-workfile-unchanged-p (file)
(eq 'up-to-date (vc-hg-state file)))
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 07a292ae435..40a1f3db982 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -107,10 +107,12 @@ control systems."
:type 'boolean
:group 'vc)
-(defcustom vc-mistrust-permissions nil
+;; If you fix bug#11490, probably you can set this back to nil.
+(defcustom vc-mistrust-permissions t
"If non-nil, don't assume permissions/ownership track version-control status.
If nil, do rely on the permissions.
See also variable `vc-consult-headers'."
+ :version "24.3" ; nil->t, bug#11490
:type 'boolean
:group 'vc)
@@ -856,8 +858,9 @@ current, and kill the buffer that visits the link."
(set (make-local-variable 'backup-inhibited) t))
;; Let the backend setup any buffer-local things he needs.
(vc-call-backend backend 'find-file-hook))
- ((let ((link-type (and (not (equal buffer-file-name buffer-file-truename))
- (vc-backend buffer-file-truename))))
+ ((let* ((truename (expand-file-name buffer-file-truename))
+ (link-type (and (not (equal buffer-file-name truename))
+ (vc-backend truename))))
(cond ((not link-type) nil) ;Nothing to do.
((eq vc-follow-symlinks nil)
(message
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index a909aca5bca..d001df87d5c 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1271,12 +1271,10 @@ first backend that could register the file is used."
;; many VCS allow that as well.
(dolist (fname files)
(let ((bname (get-file-buffer fname)))
- (unless fname (setq fname buffer-file-name))
- (when (vc-backend fname)
- (if (vc-registered fname)
- (error "This file is already registered")
- (unless (y-or-n-p "Previous master file has vanished. Make a new one? ")
- (error "Aborted"))))
+ (unless fname
+ (setq fname buffer-file-name))
+ (when (vc-call-backend backend 'registered fname)
+ (error "This file is already registered"))
;; Watch out for new buffers of size 0: the corresponding file
;; does not exist yet, even though buffer-modified-p is nil.
(when bname
@@ -2556,8 +2554,12 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
;;;###autoload
(defun vc-delete-file (file)
- "Delete file and mark it as such in the version control system."
- (interactive "fVC delete file: ")
+ "Delete file and mark it as such in the version control system.
+If called interactively, read FILE, defaulting to the current
+buffer's file name if it's under version control."
+ (interactive (list (read-file-name "VC delete file: " nil
+ (when (vc-backend buffer-file-name)
+ buffer-file-name) t)))
(setq file (expand-file-name file))
(let ((buf (get-file-buffer file))
(backend (vc-backend file)))
@@ -2595,8 +2597,13 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
;;;###autoload
(defun vc-rename-file (old new)
- "Rename file OLD to NEW in both work area and repository."
- (interactive "fVC rename file: \nFRename to: ")
+ "Rename file OLD to NEW in both work area and repository.
+If called interactively, read OLD and NEW, defaulting OLD to the
+current buffer's file name if it's under version control."
+ (interactive (list (read-file-name "VC rename file: " nil
+ (when (vc-backend buffer-file-name)
+ buffer-file-name) t)
+ (read-file-name "Rename to: ")))
;; in CL I would have said (setq new (merge-pathnames new old))
(let ((old-base (file-name-nondirectory old)))
(when (and (not (string= "" old-base))
diff --git a/m4/c-strtod.m4 b/m4/c-strtod.m4
index c002e5fcead..535721c8dbc 100644
--- a/m4/c-strtod.m4
+++ b/m4/c-strtod.m4
@@ -1,4 +1,4 @@
-# c-strtod.m4 serial 14
+# c-strtod.m4 serial 15
# Copyright (C) 2004-2006, 2009-2012 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
@@ -38,9 +38,6 @@ AC_DEFUN([gl_C_STRTOD],
[
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_CHECK_FUNCS([strtod_l])
-
- AC_REQUIRE([AC_C_INLINE])
- :
])
dnl Prerequisites of lib/c-strtold.c.
@@ -49,7 +46,4 @@ AC_DEFUN([gl_C_STRTOLD],
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_REQUIRE([gl_C99_STRTOLD])
AC_CHECK_FUNCS([strtold_l])
-
- AC_REQUIRE([AC_C_INLINE])
- :
])
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
index 600c8d3fa17..24922605e64 100644
--- a/m4/extern-inline.m4
+++ b/m4/extern-inline.m4
@@ -7,7 +7,6 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_EXTERN_INLINE],
[
- AC_REQUIRE([AC_C_INLINE])
AH_VERBATIM([extern_inline],
[/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
_GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
@@ -32,8 +31,8 @@ AC_DEFUN([gl_EXTERN_INLINE],
# endif
# define _GL_EXTERN_INLINE extern
#else
-# define _GL_INLINE static inline
-# define _GL_EXTERN_INLINE static inline
+# define _GL_INLINE static
+# define _GL_EXTERN_INLINE static
#endif
#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 30f81b4781f..c836801649f 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -85,8 +85,10 @@ AC_DEFUN([gl_EARLY],
# Code from module pathmax:
# Code from module pselect:
# Code from module pthread_sigmask:
+ # Code from module putenv:
# Code from module readlink:
# Code from module root-uid:
+ # Code from module sig2str:
# Code from module signal-h:
# Code from module snippet/_Noreturn:
# Code from module snippet/arg-nonnull:
@@ -125,6 +127,7 @@ AC_DEFUN([gl_EARLY],
# Code from module timespec-sub:
# Code from module u64:
# Code from module unistd:
+ # Code from module unsetenv:
# Code from module utimens:
# Code from module verify:
# Code from module warnings:
@@ -239,12 +242,22 @@ AC_DEFUN([gl_INIT],
gl_PREREQ_PTHREAD_SIGMASK
fi
gl_SIGNAL_MODULE_INDICATOR([pthread_sigmask])
+ gl_FUNC_PUTENV
+ if test $REPLACE_PUTENV = 1; then
+ AC_LIBOBJ([putenv])
+ fi
+ gl_STDLIB_MODULE_INDICATOR([putenv])
gl_FUNC_READLINK
if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
AC_LIBOBJ([readlink])
gl_PREREQ_READLINK
fi
gl_UNISTD_MODULE_INDICATOR([readlink])
+ gl_FUNC_SIG2STR
+ if test $ac_cv_func_sig2str = no; then
+ AC_LIBOBJ([sig2str])
+ gl_PREREQ_SIG2STR
+ fi
gl_SIGNAL_H
gl_TYPE_SOCKLEN_T
gt_TYPE_SSIZE_T
@@ -291,6 +304,12 @@ AC_DEFUN([gl_INIT],
gl_TIMER_TIME
gl_TIMESPEC
gl_UNISTD_H
+ gl_FUNC_UNSETENV
+ if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then
+ AC_LIBOBJ([unsetenv])
+ gl_PREREQ_UNSETENV
+ fi
+ gl_STDLIB_MODULE_INDICATOR([unsetenv])
gl_UTIMENS
gl_gnulib_enabled_dosname=false
gl_gnulib_enabled_euidaccess=false
@@ -673,6 +692,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/pathmax.h
lib/pselect.c
lib/pthread_sigmask.c
+ lib/putenv.c
lib/readlink.c
lib/root-uid.h
lib/sha1.c
@@ -681,6 +701,8 @@ AC_DEFUN([gl_FILE_LIST], [
lib/sha256.h
lib/sha512.c
lib/sha512.h
+ lib/sig2str.c
+ lib/sig2str.h
lib/signal.in.h
lib/stat-time.c
lib/stat-time.h
@@ -690,6 +712,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/stdbool.in.h
lib/stddef.in.h
lib/stdint.in.h
+ lib/stdio.c
lib/stdio.in.h
lib/stdlib.in.h
lib/strftime.c
@@ -712,7 +735,9 @@ AC_DEFUN([gl_FILE_LIST], [
lib/timespec.h
lib/u64.c
lib/u64.h
+ lib/unistd.c
lib/unistd.in.h
+ lib/unsetenv.c
lib/utimens.c
lib/utimens.h
lib/verify.h
@@ -754,10 +779,13 @@ AC_DEFUN([gl_FILE_LIST], [
m4/pathmax.m4
m4/pselect.m4
m4/pthread_sigmask.m4
+ m4/putenv.m4
m4/readlink.m4
+ m4/setenv.m4
m4/sha1.m4
m4/sha256.m4
m4/sha512.m4
+ m4/sig2str.m4
m4/signal_h.m4
m4/socklen.m4
m4/ssize_t.m4
diff --git a/m4/lstat.m4 b/m4/lstat.m4
index b7335bda1b2..01b4eb953d5 100644
--- a/m4/lstat.m4
+++ b/m4/lstat.m4
@@ -1,4 +1,4 @@
-# serial 25
+# serial 26
# Copyright (C) 1997-2001, 2003-2012 Free Software Foundation, Inc.
#
@@ -27,11 +27,7 @@ AC_DEFUN([gl_FUNC_LSTAT],
])
# Prerequisites of lib/lstat.c.
-AC_DEFUN([gl_PREREQ_LSTAT],
-[
- AC_REQUIRE([AC_C_INLINE])
- :
-])
+AC_DEFUN([gl_PREREQ_LSTAT], [:])
AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
[
diff --git a/m4/md5.m4 b/m4/md5.m4
index e22f7bdb17a..85ed8946068 100644
--- a/m4/md5.m4
+++ b/m4/md5.m4
@@ -1,4 +1,4 @@
-# md5.m4 serial 12
+# md5.m4 serial 13
dnl Copyright (C) 2002-2006, 2008-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -8,6 +8,5 @@ AC_DEFUN([gl_MD5],
[
dnl Prerequisites of lib/md5.c.
AC_REQUIRE([gl_BIGENDIAN])
- AC_REQUIRE([AC_C_INLINE])
:
])
diff --git a/m4/putenv.m4 b/m4/putenv.m4
new file mode 100644
index 00000000000..b971b1204d6
--- /dev/null
+++ b/m4/putenv.m4
@@ -0,0 +1,50 @@
+# putenv.m4 serial 19
+dnl Copyright (C) 2002-2012 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+dnl
+dnl Check whether putenv ("FOO") removes FOO from the environment.
+dnl The putenv in libc on at least SunOS 4.1.4 does *not* do that.
+
+AC_DEFUN([gl_FUNC_PUTENV],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([for putenv compatible with GNU and SVID],
+ [gl_cv_func_svid_putenv],
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],[[
+ /* Put it in env. */
+ if (putenv ("CONFTEST_putenv=val"))
+ return 1;
+
+ /* Try to remove it. */
+ if (putenv ("CONFTEST_putenv"))
+ return 2;
+
+ /* Make sure it was deleted. */
+ if (getenv ("CONFTEST_putenv") != 0)
+ return 3;
+
+ return 0;
+ ]])],
+ gl_cv_func_svid_putenv=yes,
+ gl_cv_func_svid_putenv=no,
+ dnl When crosscompiling, assume putenv is broken.
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_svid_putenv="guessing yes" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_svid_putenv="guessing no" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_svid_putenv" in
+ *yes) ;;
+ *)
+ REPLACE_PUTENV=1
+ ;;
+ esac
+])
diff --git a/m4/setenv.m4 b/m4/setenv.m4
new file mode 100644
index 00000000000..e1931e7eb28
--- /dev/null
+++ b/m4/setenv.m4
@@ -0,0 +1,160 @@
+# setenv.m4 serial 26
+dnl Copyright (C) 2001-2004, 2006-2012 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SETENV],
+[
+ AC_REQUIRE([gl_FUNC_SETENV_SEPARATE])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ if test $ac_cv_func_setenv = no; then
+ HAVE_SETENV=0
+ else
+ AC_CACHE_CHECK([whether setenv validates arguments],
+ [gl_cv_func_setenv_works],
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+ #include <stdlib.h>
+ #include <errno.h>
+ #include <string.h>
+ ]], [[
+ int result = 0;
+ {
+ if (setenv ("", "", 0) != -1)
+ result |= 1;
+ else if (errno != EINVAL)
+ result |= 2;
+ }
+ {
+ if (setenv ("a", "=", 1) != 0)
+ result |= 4;
+ else if (strcmp (getenv ("a"), "=") != 0)
+ result |= 8;
+ }
+ return result;
+ ]])],
+ [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no],
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_setenv_works="guessing yes" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_setenv_works="guessing no" ;;
+ esac
+ ])])
+ case "$gl_cv_func_setenv_works" in
+ *yes) ;;
+ *)
+ REPLACE_SETENV=1
+ ;;
+ esac
+ fi
+])
+
+# Like gl_FUNC_SETENV, except prepare for separate compilation
+# (no REPLACE_SETENV, no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([setenv])
+ if test $ac_cv_have_decl_setenv = no; then
+ HAVE_DECL_SETENV=0
+ fi
+ AC_CHECK_FUNCS_ONCE([setenv])
+ gl_PREREQ_SETENV
+])
+
+AC_DEFUN([gl_FUNC_UNSETENV],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CHECK_DECLS_ONCE([unsetenv])
+ if test $ac_cv_have_decl_unsetenv = no; then
+ HAVE_DECL_UNSETENV=0
+ fi
+ AC_CHECK_FUNCS([unsetenv])
+ if test $ac_cv_func_unsetenv = no; then
+ HAVE_UNSETENV=0
+ else
+ HAVE_UNSETENV=1
+ dnl Some BSDs return void, failing to do error checking.
+ AC_CACHE_CHECK([for unsetenv() return type], [gt_cv_func_unsetenv_ret],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#undef _BSD
+#define _BSD 1 /* unhide unsetenv declaration in OSF/1 5.1 <stdlib.h> */
+#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+int unsetenv (const char *name);
+ ]],
+ [[]])],
+ [gt_cv_func_unsetenv_ret='int'],
+ [gt_cv_func_unsetenv_ret='void'])])
+ if test $gt_cv_func_unsetenv_ret = 'void'; then
+ AC_DEFINE([VOID_UNSETENV], [1], [Define to 1 if unsetenv returns void
+ instead of int.])
+ REPLACE_UNSETENV=1
+ fi
+
+ dnl Solaris 10 unsetenv does not remove all copies of a name.
+ dnl Haiku alpha 2 unsetenv gets confused by assignment to environ.
+ dnl OpenBSD 4.7 unsetenv("") does not fail.
+ AC_CACHE_CHECK([whether unsetenv obeys POSIX],
+ [gl_cv_func_unsetenv_works],
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+ #include <stdlib.h>
+ #include <errno.h>
+ extern char **environ;
+ ]], [[
+ char entry1[] = "a=1";
+ char entry2[] = "b=2";
+ char *env[] = { entry1, entry2, NULL };
+ if (putenv ((char *) "a=1")) return 1;
+ if (putenv (entry2)) return 2;
+ entry2[0] = 'a';
+ unsetenv ("a");
+ if (getenv ("a")) return 3;
+ if (!unsetenv ("") || errno != EINVAL) return 4;
+ entry2[0] = 'b';
+ environ = env;
+ if (!getenv ("a")) return 5;
+ entry2[0] = 'a';
+ unsetenv ("a");
+ if (getenv ("a")) return 6;
+ ]])],
+ [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no],
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_unsetenv_works="guessing no" ;;
+ esac
+ ])])
+ case "$gl_cv_func_unsetenv_works" in
+ *yes) ;;
+ *)
+ REPLACE_UNSETENV=1
+ ;;
+ esac
+ fi
+])
+
+# Prerequisites of lib/setenv.c.
+AC_DEFUN([gl_PREREQ_SETENV],
+[
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ AC_REQUIRE([gl_ENVIRON])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_HEADERS([search.h])
+ AC_CHECK_FUNCS([tsearch])
+])
+
+# Prerequisites of lib/unsetenv.c.
+AC_DEFUN([gl_PREREQ_UNSETENV],
+[
+ AC_REQUIRE([gl_ENVIRON])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+])
diff --git a/m4/sha1.m4 b/m4/sha1.m4
index 76198258b92..29fa4850341 100644
--- a/m4/sha1.m4
+++ b/m4/sha1.m4
@@ -1,4 +1,4 @@
-# sha1.m4 serial 10
+# sha1.m4 serial 11
dnl Copyright (C) 2002-2006, 2008-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -8,6 +8,5 @@ AC_DEFUN([gl_SHA1],
[
dnl Prerequisites of lib/sha1.c.
AC_REQUIRE([gl_BIGENDIAN])
- AC_REQUIRE([AC_C_INLINE])
:
])
diff --git a/m4/sha256.m4 b/m4/sha256.m4
index 78cc95ed8b6..f75a7fb9e07 100644
--- a/m4/sha256.m4
+++ b/m4/sha256.m4
@@ -1,4 +1,4 @@
-# sha256.m4 serial 5
+# sha256.m4 serial 6
dnl Copyright (C) 2005, 2008-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -8,5 +8,4 @@ AC_DEFUN([gl_SHA256],
[
dnl Prerequisites of lib/sha256.c.
AC_REQUIRE([gl_BIGENDIAN])
- AC_REQUIRE([AC_C_INLINE])
])
diff --git a/m4/sha512.m4 b/m4/sha512.m4
index 937ea8d5e9d..e6e27393d7d 100644
--- a/m4/sha512.m4
+++ b/m4/sha512.m4
@@ -1,4 +1,4 @@
-# sha512.m4 serial 6
+# sha512.m4 serial 7
dnl Copyright (C) 2005-2006, 2008-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -8,5 +8,4 @@ AC_DEFUN([gl_SHA512],
[
dnl Prerequisites of lib/sha512.c.
AC_REQUIRE([gl_BIGENDIAN])
- AC_REQUIRE([AC_C_INLINE])
])
diff --git a/m4/sig2str.m4 b/m4/sig2str.m4
new file mode 100644
index 00000000000..43650b045e7
--- /dev/null
+++ b/m4/sig2str.m4
@@ -0,0 +1,15 @@
+# serial 7
+dnl Copyright (C) 2002, 2005-2006, 2009-2012 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SIG2STR],
+[
+ AC_CHECK_FUNCS([sig2str])
+])
+
+# Prerequisites of lib/sig2str.c.
+AC_DEFUN([gl_PREREQ_SIG2STR], [
+ :
+])
diff --git a/m4/stat.m4 b/m4/stat.m4
index a8b79f5bcba..0fd117e05eb 100644
--- a/m4/stat.m4
+++ b/m4/stat.m4
@@ -1,4 +1,4 @@
-# serial 10
+# serial 11
# Copyright (C) 2009-2012 Free Software Foundation, Inc.
#
@@ -68,8 +68,4 @@ AC_DEFUN([gl_FUNC_STAT],
])
# Prerequisites of lib/stat.c.
-AC_DEFUN([gl_PREREQ_STAT],
-[
- AC_REQUIRE([AC_C_INLINE])
- :
-])
+AC_DEFUN([gl_PREREQ_STAT], [:])
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
index 5298dd6d9d5..3bd65803667 100644
--- a/m4/stdio_h.m4
+++ b/m4/stdio_h.m4
@@ -1,4 +1,4 @@
-# stdio_h.m4 serial 42
+# stdio_h.m4 serial 43
dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -7,7 +7,6 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_STDIO_H],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
- AC_REQUIRE([AC_C_INLINE])
gl_NEXT_HEADERS([stdio.h])
dnl No need to create extra modules for these functions. Everyone who uses
diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4
index 8d4e7e1ebb4..acfae413283 100644
--- a/m4/sys_socket_h.m4
+++ b/m4/sys_socket_h.m4
@@ -1,4 +1,4 @@
-# sys_socket_h.m4 serial 22
+# sys_socket_h.m4 serial 23
dnl Copyright (C) 2005-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -10,7 +10,6 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET],
[
AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([AC_C_INLINE])
dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have
dnl old-style declarations (with return type 'int' instead of 'ssize_t')
diff --git a/m4/sys_stat_h.m4 b/m4/sys_stat_h.m4
index f45dee1dc4d..8af3353ea51 100644
--- a/m4/sys_stat_h.m4
+++ b/m4/sys_stat_h.m4
@@ -1,4 +1,4 @@
-# sys_stat_h.m4 serial 27 -*- Autoconf -*-
+# sys_stat_h.m4 serial 28 -*- Autoconf -*-
dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -11,9 +11,6 @@ AC_DEFUN([gl_HEADER_SYS_STAT_H],
[
AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
- dnl For the mkdir substitute.
- AC_REQUIRE([AC_C_INLINE])
-
dnl Check for broken stat macros.
AC_REQUIRE([AC_HEADER_STAT])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
index 7e7651b9d2e..f68fbff8cef 100644
--- a/m4/unistd_h.m4
+++ b/m4/unistd_h.m4
@@ -1,4 +1,4 @@
-# unistd_h.m4 serial 65
+# unistd_h.m4 serial 66
dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -11,7 +11,6 @@ AC_DEFUN([gl_UNISTD_H],
dnl Use AC_REQUIRE here, so that the default behavior below is expanded
dnl once only, before all statements that occur in other macros.
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
- AC_REQUIRE([AC_C_INLINE])
gl_CHECK_NEXT_HEADERS([unistd.h])
if test $ac_cv_header_unistd_h = yes; then
diff --git a/make-dist b/make-dist
index 7a17fa02372..a7f4b74e97e 100755
--- a/make-dist
+++ b/make-dist
@@ -381,9 +381,9 @@ echo "Making links to \`m4'"
echo "Making links to \`nt'"
(cd nt
- ln emacs.manifest emacs.rc emacsclient.rc config.nt ../${tempdir}/nt
- ln emacs-src.tags nmake.defs gmake.defs subdirs.el ../${tempdir}/nt
- ln [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
+ ln emacs-x86.manifest emacs-x64.manifest emacs.rc ../${tempdir}/nt
+ ln config.nt emacsclient.rc emacs-src.tags ../${tempdir}/nt
+ ln nmake.defs gmake.defs subdirs.el [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
ln ChangeLog INSTALL README README.W32 makefile.w32-in ../${tempdir}/nt)
echo "Making links to \`nt/inc' and its subdirectories"
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 753931ae097..1fdd9316847 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-03 Eli Zaretskii <eliz@gnu.org>
+
+ * sed1v2.inp: Dump emacs.exe and copy to b-emacs.exe before
+ generating leim-list.el.
+
2012-11-24 Ken Brown <kbrown@cornell.edu>
* sed2v2.inp (HAVE_MOUSE): Remove.
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index 84f24bf2c1a..0ee7510bec1 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -157,6 +157,12 @@ s/^ [^ ]*move-if-change / update /
/^ echo[ ][ ]*timestamp/s/echo /djecho /
/^ .*djecho timestamp/a\
@rm -f gl-tmp
+/^ cd \$(leimdir) && \$(MAKE)/i\
+ $(RUN_TEMACS) -batch -l loadup dump\
+ stubify emacs\
+ stubedit emacs.exe minstack=2048k\
+ rm -f b-emacs$(EXEEXT)\
+ cp emacs$(EXEEXT) b-emacs$(EXEEXT)
/^ cd \$(leimdir) && \$(MAKE)/c\
$(MAKE) $(MFLAGS) -C $(leimdir) leim-list.el EMACS=$(bootstrap_exe)
/^ cd \$(lib) && \$(MAKE)/c\
diff --git a/nt/ChangeLog b/nt/ChangeLog
index dd79cfc2526..8cb9594d4d0 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,14 @@
+2012-12-08 Eli Zaretskii <eliz@gnu.org>
+
+ * inc/ms-w32.h (putenv): Redirect to sys_putenv.
+ (sys_putenv): Add prototype.
+
+ * config.nt (HAVE_UNSETENV): Define to 1.
+
+2012-12-01 Juanma Barranquero <lekktu@gmail.com>
+
+ * config.nt: Sync with autogen/config.in.
+
2012-11-24 Ken Brown <kbrown@cornell.edu>
* config.nt (HAVE_MOUSE): Remove.
diff --git a/nt/config.nt b/nt/config.nt
index 60223306752..e83c9ff655f 100644
--- a/nt/config.nt
+++ b/nt/config.nt
@@ -993,6 +993,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if the system has the type 'unsigned long long int'. */
#undef HAVE_UNSIGNED_LONG_LONG_INT
+/* Define to 1 if you have the `unsetenv' function. */
+#define HAVE_UNSETENV 1
+
/* Define to 1 if you have the <util.h> header file. */
#undef HAVE_UTIL_H
@@ -1541,8 +1544,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# endif
# define _GL_EXTERN_INLINE extern
#else
-# define _GL_INLINE static inline
-# define _GL_EXTERN_INLINE static inline
+# define _GL_INLINE static
+# define _GL_EXTERN_INLINE static
#endif
#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
@@ -1570,12 +1573,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to rpl_gmtime if the replacement function should be used. */
#undef gmtime
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
diff --git a/nt/inc/ms-w32.h b/nt/inc/ms-w32.h
index 7b16ccab069..3d68efb804d 100644
--- a/nt/inc/ms-w32.h
+++ b/nt/inc/ms-w32.h
@@ -376,6 +376,13 @@ extern char *get_emacs_configuration_options (void);
#define sys_nerr _sys_nerr
#endif
+/* This must be after including stdlib.h, which defines putenv on MinGW. */
+#ifdef putenv
+# undef putenv
+#endif
+#define putenv sys_putenv
+extern int sys_putenv (char *);
+
extern int getloadavg (double *, int);
extern int getpagesize (void);
diff --git a/oldXMenu/Activate.c b/oldXMenu/Activate.c
index d4683da87f2..51ffc47f0c9 100644
--- a/oldXMenu/Activate.c
+++ b/oldXMenu/Activate.c
@@ -95,7 +95,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
*
*/
-#include <config.h>
#include "XMenuInt.h"
#include <X11/keysym.h>
diff --git a/oldXMenu/AddPane.c b/oldXMenu/AddPane.c
index 36b57fe8da6..2c8dda8cd11 100644
--- a/oldXMenu/AddPane.c
+++ b/oldXMenu/AddPane.c
@@ -12,7 +12,6 @@
*
*/
-#include <config.h>
#include "XMenuInt.h"
int
diff --git a/oldXMenu/AddSel.c b/oldXMenu/AddSel.c
index 2b1ff3d6c89..07eb1fed15b 100644
--- a/oldXMenu/AddSel.c
+++ b/oldXMenu/AddSel.c
@@ -13,7 +13,6 @@
*
*/
-#include <config.h>
#include "XMenuInt.h"
int
diff --git a/oldXMenu/ChangeLog b/oldXMenu/ChangeLog
index 133b18b4e3f..3601b980ab0 100644
--- a/oldXMenu/ChangeLog
+++ b/oldXMenu/ChangeLog
@@ -1,3 +1,14 @@
+2012-12-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Include <config.h> uniformly in oldXMenu sources.
+ * Activate.c, AddPane.c, AddSel.c, ChgPane.c, ChgSel.c, Create.c:
+ * InsPane.c, InsSel.c, Internal.c, XMakeAssoc.c:
+ Do not include <config.h>, since XMenuInt.h does that now.
+ * XLookAssoc.c, XMenuInt.h: Include <config.h>.
+ This avoids a build failure when configuring on Fedora 17
+ --with-x-toolkit=no, reported by Dmitry Andropov in
+ <http://lists.gnu.org/archive/html/emacs-devel/2012-12/msg00078.html>.
+
2012-10-06 Ulrich Müller <ulm@gentoo.org>
* Makefile.in (AR, ARFLAGS): Get values from configure.
diff --git a/oldXMenu/ChgPane.c b/oldXMenu/ChgPane.c
index 38b63820161..d2977b73faf 100644
--- a/oldXMenu/ChgPane.c
+++ b/oldXMenu/ChgPane.c
@@ -13,7 +13,6 @@
*
*/
-#include <config.h>
#include "XMenuInt.h"
int
@@ -65,4 +64,3 @@ XMenuChangePane(register XMenu *menu, register int p_num, char *label)
_XMErrorCode = XME_NO_ERROR;
return(p_num);
}
-
diff --git a/oldXMenu/ChgSel.c b/oldXMenu/ChgSel.c
index dcefb6c3a5d..d24e61f56d5 100644
--- a/oldXMenu/ChgSel.c
+++ b/oldXMenu/ChgSel.c
@@ -13,7 +13,6 @@
*
*/
-#include <config.h>
#include "XMenuInt.h"
int
@@ -87,4 +86,3 @@ XMenuChangeSelection(Display *display, register XMenu *menu, register int p_num,
_XMErrorCode = XME_NO_ERROR;
return(s_num);
}
-
diff --git a/oldXMenu/Create.c b/oldXMenu/Create.c
index 1d21e534300..6dda7d44ef4 100644
--- a/oldXMenu/Create.c
+++ b/oldXMenu/Create.c
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
*
*/
-#include <config.h>
#include "XMenuInt.h"
#include <stdlib.h>
diff --git a/oldXMenu/InsPane.c b/oldXMenu/InsPane.c
index bdbadbf1226..d8470f3a5bf 100644
--- a/oldXMenu/InsPane.c
+++ b/oldXMenu/InsPane.c
@@ -14,7 +14,6 @@
*
*/
-#include <config.h>
#include "XMenuInt.h"
int
diff --git a/oldXMenu/InsSel.c b/oldXMenu/InsSel.c
index 5db285f6408..66f4968197d 100644
--- a/oldXMenu/InsSel.c
+++ b/oldXMenu/InsSel.c
@@ -13,7 +13,6 @@
*
*/
-#include <config.h>
#include "XMenuInt.h"
int
diff --git a/oldXMenu/Internal.c b/oldXMenu/Internal.c
index dc8dc0120ef..ee1e88b396e 100644
--- a/oldXMenu/Internal.c
+++ b/oldXMenu/Internal.c
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */
*
*/
-#include <config.h>
#include "XMenuInt.h"
/*
diff --git a/oldXMenu/XLookAssoc.c b/oldXMenu/XLookAssoc.c
index e287ebbaa72..fad960d7a4c 100644
--- a/oldXMenu/XLookAssoc.c
+++ b/oldXMenu/XLookAssoc.c
@@ -2,7 +2,7 @@
#include "copyright.h"
-
+#include <config.h>
#include <X11/Xlib.h>
#include <X11/Xresource.h>
#include "X10.h"
@@ -18,10 +18,9 @@
* in the table the routine will return a NULL pointer. All XId's are relative
* to the currently active Display.
*/
-caddr_t XLookUpAssoc(register Display *dpy, register XAssocTable *table, register XID x_id)
-
- /* XAssocTable to search in. */
- /* XId to search for. */
+caddr_t XLookUpAssoc(Display *dpy,
+ XAssocTable *table, /* XAssocTable to search in. */
+ XID x_id) /* XId to search for. */
{
int hash;
register XAssoc *bucket;
@@ -55,4 +54,3 @@ caddr_t XLookUpAssoc(register Display *dpy, register XAssocTable *table, registe
/* It is apparently not in the table. */
return(NULL);
}
-
diff --git a/oldXMenu/XMakeAssoc.c b/oldXMenu/XMakeAssoc.c
index 143b2641112..9bbde2cf94d 100644
--- a/oldXMenu/XMakeAssoc.c
+++ b/oldXMenu/XMakeAssoc.c
@@ -3,7 +3,6 @@
#include "copyright.h"
-#include <config.h>
#include "XMenuInt.h"
#include <X11/Xresource.h>
#include <errno.h>
diff --git a/oldXMenu/XMenuInt.h b/oldXMenu/XMenuInt.h
index 721652c9539..1edef30bc5f 100644
--- a/oldXMenu/XMenuInt.h
+++ b/oldXMenu/XMenuInt.h
@@ -17,6 +17,8 @@
#ifndef _XMenuInternal_h_
#define _XMenuInternal_h_
+#include <config.h>
+
/* Avoid warnings about redefining NULL by including <stdio.h> first;
the other file which wants to define it (<stddef.h> on Ultrix
systems) can deal if NULL is already defined, but <stdio.h> can't. */
diff --git a/src/ChangeLog b/src/ChangeLog
index c612c4dd365..222be9575b8 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,380 @@
+2012-12-08 Eli Zaretskii <eliz@gnu.org>
+
+ * w32.c (unsetenv): Return 0 if the input string is too long.
+
+2012-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use putenv+unsetenv instead of modifying environ directly (Bug#13070).
+ * alloc.c (xputenv): New function.
+ * dbusbind.c (Fdbus_init_bus):
+ * emacs.c (main):
+ * xterm.c (x_term_init):
+ Use xputenv instead of setenv or putenv, to detect memory exhaustion.
+ * editfns.c (initial_tz): Move static var decl up.
+ (tzvalbuf_in_environ): New static var.
+ (init_editfns): Initialize these two static vars.
+ (Fencode_time): Don't assume arbitrary limit on EMACS_INT width.
+ Save old TZ value on stack, if it's small.
+ (Fencode_time, set_time_zone_rule): Don't modify 'environ' directly;
+ instead, use xputenv+unsetenv to set and restore TZ.
+ (environbuf): Remove static var. All uses removed.
+ (Fset_time_zone_rule): Do not save TZ and environ;
+ no longer needed here.
+ (set_time_zone_rule_tz1, set_time_zone_rule_tz2) [LOCALTIME_CACHE]:
+ Move to inside set_time_zone_rule; they don't need file scope any more.
+ (set_time_zone_rule): Maintain the TZ=value string separately.
+ (syms_of_editfns): Don't initialize initial_tz;
+ init_editfns now does it.
+ * emacs.c (dump_tz) [HAVE_TZSET]: Now const.
+ * lisp.h (xputenv): New decl.
+
+2012-12-08 Fabrice Popineau <fabrice.popineau@gmail.com>
+
+ * w32fns.c (emacs_abort): Don't do arithmetics on void pointers.
+
+2012-12-08 Eli Zaretskii <eliz@gnu.org>
+
+ * w32.c (unsetenv, sys_putenv): New functions.
+
+2012-12-08 Chong Yidong <cyd@gnu.org>
+
+ * editfns.c (Finsert_char): Make the error message more
+ informative (Bug#12992).
+
+2012-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Simplify get_lim_data.
+ * vm-limit.c (get_lim_data): Combine RLIMIT_AS and RLIMIT_DATA methods.
+ Remove USG and vlimit methods; no longer used these days.
+ Add #error catchall just in case.
+
+ Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
+ Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN,
+ SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these.
+ * process.c [subprocesses]: Include <c-ctype.h>, <sig2str.h>.
+ (deleted_pid_list, Fdelete_process, create_process)
+ (record_child_status_change, handle_child_signal, deliver_child_signal)
+ (init_process_emacs, syms_of_process):
+ Assume SIGCHLD is defined.
+ (parse_signal): Remove. All uses removed.
+ (abbr_to_signal): New static function.
+ (Fsignal_process): Use it to convert signal names to ints.
+ * sysdep.c (sys_suspend) [!DOS_NT]: Use kill (0, ...) rather than
+ kill (getpgrp (), ...).
+ (emacs_sigaction_init): Assume SIGCHLD is defined.
+ (init_signals): Assume SIGALRM, SIGCHLD, SIGHUP, SIGKILL,
+ SIGPIPE, and SIGQUIT are defined. Do not worry about SIGCLD any more.
+ * syssignal.h (EMACS_KILLPG): Remove.
+ All uses replaced by 'kill' with a negative pid.
+ (SIGCHLD): Remove definition, as we now assume SIGCHLD.
+ * w32proc.c (sys_kill): Support negative pids compatibly with POSIX.
+
+2012-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * sysdep.c (get_child_status): Abort on internal error (Bug#13086).
+ This will cause a production Emacs to dump core instead of
+ infinite-looping.
+
+2012-12-07 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.c (make_frame): Do not set window's buffer to t.
+ * window.c (Fsplit_window_internal): Likewise. Previously it was
+ used to indicate that the window is being set up. Now we use
+ set_window_buffer for all new windows, so the condition in ...
+ (Fset_window_buffer): ... is always true and can be removed.
+
+2012-12-07 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Convenient macro to check whether the buffer is hidden.
+ * buffer.h (BUFFER_HIDDEN_P): New macro.
+ * frame.c (make_frame): Use it. Adjust comment.
+ * buffer.c (candidate_buffer): New function.
+ (Fother_buffer, other_buffer_safely): Use it.
+
+2012-12-06 Eli Zaretskii <eliz@gnu.org>
+
+ * w32proc.c (waitpid): Avoid busy-waiting when called with WNOHANG
+ if the child process is still running. Instead, exit the wait
+ loop and return zero. (Bug#13086)
+
+2012-12-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.h (x_char_width, x_char_height): Remove prototypes.
+ * w32term.h (x_char_width, x_char_height): Likewise.
+ * xfns.c (x_char_width, x_char_height): Remove.
+ * w32fns.c (x_char_width, x_char_height): Likewise.
+ * nsfns.c (x_char_width, x_char_height): Likewise.
+ * frame.c (Fframe_char_width): Use FRAME_COLUMN_WIDTH for
+ all window frames.
+ (Fframe_char_height): Likewise with FRAME_LINE_HEIGHT.
+ * keyboard.c (command_loop_1): Remove prototype.
+ (command_loop_2, top_level_1): Add static to match prototype.
+
+2012-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix a recently-introduced delete-process race condition.
+ * callproc.c, process.h (record_kill_process):
+ New function, containing part of the old call_process_kill.
+ (call_process_kill): Use it.
+ This does not change call_process_kill's behavior.
+ * process.c (Fdelete_process): Use record_kill_process to fix a
+ race condition that could cause Emacs to lose track of a child.
+
+2012-12-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Avoid code duplication between prev_frame and next_frame.
+ * frame.c (candidate_frame): New function. Add comment.
+ (prev_frame, next_frame): Use it. Adjust comment.
+
+2012-12-06 Eli Zaretskii <eliz@gnu.org>
+
+ * callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp
+ fails, signal an error instead of continuing with an empty
+ string. (Bug#13079)
+ Encode expanded temp file pattern before passing it to mkstemp or
+ mktemp.
+
+ * fileio.c (file_name_as_directory, directory_file_name) [DOS_NT]:
+ Encode the file name before passing it to dostounix_filename, in
+ case it will downcase it (under w32-downcase-file-names).
+ (Bug#12933)
+
+2012-12-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Minor call-process cleanups.
+ * callproc.c (Fcall_process): Do record-unwind-protect on MSDOS
+ at the same time as other platforms, to simplify analysis.
+ No need for fd0_volatile since we have synch_process_fd.
+ Avoid needless emacs_close; arg is always negative.
+
+2012-12-04 Andreas Schwab <schwab@linux-m68k.org>
+
+ * callproc.c (Fcall_process): Fix specpdl nesting for asynchronous
+ processes.
+
+2012-12-04 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * lisp.h (Mouse_HLInfo): Remove set-but-unused mouse_face_image_state
+ member. Adjust users. Convert mouse_face_past_end, mouse_face_defer
+ and mouse_face_hidden members to a bitfields.
+ * frame.h (struct frame): Remove set-but-not-used space_width member.
+ (FRAME_SPACE_WIDTH): Remove.
+ * nsterm.m, w32term.c, xterm.c: Adjust users.
+ * termchar.h (struct tty_display_info): Remove set-but-unused se_is_so
+ member. Adjust users. Convert term_initted, delete_in_insert_mode,
+ costs_set, insert_mode, standout_mode, cursor_hidden and flow_control
+ members to a bitfields.
+
+2012-12-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't let call-process be a zombie factory (Bug#12980).
+ Fixing this bug required some cleanup of the signal-handling code.
+ As a side effect, this change also fixes a longstanding rare race
+ condition whereby Emacs could mistakenly kill unrelated processes,
+ and it fixes a bug where a second C-g does not kill a recalcitrant
+ synchronous process in GNU/Linux and similar platforms.
+ The patch should also fix the last vestiges of Bug#9488,
+ a bug which has mostly been fixed on the trunk by other changes.
+ * callproc.c, process.h (synch_process_alive, synch_process_death)
+ (synch_process_termsig, sync_process_retcode):
+ Remove. All uses removed, to simplify analysis and so that
+ less consing is done inside critical sections.
+ * callproc.c (call_process_exited): Remove. All uses replaced
+ with !synch_process_pid.
+ * callproc.c (synch_process_pid, synch_process_fd): New static vars.
+ These take the role of what used to be in unwind-protect arg.
+ All uses changed.
+ (block_child_signal, unblock_child_signal):
+ New functions, to avoid races that could kill innocent-victim processes.
+ (call_process_kill, call_process_cleanup, Fcall_process): Use them.
+ (call_process_kill): Record killed processes as deleted, so that
+ zombies do not clutter up the system. Do this inside a critical
+ section, to avoid a race that would allow the clutter.
+ (call_process_cleanup): Fix code so that the second C-g works again
+ on common platforms such as GNU/Linux.
+ (Fcall_process): Create the child process in a critical section,
+ to fix a race condition. If creating an asynchronous process,
+ record it as deleted so that zombies do not clutter up the system.
+ Do unwind-protect for WINDOWSNT too, as that's simpler in the
+ light of these changes. Omit unnecessary call to emacs_close
+ before failure, as the unwind-protect code does that.
+ * callproc.c (call_process_cleanup):
+ * w32proc.c (waitpid): Simplify now that synch_process_alive is gone.
+ * process.c (record_deleted_pid): New function, containing
+ code refactored out of Fdelete_process.
+ (Fdelete_process): Use it.
+ (process_status_retrieved): Remove. All callers changed to use
+ child_status_change.
+ (record_child_status_change): Remove, folding its contents into ...
+ (handle_child_signal): ... this signal handler. Now, this
+ function is purely a handler for SIGCHLD, and is not called after
+ a synchronous waitpid returns; the synchronous code is moved to
+ wait_for_termination. There is no need to worry about reaping
+ more than one child now.
+ * sysdep.c (get_child_status, child_status_changed): New functions.
+ (wait_for_termination): Now takes int * status and bool
+ interruptible arguments, too. Do not record child status change;
+ that's now the caller's responsibility. All callers changed.
+ Reimplement in terms of get_child_status.
+ (wait_for_termination_1, interruptible_wait_for_termination):
+ Remove. All callers changed to use wait_for_termination.
+ * syswait.h: Include <stdbool.h>, for bool.
+ (record_child_status_change, interruptible_wait_for_termination):
+ Remove decls.
+ (record_deleted_pid, child_status_changed): New decls.
+ (wait_for_termination): Adjust to API changes noted above.
+
+ * bytecode.c, lisp.h (Qbytecode): Remove.
+ No longer needed after 2012-11-20 interactive-p changes.
+
+2012-12-03 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (redisplay_window): If the cursor is visible, but inside
+ the scroll margin, move point outside the margin. (Bug#13055)
+
+2012-12-03 Jan Djärv <jan.h.d@swipnet.se>
+
+ * gtkutil.c (my_log_handler): New function.
+ (xg_set_geometry): Set log handler to my_log_handler (Bug#11177).
+
+2012-12-03 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * lisp.h (modify_region): Rename to...
+ (modify_region_1): ...new prototype.
+ * textprop.c (modify_region): Now static. Adjust users.
+ * insdel.c (modify_region): Rename to...
+ (modify_region_1): ...new function to work with current buffer.
+ Adjust comment and users. Use true and false for booleans.
+
+2012-12-03 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * alloc.c (free_save_value): New function.
+ (safe_alloca_unwind): Use it.
+ * lisp.h (free_save_value): New prototype.
+ * editfns.c (save_excursion_save): Use Lisp_Misc_Save_Value.
+ Add comment.
+ (save_excursion_restore): Adjust to match saved data structure.
+ Use free_save_value to offload some work from GC. Drop obsolete
+ #if 0 code.
+
+2012-12-03 Chong Yidong <cyd@gnu.org>
+
+ * fileio.c (Vauto_save_list_file_name): Doc fix.
+
+2012-12-03 Fabrice Popineau <fabrice.popineau@gmail.com>
+
+ * w32fns.c: Remove prototype of atof.
+ (syspage_mask): Declared DWORD_PTR, for compatibility with 64-bit
+ builds.
+ (file_dialog_callback): Declared UINT_PTR.
+
+ * w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility
+ with 64-bit builds.
+
+ * w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED)
+ (FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already
+ defined.
+
+2012-12-03 Glenn Morris <rgm@gnu.org>
+
+ * data.c (Fboundp, Fsymbol_value): Doc fix re lexical-binding.
+
+2012-12-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix xpalloc confusion after memory is exhausted.
+ * alloc.c (xpalloc): Comment fix.
+ * charset.c (Fdefine_charset_internal): If xpalloc exhausts memory
+ and signals an error, do not clear charset_table_size, as
+ charset_table is still valid.
+ * doprnt.c (evxprintf): Clear *BUF after freeing it.
+
+ Use execve to avoid need to munge environ (Bug#13054).
+ * callproc.c (Fcall_process):
+ * process.c (create_process):
+ Don't save and restore environ; no longer needed.
+ * callproc.c (child_setup):
+ Use execve, not execvp, to preserve environ.
+
+2012-12-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xterm.c (x_draw_image_relief): Remove unused locals (Bug#10500).
+
+2012-12-01 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * xterm.c (x_draw_relief_rect, x_draw_image_relief): Fix relief
+ display for sliced images (Bug#10500).
+
+ * w32term.c (w32_draw_relief_rect, x_draw_image_relief): Likewise.
+
+2012-11-30 Juanma Barranquero <lekktu@gmail.com>
+
+ * doc.c (Fdocumentation): Re-add handling of function-documentation,
+ accidentally removed in 2012-11-09T04:10:16Z!monnier@iro.umontreal.ca (bug#13034).
+
+2012-11-29 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xdisp.c (window_outdated): Remove eassert since it hits
+ some suspicious corner cases (see Bug#13007 and Bug#13012).
+ (mode_line_update_needed): New function.
+ (redisplay_internal, redisplay_window): Use it.
+ (ensure_selected_frame): New function.
+ (redisplay_internal, unwind_redisplay): Use it.
+ (redisplay_internal): Move comment about buffer_shared...
+ (buffer_shared_and_changed): ...near to its real use.
+
+2012-11-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * callproc.c (Fcall_process): Don't misreport vfork failure.
+
+2012-11-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * callproc.c (Fcall_process): Fix vfork portability problems.
+ Do not assume that fd[0], count, filefd, and save_environ survive
+ vfork. Fix bug whereby wrong errno value could be reported for
+ pipe failure. Some minor cleanups, too, as follows. Move buf and
+ bufsize to the context where they're needed. Change new_argv to
+ be of type char **, as this is more convenient and avoids casts.
+ (CALLPROC_BUFFER_SIZE_MIN, CALLPROC_BUFFER_SIZE_MAX):
+ Now local constants, not macros.
+
+2012-11-18 Kenichi Handa <handa@gnu.org>
+
+ * font.c (font_unparse_xlfd): Fix previous change. Keep "const"
+ for the variable "f".
+
+2012-11-13 Kenichi Handa <handa@gnu.org>
+
+ * font.c (font_unparse_xlfd): Exclude special characters from the
+ generating XLFD name.
+
+2012-11-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Assume POSIX 1003.1-1988 or later for grp.h, pwd.h.
+ * dired.c (stat_uname, stat_gname):
+ * fileio.c (Fexpand_file_name): Remove no-longer-needed casts.
+
+ Assume POSIX 1003.1-1988 or later for errno.h (Bug#12968).
+ * dired.c (directory_files_internal, file_name_completion):
+ Assume EAGAIN and EINTR are defined.
+
+ * fileio.c (Fcopy_file): Assume EISDIR is defined.
+ * gmalloc.c (ENOMEM, EINVAL): Assume they're defined.
+ * gnutls.c (emacs_gnutls_write): Assume EAGAIN is defined.
+ * lread.c (readbyte_from_file): Assume EINTR is defined.
+ * process.c (wait_reading_process_output, send_process) [subprocesses]:
+ Assume EIO and EAGAIN are defined.
+ * unexcoff.c (write_segment): Assume EFAULT is defined.
+
+2012-11-27 Eli Zaretskii <eliz@gnu.org>
+
+ * fontset.c (Finternal_char_font): Return nil on non-GUI frames.
+ (Bug#11964)
+
+ * xdisp.c (draw_glyphs): Don't draw in mouse face if mouse
+ highlighting on the frame was cleared. Prevents assertion
+ violations when repeatedly clicking on the "Top" link of the
+ "bread-crumbs" in Info buffers.
+
2012-11-25 Paul Eggert <eggert@cs.ucla.edu>
* sysdep.c (sys_subshell): Don't assume pid_t fits in int.
diff --git a/src/alloc.c b/src/alloc.c
index 28c9b51dab4..5a3ba465d81 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -761,13 +761,17 @@ xnrealloc (void *pa, ptrdiff_t nitems, ptrdiff_t item_size)
infinity.
If PA is null, then allocate a new array instead of reallocating
- the old one. Thus, to grow an array A without saving its old
- contents, invoke xfree (A) immediately followed by xgrowalloc (0,
- &NITEMS, ...).
+ the old one.
Block interrupt input as needed. If memory exhaustion occurs, set
*NITEMS to zero if PA is null, and signal an error (i.e., do not
- return). */
+ return).
+
+ Thus, to grow an array A without saving its old contents, do
+ { xfree (A); A = NULL; A = xpalloc (NULL, &AITEMS, ...); }.
+ The A = NULL avoids a dangling pointer if xpalloc exhausts memory
+ and signals an error, and later this code is reexecuted and
+ attempts to free A. */
void *
xpalloc (void *pa, ptrdiff_t *nitems, ptrdiff_t nitems_incr_min,
@@ -816,18 +820,22 @@ xstrdup (const char *s)
return p;
}
+/* Like putenv, but (1) use the equivalent of xmalloc and (2) the
+ argument is a const pointer. */
+
+void
+xputenv (char const *string)
+{
+ if (putenv ((char *) string) != 0)
+ memory_full (0);
+}
/* Unwind for SAFE_ALLOCA */
Lisp_Object
safe_alloca_unwind (Lisp_Object arg)
{
- register struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
-
- p->dogc = 0;
- xfree (p->pointer);
- p->pointer = 0;
- free_misc (arg);
+ free_save_value (arg);
return Qnil;
}
@@ -3361,6 +3369,19 @@ make_save_value (void *pointer, ptrdiff_t integer)
return val;
}
+/* Free a Lisp_Misc_Save_Value object. */
+
+void
+free_save_value (Lisp_Object save)
+{
+ register struct Lisp_Save_Value *p = XSAVE_VALUE (save);
+
+ p->dogc = 0;
+ xfree (p->pointer);
+ p->pointer = NULL;
+ free_misc (save);
+}
+
/* Return a Lisp_Misc_Overlay object with specified START, END and PLIST. */
Lisp_Object
diff --git a/src/buffer.c b/src/buffer.c
index 619a729a859..6e2191dc22f 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1529,6 +1529,16 @@ This does not change the name of the visited file (if any). */)
return BVAR (current_buffer, name);
}
+/* True if B can be used as 'other-than-BUFFER' buffer. */
+
+static bool
+candidate_buffer (Lisp_Object b, Lisp_Object buffer)
+{
+ return (BUFFERP (b) && !EQ (b, buffer)
+ && BUFFER_LIVE_P (XBUFFER (b))
+ && !BUFFER_HIDDEN_P (XBUFFER (b)));
+}
+
DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 3, 0,
doc: /* Return most recently selected buffer other than BUFFER.
Buffers not visible in windows are preferred to visible buffers, unless
@@ -1550,9 +1560,7 @@ exists, return the buffer `*scratch*' (creating it if necessary). */)
for (; CONSP (tail); tail = XCDR (tail))
{
buf = XCAR (tail);
- if (BUFFERP (buf) && !EQ (buf, buffer)
- && BUFFER_LIVE_P (XBUFFER (buf))
- && (SREF (BVAR (XBUFFER (buf), name), 0) != ' ')
+ if (candidate_buffer (buf, buffer)
/* If the frame has a buffer_predicate, disregard buffers that
don't fit the predicate. */
&& (NILP (pred) || !NILP (call1 (pred, buf))))
@@ -1570,9 +1578,7 @@ exists, return the buffer `*scratch*' (creating it if necessary). */)
for (; CONSP (tail); tail = XCDR (tail))
{
buf = Fcdr (XCAR (tail));
- if (BUFFERP (buf) && !EQ (buf, buffer)
- && BUFFER_LIVE_P (XBUFFER (buf))
- && (SREF (BVAR (XBUFFER (buf), name), 0) != ' ')
+ if (candidate_buffer (buf, buffer)
/* If the frame has a buffer_predicate, disregard buffers that
don't fit the predicate. */
&& (NILP (pred) || !NILP (call1 (pred, buf))))
@@ -1608,13 +1614,10 @@ other_buffer_safely (Lisp_Object buffer)
{
Lisp_Object tail, buf;
- tail = Vbuffer_alist;
- for (; CONSP (tail); tail = XCDR (tail))
+ for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail))
{
buf = Fcdr (XCAR (tail));
- if (BUFFERP (buf) && !EQ (buf, buffer)
- && BUFFER_LIVE_P (XBUFFER (buf))
- && (SREF (BVAR (XBUFFER (buf), name), 0) != ' '))
+ if (candidate_buffer (buf, buffer))
return buf;
}
diff --git a/src/buffer.h b/src/buffer.h
index fbbbf1b8434..1129840bd47 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -982,6 +982,11 @@ bset_width_table (struct buffer *b, Lisp_Object val)
#define BUFFER_LIVE_P(b) (!NILP (BVAR (b, name)))
+/* Convenient check whether buffer B is hidden (i.e. its name
+ starts with a space). Caller must ensure that B is live. */
+
+#define BUFFER_HIDDEN_P(b) (SREF (BVAR (b, name), 0) == ' ')
+
/* Verify indirection counters. */
#define BUFFER_CHECK_INDIRECTION(b) \
diff --git a/src/bytecode.c b/src/bytecode.c
index 3267c7c8c76..4c5ac151de1 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -87,8 +87,6 @@ Lisp_Object Qbyte_code_meter;
#endif /* BYTE_CODE_METER */
-Lisp_Object Qbytecode;
-
/* Byte codes: */
#define BYTE_CODES \
@@ -1963,8 +1961,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
void
syms_of_bytecode (void)
{
- DEFSYM (Qbytecode, "byte-code");
-
defsubr (&Sbyte_code);
#ifdef BYTE_CODE_METER
diff --git a/src/callproc.c b/src/callproc.c
index c9a504746b3..70e349d0d3a 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -67,88 +67,122 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Pattern used by call-process-region to make temp files. */
static Lisp_Object Vtemp_file_name_pattern;
-/* True if we are about to fork off a synchronous process or if we
- are waiting for it. */
-bool synch_process_alive;
+/* The next two variables are valid only while record-unwind-protect
+ is in place during call-process for a synchronous subprocess. At
+ other times, their contents are irrelevant. Doing this via static
+ C variables is more convenient than putting them into the arguments
+ of record-unwind-protect, as they need to be updated at randomish
+ times in the code, and Lisp cannot always store these values as
+ Emacs integers. It's safe to use static variables here, as the
+ code is never invoked reentrantly. */
+
+/* If nonzero, a process-ID that has not been reaped. */
+static pid_t synch_process_pid;
+
+/* If nonnegative, a file descriptor that has not been closed. */
+static int synch_process_fd;
+
+/* Block SIGCHLD. */
-/* Nonzero => this is a string explaining death of synchronous subprocess. */
-const char *synch_process_death;
+static void
+block_child_signal (void)
+{
+ sigset_t blocked;
+ sigemptyset (&blocked);
+ sigaddset (&blocked, SIGCHLD);
+ pthread_sigmask (SIG_BLOCK, &blocked, 0);
+}
-/* Nonzero => this is the signal number that terminated the subprocess. */
-int synch_process_termsig;
+/* Unblock SIGCHLD. */
-/* If synch_process_death is zero,
- this is exit code of synchronous subprocess. */
-int synch_process_retcode;
+static void
+unblock_child_signal (void)
+{
+ pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
+}
-
-/* Clean up when exiting Fcall_process.
- On MSDOS, delete the temporary file on any kind of termination.
- On Unix, kill the process and any children on termination by signal. */
+/* If P is reapable, record it as a deleted process and kill it.
+ Do this in a critical section. Unless PID is wedged it will be
+ reaped on receipt of the first SIGCHLD after the critical section. */
-/* True if this is termination due to exit. */
-static bool call_process_exited;
+void
+record_kill_process (struct Lisp_Process *p)
+{
+ block_child_signal ();
+
+ if (p->alive)
+ {
+ p->alive = 0;
+ record_deleted_pid (p->pid);
+ kill (- p->pid, SIGKILL);
+ }
+
+ unblock_child_signal ();
+}
+
+/* Clean up when exiting call_process_cleanup. */
static Lisp_Object
-call_process_kill (Lisp_Object fdpid)
+call_process_kill (Lisp_Object ignored)
{
- int fd;
- pid_t pid;
- CONS_TO_INTEGER (Fcar (fdpid), int, fd);
- CONS_TO_INTEGER (Fcdr (fdpid), pid_t, pid);
- emacs_close (fd);
- EMACS_KILLPG (pid, SIGKILL);
- synch_process_alive = 0;
+ if (0 <= synch_process_fd)
+ emacs_close (synch_process_fd);
+
+ if (synch_process_pid)
+ {
+ struct Lisp_Process proc;
+ proc.alive = 1;
+ proc.pid = synch_process_pid;
+ record_kill_process (&proc);
+ }
+
return Qnil;
}
+/* Clean up when exiting Fcall_process.
+ On MSDOS, delete the temporary file on any kind of termination.
+ On Unix, kill the process and any children on termination by signal. */
+
static Lisp_Object
call_process_cleanup (Lisp_Object arg)
{
- Lisp_Object fdpid = Fcdr (arg);
- int fd;
-#if defined (MSDOS)
- Lisp_Object file;
+#ifdef MSDOS
+ Lisp_Object buffer = Fcar (arg);
+ Lisp_Object file = Fcdr (arg);
#else
- pid_t pid;
+ Lisp_Object buffer = arg;
#endif
- Fset_buffer (Fcar (arg));
- CONS_TO_INTEGER (Fcar (fdpid), int, fd);
-
-#if defined (MSDOS)
- /* for MSDOS fdpid is really (fd . tempfile) */
- file = Fcdr (fdpid);
- /* FD is -1 and FILE is "" when we didn't actually create a
- temporary file in call-process. */
- if (fd >= 0)
- emacs_close (fd);
- if (!(strcmp (SDATA (file), NULL_DEVICE) == 0 || SREF (file, 0) == '\0'))
- unlink (SDATA (file));
-#else /* not MSDOS */
- CONS_TO_INTEGER (Fcdr (fdpid), pid_t, pid);
-
- if (call_process_exited)
- {
- emacs_close (fd);
- return Qnil;
- }
+ Fset_buffer (buffer);
- if (EMACS_KILLPG (pid, SIGINT) == 0)
+#ifndef MSDOS
+ /* If the process still exists, kill its process group. */
+ if (synch_process_pid)
{
ptrdiff_t count = SPECPDL_INDEX ();
- record_unwind_protect (call_process_kill, fdpid);
+ kill (-synch_process_pid, SIGINT);
+ record_unwind_protect (call_process_kill, make_number (0));
message1 ("Waiting for process to die...(type C-g again to kill it instantly)");
immediate_quit = 1;
QUIT;
- wait_for_termination (pid);
+ wait_for_termination (synch_process_pid, 0, 1);
+ synch_process_pid = 0;
immediate_quit = 0;
specpdl_ptr = specpdl + count; /* Discard the unwind protect. */
message1 ("Waiting for process to die...done");
}
- synch_process_alive = 0;
- emacs_close (fd);
-#endif /* not MSDOS */
+#endif
+
+ if (0 <= synch_process_fd)
+ emacs_close (synch_process_fd);
+
+#ifdef MSDOS
+ /* FILE is "" when we didn't actually create a temporary file in
+ call-process. */
+ if (!(strcmp (SDATA (file), NULL_DEVICE) == 0 || SREF (file, 0) == '\0'))
+ unlink (SDATA (file));
+#endif
+
return Qnil;
}
@@ -181,18 +215,14 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.
usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
- Lisp_Object infile, buffer, current_dir, path, cleanup_info_tail;
+ Lisp_Object infile, buffer, current_dir, path;
bool display_p;
- int fd[2];
- int filefd;
-#define CALLPROC_BUFFER_SIZE_MIN (16 * 1024)
-#define CALLPROC_BUFFER_SIZE_MAX (4 * CALLPROC_BUFFER_SIZE_MIN)
- char buf[CALLPROC_BUFFER_SIZE_MAX];
- int bufsize = CALLPROC_BUFFER_SIZE_MIN;
+ int fd0, fd1, filefd;
+ int status;
ptrdiff_t count = SPECPDL_INDEX ();
USE_SAFE_ALLOCA;
- register const unsigned char **new_argv;
+ char **new_argv;
/* File to use for stderr in the child.
t means use same as standard output. */
Lisp_Object error_file;
@@ -204,6 +234,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
#else
pid_t pid;
#endif
+ int child_errno;
int fd_output = -1;
struct coding_system process_coding; /* coding-system of process output */
struct coding_system argument_coding; /* coding-system of arguments */
@@ -432,12 +463,12 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
}
UNGCPRO;
for (i = 4; i < nargs; i++)
- new_argv[i - 3] = SDATA (args[i]);
+ new_argv[i - 3] = SSDATA (args[i]);
new_argv[i - 3] = 0;
}
else
new_argv[1] = 0;
- new_argv[0] = SDATA (path);
+ new_argv[0] = SSDATA (path);
#ifdef MSDOS /* MW, July 1993 */
@@ -466,44 +497,37 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
}
else
outfilefd = fd_output;
- fd[0] = filefd;
- fd[1] = outfilefd;
+ fd0 = filefd;
+ fd1 = outfilefd;
#endif /* MSDOS */
if (INTEGERP (buffer))
- fd[1] = emacs_open (NULL_DEVICE, O_WRONLY, 0), fd[0] = -1;
+ {
+ fd0 = -1;
+ fd1 = emacs_open (NULL_DEVICE, O_WRONLY, 0);
+ }
else
{
#ifndef MSDOS
- errno = 0;
+ int fd[2];
if (pipe (fd) == -1)
{
+ int pipe_errno = errno;
emacs_close (filefd);
+ errno = pipe_errno;
report_file_error ("Creating process pipe", Qnil);
}
+ fd0 = fd[0];
+ fd1 = fd[1];
#endif
}
{
- /* child_setup must clobber environ in systems with true vfork.
- Protect it from permanent change. */
- register char **save_environ = environ;
- register int fd1 = fd[1];
int fd_error = fd1;
if (fd_output >= 0)
fd1 = fd_output;
- /* Record that we're about to create a synchronous process. */
- synch_process_alive = 1;
-
- /* These vars record information from process termination.
- Clear them now before process can possibly terminate,
- to avoid timing error if process terminates soon. */
- synch_process_death = 0;
- synch_process_retcode = 0;
- synch_process_termsig = 0;
-
if (NILP (error_file))
fd_error = emacs_open (NULL_DEVICE, O_WRONLY, 0);
else if (STRINGP (error_file))
@@ -520,8 +544,8 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
if (fd_error < 0)
{
emacs_close (filefd);
- if (fd[0] != filefd)
- emacs_close (fd[0]);
+ if (fd0 != filefd)
+ emacs_close (fd0);
if (fd1 >= 0)
emacs_close (fd1);
#ifdef MSDOS
@@ -536,31 +560,28 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
#ifdef MSDOS /* MW, July 1993 */
/* Note that on MSDOS `child_setup' actually returns the child process
- exit status, not its PID, so we assign it to `synch_process_retcode'
- below. */
- pid = child_setup (filefd, outfilefd, fd_error, (char **) new_argv,
- 0, current_dir);
-
- /* Record that the synchronous process exited and note its
- termination status. */
- synch_process_alive = 0;
- synch_process_retcode = pid;
- if (synch_process_retcode < 0) /* means it couldn't be exec'ed */
- {
- synchronize_system_messages_locale ();
- synch_process_death = strerror (errno);
- }
+ exit status, not its PID, so assign it to status below. */
+ pid = child_setup (filefd, outfilefd, fd_error, new_argv, 0, current_dir);
+ child_errno = errno;
emacs_close (outfilefd);
if (fd_error != outfilefd)
emacs_close (fd_error);
+ if (pid < 0)
+ {
+ synchronize_system_messages_locale ();
+ return
+ code_convert_string_norecord (build_string (strerror (child_errno)),
+ Vlocale_coding_system, 0);
+ }
+ status = pid;
fd1 = -1; /* No harm in closing that one! */
if (tempfile)
{
/* Since CRLF is converted to LF within `decode_coding', we
can always open a file with binary mode. */
- fd[0] = emacs_open (tempfile, O_RDONLY | O_BINARY, 0);
- if (fd[0] < 0)
+ fd0 = emacs_open (tempfile, O_RDONLY | O_BINARY, 0);
+ if (fd0 < 0)
{
unlink (tempfile);
emacs_close (filefd);
@@ -569,14 +590,29 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
}
}
else
- fd[0] = -1; /* We are not going to read from tempfile. */
-#else /* not MSDOS */
-#ifdef WINDOWSNT
- pid = child_setup (filefd, fd1, fd_error, (char **) new_argv,
- 0, current_dir);
-#else /* not WINDOWSNT */
+ fd0 = -1; /* We are not going to read from tempfile. */
+#endif /* MSDOS */
+
+ /* Do the unwind-protect now, even though the pid is not known, so
+ that no storage allocation is done in the critical section.
+ The actual PID will be filled in during the critical section. */
+ synch_process_pid = 0;
+ synch_process_fd = fd0;
+
+#ifdef MSDOS
+ /* MSDOS needs different cleanup information. */
+ record_unwind_protect (call_process_cleanup,
+ Fcons (Fcurrent_buffer (),
+ build_string (tempfile ? tempfile : "")));
+#else
+ record_unwind_protect (call_process_cleanup, Fcurrent_buffer ());
block_input ();
+ block_child_signal ();
+
+#ifdef WINDOWSNT
+ pid = child_setup (filefd, fd1, fd_error, new_argv, 0, current_dir);
+#else /* not WINDOWSNT */
/* vfork, and prevent local vars from being clobbered by the vfork. */
{
@@ -589,50 +625,67 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
int volatile fd1_volatile = fd1;
int volatile fd_error_volatile = fd_error;
int volatile fd_output_volatile = fd_output;
+ int volatile filefd_volatile = filefd;
+ ptrdiff_t volatile count_volatile = count;
ptrdiff_t volatile sa_count_volatile = sa_count;
- unsigned char const **volatile new_argv_volatile = new_argv;
+ char **volatile new_argv_volatile = new_argv;
pid = vfork ();
+ child_errno = errno;
buffer = buffer_volatile;
coding_systems = coding_systems_volatile;
current_dir = current_dir_volatile;
display_p = display_p_volatile;
+ output_to_buffer = output_to_buffer_volatile;
+ sa_must_free = sa_must_free_volatile;
fd1 = fd1_volatile;
fd_error = fd_error_volatile;
fd_output = fd_output_volatile;
- output_to_buffer = output_to_buffer_volatile;
- sa_must_free = sa_must_free_volatile;
+ filefd = filefd_volatile;
+ count = count_volatile;
sa_count = sa_count_volatile;
new_argv = new_argv_volatile;
+
+ fd0 = synch_process_fd;
}
if (pid == 0)
{
- if (fd[0] >= 0)
- emacs_close (fd[0]);
+ unblock_child_signal ();
+
+ if (fd0 >= 0)
+ emacs_close (fd0);
setsid ();
/* Emacs ignores SIGPIPE, but the child should not. */
signal (SIGPIPE, SIG_DFL);
- child_setup (filefd, fd1, fd_error, (char **) new_argv,
- 0, current_dir);
+ child_setup (filefd, fd1, fd_error, new_argv, 0, current_dir);
}
- unblock_input ();
-
#endif /* not WINDOWSNT */
+ child_errno = errno;
+
+ if (0 < pid)
+ {
+ if (INTEGERP (buffer))
+ record_deleted_pid (pid);
+ else
+ synch_process_pid = pid;
+ }
+
+ unblock_child_signal ();
+ unblock_input ();
+
/* The MSDOS case did this already. */
if (fd_error >= 0)
emacs_close (fd_error);
#endif /* not MSDOS */
- environ = save_environ;
-
- /* Close most of our fd's, but not fd[0]
+ /* Close most of our file descriptors, but not fd0
since we will use that to read input from. */
emacs_close (filefd);
if (fd_output >= 0)
@@ -643,31 +696,12 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
if (pid < 0)
{
- if (fd[0] >= 0)
- emacs_close (fd[0]);
+ errno = child_errno;
report_file_error ("Doing vfork", Qnil);
}
if (INTEGERP (buffer))
- {
- if (fd[0] >= 0)
- emacs_close (fd[0]);
- return Qnil;
- }
-
- /* Enable sending signal if user quits below. */
- call_process_exited = 0;
-
-#if defined (MSDOS)
- /* MSDOS needs different cleanup information. */
- cleanup_info_tail = build_string (tempfile ? tempfile : "");
-#else
- cleanup_info_tail = INTEGER_TO_CONS (pid);
-#endif /* not MSDOS */
- record_unwind_protect (call_process_cleanup,
- Fcons (Fcurrent_buffer (),
- Fcons (INTEGER_TO_CONS (fd[0]),
- cleanup_info_tail)));
+ return unbind_to (count, Qnil);
if (BUFFERP (buffer))
Fset_buffer (buffer);
@@ -723,6 +757,10 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
if (output_to_buffer)
{
+ enum { CALLPROC_BUFFER_SIZE_MIN = 16 * 1024 };
+ enum { CALLPROC_BUFFER_SIZE_MAX = 4 * CALLPROC_BUFFER_SIZE_MIN };
+ char buf[CALLPROC_BUFFER_SIZE_MAX];
+ int bufsize = CALLPROC_BUFFER_SIZE_MIN;
int nread;
bool first = 1;
EMACS_INT total_read = 0;
@@ -739,7 +777,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
nread = carryover;
while (nread < bufsize - 1024)
{
- int this_read = emacs_read (fd[0], buf + nread,
+ int this_read = emacs_read (fd0, buf + nread,
bufsize - nread);
if (this_read < 0)
@@ -850,38 +888,34 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
#ifndef MSDOS
/* Wait for it to terminate, unless it already has. */
- if (output_to_buffer)
- wait_for_termination (pid);
- else
- interruptible_wait_for_termination (pid);
+ wait_for_termination (pid, &status, !output_to_buffer);
#endif
immediate_quit = 0;
/* Don't kill any children that the subprocess may have left behind
when exiting. */
- call_process_exited = 1;
+ synch_process_pid = 0;
SAFE_FREE ();
unbind_to (count, Qnil);
- if (synch_process_termsig)
+ if (WIFSIGNALED (status))
{
const char *signame;
synchronize_system_messages_locale ();
- signame = strsignal (synch_process_termsig);
+ signame = strsignal (WTERMSIG (status));
if (signame == 0)
signame = "unknown";
- synch_process_death = signame;
+ return code_convert_string_norecord (build_string (signame),
+ Vlocale_coding_system, 0);
}
- if (synch_process_death)
- return code_convert_string_norecord (build_string (synch_process_death),
- Vlocale_coding_system, 0);
- return make_number (synch_process_retcode);
+ eassert (WIFEXITED (status));
+ return make_number (WEXITSTATUS (status));
}
static Lisp_Object
@@ -955,8 +989,9 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
{
USE_SAFE_ALLOCA;
Lisp_Object pattern = Fexpand_file_name (Vtemp_file_name_pattern, tmpdir);
- char *tempfile = SAFE_ALLOCA (SBYTES (pattern) + 1);
- memcpy (tempfile, SDATA (pattern), SBYTES (pattern) + 1);
+ Lisp_Object encoded_tem = ENCODE_FILE (pattern);
+ char *tempfile = SAFE_ALLOCA (SBYTES (encoded_tem) + 1);
+ memcpy (tempfile, SDATA (encoded_tem), SBYTES (encoded_tem) + 1);
coding_systems = Qt;
#ifdef HAVE_MKSTEMP
@@ -973,7 +1008,15 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
close (fd);
}
#else
+ errno = 0;
mktemp (tempfile);
+ if (!*tempfile)
+ {
+ if (!errno)
+ errno = EEXIST;
+ report_file_error ("Failed to open temporary file using pattern",
+ Fcons (pattern, Qnil));
+ }
#endif
filename_string = build_string (tempfile);
@@ -1079,10 +1122,6 @@ add_env (char **env, char **new_env, char *string)
Initialize inferior's priority, pgrp, connected dir and environment.
then exec another program based on new_argv.
- This function may change environ for the superior process.
- Therefore, the superior process must save and restore the value
- of environ around the vfork and the call to this function.
-
If SET_PGRP, put the subprocess into a separate process group.
CURRENT_DIR is an elisp string giving the path of the current
@@ -1285,11 +1324,7 @@ child_setup (int in, int out, int err, char **new_argv, bool set_pgrp,
setpgid (0, 0);
tcsetpgrp (0, pid);
- /* execvp does not accept an environment arg so the only way
- to pass this environment is to set environ. Our caller
- is responsible for restoring the ambient value of environ. */
- environ = env;
- execvp (new_argv[0], new_argv);
+ execve (new_argv[0], new_argv, env);
emacs_write (1, "Can't exec program: ", 20);
emacs_write (1, new_argv[0], strlen (new_argv[0]));
diff --git a/src/casefiddle.c b/src/casefiddle.c
index e3654627576..d9c6a078973 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -213,7 +213,7 @@ casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e)
validate_region (&b, &e);
start = XFASTINT (b);
end = XFASTINT (e);
- modify_region (current_buffer, start, end, 0);
+ modify_region_1 (start, end, false);
record_change (start, end - start);
start_byte = CHAR_TO_BYTE (start);
diff --git a/src/charset.c b/src/charset.c
index c9133c780e8..43be0e9c780 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1142,12 +1142,14 @@ usage: (define-charset-internal ...) */)
example, the IDs are stuffed into struct
coding_system.charbuf[i] entries, which are 'int'. */
int old_size = charset_table_size;
+ ptrdiff_t new_size = old_size;
struct charset *new_table =
- xpalloc (0, &charset_table_size, 1,
+ xpalloc (0, &new_size, 1,
min (INT_MAX, MOST_POSITIVE_FIXNUM),
sizeof *charset_table);
memcpy (new_table, charset_table, old_size * sizeof *new_table);
charset_table = new_table;
+ charset_table_size = new_size;
/* FIXME: This leaks memory, as the old charset_table becomes
unreachable. If the old charset table is charset_table_init
then this leak is intentional; otherwise, it's unclear.
diff --git a/src/data.c b/src/data.c
index 5fc6afaaa03..a72fa3e2b5f 100644
--- a/src/data.c
+++ b/src/data.c
@@ -506,7 +506,9 @@ DEFUN ("setcdr", Fsetcdr, Ssetcdr, 2, 2, 0,
/* Extract and set components of symbols. */
DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0,
- doc: /* Return t if SYMBOL's value is not void. */)
+ doc: /* Return t if SYMBOL's value is not void.
+Note that if `lexical-binding' is in effect, this refers to the
+global value outside of any lexical scope. */)
(register Lisp_Object symbol)
{
Lisp_Object valcontents;
@@ -1047,7 +1049,9 @@ find_symbol_value (Lisp_Object symbol)
}
DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,
- doc: /* Return SYMBOL's value. Error if that is void. */)
+ doc: /* Return SYMBOL's value. Error if that is void.
+Note that if `lexical-binding' is in effect, this returns the
+global value outside of any lexical scope. */)
(Lisp_Object symbol)
{
Lisp_Object val;
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 80086946fc4..da8bbb1e5d7 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -1203,7 +1203,7 @@ this connection to those buses. */)
xd_registered_buses = Fcons (Fcons (bus, val), xd_registered_buses);
/* We do not want to abort. */
- putenv ((char *) "DBUS_FATAL_WARNINGS=0");
+ xputenv ("DBUS_FATAL_WARNINGS=0");
/* Cleanup. */
dbus_error_free (&derror);
diff --git a/src/dired.c b/src/dired.c
index 3530b74ecb4..bdb71c46364 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -193,19 +193,15 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
errno = 0;
dp = readdir (d);
-
- if (dp == NULL && (0
-#ifdef EAGAIN
- || errno == EAGAIN
-#endif
-#ifdef EINTR
- || errno == EINTR
-#endif
- ))
- { QUIT; continue; }
-
- if (dp == NULL)
- break;
+ if (!dp)
+ {
+ if (errno == EAGAIN || errno == EINTR)
+ {
+ QUIT;
+ continue;
+ }
+ break;
+ }
len = dirent_namelen (dp);
name = finalname = make_unibyte_string (dp->d_name, len);
@@ -480,17 +476,15 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag,
errno = 0;
dp = readdir (d);
- if (dp == NULL && (0
-# ifdef EAGAIN
- || errno == EAGAIN
-# endif
-# ifdef EINTR
- || errno == EINTR
-# endif
- ))
- { QUIT; continue; }
-
- if (!dp) break;
+ if (!dp)
+ {
+ if (errno == EAGAIN || errno == EINTR)
+ {
+ QUIT;
+ continue;
+ }
+ break;
+ }
len = dirent_namelen (dp);
@@ -826,7 +820,7 @@ stat_uname (struct stat *st)
#ifdef WINDOWSNT
return st->st_uname;
#else
- struct passwd *pw = (struct passwd *) getpwuid (st->st_uid);
+ struct passwd *pw = getpwuid (st->st_uid);
if (pw)
return pw->pw_name;
@@ -841,7 +835,7 @@ stat_gname (struct stat *st)
#ifdef WINDOWSNT
return st->st_gname;
#else
- struct group *gr = (struct group *) getgrgid (st->st_gid);
+ struct group *gr = getgrgid (st->st_gid);
if (gr)
return gr->gr_name;
diff --git a/src/dispextern.h b/src/dispextern.h
index c5ebb808b05..aa40f019fbe 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1572,12 +1572,12 @@ struct face
/* Pixmap width and height. */
unsigned int pixmap_w, pixmap_h;
- /* Non-zero means characters in this face have a box that thickness
- around them. If it is negative, the absolute value indicates the
- thickness, and the horizontal lines of box (top and bottom) are
- drawn inside of characters glyph area. The vertical lines of box
- (left and right) are drawn as the same way as the case that this
- value is positive. */
+ /* Non-zero means characters in this face have a box of that
+ thickness around them. If this value is negative, its absolute
+ value indicates the thickness, and the horizontal (top and
+ bottom) borders of box are drawn inside of the character glyphs'
+ area. The vertical (left and right) borders of the box are drawn
+ in the same way as when this value is positive. */
int box_line_width;
/* Type of box drawn. A value of FACE_NO_BOX means no box is drawn
diff --git a/src/doc.c b/src/doc.c
index 1d3d1e64442..76008295add 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -338,6 +338,14 @@ string is passed through `substitute-command-keys'. */)
doc = Qnil;
+ if (SYMBOLP (function))
+ {
+ Lisp_Object tem = Fget (function, Qfunction_documentation);
+ if (!NILP (tem))
+ return Fdocumentation_property (function, Qfunction_documentation,
+ raw);
+ }
+
fun = Findirect_function (function, Qnil);
if (CONSP (fun) && EQ (XCAR (fun), Qmacro))
fun = XCDR (fun);
diff --git a/src/doprnt.c b/src/doprnt.c
index caa56d6ae88..8cab219aafa 100644
--- a/src/doprnt.c
+++ b/src/doprnt.c
@@ -521,7 +521,10 @@ evxprintf (char **buf, ptrdiff_t *bufsize,
if (nbytes < *bufsize - 1)
return nbytes;
if (*buf != nonheapbuf)
- xfree (*buf);
+ {
+ xfree (*buf);
+ *buf = NULL;
+ }
*buf = xpalloc (NULL, bufsize, 1, bufsize_max, 1);
}
}
diff --git a/src/editfns.c b/src/editfns.c
index 8122ffdd0d4..7d179c8566a 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -78,6 +78,15 @@ Lisp_Object Qfield;
static Lisp_Object Qboundary;
+/* The startup value of the TZ environment variable so it can be
+ restored if the user calls set-time-zone-rule with a nil
+ argument. If null, the TZ environment variable was unset. */
+static char const *initial_tz;
+
+/* True if the static variable tzvalbuf (defined in
+ set_time_zone_rule) is part of 'environ'. */
+static bool tzvalbuf_in_environ;
+
void
init_editfns (void)
@@ -96,6 +105,9 @@ init_editfns (void)
return;
#endif /* not CANNOT_DUMP */
+ initial_tz = getenv ("TZ");
+ tzvalbuf_in_environ = 0;
+
pw = getpwuid (getuid ());
#ifdef MSDOS
/* We let the real user name default to "root" because that's quite
@@ -813,38 +825,43 @@ This function does not move point. */)
Qnil, Qt, Qnil);
}
-
+/* Save current buffer state for `save-excursion' special form.
+ We (ab)use Lisp_Misc_Save_Value to allow explicit free and so
+ offload some work from GC. */
+
Lisp_Object
save_excursion_save (void)
{
- bool visible = (XBUFFER (XWINDOW (selected_window)->buffer)
- == current_buffer);
+ Lisp_Object save, *data = xmalloc (word_size * 4);
+
+ data[0] = Fpoint_marker ();
/* Do not copy the mark if it points to nowhere. */
- Lisp_Object mark = (XMARKER (BVAR (current_buffer, mark))->buffer
- ? Fcopy_marker (BVAR (current_buffer, mark), Qnil)
- : Qnil);
-
- return Fcons (Fpoint_marker (),
- Fcons (mark,
- Fcons (visible ? Qt : Qnil,
- Fcons (BVAR (current_buffer, mark_active),
- selected_window))));
+ data[1] = (XMARKER (BVAR (current_buffer, mark))->buffer
+ ? Fcopy_marker (BVAR (current_buffer, mark), Qnil)
+ : Qnil);
+ /* Selected window if current buffer is shown in it, nil otherwise. */
+ data[2] = ((XBUFFER (XWINDOW (selected_window)->buffer) == current_buffer)
+ ? selected_window : Qnil);
+ data[3] = BVAR (current_buffer, mark_active);
+
+ save = make_save_value (data, 4);
+ XSAVE_VALUE (save)->dogc = 1;
+ return save;
}
+/* Restore saved buffer before leaving `save-excursion' special form. */
+
Lisp_Object
save_excursion_restore (Lisp_Object info)
{
- Lisp_Object tem, tem1, omark, nmark;
+ Lisp_Object tem, tem1, omark, nmark, *data = XSAVE_VALUE (info)->pointer;
struct gcpro gcpro1, gcpro2, gcpro3;
- bool visible_p;
- tem = Fmarker_buffer (XCAR (info));
- /* If buffer being returned to is now deleted, avoid error */
- /* Otherwise could get error here while unwinding to top level
- and crash */
- /* In that case, Fmarker_buffer returns nil now. */
+ tem = Fmarker_buffer (data[0]);
+ /* If we're unwinding to top level, saved buffer may be deleted. This
+ means that all of its markers are unchained and so tem is nil. */
if (NILP (tem))
- return Qnil;
+ goto out;
omark = nmark = Qnil;
GCPRO3 (info, omark, nmark);
@@ -852,13 +869,12 @@ save_excursion_restore (Lisp_Object info)
Fset_buffer (tem);
/* Point marker. */
- tem = XCAR (info);
+ tem = data[0];
Fgoto_char (tem);
unchain_marker (XMARKER (tem));
/* Mark marker. */
- info = XCDR (info);
- tem = XCAR (info);
+ tem = data[1];
omark = Fmarker_position (BVAR (current_buffer, mark));
if (NILP (tem))
unchain_marker (XMARKER (BVAR (current_buffer, mark)));
@@ -869,23 +885,8 @@ save_excursion_restore (Lisp_Object info)
unchain_marker (XMARKER (tem));
}
- /* visible */
- info = XCDR (info);
- visible_p = !NILP (XCAR (info));
-
-#if 0 /* We used to make the current buffer visible in the selected window
- if that was true previously. That avoids some anomalies.
- But it creates others, and it wasn't documented, and it is simpler
- and cleaner never to alter the window/buffer connections. */
- tem1 = Fcar (tem);
- if (!NILP (tem1)
- && current_buffer != XBUFFER (XWINDOW (selected_window)->buffer))
- Fswitch_to_buffer (Fcurrent_buffer (), Qnil);
-#endif /* 0 */
-
- /* Mark active */
- info = XCDR (info);
- tem = XCAR (info);
+ /* Mark active. */
+ tem = data[3];
tem1 = BVAR (current_buffer, mark_active);
bset_mark_active (current_buffer, tem);
@@ -909,8 +910,8 @@ save_excursion_restore (Lisp_Object info)
/* If buffer was visible in a window, and a different window was
selected, and the old selected window is still showing this
buffer, restore point in that window. */
- tem = XCDR (info);
- if (visible_p
+ tem = data[2];
+ if (WINDOWP (tem)
&& !EQ (tem, selected_window)
&& (tem1 = XWINDOW (tem)->buffer,
(/* Window is live... */
@@ -920,6 +921,10 @@ save_excursion_restore (Lisp_Object info)
Fset_window_point (tem, make_number (PT));
UNGCPRO;
+
+ out:
+
+ free_save_value (info);
return Qnil;
}
@@ -1907,9 +1912,11 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */)
}
else
{
- char tzbuf[100];
+ static char const tzbuf_format[] = "XXX%s%"pI"d:%02d:%02d";
+ char tzbuf[sizeof tzbuf_format + INT_STRLEN_BOUND (EMACS_INT)];
+ char *old_tzstring;
const char *tzstring;
- char **oldenv = environ, **newenv;
+ USE_SAFE_ALLOCA;
if (EQ (zone, Qt))
tzstring = "UTC0";
@@ -1921,13 +1928,20 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */)
EMACS_INT zone_hr = abszone / (60*60);
int zone_min = (abszone/60) % 60;
int zone_sec = abszone % 60;
- sprintf (tzbuf, "XXX%s%"pI"d:%02d:%02d", "-" + (XINT (zone) < 0),
+ sprintf (tzbuf, tzbuf_format, "-" + (XINT (zone) < 0),
zone_hr, zone_min, zone_sec);
tzstring = tzbuf;
}
else
error ("Invalid time zone specification");
+ old_tzstring = getenv ("TZ");
+ if (old_tzstring)
+ {
+ char *buf = SAFE_ALLOCA (strlen (old_tzstring) + 1);
+ old_tzstring = strcpy (buf, old_tzstring);
+ }
+
block_input ();
/* Set TZ before calling mktime; merely adjusting mktime's returned
@@ -1936,15 +1950,12 @@ usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */)
value = mktime (&tm);
- /* Restore TZ to previous value. */
- newenv = environ;
- environ = oldenv;
+ set_time_zone_rule (old_tzstring);
#ifdef LOCALTIME_CACHE
tzset ();
#endif
unblock_input ();
-
- xfree (newenv);
+ SAFE_FREE ();
}
if (value == (time_t) -1)
@@ -2074,16 +2085,6 @@ the data it can't find. */)
return list2 (zone_offset, zone_name);
}
-/* This holds the value of `environ' produced by the previous
- call to Fset_time_zone_rule, or 0 if Fset_time_zone_rule
- has never been called. */
-static char **environbuf;
-
-/* This holds the startup value of the TZ environment variable so it
- can be restored if the user calls set-time-zone-rule with a nil
- argument. */
-static char *initial_tz;
-
DEFUN ("set-time-zone-rule", Fset_time_zone_rule, Sset_time_zone_rule, 1, 1, 0,
doc: /* Set the local time zone using TZ, a string specifying a time zone rule.
If TZ is nil, use implementation-defined default time zone information.
@@ -2096,18 +2097,10 @@ only the former. */)
(Lisp_Object tz)
{
const char *tzstring;
- char **old_environbuf;
if (! (NILP (tz) || EQ (tz, Qt)))
CHECK_STRING (tz);
- block_input ();
-
- /* When called for the first time, save the original TZ. */
- old_environbuf = environbuf;
- if (!old_environbuf)
- initial_tz = (char *) getenv ("TZ");
-
if (NILP (tz))
tzstring = initial_tz;
else if (EQ (tz, Qt))
@@ -2115,106 +2108,97 @@ only the former. */)
else
tzstring = SSDATA (tz);
+ block_input ();
set_time_zone_rule (tzstring);
- environbuf = environ;
-
unblock_input ();
- xfree (old_environbuf);
return Qnil;
}
-#ifdef LOCALTIME_CACHE
-
-/* These two values are known to load tz files in buggy implementations,
- i.e. Solaris 1 executables running under either Solaris 1 or Solaris 2.
- Their values shouldn't matter in non-buggy implementations.
- We don't use string literals for these strings,
- since if a string in the environment is in readonly
- storage, it runs afoul of bugs in SVR4 and Solaris 2.3.
- See Sun bugs 1113095 and 1114114, ``Timezone routines
- improperly modify environment''. */
-
-static char set_time_zone_rule_tz1[] = "TZ=GMT+0";
-static char set_time_zone_rule_tz2[] = "TZ=GMT+1";
-
-#endif
-
/* Set the local time zone rule to TZSTRING.
- This allocates memory into `environ', which it is the caller's
- responsibility to free. */
+
+ This function is not thread-safe, partly because putenv, unsetenv
+ and tzset are not, and partly because of the static storage it
+ updates. Other threads that invoke localtime etc. may be adversely
+ affected while this function is executing. */
void
set_time_zone_rule (const char *tzstring)
{
- ptrdiff_t envptrs;
- char **from, **to, **newenv;
+ /* A buffer holding a string of the form "TZ=value", intended
+ to be part of the environment. */
+ static char *tzvalbuf;
+ static ptrdiff_t tzvalbufsize;
- /* Make the ENVIRON vector longer with room for TZSTRING. */
- for (from = environ; *from; from++)
- continue;
- envptrs = from - environ + 2;
- newenv = to = xmalloc (envptrs * sizeof *newenv
- + (tzstring ? strlen (tzstring) + 4 : 0));
+ int tzeqlen = sizeof "TZ=" - 1;
+
+#ifdef LOCALTIME_CACHE
+ /* These two values are known to load tz files in buggy implementations,
+ i.e., Solaris 1 executables running under either Solaris 1 or Solaris 2.
+ Their values shouldn't matter in non-buggy implementations.
+ We don't use string literals for these strings,
+ since if a string in the environment is in readonly
+ storage, it runs afoul of bugs in SVR4 and Solaris 2.3.
+ See Sun bugs 1113095 and 1114114, ``Timezone routines
+ improperly modify environment''. */
+
+ static char set_time_zone_rule_tz[][sizeof "TZ=GMT+0"]
+ = { "TZ=GMT+0", "TZ=GMT+1" };
+
+ /* In SunOS 4.1.3_U1 and 4.1.4, if TZ has a value like
+ "US/Pacific" that loads a tz file, then changes to a value like
+ "XXX0" that does not load a tz file, and then changes back to
+ its original value, the last change is (incorrectly) ignored.
+ Also, if TZ changes twice in succession to values that do
+ not load a tz file, tzset can dump core (see Sun bug#1225179).
+ The following code works around these bugs. */
- /* Add TZSTRING to the end of environ, as a value for TZ. */
if (tzstring)
{
- char *t = (char *) (to + envptrs);
- strcpy (t, "TZ=");
- strcat (t, tzstring);
- *to++ = t;
+ /* Temporarily set TZ to a value that loads a tz file
+ and that differs from tzstring. */
+ bool eq0 = strcmp (tzstring, set_time_zone_rule_tz[0] + tzeqlen) == 0;
+ xputenv (set_time_zone_rule_tz[eq0]);
}
+ else
+ {
+ /* The implied tzstring is unknown, so temporarily set TZ to
+ two different values that each load a tz file. */
+ xputenv (set_time_zone_rule_tz[0]);
+ tzset ();
+ xputenv (set_time_zone_rule_tz[1]);
+ }
+ tzset ();
+#endif
- /* Copy the old environ vector elements into NEWENV,
- but don't copy the TZ variable.
- So we have only one definition of TZ, which came from TZSTRING. */
- for (from = environ; *from; from++)
- if (strncmp (*from, "TZ=", 3) != 0)
- *to++ = *from;
- *to = 0;
-
- environ = newenv;
+ if (!tzstring)
+ {
+ unsetenv ("TZ");
+ tzvalbuf_in_environ = 0;
+ }
+ else
+ {
+ ptrdiff_t tzstringlen = strlen (tzstring);
- /* If we do have a TZSTRING, NEWENV points to the vector slot where
- the TZ variable is stored. If we do not have a TZSTRING,
- TO points to the vector slot which has the terminating null. */
+ if (tzvalbufsize <= tzeqlen + tzstringlen)
+ {
+ unsetenv ("TZ");
+ tzvalbuf_in_environ = 0;
+ tzvalbuf = xpalloc (tzvalbuf, &tzvalbufsize,
+ tzeqlen + tzstringlen - tzvalbufsize + 1, -1, 1);
+ memcpy (tzvalbuf, "TZ=", tzeqlen);
+ }
-#ifdef LOCALTIME_CACHE
- {
- /* In SunOS 4.1.3_U1 and 4.1.4, if TZ has a value like
- "US/Pacific" that loads a tz file, then changes to a value like
- "XXX0" that does not load a tz file, and then changes back to
- its original value, the last change is (incorrectly) ignored.
- Also, if TZ changes twice in succession to values that do
- not load a tz file, tzset can dump core (see Sun bug#1225179).
- The following code works around these bugs. */
-
- if (tzstring)
- {
- /* Temporarily set TZ to a value that loads a tz file
- and that differs from tzstring. */
- char *tz = *newenv;
- *newenv = (strcmp (tzstring, set_time_zone_rule_tz1 + 3) == 0
- ? set_time_zone_rule_tz2 : set_time_zone_rule_tz1);
- tzset ();
- *newenv = tz;
- }
- else
- {
- /* The implied tzstring is unknown, so temporarily set TZ to
- two different values that each load a tz file. */
- *to = set_time_zone_rule_tz1;
- to[1] = 0;
- tzset ();
- *to = set_time_zone_rule_tz2;
- tzset ();
- *to = 0;
- }
+ strcpy (tzvalbuf + tzeqlen, tzstring);
- /* Now TZ has the desired value, and tzset can be invoked safely. */
- }
+ if (!tzvalbuf_in_environ)
+ {
+ xputenv (tzvalbuf);
+ tzvalbuf_in_environ = 1;
+ }
+ }
+#ifdef LOCALTIME_CACHE
tzset ();
#endif
}
@@ -2358,9 +2342,10 @@ usage: (insert-before-markers-and-inherit &rest ARGS) */)
}
DEFUN ("insert-char", Finsert_char, Sinsert_char, 1, 3,
- "(list (read-char-by-name \"Insert character (Unicode name or hex): \")\
- (prefix-numeric-value current-prefix-arg)\
- t))",
+ "(list (or (read-char-by-name \"Insert character (Unicode name or hex): \")\
+ (error \"You did not specify a valid character\"))\
+ (prefix-numeric-value current-prefix-arg)\
+ t))",
doc: /* Insert COUNT copies of CHARACTER.
Interactively, prompt for CHARACTER. You can specify CHARACTER in one
of these ways:
@@ -2929,7 +2914,7 @@ Both characters must have the same length of multi-byte form. */)
else if (!changed)
{
changed = -1;
- modify_region (current_buffer, pos, XINT (end), 0);
+ modify_region_1 (pos, XINT (end), false);
if (! NILP (noundo))
{
@@ -3105,7 +3090,7 @@ It returns the number of characters changed. */)
pos = XINT (start);
pos_byte = CHAR_TO_BYTE (pos);
end_pos = XINT (end);
- modify_region (current_buffer, pos, end_pos, 0);
+ modify_region_1 (pos, end_pos, false);
cnt = 0;
for (; pos < end_pos; )
@@ -4629,7 +4614,7 @@ Transposing beyond buffer boundaries is an error. */)
if (end1 == start2) /* adjacent regions */
{
- modify_region (current_buffer, start1, end2, 0);
+ modify_region_1 (start1, end2, false);
record_change (start1, len1 + len2);
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
@@ -4688,8 +4673,8 @@ Transposing beyond buffer boundaries is an error. */)
{
USE_SAFE_ALLOCA;
- modify_region (current_buffer, start1, end1, 0);
- modify_region (current_buffer, start2, end2, 0);
+ modify_region_1 (start1, end1, false);
+ modify_region_1 (start2, end2, false);
record_change (start1, len1);
record_change (start2, len2);
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
@@ -4722,7 +4707,7 @@ Transposing beyond buffer boundaries is an error. */)
{
USE_SAFE_ALLOCA;
- modify_region (current_buffer, start1, end2, 0);
+ modify_region_1 (start1, end2, false);
record_change (start1, (end2 - start1));
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
tmp_interval_mid = copy_intervals (cur_intv, end1, len_mid);
@@ -4755,7 +4740,7 @@ Transposing beyond buffer boundaries is an error. */)
USE_SAFE_ALLOCA;
record_change (start1, (end2 - start1));
- modify_region (current_buffer, start1, end2, 0);
+ modify_region_1 (start1, end2, false);
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
tmp_interval_mid = copy_intervals (cur_intv, end1, len_mid);
@@ -4806,9 +4791,6 @@ Transposing beyond buffer boundaries is an error. */)
void
syms_of_editfns (void)
{
- environbuf = 0;
- initial_tz = 0;
-
DEFSYM (Qbuffer_access_fontify_functions, "buffer-access-fontify-functions");
DEFVAR_LISP ("inhibit-field-text-motion", Vinhibit_field_text_motion,
diff --git a/src/emacs.c b/src/emacs.c
index b2b193e3a4f..fbaf0355000 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -535,7 +535,7 @@ DEFUN ("invocation-directory", Finvocation_directory, Sinvocation_directory,
#ifdef HAVE_TZSET
/* A valid but unlikely value for the TZ environment value.
It is OK (though a bit slower) if the user actually chooses this value. */
-static char dump_tz[] = "UtC0";
+static char const dump_tz[] = "UtC0";
#endif
#ifndef ORDINARY_LINK
@@ -717,7 +717,7 @@ main (int argc, char **argv)
#ifdef G_SLICE_ALWAYS_MALLOC
/* This is used by the Cygwin build. */
- setenv ("G_SLICE", "always-malloc", 1);
+ xputenv ("G_SLICE=always-malloc");
#endif
#ifdef GNU_LINUX
@@ -803,9 +803,8 @@ main (int argc, char **argv)
#ifdef HAVE_PERSONALITY_LINUX32
if (dumping && ! getenv ("EMACS_HEAP_EXEC"))
{
- static char heapexec[] = "EMACS_HEAP_EXEC=true";
/* Set this so we only do this once. */
- putenv (heapexec);
+ xputenv ("EMACS_HEAP_EXEC=true");
/* A flag to turn off address randomization which is introduced
in linux kernel shipped with fedora core 4 */
@@ -1309,7 +1308,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
don't pollute Vglobal_environment. */
/* Setting LANG here will defeat the startup locale processing... */
#ifdef AIX
- putenv ("LANG=C");
+ xputenv ("LANG=C");
#endif
init_buffer (); /* Init default directory of main buffer. */
diff --git a/src/fileio.c b/src/fileio.c
index 442c66550d3..de3b84ba95d 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -455,7 +455,7 @@ get a current directory to run processes in. */)
/* Convert from file name SRC of length SRCLEN to directory name
in DST. On UNIX, just make sure there is a terminating /.
- Return the length of DST. */
+ Return the length of DST in bytes. */
static ptrdiff_t
file_name_as_directory (char *dst, const char *src, ptrdiff_t srclen)
@@ -477,7 +477,14 @@ file_name_as_directory (char *dst, const char *src, ptrdiff_t srclen)
srclen++;
}
#ifdef DOS_NT
- dostounix_filename (dst);
+ {
+ Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1);
+
+ tem_fn = ENCODE_FILE (tem_fn);
+ dostounix_filename (SSDATA (tem_fn));
+ tem_fn = DECODE_FILE (tem_fn);
+ memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1);
+ }
#endif
return srclen;
}
@@ -519,7 +526,7 @@ For a Unix-syntax file name, just appends a slash. */)
/* Convert from directory name SRC of length SRCLEN to
file name in DST. On UNIX, just make sure there isn't
- a terminating /. Return the length of DST. */
+ a terminating /. Return the length of DST in bytes. */
static ptrdiff_t
directory_file_name (char *dst, char *src, ptrdiff_t srclen)
@@ -538,7 +545,14 @@ directory_file_name (char *dst, char *src, ptrdiff_t srclen)
srclen--;
}
#ifdef DOS_NT
- dostounix_filename (dst);
+ {
+ Lisp_Object tem_fn = make_specified_string (dst, -1, srclen, 1);
+
+ tem_fn = ENCODE_FILE (tem_fn);
+ dostounix_filename (SSDATA (tem_fn));
+ tem_fn = DECODE_FILE (tem_fn);
+ memcpy (dst, SSDATA (tem_fn), (srclen = SBYTES (tem_fn)) + 1);
+ }
#endif
return srclen;
}
@@ -1042,7 +1056,7 @@ filesystem tree, not (expand-file-name ".." dirname). */)
o [p - nm] = 0;
block_input ();
- pw = (struct passwd *) getpwnam (o + 1);
+ pw = getpwnam (o + 1);
unblock_input ();
if (pw)
{
@@ -1995,10 +2009,8 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
{
if (!(S_ISREG (st.st_mode)) && !(S_ISLNK (st.st_mode)))
{
-#if defined (EISDIR)
/* Get a better looking error message. */
errno = EISDIR;
-#endif /* EISDIR */
report_file_error ("Non-regular file", Fcons (file, Qnil));
}
}
@@ -5773,7 +5785,7 @@ This applies only to the operation `inhibit-file-name-operation'. */);
DEFVAR_LISP ("auto-save-list-file-name", Vauto_save_list_file_name,
doc: /* File name in which we write a list of all auto save file names.
This variable is initialized automatically from `auto-save-list-file-prefix'
-shortly after Emacs reads your `.emacs' file, if you have not yet given it
+shortly after Emacs reads your init file, if you have not yet given it
a non-nil value. */);
Vauto_save_list_file_name = Qnil;
diff --git a/src/font.c b/src/font.c
index 41dbfd7a757..f6b6fa026c0 100644
--- a/src/font.c
+++ b/src/font.c
@@ -1234,8 +1234,21 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
f[j] = "*";
else
{
+ int c, k, l;
+ ptrdiff_t alloc;
+
val = SYMBOL_NAME (val);
- f[j] = SSDATA (val);
+ alloc = SBYTES (val) + 1;
+ if (nbytes <= alloc)
+ return -1;
+ f[j] = p = alloca (alloc);
+ /* Copy the name while excluding '-', '?', ',', and '"'. */
+ for (k = l = 0; k < alloc; k++)
+ {
+ c = SREF (val, k);
+ if (c != '-' && c != '?' && c != ',' && c != '"')
+ p[l++] = c;
+ }
}
}
diff --git a/src/fontset.c b/src/fontset.c
index b76a216bac2..660ca432fad 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -1876,6 +1876,8 @@ DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0,
}
if (! CHAR_VALID_P (c))
return Qnil;
+ if (!FRAME_WINDOW_P (f))
+ return Qnil;
face_id = FACE_FOR_CHAR (f, FACE_FROM_ID (f, face_id), c, pos, Qnil);
face = FACE_FROM_ID (f, face_id);
if (face->font)
diff --git a/src/frame.c b/src/frame.c
index 3501fc36675..5cefad6ca46 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -346,13 +346,10 @@ make_frame (int mini_p)
/* Choose a buffer for the frame's root window. */
{
- Lisp_Object buf;
+ Lisp_Object buf = Fcurrent_buffer ();
- wset_buffer (XWINDOW (root_window), Qt);
- buf = Fcurrent_buffer ();
- /* If buf is a 'hidden' buffer (i.e. one whose name starts with
- a space), try to find another one. */
- if (SREF (Fbuffer_name (buf), 0) == ' ')
+ /* If current buffer is hidden, try to find another one. */
+ if (BUFFER_HIDDEN_P (XBUFFER (buf)))
buf = other_buffer_safely (buf);
/* Use set_window_buffer, not Fset_window_buffer, and don't let
@@ -366,14 +363,11 @@ make_frame (int mini_p)
}
if (mini_p)
- {
- wset_buffer (XWINDOW (mini_window), Qt);
- set_window_buffer (mini_window,
- (NILP (Vminibuffer_list)
- ? get_minibuffer (0)
- : Fcar (Vminibuffer_list)),
- 0, 0);
- }
+ set_window_buffer (mini_window,
+ (NILP (Vminibuffer_list)
+ ? get_minibuffer (0)
+ : Fcar (Vminibuffer_list)),
+ 0, 0);
fset_root_window (f, root_window);
fset_selected_window (f, root_window);
@@ -895,13 +889,58 @@ DEFUN ("frame-list", Fframe_list, Sframe_list,
return frames;
}
-/* Return the next frame in the frame list after FRAME.
- If MINIBUF is nil, exclude minibuffer-only frames.
- If MINIBUF is a window, include only its own frame
- and any frame now using that window as the minibuffer.
- If MINIBUF is `visible', include all visible frames.
- If MINIBUF is 0, include all visible and iconified frames.
- Otherwise, include all frames. */
+/* Return CANDIDATE if it can be used as 'other-than-FRAME' frame on the
+ same tty (for tty frames) or among frames which uses FRAME's keyboard.
+ If MINIBUF is nil, do not consider minibuffer-only candidate.
+ If MINIBUF is `visible', do not consider an invisible candidate.
+ If MINIBUF is a window, consider only its own frame and candidate now
+ using that window as the minibuffer.
+ If MINIBUF is 0, consider candidate if it is visible or iconified.
+ Otherwise consider any candidate and return nil if CANDIDATE is not
+ acceptable. */
+
+static Lisp_Object
+candidate_frame (Lisp_Object candidate, Lisp_Object frame, Lisp_Object minibuf)
+{
+ struct frame *c = XFRAME (candidate), *f = XFRAME (frame);
+
+ if ((!FRAME_TERMCAP_P (c) && !FRAME_TERMCAP_P (f)
+ && FRAME_KBOARD (c) == FRAME_KBOARD (f))
+ || (FRAME_TERMCAP_P (c) && FRAME_TERMCAP_P (f)
+ && FRAME_TTY (c) == FRAME_TTY (f)))
+ {
+ if (NILP (minibuf))
+ {
+ if (!FRAME_MINIBUF_ONLY_P (c))
+ return candidate;
+ }
+ else if (EQ (minibuf, Qvisible))
+ {
+ FRAME_SAMPLE_VISIBILITY (c);
+ if (FRAME_VISIBLE_P (c))
+ return candidate;
+ }
+ else if (WINDOWP (minibuf))
+ {
+ if (EQ (FRAME_MINIBUF_WINDOW (c), minibuf)
+ || EQ (WINDOW_FRAME (XWINDOW (minibuf)), candidate)
+ || EQ (WINDOW_FRAME (XWINDOW (minibuf)),
+ FRAME_FOCUS_FRAME (c)))
+ return candidate;
+ }
+ else if (XFASTINT (minibuf) == 0)
+ {
+ FRAME_SAMPLE_VISIBILITY (c);
+ if (FRAME_VISIBLE_P (c) || FRAME_ICONIFIED_P (c))
+ return candidate;
+ }
+ else
+ return candidate;
+ }
+ return Qnil;
+}
+
+/* Return the next frame in the frame list after FRAME. */
static Lisp_Object
next_frame (Lisp_Object frame, Lisp_Object minibuf)
@@ -910,72 +949,24 @@ next_frame (Lisp_Object frame, Lisp_Object minibuf)
int passed = 0;
/* There must always be at least one frame in Vframe_list. */
- if (! CONSP (Vframe_list))
- emacs_abort ();
-
- /* If this frame is dead, it won't be in Vframe_list, and we'll loop
- forever. Forestall that. */
- CHECK_LIVE_FRAME (frame);
+ eassert (CONSP (Vframe_list));
- while (1)
+ while (passed < 2)
FOR_EACH_FRAME (tail, f)
{
- if (passed
- && ((!FRAME_TERMCAP_P (XFRAME (f)) && !FRAME_TERMCAP_P (XFRAME (frame))
- && FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
- || (FRAME_TERMCAP_P (XFRAME (f)) && FRAME_TERMCAP_P (XFRAME (frame))
- && FRAME_TTY (XFRAME (f)) == FRAME_TTY (XFRAME (frame)))))
+ if (passed)
{
- /* Decide whether this frame is eligible to be returned. */
-
- /* If we've looped all the way around without finding any
- eligible frames, return the original frame. */
- if (EQ (f, frame))
- return f;
-
- /* Let minibuf decide if this frame is acceptable. */
- if (NILP (minibuf))
- {
- if (! FRAME_MINIBUF_ONLY_P (XFRAME (f)))
- return f;
- }
- else if (EQ (minibuf, Qvisible))
- {
- FRAME_SAMPLE_VISIBILITY (XFRAME (f));
- if (FRAME_VISIBLE_P (XFRAME (f)))
- return f;
- }
- else if (INTEGERP (minibuf) && XINT (minibuf) == 0)
- {
- FRAME_SAMPLE_VISIBILITY (XFRAME (f));
- if (FRAME_VISIBLE_P (XFRAME (f))
- || FRAME_ICONIFIED_P (XFRAME (f)))
- return f;
- }
- else if (WINDOWP (minibuf))
- {
- if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
- || EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
- || EQ (WINDOW_FRAME (XWINDOW (minibuf)),
- FRAME_FOCUS_FRAME (XFRAME (f))))
- return f;
- }
- else
+ f = candidate_frame (f, frame, minibuf);
+ if (!NILP (f))
return f;
}
-
if (EQ (frame, f))
passed++;
}
+ return frame;
}
-/* Return the previous frame in the frame list before FRAME.
- If MINIBUF is nil, exclude minibuffer-only frames.
- If MINIBUF is a window, include only its own frame
- and any frame now using that window as the minibuffer.
- If MINIBUF is `visible', include all visible frames.
- If MINIBUF is 0, include all visible and iconified frames.
- Otherwise, include all frames. */
+/* Return the previous frame in the frame list before FRAME. */
static Lisp_Object
prev_frame (Lisp_Object frame, Lisp_Object minibuf)
@@ -989,43 +980,9 @@ prev_frame (Lisp_Object frame, Lisp_Object minibuf)
{
if (EQ (frame, f) && !NILP (prev))
return prev;
-
- if ((!FRAME_TERMCAP_P (XFRAME (f)) && !FRAME_TERMCAP_P (XFRAME (frame))
- && FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
- || (FRAME_TERMCAP_P (XFRAME (f)) && FRAME_TERMCAP_P (XFRAME (frame))
- && FRAME_TTY (XFRAME (f)) == FRAME_TTY (XFRAME (frame))))
- {
- /* Decide whether this frame is eligible to be returned,
- according to minibuf. */
- if (NILP (minibuf))
- {
- if (! FRAME_MINIBUF_ONLY_P (XFRAME (f)))
- prev = f;
- }
- else if (WINDOWP (minibuf))
- {
- if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
- || EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
- || EQ (WINDOW_FRAME (XWINDOW (minibuf)),
- FRAME_FOCUS_FRAME (XFRAME (f))))
- prev = f;
- }
- else if (EQ (minibuf, Qvisible))
- {
- FRAME_SAMPLE_VISIBILITY (XFRAME (f));
- if (FRAME_VISIBLE_P (XFRAME (f)))
- prev = f;
- }
- else if (XFASTINT (minibuf) == 0)
- {
- FRAME_SAMPLE_VISIBILITY (XFRAME (f));
- if (FRAME_VISIBLE_P (XFRAME (f))
- || FRAME_ICONIFIED_P (XFRAME (f)))
- prev = f;
- }
- else
- prev = f;
- }
+ f = candidate_frame (f, frame, minibuf);
+ if (!NILP (f))
+ prev = f;
}
/* We've scanned the entire list. */
@@ -1056,7 +1013,6 @@ Otherwise, include all frames. */)
{
if (NILP (frame))
frame = selected_frame;
-
CHECK_LIVE_FRAME (frame);
return next_frame (frame, miniframe);
}
@@ -2314,7 +2270,7 @@ For a terminal frame, the value is always 1. */)
struct frame *f = decode_any_frame (frame);
if (FRAME_WINDOW_P (f))
- return make_number (x_char_height (f));
+ return make_number (FRAME_LINE_HEIGHT (f));
else
#endif
return make_number (1);
@@ -2333,7 +2289,7 @@ For a terminal screen, the value is always 1. */)
struct frame *f = decode_any_frame (frame);
if (FRAME_WINDOW_P (f))
- return make_number (x_char_width (f));
+ return make_number (FRAME_COLUMN_WIDTH (f));
else
#endif
return make_number (1);
diff --git a/src/frame.h b/src/frame.h
index 5ebfc2f7ec3..589b45fc0ff 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -301,9 +301,6 @@ struct frame
/* Canonical X unit. Width of default font, in pixels. */
int column_width;
- /* Width of space glyph of default font, in pixels. */
- int space_width;
-
/* Canonical Y unit. Height of a line, in pixels. */
int line_height;
@@ -1000,11 +997,6 @@ extern Lisp_Object selected_frame;
#define FRAME_COLUMN_WIDTH(F) ((F)->column_width)
-/* Space glyph width of the default font of frame F. */
-
-#define FRAME_SPACE_WIDTH(F) ((F)->space_width)
-
-
/* Pixel width of areas used to display truncation marks, continuation
marks, overlay arrows. This is 0 for terminal frames. */
@@ -1263,8 +1255,6 @@ extern void x_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y);
extern void x_make_frame_visible (struct frame *f);
extern void x_make_frame_invisible (struct frame *f);
extern void x_iconify_frame (struct frame *f);
-extern int x_char_width (struct frame *f);
-extern int x_char_height (struct frame *f);
extern int x_pixel_width (struct frame *f);
extern int x_pixel_height (struct frame *f);
extern void x_set_frame_alpha (struct frame *f);
diff --git a/src/gmalloc.c b/src/gmalloc.c
index dc584955661..c325ca79910 100644
--- a/src/gmalloc.c
+++ b/src/gmalloc.c
@@ -1645,14 +1645,6 @@ memalign (size_t alignment, size_t size)
return result;
}
-#ifndef ENOMEM
-#define ENOMEM 12
-#endif
-
-#ifndef EINVAL
-#define EINVAL 22
-#endif
-
int
posix_memalign (void **memptr, size_t alignment, size_t size)
{
diff --git a/src/gnutls.c b/src/gnutls.c
index e3d84a0b61b..03f753fa8cc 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -359,12 +359,7 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char *buf, ptrdiff_t nbyte)
if (proc->gnutls_initstage != GNUTLS_STAGE_READY)
{
-#ifdef EWOULDBLOCK
- errno = EWOULDBLOCK;
-#endif
-#ifdef EAGAIN
errno = EAGAIN;
-#endif
return 0;
}
@@ -384,14 +379,7 @@ emacs_gnutls_write (struct Lisp_Process *proc, const char *buf, ptrdiff_t nbyte)
appropriately so that send_process retries the
correct way instead of erroring out. */
if (rtnval == GNUTLS_E_AGAIN)
- {
-#ifdef EWOULDBLOCK
- errno = EWOULDBLOCK;
-#endif
-#ifdef EAGAIN
- errno = EAGAIN;
-#endif
- }
+ errno = EAGAIN;
break;
}
}
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 4367b534cb9..52a6c37b0d5 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -813,6 +813,14 @@ xg_hide_tooltip (FRAME_PTR f)
General functions for creating widgets, resizing, events, e.t.c.
***********************************************************************/
+static void
+my_log_handler (const gchar *log_domain, GLogLevelFlags log_level,
+ const gchar *msg, gpointer user_data)
+{
+ if (!strstr (msg, "visible children"))
+ fprintf (stderr, "XX %s-WARNING **: %s\n", log_domain, msg);
+}
+
/* Make a geometry string and pass that to GTK. It seems this is the
only way to get geometry position right if the user explicitly
asked for a position when starting Emacs.
@@ -828,6 +836,7 @@ xg_set_geometry (FRAME_PTR f)
int top = f->top_pos;
int yneg = f->size_hint_flags & YNegative;
char geom_str[sizeof "=x--" + 4 * INT_STRLEN_BOUND (int)];
+ guint id;
if (xneg)
left = -left;
@@ -840,9 +849,15 @@ xg_set_geometry (FRAME_PTR f)
(xneg ? '-' : '+'), left,
(yneg ? '-' : '+'), top);
+ /* Silence warning about visible children. */
+ id = g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL
+ | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
+
if (!gtk_window_parse_geometry (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
geom_str))
fprintf (stderr, "Failed to parse: '%s'\n", geom_str);
+
+ g_log_remove_handler ("Gtk", id);
}
}
diff --git a/src/insdel.c b/src/insdel.c
index 87010cd8251..892ca3d5216 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1755,9 +1755,9 @@ del_range_2 (ptrdiff_t from, ptrdiff_t from_byte,
return deletion;
}
-
-/* Call this if you're about to change the region of BUFFER from
- character positions START to END. This checks the read-only
+
+/* Call this if you're about to change the region of current buffer
+ from character positions START to END. This checks the read-only
properties of the region, calls the necessary modification hooks,
and warns the next redisplay that it should pay attention to that
area.
@@ -1766,16 +1766,11 @@ del_range_2 (ptrdiff_t from, ptrdiff_t from_byte,
Otherwise set CHARS_MODIFF to the new value of MODIFF. */
void
-modify_region (struct buffer *buffer, ptrdiff_t start, ptrdiff_t end,
- bool preserve_chars_modiff)
+modify_region_1 (ptrdiff_t start, ptrdiff_t end, bool preserve_chars_modiff)
{
- struct buffer *old_buffer = current_buffer;
-
- set_buffer_internal (buffer);
-
prepare_to_modify_buffer (start, end, NULL);
- BUF_COMPUTE_UNCHANGED (buffer, start - 1, end);
+ BUF_COMPUTE_UNCHANGED (current_buffer, start - 1, end);
if (MODIFF <= SAVE_MODIFF)
record_first_change ();
@@ -1783,11 +1778,9 @@ modify_region (struct buffer *buffer, ptrdiff_t start, ptrdiff_t end,
if (! preserve_chars_modiff)
CHARS_MODIFF = MODIFF;
- bset_point_before_scroll (buffer, Qnil);
-
- set_buffer_internal (old_buffer);
+ bset_point_before_scroll (current_buffer, Qnil);
}
-
+
/* Check that it is okay to modify the buffer between START and END,
which are char positions.
diff --git a/src/keyboard.c b/src/keyboard.c
index 0ad6d18c044..fc155c5a5f7 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1116,8 +1116,7 @@ cmd_error_internal (Lisp_Object data, const char *context)
Vsignaling_function = Qnil;
}
-
-Lisp_Object command_loop_1 (void);
+
static Lisp_Object command_loop_2 (Lisp_Object);
static Lisp_Object top_level_1 (Lisp_Object);
@@ -1154,7 +1153,7 @@ command_loop (void)
value to us. A value of nil means that command_loop_1 itself
returned due to end of file (or end of kbd macro). */
-Lisp_Object
+static Lisp_Object
command_loop_2 (Lisp_Object ignore)
{
register Lisp_Object val;
@@ -1172,7 +1171,7 @@ top_level_2 (void)
return Feval (Vtop_level, Qnil);
}
-Lisp_Object
+static Lisp_Object
top_level_1 (Lisp_Object ignore)
{
/* On entry to the outer level, run the startup file */
@@ -6960,10 +6959,7 @@ tty_read_avail_input (struct terminal *terminal,
an EAGAIN error. Does anybody know of a situation
where a retry is actually needed? */
#if 0
- nread < 0 && (errno == EAGAIN
-#ifdef EFAULT
- || errno == EFAULT
-#endif
+ nread < 0 && (errno == EAGAIN || errno == EFAULT
#ifdef EBADSLT
|| errno == EBADSLT
#endif
@@ -10692,7 +10688,7 @@ handle_interrupt (bool in_signal_handler)
fflush (stdout);
reset_all_sys_modes ();
-#ifdef SIGTSTP /* Support possible in later USG versions */
+#ifdef SIGTSTP
/*
* On systems which can suspend the current process and return to the original
* shell, this command causes the user to end up back at the shell.
diff --git a/src/lisp.h b/src/lisp.h
index 419176d06c8..91fc3dfa1c6 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1644,7 +1644,6 @@ typedef struct {
int mouse_face_beg_x, mouse_face_beg_y;
int mouse_face_end_row, mouse_face_end_col;
int mouse_face_end_x, mouse_face_end_y;
- int mouse_face_past_end;
Lisp_Object mouse_face_window;
int mouse_face_face_id;
Lisp_Object mouse_face_overlay;
@@ -1654,13 +1653,15 @@ typedef struct {
struct frame *mouse_face_mouse_frame;
int mouse_face_mouse_x, mouse_face_mouse_y;
+ /* Nonzero if part of the text currently shown in
+ its mouse-face is beyond the window end. */
+ unsigned mouse_face_past_end : 1;
+
/* Nonzero means defer mouse-motion highlighting. */
- int mouse_face_defer;
+ unsigned mouse_face_defer : 1;
/* Nonzero means that the mouse highlight should not be shown. */
- int mouse_face_hidden;
-
- int mouse_face_image_state;
+ unsigned mouse_face_hidden : 1;
} Mouse_HLInfo;
/* Data type checking. */
@@ -2796,7 +2797,7 @@ extern void del_range_byte (ptrdiff_t, ptrdiff_t, bool);
extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool);
extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t,
ptrdiff_t, ptrdiff_t, bool);
-extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
+extern void modify_region_1 (ptrdiff_t, ptrdiff_t, bool);
extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t);
extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
@@ -2963,6 +2964,7 @@ extern Lisp_Object make_float (double);
extern void display_malloc_warning (void);
extern ptrdiff_t inhibit_garbage_collection (void);
extern Lisp_Object make_save_value (void *, ptrdiff_t);
+extern void free_save_value (Lisp_Object);
extern Lisp_Object build_overlay (Lisp_Object, Lisp_Object, Lisp_Object);
extern void free_marker (Lisp_Object);
extern void free_cons (struct Lisp_Cons *);
@@ -3393,7 +3395,6 @@ extern void syms_of_doc (void);
extern int read_bytecode_char (bool);
/* Defined in bytecode.c. */
-extern Lisp_Object Qbytecode;
extern void syms_of_bytecode (void);
extern struct byte_stack *byte_stack_list;
#if BYTE_MARK_STACK
@@ -3593,6 +3594,7 @@ extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t);
extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t);
extern char *xstrdup (const char *);
+extern void xputenv (const char *);
extern char *egetenv (const char *);
diff --git a/src/lread.c b/src/lread.c
index 6d0ff9f780e..6647382a254 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -440,7 +440,6 @@ readbyte_from_file (int c, Lisp_Object readcharfun)
block_input ();
c = getc (instream);
-#ifdef EINTR
/* Interrupted reads have been observed while reading over the network. */
while (c == EOF && ferror (instream) && errno == EINTR)
{
@@ -450,7 +449,6 @@ readbyte_from_file (int c, Lisp_Object readcharfun)
clearerr (instream);
c = getc (instream);
}
-#endif
unblock_input ();
diff --git a/src/nsfns.m b/src/nsfns.m
index e8bf696e7f5..428cfcb9a10 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -2243,20 +2243,6 @@ x_pixel_height (struct frame *f)
int
-x_char_width (struct frame *f)
-{
- return FRAME_COLUMN_WIDTH (f);
-}
-
-
-int
-x_char_height (struct frame *f)
-{
- return FRAME_LINE_HEIGHT (f);
-}
-
-
-int
x_screen_planes (struct frame *f)
{
return FRAME_NS_DISPLAY_INFO (f)->n_planes;
diff --git a/src/nsterm.m b/src/nsterm.m
index 25eb7ebc495..55a106b7e03 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -6954,7 +6954,6 @@ x_new_font (struct frame *f, Lisp_Object font_object, int fontset)
FRAME_BASELINE_OFFSET (f) = font->baseline_offset;
FRAME_COLUMN_WIDTH (f) = font->average_width;
- FRAME_SPACE_WIDTH (f) = font->space_width;
FRAME_LINE_HEIGHT (f) = font->height;
compute_fringe_widths (f, 1);
diff --git a/src/process.c b/src/process.c
index 0036ce595f5..7b21d060cf8 100644
--- a/src/process.c
+++ b/src/process.c
@@ -91,6 +91,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <pty.h>
#endif
+#include <c-ctype.h>
+#include <sig2str.h>
+
#endif /* subprocesses */
#include "systime.h"
@@ -773,13 +776,22 @@ get_process (register Lisp_Object name)
}
-#ifdef SIGCHLD
/* Fdelete_process promises to immediately forget about the process, but in
reality, Emacs needs to remember those processes until they have been
treated by the SIGCHLD handler and waitpid has been invoked on them;
- otherwise they might fill up the kernel's process table. */
+ otherwise they might fill up the kernel's process table.
+
+ Some processes created by call-process are also put onto this list. */
static Lisp_Object deleted_pid_list;
-#endif
+
+void
+record_deleted_pid (pid_t pid)
+{
+ deleted_pid_list = Fcons (make_fixnum_or_float (pid),
+ /* GC treated elements set to nil. */
+ Fdelq (Qnil, deleted_pid_list));
+
+}
DEFUN ("delete-process", Fdelete_process, Sdelete_process, 1, 1, 0,
doc: /* Delete PROCESS: kill it and forget about it immediately.
@@ -800,32 +812,22 @@ nil, indicating the current buffer's process. */)
status_notify (p);
redisplay_preserve_echo_area (13);
}
- else if (p->infd >= 0)
+ else
{
-#ifdef SIGCHLD
- Lisp_Object symbol;
- pid_t pid = p->pid;
-
- /* No problem storing the pid here, as it is still in Vprocess_alist. */
- deleted_pid_list = Fcons (make_fixnum_or_float (pid),
- /* GC treated elements set to nil. */
- Fdelq (Qnil, deleted_pid_list));
- /* If the process has already signaled, remove it from the list. */
- if (p->raw_status_new)
- update_status (p);
- symbol = p->status;
- if (CONSP (p->status))
- symbol = XCAR (p->status);
- if (EQ (symbol, Qsignal) || EQ (symbol, Qexit))
- deleted_pid_list
- = Fdelete (make_fixnum_or_float (pid), deleted_pid_list);
- else
-#endif
+ if (p->alive)
+ record_kill_process (p);
+
+ if (p->infd >= 0)
{
- Fkill_process (process, Qnil);
- /* Do this now, since remove_process will make the
- SIGCHLD handler do nothing. */
- pset_status (p, Fcons (Qsignal, Fcons (make_number (SIGKILL), Qnil)));
+ /* Update P's status, since record_kill_process will make the
+ SIGCHLD handler update deleted_pid_list, not *P. */
+ Lisp_Object symbol;
+ if (p->raw_status_new)
+ update_status (p);
+ symbol = CONSP (p->status) ? XCAR (p->status) : p->status;
+ if (! (EQ (symbol, Qsignal) || EQ (symbol, Qexit)))
+ pset_status (p, list2 (Qsignal, make_number (SIGKILL)));
+
p->tick = ++process_tick;
status_notify (p);
redisplay_preserve_echo_area (13);
@@ -1578,17 +1580,12 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
#ifndef WINDOWSNT
int wait_child_setup[2];
#endif
-#ifdef SIGCHLD
sigset_t blocked;
-#endif
/* Use volatile to protect variables from being clobbered by vfork. */
volatile int forkin, forkout;
volatile int pty_flag = 0;
volatile Lisp_Object lisp_pty_name = Qnil;
volatile Lisp_Object encoded_current_dir;
-#if HAVE_WORKING_VFORK
- char **volatile save_environ;
-#endif
inchannel = outchannel = -1;
@@ -1680,19 +1677,11 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
block_input ();
-#ifdef SIGCHLD
/* Block SIGCHLD until we have a chance to store the new fork's
pid in its process structure. */
sigemptyset (&blocked);
sigaddset (&blocked, SIGCHLD);
pthread_sigmask (SIG_BLOCK, &blocked, 0);
-#endif
-
-#if HAVE_WORKING_VFORK
- /* child_setup must clobber environ on systems with true vfork.
- Protect it from permanent change. */
- save_environ = environ;
-#endif
#ifndef WINDOWSNT
pid = vfork ();
@@ -1800,10 +1789,8 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
/* Emacs ignores SIGPIPE, but the child should not. */
signal (SIGPIPE, SIG_DFL);
-#ifdef SIGCHLD
/* Stop blocking signals in the child. */
pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
-#endif
if (pty_flag)
child_setup_tty (xforkout);
@@ -1819,18 +1806,12 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
/* Back in the parent process. */
-#if HAVE_WORKING_VFORK
- environ = save_environ;
-#endif
-
XPROCESS (process)->pid = pid;
if (0 <= pid)
XPROCESS (process)->alive = 1;
/* Stop blocking signals in the parent. */
-#ifdef SIGCHLD
pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
-#endif
unblock_input ();
if (pid < 0)
@@ -1874,7 +1855,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
/* Wait for child_setup to complete in case that vfork is
actually defined as fork. The descriptor wait_child_setup[1]
of a pipe is closed at the child side either by close-on-exec
- on successful execvp or the _exit call in child_setup. */
+ on successful execve or the _exit call in child_setup. */
{
char dummy;
@@ -4432,14 +4413,8 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
total_nread += nread;
got_some_input = 1;
}
-#ifdef EIO
- else if (nread == -1 && EIO == errno)
- break;
-#endif
-#ifdef EAGAIN
- else if (nread == -1 && EAGAIN == errno)
+ else if (nread == -1 && (errno == EIO || errno == EAGAIN))
break;
-#endif
#ifdef EWOULDBLOCK
else if (nread == -1 && EWOULDBLOCK == errno)
break;
@@ -4628,7 +4603,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
yielding EBADF here or at select() call above.
So, SIGHUP is ignored (see def of PTY_TTY_NAME_SPRINTF
in m/ibmrt-aix.h), and here we just ignore the select error.
- Cleanup occurs c/o status_notify after SIGCLD. */
+ Cleanup occurs c/o status_notify after SIGCHLD. */
no_avail = 1; /* Cannot depend on values returned */
#else
emacs_abort ();
@@ -4826,10 +4801,8 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
#endif /* HAVE_PTYS */
/* If we can detect process termination, don't consider the
process gone just because its pipe is closed. */
-#ifdef SIGCHLD
else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc))
;
-#endif
else
{
/* Preserve status of processes already terminated. */
@@ -5517,13 +5490,10 @@ send_process (Lisp_Object proc, const char *buf, ptrdiff_t len,
if (rv < 0)
{
- if (0
+ if (errno == EAGAIN
#ifdef EWOULDBLOCK
|| errno == EWOULDBLOCK
#endif
-#ifdef EAGAIN
- || errno == EAGAIN
-#endif
)
/* Buffer is full. Wait, accepting input;
that may allow the program
@@ -5695,7 +5665,7 @@ return t unconditionally. */)
If we can, we try to signal PROCESS by sending control characters
down the pty. This allows us to signal inferiors who have changed
- their uid, for which killpg would return an EPERM error. */
+ their uid, for which kill would return an EPERM error. */
static void
process_send_signal (Lisp_Object process, int signo, Lisp_Object current_group,
@@ -5833,7 +5803,7 @@ process_send_signal (Lisp_Object process, int signo, Lisp_Object current_group,
if (!NILP (current_group))
{
if (ioctl (p->infd, TIOCSIGSEND, signo) == -1)
- EMACS_KILLPG (gid, signo);
+ kill (-gid, signo);
}
else
{
@@ -5841,7 +5811,7 @@ process_send_signal (Lisp_Object process, int signo, Lisp_Object current_group,
kill (gid, signo);
}
#else /* ! defined (TIOCSIGSEND) */
- EMACS_KILLPG (gid, signo);
+ kill (-gid, signo);
#endif /* ! defined (TIOCSIGSEND) */
}
@@ -5946,6 +5916,27 @@ traffic. */)
return process;
}
+/* Return the integer value of the signal whose abbreviation is ABBR,
+ or a negative number if there is no such signal. */
+static int
+abbr_to_signal (char const *name)
+{
+ int i, signo;
+ char sigbuf[20]; /* Large enough for all valid signal abbreviations. */
+
+ if (!strncmp (name, "SIG", 3) || !strncmp (name, "sig", 3))
+ name += 3;
+
+ for (i = 0; i < sizeof sigbuf; i++)
+ {
+ sigbuf[i] = c_toupper (name[i]);
+ if (! sigbuf[i])
+ return str2sig (sigbuf, &signo) == 0 ? signo : -1;
+ }
+
+ return -1;
+}
+
DEFUN ("signal-process", Fsignal_process, Ssignal_process,
2, 2, "sProcess (name or number): \nnSignal code: ",
doc: /* Send PROCESS the signal with code SIGCODE.
@@ -5956,6 +5947,7 @@ SIGCODE may be an integer, or a symbol whose name is a signal name. */)
(Lisp_Object process, Lisp_Object sigcode)
{
pid_t pid;
+ int signo;
if (STRINGP (process))
{
@@ -5985,12 +5977,11 @@ SIGCODE may be an integer, or a symbol whose name is a signal name. */)
error ("Cannot signal process %s", SDATA (XPROCESS (process)->name));
}
-#define parse_signal(NAME, VALUE) \
- else if (!xstrcasecmp (name, NAME)) \
- XSETINT (sigcode, VALUE)
-
if (INTEGERP (sigcode))
- CHECK_TYPE_RANGED_INTEGER (int, sigcode);
+ {
+ CHECK_TYPE_RANGED_INTEGER (int, sigcode);
+ signo = XINT (sigcode);
+ }
else
{
char *name;
@@ -5998,96 +5989,12 @@ SIGCODE may be an integer, or a symbol whose name is a signal name. */)
CHECK_SYMBOL (sigcode);
name = SSDATA (SYMBOL_NAME (sigcode));
- if (!strncmp (name, "SIG", 3) || !strncmp (name, "sig", 3))
- name += 3;
-
- if (0)
- ;
-#ifdef SIGUSR1
- parse_signal ("usr1", SIGUSR1);
-#endif
-#ifdef SIGUSR2
- parse_signal ("usr2", SIGUSR2);
-#endif
- parse_signal ("term", SIGTERM);
-#ifdef SIGHUP
- parse_signal ("hup", SIGHUP);
-#endif
- parse_signal ("int", SIGINT);
-#ifdef SIGQUIT
- parse_signal ("quit", SIGQUIT);
-#endif
- parse_signal ("ill", SIGILL);
- parse_signal ("abrt", SIGABRT);
-#ifdef SIGEMT
- parse_signal ("emt", SIGEMT);
-#endif
-#ifdef SIGKILL
- parse_signal ("kill", SIGKILL);
-#endif
- parse_signal ("fpe", SIGFPE);
-#ifdef SIGBUS
- parse_signal ("bus", SIGBUS);
-#endif
- parse_signal ("segv", SIGSEGV);
-#ifdef SIGSYS
- parse_signal ("sys", SIGSYS);
-#endif
-#ifdef SIGPIPE
- parse_signal ("pipe", SIGPIPE);
-#endif
-#ifdef SIGALRM
- parse_signal ("alrm", SIGALRM);
-#endif
-#ifdef SIGURG
- parse_signal ("urg", SIGURG);
-#endif
-#ifdef SIGSTOP
- parse_signal ("stop", SIGSTOP);
-#endif
-#ifdef SIGTSTP
- parse_signal ("tstp", SIGTSTP);
-#endif
-#ifdef SIGCONT
- parse_signal ("cont", SIGCONT);
-#endif
-#ifdef SIGCHLD
- parse_signal ("chld", SIGCHLD);
-#endif
-#ifdef SIGTTIN
- parse_signal ("ttin", SIGTTIN);
-#endif
-#ifdef SIGTTOU
- parse_signal ("ttou", SIGTTOU);
-#endif
-#ifdef SIGIO
- parse_signal ("io", SIGIO);
-#endif
-#ifdef SIGXCPU
- parse_signal ("xcpu", SIGXCPU);
-#endif
-#ifdef SIGXFSZ
- parse_signal ("xfsz", SIGXFSZ);
-#endif
-#ifdef SIGVTALRM
- parse_signal ("vtalrm", SIGVTALRM);
-#endif
-#ifdef SIGPROF
- parse_signal ("prof", SIGPROF);
-#endif
-#ifdef SIGWINCH
- parse_signal ("winch", SIGWINCH);
-#endif
-#ifdef SIGINFO
- parse_signal ("info", SIGINFO);
-#endif
- else
+ signo = abbr_to_signal (name);
+ if (signo < 0)
error ("Undefined signal name %s", name);
}
-#undef parse_signal
-
- return make_number (kill (pid, XINT (sigcode)));
+ return make_number (kill (pid, signo));
}
DEFUN ("process-send-eof", Fprocess_send_eof, Sprocess_send_eof, 0, 1, 0,
@@ -6169,35 +6076,35 @@ process has been transmitted to the serial port. */)
return process;
}
-/* If the status of the process DESIRED has changed, return true and
- set *STATUS to its exit status; otherwise, return false.
- If HAVE is nonnegative, assume that HAVE = waitpid (HAVE, STATUS, ...)
- has already been invoked, and do not invoke waitpid again. */
-
-static bool
-process_status_retrieved (pid_t desired, pid_t have, int *status)
-{
- if (have < 0)
- {
- /* Invoke waitpid only with a known process ID; do not invoke
- waitpid with a nonpositive argument. Otherwise, Emacs might
- reap an unwanted process by mistake. For example, invoking
- waitpid (-1, ...) can mess up glib by reaping glib's subprocesses,
- so that another thread running glib won't find them. */
- do
- have = waitpid (desired, status, WNOHANG | WUNTRACED);
- while (have < 0 && errno == EINTR);
- }
-
- return have == desired;
-}
-
-/* If PID is nonnegative, the child process PID with wait status W has
- changed its status; record this and return true.
-
- If PID is negative, ignore W, and look for known child processes
- of Emacs whose status have changed. For each one found, record its new
- status.
+/* The main Emacs thread records child processes in three places:
+
+ - Vprocess_alist, for asynchronous subprocesses, which are child
+ processes visible to Lisp.
+
+ - deleted_pid_list, for child processes invisible to Lisp,
+ typically because of delete-process. These are recorded so that
+ the processes can be reaped when they exit, so that the operating
+ system's process table is not cluttered by zombies.
+
+ - the local variable PID in Fcall_process, call_process_cleanup and
+ call_process_kill, for synchronous subprocesses.
+ record_unwind_protect is used to make sure this process is not
+ forgotten: if the user interrupts call-process and the child
+ process refuses to exit immediately even with two C-g's,
+ call_process_kill adds PID's contents to deleted_pid_list before
+ returning.
+
+ The main Emacs thread invokes waitpid only on child processes that
+ it creates and that have not been reaped. This avoid races on
+ platforms such as GTK, where other threads create their own
+ subprocesses which the main thread should not reap. For example,
+ if the main thread attempted to reap an already-reaped child, it
+ might inadvertently reap a GTK-created process that happened to
+ have the same process ID. */
+
+/* Handle a SIGCHLD signal by looking for known child processes of
+ Emacs whose status have changed. For each one found, record its
+ new status.
All we do is change the status; we do not run sentinels or print
notifications. That is saved for the next time keyboard input is
@@ -6220,20 +6127,15 @@ process_status_retrieved (pid_t desired, pid_t have, int *status)
** Malloc WARNING: This should never call malloc either directly or
indirectly; if it does, that is a bug */
-void
-record_child_status_change (pid_t pid, int w)
+static void
+handle_child_signal (int sig)
{
-#ifdef SIGCHLD
-
- /* Record at most one child only if we already know one child that
- has exited. */
- bool record_at_most_one_child = 0 <= pid;
-
Lisp_Object tail;
/* Find the process that signaled us, and record its status. */
- /* The process can have been deleted by Fdelete_process. */
+ /* The process can have been deleted by Fdelete_process, or have
+ been started asynchronously by Fcall_process. */
for (tail = deleted_pid_list; CONSP (tail); tail = XCDR (tail))
{
bool all_pids_are_fixnums
@@ -6247,12 +6149,8 @@ record_child_status_change (pid_t pid, int w)
deleted_pid = XINT (xpid);
else
deleted_pid = XFLOAT_DATA (xpid);
- if (process_status_retrieved (deleted_pid, pid, &w))
- {
- XSETCAR (tail, Qnil);
- if (record_at_most_one_child)
- return;
- }
+ if (child_status_changed (deleted_pid, 0, 0))
+ XSETCAR (tail, Qnil);
}
}
@@ -6261,15 +6159,17 @@ record_child_status_change (pid_t pid, int w)
{
Lisp_Object proc = XCDR (XCAR (tail));
struct Lisp_Process *p = XPROCESS (proc);
- if (p->alive && process_status_retrieved (p->pid, pid, &w))
+ int status;
+
+ if (p->alive && child_status_changed (p->pid, &status, WUNTRACED))
{
/* Change the status of the process that was found. */
p->tick = ++process_tick;
- p->raw_status = w;
+ p->raw_status = status;
p->raw_status_new = 1;
/* If process has terminated, stop waiting for its output. */
- if (WIFSIGNALED (w) || WIFEXITED (w))
+ if (WIFSIGNALED (status) || WIFEXITED (status))
{
int clear_desc_flag = 0;
p->alive = 0;
@@ -6283,44 +6183,8 @@ record_child_status_change (pid_t pid, int w)
FD_CLR (p->infd, &non_keyboard_wait_mask);
}
}
-
- /* Tell wait_reading_process_output that it needs to wake up and
- look around. */
- if (input_available_clear_time)
- *input_available_clear_time = make_emacs_time (0, 0);
-
- if (record_at_most_one_child)
- return;
}
}
-
- if (0 <= pid)
- {
- /* The caller successfully waited for a pid but no asynchronous
- process was found for it, so this is a synchronous process. */
-
- synch_process_alive = 0;
-
- /* Report the status of the synchronous process. */
- if (WIFEXITED (w))
- synch_process_retcode = WEXITSTATUS (w);
- else if (WIFSIGNALED (w))
- synch_process_termsig = WTERMSIG (w);
-
- /* Tell wait_reading_process_output that it needs to wake up and
- look around. */
- if (input_available_clear_time)
- *input_available_clear_time = make_emacs_time (0, 0);
- }
-#endif
-}
-
-#ifdef SIGCHLD
-
-static void
-handle_child_signal (int sig)
-{
- record_child_status_change (-1, 0);
}
static void
@@ -6328,8 +6192,6 @@ deliver_child_signal (int sig)
{
deliver_process_signal (sig, handle_child_signal);
}
-
-#endif /* SIGCHLD */
static Lisp_Object
@@ -7178,7 +7040,6 @@ init_process_emacs (void)
inhibit_sentinels = 0;
-#ifdef SIGCHLD
#ifndef CANNOT_DUMP
if (! noninteractive || initialized)
#endif
@@ -7187,7 +7048,6 @@ init_process_emacs (void)
emacs_sigaction_init (&action, deliver_child_signal);
sigaction (SIGCHLD, &action, 0);
}
-#endif
FD_ZERO (&input_wait_mask);
FD_ZERO (&non_keyboard_wait_mask);
@@ -7214,9 +7074,7 @@ init_process_emacs (void)
#endif
Vprocess_alist = Qnil;
-#ifdef SIGCHLD
deleted_pid_list = Qnil;
-#endif
for (i = 0; i < MAXDESC; i++)
{
chan_process[i] = Qnil;
@@ -7343,9 +7201,7 @@ syms_of_process (void)
DEFSYM (Qlast_nonmenu_event, "last-nonmenu-event");
staticpro (&Vprocess_alist);
-#ifdef SIGCHLD
staticpro (&deleted_pid_list);
-#endif
#endif /* subprocesses */
diff --git a/src/process.h b/src/process.h
index 74d1a124060..a0521689abf 100644
--- a/src/process.h
+++ b/src/process.h
@@ -185,23 +185,6 @@ pset_gnutls_cred_type (struct Lisp_Process *p, Lisp_Object val)
}
#endif
-/* True if we are about to fork off a synchronous process or if we
- are waiting for it. */
-extern bool synch_process_alive;
-
-/* Communicate exit status of sync process to from sigchld_handler
- to Fcall_process. */
-
-/* Nonzero => this is a string explaining death of synchronous subprocess. */
-extern const char *synch_process_death;
-
-/* Nonzero => this is the signal number that terminated the subprocess. */
-extern int synch_process_termsig;
-
-/* If synch_process_death is zero,
- this is exit code of synchronous subprocess. */
-extern int synch_process_retcode;
-
/* Nonzero means don't run process sentinels. This is used
when exiting. */
extern int inhibit_sentinels;
@@ -215,6 +198,12 @@ extern Lisp_Object QCspeed;
extern Lisp_Object QCbytesize, QCstopbits, QCparity, Qodd, Qeven;
extern Lisp_Object QCflowcontrol, Qhw, Qsw, QCsummary;
+/* Defined in callproc.c. */
+
+extern void record_kill_process (struct Lisp_Process *);
+
+/* Defined in process.c. */
+
extern Lisp_Object list_system_processes (void);
extern Lisp_Object system_process_attributes (Lisp_Object);
diff --git a/src/sysdep.c b/src/sysdep.c
index 1a3834f0379..5291c5d59aa 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -266,45 +266,74 @@ init_baud_rate (int fd)
#ifndef MSDOS
-static void
-wait_for_termination_1 (pid_t pid, int interruptible)
+/* Wait for the subprocess with process id CHILD to terminate or change status.
+ CHILD must be a child process that has not been reaped.
+ If STATUS is non-null, store the waitpid-style exit status into *STATUS
+ and tell wait_reading_process_output that it needs to look around.
+ Use waitpid-style OPTIONS when waiting.
+ If INTERRUPTIBLE, this function is interruptible by a signal.
+
+ Return CHILD if successful, 0 if no status is available;
+ the latter is possible only when options & NOHANG. */
+static pid_t
+get_child_status (pid_t child, int *status, int options, bool interruptible)
{
- while (1)
+ pid_t pid;
+
+ /* Invoke waitpid only with a known process ID; do not invoke
+ waitpid with a nonpositive argument. Otherwise, Emacs might
+ reap an unwanted process by mistake. For example, invoking
+ waitpid (-1, ...) can mess up glib by reaping glib's subprocesses,
+ so that another thread running glib won't find them. */
+ eassert (0 < child);
+
+ while ((pid = waitpid (child, status, options)) < 0)
{
- int status;
- int wait_result = waitpid (pid, &status, 0);
- if (wait_result < 0)
- {
- if (errno != EINTR)
- break;
- }
- else
- {
- record_child_status_change (wait_result, status);
- break;
- }
+ /* Check that CHILD is a child process that has not been reaped,
+ and that STATUS and OPTIONS are valid. Otherwise abort,
+ as continuing after this internal error could cause Emacs to
+ become confused and kill innocent-victim processes. */
+ if (errno != EINTR)
+ emacs_abort ();
/* Note: the MS-Windows emulation of waitpid calls QUIT
internally. */
if (interruptible)
QUIT;
}
-}
-/* Wait for subprocess with process id `pid' to terminate and
- make sure it will get eliminated (not remain forever as a zombie) */
+ /* If successful and status is requested, tell wait_reading_process_output
+ that it needs to wake up and look around. */
+ if (pid && status && input_available_clear_time)
+ *input_available_clear_time = make_emacs_time (0, 0);
+ return pid;
+}
+
+/* Wait for the subprocess with process id CHILD to terminate.
+ CHILD must be a child process that has not been reaped.
+ If STATUS is non-null, store the waitpid-style exit status into *STATUS
+ and tell wait_reading_process_output that it needs to look around.
+ If INTERRUPTIBLE, this function is interruptible by a signal. */
void
-wait_for_termination (pid_t pid)
+wait_for_termination (pid_t child, int *status, bool interruptible)
{
- wait_for_termination_1 (pid, 0);
+ get_child_status (child, status, 0, interruptible);
}
-/* Like the above, but allow keyboard interruption. */
-void
-interruptible_wait_for_termination (pid_t pid)
+/* Report whether the subprocess with process id CHILD has changed status.
+ Termination counts as a change of status.
+ CHILD must be a child process that has not been reaped.
+ If STATUS is non-null, store the waitpid-style exit status into *STATUS
+ and tell wait_reading_process_output that it needs to look around.
+ Use waitpid-style OPTIONS to check status, but do not wait.
+
+ Return CHILD if successful, 0 if no status is available because
+ the process's state has not changed. */
+pid_t
+child_status_changed (pid_t child, int *status, int options)
{
- wait_for_termination_1 (pid, 1);
+ return get_child_status (child, status, WNOHANG | options, 0);
}
/*
@@ -428,20 +457,15 @@ static void restore_signal_handlers (struct save_signal *);
void
sys_suspend (void)
{
-#if defined (SIGTSTP) && !defined (MSDOS)
-
- {
- pid_t pgrp = getpgrp ();
- EMACS_KILLPG (pgrp, SIGTSTP);
- }
-
-#else /* No SIGTSTP */
+#ifndef DOS_NT
+ kill (0, SIGTSTP);
+#else
/* On a system where suspending is not implemented,
instead fork a subshell and let it talk directly to the terminal
while we wait. */
sys_subshell ();
-#endif /* no SIGTSTP */
+#endif
}
/* Fork a subshell. */
@@ -454,6 +478,7 @@ sys_subshell (void)
char oldwd[MAXPATHLEN+1]; /* Fixed length is safe on MSDOS. */
#endif
pid_t pid;
+ int status;
struct save_signal saved_handlers[5];
Lisp_Object dir;
unsigned char *volatile str_volatile = 0;
@@ -491,7 +516,6 @@ sys_subshell (void)
#ifdef DOS_NT
pid = 0;
save_signal_handlers (saved_handlers);
- synch_process_alive = 1;
#else
pid = vfork ();
if (pid == -1)
@@ -560,14 +584,12 @@ sys_subshell (void)
/* Do this now if we did not do it before. */
#ifndef MSDOS
save_signal_handlers (saved_handlers);
- synch_process_alive = 1;
#endif
#ifndef DOS_NT
- wait_for_termination (pid);
+ wait_for_termination (pid, &status, 0);
#endif
restore_signal_handlers (saved_handlers);
- synch_process_alive = 0;
}
static void
@@ -1491,9 +1513,7 @@ emacs_sigaction_init (struct sigaction *action, signal_handler_t handler)
/* When handling a signal, block nonfatal system signals that are caught
by Emacs. This makes race conditions less likely. */
sigaddset (&action->sa_mask, SIGALRM);
-#ifdef SIGCHLD
sigaddset (&action->sa_mask, SIGCHLD);
-#endif
#ifdef SIGDANGER
sigaddset (&action->sa_mask, SIGDANGER);
#endif
@@ -1673,18 +1693,11 @@ init_signals (bool dumping)
# ifdef SIGAIO
sys_siglist[SIGAIO] = "LAN I/O interrupt";
# endif
-# ifdef SIGALRM
sys_siglist[SIGALRM] = "Alarm clock";
-# endif
# ifdef SIGBUS
sys_siglist[SIGBUS] = "Bus error";
# endif
-# ifdef SIGCLD
- sys_siglist[SIGCLD] = "Child status changed";
-# endif
-# ifdef SIGCHLD
sys_siglist[SIGCHLD] = "Child status changed";
-# endif
# ifdef SIGCONT
sys_siglist[SIGCONT] = "Continued";
# endif
@@ -1704,9 +1717,7 @@ init_signals (bool dumping)
# ifdef SIGGRANT
sys_siglist[SIGGRANT] = "Monitor mode granted";
# endif
-# ifdef SIGHUP
sys_siglist[SIGHUP] = "Hangup";
-# endif
sys_siglist[SIGILL] = "Illegal instruction";
sys_siglist[SIGINT] = "Interrupt";
# ifdef SIGIO
@@ -1718,9 +1729,7 @@ init_signals (bool dumping)
# ifdef SIGIOT
sys_siglist[SIGIOT] = "IOT trap";
# endif
-# ifdef SIGKILL
sys_siglist[SIGKILL] = "Killed";
-# endif
# ifdef SIGLOST
sys_siglist[SIGLOST] = "Resource lost";
# endif
@@ -1733,9 +1742,7 @@ init_signals (bool dumping)
# ifdef SIGPHONE
sys_siglist[SIGWIND] = "SIGPHONE";
# endif
-# ifdef SIGPIPE
sys_siglist[SIGPIPE] = "Broken pipe";
-# endif
# ifdef SIGPOLL
sys_siglist[SIGPOLL] = "Pollable event occurred";
# endif
@@ -1748,9 +1755,7 @@ init_signals (bool dumping)
# ifdef SIGPWR
sys_siglist[SIGPWR] = "Power-fail restart";
# endif
-# ifdef SIGQUIT
sys_siglist[SIGQUIT] = "Quit";
-# endif
# ifdef SIGRETRACT
sys_siglist[SIGRETRACT] = "Need to relinquish monitor mode";
# endif
diff --git a/src/syssignal.h b/src/syssignal.h
index 2bf2f046aa5..8f9b5f0546a 100644
--- a/src/syssignal.h
+++ b/src/syssignal.h
@@ -54,26 +54,6 @@ char const *safe_strsignal (int) ATTRIBUTE_CONST;
# define emacs_raise(sig) raise (sig)
#endif
-/* On bsd, [man says] kill does not accept a negative number to kill a pgrp.
- Must do that using the killpg call. */
-#ifdef BSD_SYSTEM
-#define EMACS_KILLPG(gid, signo) (killpg ( (gid), (signo)))
-#else
-#ifdef WINDOWSNT
-#define EMACS_KILLPG(gid, signo) (kill (gid, signo))
-#else
-#define EMACS_KILLPG(gid, signo) (kill (-(gid), (signo)))
-#endif
-#endif
-
-/* Define SIGCHLD as an alias for SIGCLD. There are many conditionals
- testing SIGCHLD. */
-#ifdef SIGCLD
-#ifndef SIGCHLD
-#define SIGCHLD SIGCLD
-#endif /* SIGCHLD */
-#endif /* ! defined (SIGCLD) */
-
#ifndef HAVE_STRSIGNAL
# define strsignal(sig) safe_strsignal (sig)
#endif
diff --git a/src/syswait.h b/src/syswait.h
index aa4c4bcf527..360407d558e 100644
--- a/src/syswait.h
+++ b/src/syswait.h
@@ -23,6 +23,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifndef EMACS_SYSWAIT_H
#define EMACS_SYSWAIT_H
+#include <stdbool.h>
#include <sys/types.h>
#ifdef HAVE_SYS_WAIT_H /* We have sys/wait.h with POSIXoid definitions. */
@@ -52,10 +53,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
/* Defined in process.c. */
-extern void record_child_status_change (pid_t, int);
+extern void record_deleted_pid (pid_t);
/* Defined in sysdep.c. */
-extern void wait_for_termination (pid_t);
-extern void interruptible_wait_for_termination (pid_t);
+extern void wait_for_termination (pid_t, int *, bool);
+extern pid_t child_status_changed (pid_t, int *, int);
#endif /* EMACS_SYSWAIT_H */
diff --git a/src/term.c b/src/term.c
index 481a3423989..241875de52f 100644
--- a/src/term.c
+++ b/src/term.c
@@ -3362,10 +3362,6 @@ use the Bourne shell command `TERM=... export TERM' (C-shell:\n\
= tty->TS_delete_mode && tty->TS_insert_mode
&& !strcmp (tty->TS_delete_mode, tty->TS_insert_mode);
- tty->se_is_so = (tty->TS_standout_mode
- && tty->TS_end_standout_mode
- && !strcmp (tty->TS_standout_mode, tty->TS_end_standout_mode));
-
UseTabs (tty) = tabs_safe_p (fileno (tty->input)) && TabWidth (tty) == 8;
terminal->scroll_region_ok
diff --git a/src/termchar.h b/src/termchar.h
index 5c57593c04f..8bffd3e546b 100644
--- a/src/termchar.h
+++ b/src/termchar.h
@@ -50,8 +50,7 @@ struct tty_display_info
struct emacs_tty *old_tty; /* The initial tty mode bits */
- int term_initted; /* 1 if we have been through init_sys_modes. */
-
+ unsigned term_initted : 1; /* 1 if we have been through init_sys_modes. */
int reference_count; /* Number of frames that are on this display. */
@@ -164,17 +163,12 @@ struct tty_display_info
int RPov; /* # chars to start a TS_repeat */
- int delete_in_insert_mode; /* delete mode == insert mode */
-
- int se_is_so; /* 1 if same string both enters and leaves
- standout mode */
-
- int costs_set; /* Nonzero if costs have been calculated. */
-
- int insert_mode; /* Nonzero when in insert mode. */
- int standout_mode; /* Nonzero when in standout mode. */
+ unsigned delete_in_insert_mode : 1; /* delete mode == insert mode */
+ unsigned costs_set : 1; /* Nonzero if costs have been calculated. */
+ unsigned insert_mode : 1; /* Nonzero when in insert mode. */
+ unsigned standout_mode : 1; /* Nonzero when in standout mode. */
/* 1 if should obey 0200 bit in input chars as "Meta", 2 if should
keep 0200 bit in input chars. 0 to ignore the 0200 bit. */
@@ -192,11 +186,11 @@ struct tty_display_info
/* Flag used in tty_show/hide_cursor. */
- int cursor_hidden;
+ unsigned cursor_hidden : 1;
/* Nonzero means use ^S/^Q for flow control. */
- int flow_control;
+ unsigned flow_control : 1;
};
/* A chain of structures for all tty devices currently in use. */
diff --git a/src/textprop.c b/src/textprop.c
index 379eafb73f7..1ce44ad60ac 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -85,8 +85,18 @@ text_read_only (Lisp_Object propval)
xsignal0 (Qtext_read_only);
}
+/* Prepare to modify the region of BUFFER from START to END. */
+
+static void
+modify_region (Lisp_Object buffer, Lisp_Object start, Lisp_Object end)
+{
+ struct buffer *buf = XBUFFER (buffer), *old = current_buffer;
+
+ set_buffer_internal (buf);
+ modify_region_1 (XINT (start), XINT (end), true);
+ set_buffer_internal (old);
+}
-
/* Extract the interval at the position pointed to by BEGIN from
OBJECT, a string or buffer. Additionally, check that the positions
pointed to by BEGIN and END are within the bounds of OBJECT, and
@@ -1164,7 +1174,7 @@ Return t if any property value actually changed, nil otherwise. */)
}
if (BUFFERP (object))
- modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
+ modify_region (object, start, end);
/* We are at the beginning of interval I, with LEN chars to scan. */
for (;;)
@@ -1302,7 +1312,7 @@ set_text_properties (Lisp_Object start, Lisp_Object end, Lisp_Object properties,
}
if (BUFFERP (object) && !NILP (coherent_change_p))
- modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
+ modify_region (object, start, end);
set_text_properties_1 (start, end, properties, object, i);
@@ -1451,7 +1461,7 @@ Use `set-text-properties' if you want to remove all text properties. */)
}
if (BUFFERP (object))
- modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
+ modify_region (object, start, end);
/* We are at the beginning of an interval, with len to scan */
for (;;)
@@ -1565,7 +1575,7 @@ Return t if any property was actually removed, nil otherwise. */)
else if (LENGTH (i) == len)
{
if (!modified && BUFFERP (object))
- modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
+ modify_region (object, start, end);
remove_properties (Qnil, properties, i, object);
if (BUFFERP (object))
signal_after_change (XINT (start), XINT (end) - XINT (start),
@@ -1578,7 +1588,7 @@ Return t if any property was actually removed, nil otherwise. */)
i = split_interval_left (i, len);
copy_properties (unchanged, i);
if (!modified && BUFFERP (object))
- modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
+ modify_region (object, start, end);
remove_properties (Qnil, properties, i, object);
if (BUFFERP (object))
signal_after_change (XINT (start), XINT (end) - XINT (start),
@@ -1589,7 +1599,7 @@ Return t if any property was actually removed, nil otherwise. */)
if (interval_has_some_properties_list (properties, i))
{
if (!modified && BUFFERP (object))
- modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
+ modify_region (object, start, end);
remove_properties (Qnil, properties, i, object);
modified = 1;
}
diff --git a/src/unexcoff.c b/src/unexcoff.c
index 966dd58cb6e..6e29951a962 100644
--- a/src/unexcoff.c
+++ b/src/unexcoff.c
@@ -332,11 +332,7 @@ write_segment (int new, const char *ptr, const char *end)
a gap between the old text segment and the old data segment.
This gap has probably been remapped into part of the text segment.
So write zeros for it. */
- if (ret == -1
-#ifdef EFAULT
- && errno == EFAULT
-#endif
- )
+ if (ret == -1 && errno == EFAULT)
{
/* Write only a page of zeros at once,
so that we don't overshoot the start
diff --git a/src/vm-limit.c b/src/vm-limit.c
index 2a71e88695a..befc01d400f 100644
--- a/src/vm-limit.c
+++ b/src/vm-limit.c
@@ -44,46 +44,26 @@ static POINTER data_space_start;
static size_t lim_data;
-#if defined (HAVE_GETRLIMIT) && defined (RLIMIT_AS)
-static void
-get_lim_data (void)
-{
- struct rlimit rlimit;
-
- getrlimit (RLIMIT_AS, &rlimit);
- if (rlimit.rlim_cur == RLIM_INFINITY)
- lim_data = -1;
- else
- lim_data = rlimit.rlim_cur;
-}
+#ifdef HAVE_GETRLIMIT
-#else /* not HAVE_GETRLIMIT */
-
-#ifdef USG
+# ifndef RLIMIT_AS
+# define RLIMIT_AS RLIMIT_DATA
+# endif
static void
get_lim_data (void)
{
- extern long ulimit ();
-
- lim_data = -1;
-
- /* Use the ulimit call, if we seem to have it. */
-#if !defined (ULIMIT_BREAK_VALUE) || defined (GNU_LINUX)
- lim_data = ulimit (3, 0);
-#endif
-
- /* If that didn't work, just use the macro's value. */
-#ifdef ULIMIT_BREAK_VALUE
- if (lim_data == -1)
- lim_data = ULIMIT_BREAK_VALUE;
-#endif
-
- lim_data -= (long) data_space_start;
+ /* Set LIM_DATA to the minimum of the maximum object size and the
+ maximum address space. Don't bother to check for values like
+ RLIM_INFINITY since in practice they are not much less than SIZE_MAX. */
+ struct rlimit rlimit;
+ lim_data
+ = (getrlimit (RLIMIT_AS, &rlimit) == 0 && rlimit.rlim_cur <= SIZE_MAX
+ ? rlimit.rlim_cur
+ : SIZE_MAX);
}
-#else /* not USG */
-#ifdef WINDOWSNT
+#elif defined WINDOWSNT
#include "w32heap.h"
@@ -94,10 +74,8 @@ get_lim_data (void)
lim_data = reserved_heap_size;
}
-#else
-#if !defined (BSD4_2) && !defined (CYGWIN)
+#elif defined MSDOS
-#ifdef MSDOS
void
get_lim_data (void)
{
@@ -135,32 +113,9 @@ ret_lim_data (void)
get_lim_data ();
return lim_data;
}
-#else /* not MSDOS */
-static void
-get_lim_data (void)
-{
- lim_data = vlimit (LIM_DATA, -1);
-}
-#endif /* not MSDOS */
-
-#else /* BSD4_2 || CYGWIN */
-
-static void
-get_lim_data (void)
-{
- struct rlimit XXrlimit;
-
- getrlimit (RLIMIT_DATA, &XXrlimit);
-#ifdef RLIM_INFINITY
- lim_data = XXrlimit.rlim_cur & RLIM_INFINITY; /* soft limit */
#else
- lim_data = XXrlimit.rlim_cur; /* soft limit */
+# error "get_lim_data not implemented on this machine"
#endif
-}
-#endif /* BSD4_2 */
-#endif /* not WINDOWSNT */
-#endif /* not USG */
-#endif /* not HAVE_GETRLIMIT */
/* Verify amount of memory available, complaining if we're near the end. */
diff --git a/src/w32.c b/src/w32.c
index c8e16dfaa94..b6bb653369d 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -150,10 +150,18 @@ typedef struct _REPARSE_DATA_BUFFER {
} DUMMYUNIONNAME;
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+#ifndef FILE_DEVICE_FILE_SYSTEM
#define FILE_DEVICE_FILE_SYSTEM 9
+#endif
+#ifndef METHOD_BUFFERED
#define METHOD_BUFFERED 0
+#endif
+#ifndef FILE_ANY_ACCESS
#define FILE_ANY_ACCESS 0x00000000
+#endif
+#ifndef CTL_CODE
#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
+#endif
#define FSCTL_GET_REPARSE_POINT \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
#endif
@@ -1536,6 +1544,50 @@ is_unc_volume (const char *filename)
return 1;
}
+/* Emulate the Posix unsetenv. */
+int
+unsetenv (const char *name)
+{
+ char *var;
+ size_t name_len;
+ int retval;
+
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+ name_len = strlen (name);
+ /* MS docs says an environment variable cannot be longer than 32K. */
+ if (name_len > 32767)
+ {
+ errno = ENOMEM;
+ return 0;
+ }
+ /* It is safe to use 'alloca' with 32K size, since the stack is at
+ least 2MB, and we set it to 8MB in the link command line. */
+ var = alloca (name_len + 2);
+ var[name_len++] = '=';
+ var[name_len] = '\0';
+ return _putenv (var);
+}
+
+/* MS _putenv doesn't support removing a variable when the argument
+ does not include the '=' character, so we fix that here. */
+int
+sys_putenv (char *str)
+{
+ const char *const name_end = strchr (str, '=');
+
+ if (name_end == NULL)
+ {
+ /* Remove the variable from the environment. */
+ return unsetenv (str);
+ }
+
+ return _putenv (str);
+}
+
#define REG_ROOT "SOFTWARE\\GNU\\Emacs"
LPBYTE
diff --git a/src/w32common.h b/src/w32common.h
index 50724e5553c..5e9b61824ae 100644
--- a/src/w32common.h
+++ b/src/w32common.h
@@ -34,7 +34,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
extern SYSTEM_INFO sysinfo_cache;
extern OSVERSIONINFO osinfo_cache;
-extern unsigned long syspage_mask;
+extern DWORD_PTR syspage_mask;
extern int w32_major_version;
extern int w32_minor_version;
diff --git a/src/w32fns.c b/src/w32fns.c
index 90f5b1695ea..1a181079c82 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -82,7 +82,6 @@ void syms_of_w32fns (void);
void globals_of_w32fns (void);
extern void free_frame_menubar (struct frame *);
-extern double atof (const char *);
extern int w32_console_toggle_lock_key (int, Lisp_Object);
extern void w32_menu_display_help (HWND, HMENU, UINT, UINT);
extern void w32_free_menu_strings (HWND);
@@ -223,7 +222,7 @@ SYSTEM_INFO sysinfo_cache;
/* This gives us version, build, and platform identification. */
OSVERSIONINFO osinfo_cache;
-unsigned long syspage_mask = 0;
+DWORD_PTR syspage_mask = 0;
/* The major and minor versions of NT. */
int w32_major_version;
@@ -4867,18 +4866,6 @@ x_pixel_height (register struct frame *f)
}
int
-x_char_width (register struct frame *f)
-{
- return FRAME_COLUMN_WIDTH (f);
-}
-
-int
-x_char_height (register struct frame *f)
-{
- return FRAME_LINE_HEIGHT (f);
-}
-
-int
x_screen_planes (register struct frame *f)
{
return FRAME_W32_DISPLAY_INFO (f)->n_planes;
@@ -6035,7 +6022,7 @@ typedef char guichar_t;
read-only when "Directories" is selected in the filter. This
allows us to work around the fact that the standard Open File
dialog does not support directories. */
-static UINT CALLBACK
+static UINT_PTR CALLBACK
file_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (msg == WM_NOTIFY)
@@ -7797,7 +7784,7 @@ emacs_abort (void)
/* stack[] gives the return addresses, whereas we want
the address of the call, so decrease each address
by approximate size of 1 CALL instruction. */
- sprintf (buf, "0x%p\r\n", stack[j] - sizeof(void *));
+ sprintf (buf, "0x%p\r\n", (char *)stack[j] - sizeof(void *));
if (stderr_fd >= 0)
write (stderr_fd, buf, strlen (buf));
if (errfile_fd >= 0)
diff --git a/src/w32proc.c b/src/w32proc.c
index 9b111b40e36..d888200c556 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -1220,13 +1220,22 @@ waitpid (pid_t pid, int *status, int options)
{
QUIT;
active = WaitForMultipleObjects (nh, wait_hnd, FALSE, timeout_ms);
- } while (active == WAIT_TIMEOUT);
+ } while (active == WAIT_TIMEOUT && !dont_wait);
if (active == WAIT_FAILED)
{
errno = EBADF;
return -1;
}
+ else if (active == WAIT_TIMEOUT && dont_wait)
+ {
+ /* PID specifies our subprocess, but it didn't exit yet, so its
+ status is not yet available. */
+#ifdef FULL_DEBUG
+ DebPrint (("Wait: PID %d not reap yet\n", cp->pid));
+#endif
+ return 0;
+ }
else if (active >= WAIT_OBJECT_0
&& active < WAIT_OBJECT_0+MAXIMUM_WAIT_OBJECTS)
{
@@ -1274,33 +1283,7 @@ waitpid (pid_t pid, int *status, int options)
#endif
if (status)
- {
- *status = retval;
- }
- else if (synch_process_alive)
- {
- synch_process_alive = 0;
-
- /* Report the status of the synchronous process. */
- if (WIFEXITED (retval))
- synch_process_retcode = WEXITSTATUS (retval);
- else if (WIFSIGNALED (retval))
- {
- int code = WTERMSIG (retval);
- const char *signame;
-
- synchronize_system_messages_locale ();
- signame = strsignal (code);
-
- if (signame == 0)
- signame = "unknown";
-
- synch_process_death = signame;
- }
-
- reap_subprocess (cp);
- }
-
+ *status = retval;
reap_subprocess (cp);
return pid;
@@ -2139,6 +2122,10 @@ sys_kill (int pid, int sig)
int need_to_free = 0;
int rc = 0;
+ /* Each process is in its own process group. */
+ if (pid < 0)
+ pid = -pid;
+
/* Only handle signals that will result in the process dying */
if (sig != SIGINT && sig != SIGKILL && sig != SIGQUIT && sig != SIGHUP)
{
diff --git a/src/w32term.c b/src/w32term.c
index ab6afd32c75..e26777543fb 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -1738,8 +1738,8 @@ w32_draw_relief_rect (struct frame *f,
if (left_p)
for (i = 0; i < width; ++i)
w32_fill_area (f, hdc, gc.foreground,
- left_x + i, top_y + i, 1,
- bottom_y - top_y - 2 * i + 1);
+ left_x + i, top_y + (i + 1) * top_p, 1,
+ bottom_y - top_y - (i + 1) * (bot_p + top_p) + 1);
if (raised_p)
gc.foreground = f->output_data.w32->black_relief.gc->foreground;
@@ -1757,8 +1757,8 @@ w32_draw_relief_rect (struct frame *f,
if (right_p)
for (i = 0; i < width; ++i)
w32_fill_area (f, hdc, gc.foreground,
- right_x - i, top_y + i + 1, 1,
- bottom_y - top_y - 2 * i - 1);
+ right_x - i, top_y + (i + 1) * top_p, 1,
+ bottom_y - top_y - (i + 1) * (bot_p + top_p) + 1);
w32_set_clip_rectangle (hdc, NULL);
@@ -1952,7 +1952,7 @@ x_draw_image_foreground (struct glyph_string *s)
static void
x_draw_image_relief (struct glyph_string *s)
{
- int x0, y0, x1, y1, thick, raised_p;
+ int x1, y1, thick, raised_p, top_p, bot_p, left_p, right_p;
RECT r;
int x = s->x;
int y = s->ybase - image_ascent (s->img, s->face, &s->slice);
@@ -1984,19 +1984,23 @@ x_draw_image_relief (struct glyph_string *s)
raised_p = s->img->relief > 0;
}
- x0 = x - thick;
- y0 = y - thick;
- x1 = x + s->slice.width + thick - 1;
- y1 = y + s->slice.height + thick - 1;
+ x1 = x + s->slice.width - 1;
+ y1 = y + s->slice.height - 1;
+ top_p = bot_p = left_p = right_p = 0;
+
+ if (s->slice.x == 0)
+ x -= thick, left_p = 1;
+ if (s->slice.y == 0)
+ y -= thick, top_p = 1;
+ if (s->slice.x + s->slice.width == s->img->width)
+ x1 += thick, right_p = 1;
+ if (s->slice.y + s->slice.height == s->img->height)
+ y1 += thick, bot_p = 1;
x_setup_relief_colors (s);
get_glyph_string_clip_rect (s, &r);
- w32_draw_relief_rect (s->f, x0, y0, x1, y1, thick, raised_p,
- s->slice.y == 0,
- s->slice.y + s->slice.height == s->img->height,
- s->slice.x == 0,
- s->slice.x + s->slice.width == s->img->width,
- &r);
+ w32_draw_relief_rect (s->f, x, y, x1, y1, thick, raised_p,
+ top_p, bot_p, left_p, right_p, &r);
}
@@ -5344,7 +5348,6 @@ x_new_font (struct frame *f, Lisp_Object font_object, int fontset)
FRAME_FONT (f) = font;
FRAME_BASELINE_OFFSET (f) = font->baseline_offset;
FRAME_COLUMN_WIDTH (f) = font->average_width;
- FRAME_SPACE_WIDTH (f) = font->space_width;
FRAME_LINE_HEIGHT (f) = font->height;
compute_fringe_widths (f, 1);
diff --git a/src/w32term.h b/src/w32term.h
index 28d4ca6c490..af1a79e21c9 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -217,8 +217,6 @@ extern void x_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y);
extern void x_make_frame_visible (struct frame *f);
extern void x_make_frame_invisible (struct frame *f);
extern void x_iconify_frame (struct frame *f);
-extern int x_char_width (struct frame *f);
-extern int x_char_height (struct frame *f);
extern int x_pixel_width (struct frame *f);
extern int x_pixel_height (struct frame *f);
extern void x_set_frame_alpha (struct frame *f);
diff --git a/src/window.c b/src/window.c
index 9f3474fcd53..d7c2e8b236e 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3250,8 +3250,7 @@ This function runs `window-scroll-functions' before running
tem = w->buffer;
if (NILP (tem))
error ("Window is deleted");
- else if (!EQ (tem, Qt))
- /* w->buffer is t when the window is first being set up. */
+ else
{
if (!EQ (tem, buffer))
{
@@ -3914,7 +3913,6 @@ set correctly. See the code of `split-window' for how this is done. */)
wset_next (o, new);
}
- wset_buffer (n, Qt);
wset_window_end_valid (n, Qnil);
memset (&n->last_cursor, 0, sizeof n->last_cursor);
diff --git a/src/xdisp.c b/src/xdisp.c
index 2390475ca77..9464e87b362 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10888,22 +10888,24 @@ echo_area_display (int update_frame_p)
return window_height_changed_p;
}
-/* Nonzero if the current buffer is shown in more than
- one window and was modified since last display. */
+/* Nonzero if the current window's buffer is shown in more than one
+ window and was modified since last redisplay. */
static int
buffer_shared_and_changed (void)
{
+ /* The variable buffer_shared is set in redisplay_window and
+ indicates that we redisplay a buffer in different windows. */
return (buffer_shared > 1 && UNCHANGED_MODIFIED < MODIFF);
}
-/* Nonzero if W doesn't reflect the actual state of
- current buffer due to its text or overlays change. */
+/* Nonzero if W doesn't reflect the actual state of current buffer due
+ to its text or overlays change. FIXME: this may be called when
+ XBUFFER (w->buffer) != current_buffer, which looks suspicious. */
static int
window_outdated (struct window *w)
{
- eassert (XBUFFER (w->buffer) == current_buffer);
return (w->last_modified < MODIFF
|| w->last_overlay_modified < OVERLAY_MODIFF);
}
@@ -10923,6 +10925,16 @@ window_buffer_changed (struct window *w)
!= !NILP (w->region_showing)));
}
+/* Nonzero if W has %c in its mode line and mode line should be updated. */
+
+static int
+mode_line_update_needed (struct window *w)
+{
+ return (!NILP (w->column_number_displayed)
+ && !(PT == w->last_point && !window_outdated (w))
+ && (XFASTINT (w->column_number_displayed) != current_column ()));
+}
+
/***********************************************************************
Mode Lines and Frame Titles
***********************************************************************/
@@ -12253,7 +12265,6 @@ handle_tool_bar_click (struct frame *f, int x, int y, int down_p,
{
/* Show item in pressed state. */
show_mouse_face (hlinfo, DRAW_IMAGE_SUNKEN);
- hlinfo->mouse_face_image_state = DRAW_IMAGE_SUNKEN;
last_tool_bar_item = prop_idx;
}
else
@@ -12264,7 +12275,6 @@ handle_tool_bar_click (struct frame *f, int x, int y, int down_p,
/* Show item in released state. */
show_mouse_face (hlinfo, DRAW_IMAGE_RAISED);
- hlinfo->mouse_face_image_state = DRAW_IMAGE_RAISED;
key = AREF (f->tool_bar_items, prop_idx + TOOL_BAR_ITEM_KEY);
@@ -12333,7 +12343,6 @@ note_tool_bar_highlight (struct frame *f, int x, int y)
&& last_tool_bar_item != prop_idx)
return;
- hlinfo->mouse_face_image_state = DRAW_NORMAL_TEXT;
draw = mouse_down_p ? DRAW_IMAGE_SUNKEN : DRAW_IMAGE_RAISED;
/* If tool-bar item is not enabled, don't highlight it. */
@@ -12362,7 +12371,6 @@ note_tool_bar_highlight (struct frame *f, int x, int y)
/* Display it as active. */
show_mouse_face (hlinfo, draw);
- hlinfo->mouse_face_image_state = draw;
}
set_help_echo:
@@ -12967,6 +12975,15 @@ select_frame_for_redisplay (Lisp_Object frame)
} while (!EQ (frame, old) && (frame = old, 1));
}
+/* Make sure that previously selected OLD_FRAME is selected unless it has been
+ deleted (by an X connection failure during redisplay, for example). */
+
+static void
+ensure_selected_frame (Lisp_Object old_frame)
+{
+ if (!EQ (old_frame, selected_frame) && FRAME_LIVE_P (XFRAME (old_frame)))
+ select_frame_for_redisplay (old_frame);
+}
#define STOP_POLLING \
do { if (! polling_stopped_here) stop_polling (); \
@@ -13052,13 +13069,11 @@ redisplay_internal (void)
/* Remember the currently selected window. */
sw = w;
- if (!EQ (old_frame, selected_frame)
- && FRAME_LIVE_P (XFRAME (old_frame)))
- /* When running redisplay, we play a bit fast-and-loose and allow e.g.
- selected_frame and selected_window to be temporarily out-of-sync so
- when we come back here via `goto retry', we need to resync because we
- may need to run Elisp code (via prepare_menu_bars). */
- select_frame_for_redisplay (old_frame);
+ /* When running redisplay, we play a bit fast-and-loose and allow e.g.
+ selected_frame and selected_window to be temporarily out-of-sync so
+ when we come back here via `goto retry', we need to resync because we
+ may need to run Elisp code (via prepare_menu_bars). */
+ ensure_selected_frame (old_frame);
pending = 0;
reconsider_clip_changes (w, current_buffer);
@@ -13144,21 +13159,13 @@ redisplay_internal (void)
count1 = SPECPDL_INDEX ();
specbind (Qinhibit_point_motion_hooks, Qt);
- /* If %c is in the mode line, update it if needed. */
- if (!NILP (w->column_number_displayed)
- /* This alternative quickly identifies a common case
- where no change is needed. */
- && !(PT == w->last_point && !window_outdated (w))
- && (XFASTINT (w->column_number_displayed) != current_column ()))
+ if (mode_line_update_needed (w))
w->update_mode_line = 1;
unbind_to (count1, Qnil);
FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1;
- /* The variable buffer_shared is set in redisplay_window and
- indicates that we redisplay a buffer in different windows. See
- there. */
consider_all_windows_p = (update_mode_lines
|| buffer_shared_and_changed ()
|| cursor_type_changed);
@@ -13533,14 +13540,11 @@ redisplay_internal (void)
}
}
- if (!EQ (old_frame, selected_frame)
- && FRAME_LIVE_P (XFRAME (old_frame)))
- /* We played a bit fast-and-loose above and allowed selected_frame
- and selected_window to be temporarily out-of-sync but let's make
- sure this stays contained. */
- select_frame_for_redisplay (old_frame);
- eassert (EQ (XFRAME (selected_frame)->selected_window,
- selected_window));
+ /* We played a bit fast-and-loose above and allowed selected_frame
+ and selected_window to be temporarily out-of-sync but let's make
+ sure this stays contained. */
+ ensure_selected_frame (old_frame);
+ eassert (EQ (XFRAME (selected_frame)->selected_window, selected_window));
if (!pending)
{
@@ -13759,17 +13763,13 @@ redisplay_preserve_echo_area (int from_where)
/* Function registered with record_unwind_protect in redisplay_internal.
- Clear redisplaying_p. Also, select the previously
- selected frame, unless it has been deleted (by an X connection
- failure during redisplay, for example). */
+ Clear redisplaying_p. Also select the previously selected frame. */
static Lisp_Object
unwind_redisplay (Lisp_Object old_frame)
{
redisplaying_p = 0;
- if (! EQ (old_frame, selected_frame)
- && FRAME_LIVE_P (XFRAME (old_frame)))
- select_frame_for_redisplay (old_frame);
+ ensure_selected_frame (old_frame);
return Qnil;
}
@@ -15565,12 +15565,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
if (BYTEPOS (opoint) < CHARPOS (opoint))
emacs_abort ();
- /* If %c is in mode line, update it if needed. */
- if (!NILP (w->column_number_displayed)
- /* This alternative quickly identifies a common case
- where no change is needed. */
- && !(PT == w->last_point && !window_outdated (w))
- && (XFASTINT (w->column_number_displayed) != current_column ()))
+ if (mode_line_update_needed (w))
update_mode_line = 1;
/* Count number of windows showing the selected buffer. An indirect
@@ -15718,6 +15713,35 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
Move it back to a fully-visible line. */
new_vpos = window_box_height (w);
}
+ else if (w->cursor.vpos >=0)
+ {
+ /* Some people insist on not letting point enter the scroll
+ margin, even though this part handles windows that didn't
+ scroll at all. */
+ struct frame *f = XFRAME (w->frame);
+ int margin = min (scroll_margin, WINDOW_TOTAL_LINES (w) / 4);
+ int pixel_margin = margin * FRAME_LINE_HEIGHT (f);
+ bool header_line = WINDOW_WANTS_HEADER_LINE_P (w);
+
+ /* Note: We add an extra FRAME_LINE_HEIGHT, because the loop
+ below, which finds the row to move point to, advances by
+ the Y coordinate of the _next_ row, see the definition of
+ MATRIX_ROW_BOTTOM_Y. */
+ if (w->cursor.vpos < margin + header_line)
+ new_vpos
+ = pixel_margin + (header_line
+ ? CURRENT_HEADER_LINE_HEIGHT (w)
+ : 0) + FRAME_LINE_HEIGHT (f);
+ else
+ {
+ int window_height = window_box_height (w);
+
+ if (header_line)
+ window_height += CURRENT_HEADER_LINE_HEIGHT (w);
+ if (w->cursor.y >= window_height - pixel_margin)
+ new_vpos = window_height - pixel_margin;
+ }
+ }
/* If we need to move point for either of the above reasons,
now actually do it. */
@@ -23506,7 +23530,9 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row,
/* If mouse highlighting is on, we may need to draw adjacent
glyphs using mouse-face highlighting. */
- if (area == TEXT_AREA && row->mouse_face_p)
+ if (area == TEXT_AREA && row->mouse_face_p
+ && hlinfo->mouse_face_beg_row >= 0
+ && hlinfo->mouse_face_end_row >= 0)
{
struct glyph_row *mouse_beg_row, *mouse_end_row;
diff --git a/src/xfns.c b/src/xfns.c
index 1f98e9fc8c7..7e832c3a95f 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3848,20 +3848,6 @@ x_pixel_height (register struct frame *f)
return FRAME_PIXEL_HEIGHT (f);
}
-int
-x_char_width (register struct frame *f)
-{
- return FRAME_COLUMN_WIDTH (f);
-}
-
-int
-x_char_height (register struct frame *f)
-{
- return FRAME_LINE_HEIGHT (f);
-}
-
-
-
/************************************************************************
X Displays
************************************************************************/
diff --git a/src/xterm.c b/src/xterm.c
index 61e942e10d2..e9e99574663 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -2019,7 +2019,8 @@ x_draw_relief_rect (struct frame *f,
for (i = (width > 1 ? 1 : 0); i < width; ++i)
XDrawLine (dpy, window, gc,
- left_x + i, top_y + i, left_x + i, bottom_y - i + 1);
+ left_x + i, top_y + (i + 1) * top_p,
+ left_x + i, bottom_y + 1 - (i + 1) * bot_p);
}
XSetClipMask (dpy, gc, None);
@@ -2061,7 +2062,8 @@ x_draw_relief_rect (struct frame *f,
XClearArea (dpy, window, right_x, bottom_y, 1, 1, False);
for (i = 0; i < width; ++i)
XDrawLine (dpy, window, gc,
- right_x - i, top_y + i + 1, right_x - i, bottom_y - i);
+ right_x - i, top_y + (i + 1) * top_p,
+ right_x - i, bottom_y + 1 - (i + 1) * bot_p);
}
XSetClipMask (dpy, gc, None);
@@ -2255,8 +2257,7 @@ x_draw_image_foreground (struct glyph_string *s)
static void
x_draw_image_relief (struct glyph_string *s)
{
- int x0, y0, x1, y1, thick, raised_p;
- int extra_x, extra_y;
+ int x1, y1, thick, raised_p, top_p, bot_p, left_p, right_p;
XRectangle r;
int x = s->x;
int y = s->ybase - image_ascent (s->img, s->face, &s->slice);
@@ -2287,33 +2288,23 @@ x_draw_image_relief (struct glyph_string *s)
raised_p = s->img->relief > 0;
}
- extra_x = extra_y = 0;
- if (s->face->id == TOOL_BAR_FACE_ID)
- {
- if (CONSP (Vtool_bar_button_margin)
- && INTEGERP (XCAR (Vtool_bar_button_margin))
- && INTEGERP (XCDR (Vtool_bar_button_margin)))
- {
- extra_x = XINT (XCAR (Vtool_bar_button_margin));
- extra_y = XINT (XCDR (Vtool_bar_button_margin));
- }
- else if (INTEGERP (Vtool_bar_button_margin))
- extra_x = extra_y = XINT (Vtool_bar_button_margin);
- }
+ x1 = x + s->slice.width - 1;
+ y1 = y + s->slice.height - 1;
+ top_p = bot_p = left_p = right_p = 0;
- x0 = x - thick - extra_x;
- y0 = y - thick - extra_y;
- x1 = x + s->slice.width + thick - 1 + extra_x;
- y1 = y + s->slice.height + thick - 1 + extra_y;
+ if (s->slice.x == 0)
+ x -= thick, left_p = 1;
+ if (s->slice.y == 0)
+ y -= thick, top_p = 1;
+ if (s->slice.x + s->slice.width == s->img->width)
+ x1 += thick, right_p = 1;
+ if (s->slice.y + s->slice.height == s->img->height)
+ y1 += thick, bot_p = 1;
x_setup_relief_colors (s);
get_glyph_string_clip_rect (s, &r);
- x_draw_relief_rect (s->f, x0, y0, x1, y1, thick, raised_p,
- s->slice.y == 0,
- s->slice.y + s->slice.height == s->img->height,
- s->slice.x == 0,
- s->slice.x + s->slice.width == s->img->width,
- &r);
+ x_draw_relief_rect (s->f, x, y, x1, y1, thick, raised_p,
+ top_p, bot_p, left_p, right_p, &r);
}
@@ -7911,7 +7902,6 @@ x_new_font (struct frame *f, Lisp_Object font_object, int fontset)
FRAME_FONT (f) = font;
FRAME_BASELINE_OFFSET (f) = font->baseline_offset;
FRAME_COLUMN_WIDTH (f) = font->average_width;
- FRAME_SPACE_WIDTH (f) = font->space_width;
FRAME_LINE_HEIGHT (f) = FONT_HEIGHT (font);
compute_fringe_widths (f, 1);
@@ -9918,10 +9908,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
/* Emacs can only handle core input events, so make sure
Gtk doesn't use Xinput or Xinput2 extensions. */
- {
- static char fix_events[] = "GDK_CORE_DEVICE_EVENTS=1";
- putenv (fix_events);
- }
+ xputenv ("GDK_CORE_DEVICE_EVENTS=1");
/* Work around GLib bug that outputs a faulty warning. See
https://bugzilla.gnome.org/show_bug.cgi?id=563627. */
diff --git a/test/ChangeLog b/test/ChangeLog
index b66c2925287..21f0f29b73b 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-02 Chong Yidong <cyd@gnu.org>
+
+ * automated/ruby-mode-tests.el
+ (ruby-add-log-current-method-examples): Don't use loop macro, to
+ allow automated testing to work.
+
2012-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
* automated/advice-tests.el (advice-tests--data): Remove.
diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el
index ad48413b030..620fe72fb69 100644
--- a/test/automated/ruby-mode-tests.el
+++ b/test/automated/ruby-mode-tests.el
@@ -296,21 +296,23 @@ VALUES-PLIST is a list with alternating index and value elements."
(let ((pairs '(("foo" . "#foo")
("C.foo" . ".foo")
("self.foo" . ".foo"))))
- (loop for (name . value) in pairs
- do (with-temp-buffer
- (insert (ruby-test-string
- "module M
+ (dolist (pair pairs)
+ (let ((name (car pair))
+ (value (cdr pair)))
+ (with-temp-buffer
+ (insert (ruby-test-string
+ "module M
| class C
| def %s
| end
| end
|end"
- name))
- (ruby-mode)
- (search-backward "def")
- (forward-line)
- (should (string= (ruby-add-log-current-method)
- (format "M::C%s" value)))))))
+ name))
+ (ruby-mode)
+ (search-backward "def")
+ (forward-line)
+ (should (string= (ruby-add-log-current-method)
+ (format "M::C%s" value))))))))
(defvar ruby-block-test-example
(ruby-test-string